diff --git a/.gn b/.gn index aa8ac14..0729534a 100644 --- a/.gn +++ b/.gn
@@ -194,57 +194,11 @@ "//sandbox/win:*", # 7 errors # //third_party/blink/*, https://crbug.com/800764 - "//third_party/blink/renderer/core/accessibility:*", # 27 errors "//third_party/blink/renderer/core/animation:*", # 506 errors - "//third_party/blink/renderer/core/animation_frame:*", # 4 errors - "//third_party/blink/renderer/core/aom:*", # 23 errors - "//third_party/blink/renderer/core/clipboard:*", # 43 errors - "//third_party/blink/renderer/core/content_capture:*", # 12 errors - "//third_party/blink/renderer/core/context_features:*", # 3 errors - "//third_party/blink/renderer/core/css:*", # 835 errors - "//third_party/blink/renderer/core/display_lock:*", # 36 errors - "//third_party/blink/renderer/core/dom:*", # 706 errors - "//third_party/blink/renderer/core/editing:*", # 847 errors - "//third_party/blink/renderer/core/events:*", # 173 errors - "//third_party/blink/renderer/core/execution_context:*", # 48 errors "//third_party/blink/renderer/core/exported:*", # 470 errors - "//third_party/blink/renderer/core/feature_policy:*", # 15 errors - "//third_party/blink/renderer/core/fetch:*", # 134 errors - "//third_party/blink/renderer/core/fileapi:*", # 55 errors - "//third_party/blink/renderer/core/frame:*", # 864 errors - "//third_party/blink/renderer/core/fullscreen:*", # 32 errors - "//third_party/blink/renderer/core/geometry:*", # 39 errors - "//third_party/blink/renderer/core/html/parser:*", # 133 errors - "//third_party/blink/renderer/core/html:*", # 1662 errors - "//third_party/blink/renderer/core/imagebitmap:*", # 34 errors - "//third_party/blink/renderer/core/input:*", # 240 errors - "//third_party/blink/renderer/core/inspector:*", # 594 errors - "//third_party/blink/renderer/core/intersection_observer:*", # 50 errors - "//third_party/blink/renderer/core/layout/svg:*", # 193 errors - "//third_party/blink/renderer/core/layout:*", # 920 errors - "//third_party/blink/renderer/core/loader:*", # 421 errors - "//third_party/blink/renderer/core/mathml:*", # 11 errors - "//third_party/blink/renderer/core/messaging:*", # 30 errors - "//third_party/blink/renderer/core/offscreencanvas:*", # 22 errors - "//third_party/blink/renderer/core/origin_trials:*", # 12 errors - "//third_party/blink/renderer/core/page:*", # 500 errors - "//third_party/blink/renderer/core/paint:*", # 788 errors "//third_party/blink/renderer/core/probe:*", # 9 errors - "//third_party/blink/renderer/core/resize_observer:*", # 29 errors - "//third_party/blink/renderer/core/script:*", # 155 errors - "//third_party/blink/renderer/core/scroll:*", # 29 errors - "//third_party/blink/renderer/core/streams:*", # 75 errors - "//third_party/blink/renderer/core/style:*", # 86 errors - "//third_party/blink/renderer/core/svg:*", # 297 errors - "//third_party/blink/renderer/core/timezone:*", # 8 errors - "//third_party/blink/renderer/core/timing:*", # 170 errors - "//third_party/blink/renderer/core/trustedtypes:*", # 27 errors "//third_party/blink/renderer/core/typed_arrays:*", # 24 errors - "//third_party/blink/renderer/core/url:*", # 7 errors - "//third_party/blink/renderer/core/workers:*", # 289 errors - "//third_party/blink/renderer/core/xmlhttprequest:*", # 49 errors "//third_party/blink/renderer/core:*", # 823 errors - "//third_party/blink/renderer/modules/peerconnection:*", # 43 errors "//third_party/breakpad:*", # 34 errors "//third_party/ced/*",
diff --git a/DEPS b/DEPS index c5f60ca..52746ffe 100644 --- a/DEPS +++ b/DEPS
@@ -206,11 +206,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': '260029435baaefe42548c0be0fa408e6f8dee42a', + 'skia_revision': 'abdfd39bb64e9c63dd5e7088f53f530bd97ab0d9', # 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': '93ed90e664430291b53e3ee3f26d4dbc0e3c7804', + 'v8_revision': '7bce5fed937f0fce6998e9f8025fba6368a257a7', # 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. @@ -218,7 +218,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': 'c69ef8bf34ca3d7c1e8a4e187280e5b06e21e605', + 'angle_revision': '6883db53569fd219b1591177370a01b4e12a46eb', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -257,7 +257,7 @@ # 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': '82d331556ce73de07c16afd51a865ba1ff806a65', + 'freetype_revision': '840ce58f94bafdd24a138a9f7920becb5a30695f', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling HarfBuzz # and whatever else without interference from each other. @@ -269,7 +269,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': '91f276e903b3495d5fd4ad74e289e0893787d9a1', + 'catapult_revision': 'd384f3643dbeebaea0e3a6c5245d90644a755fbc', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -277,7 +277,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': '69e28b68cab8dc34cdbd8c6ec3503546a57875df', + 'devtools_frontend_revision': 'e6d60bea7801bb7e7576e1623155fcb3f8dad976', # 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. @@ -313,7 +313,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'spv_tools_revision': 'dd534e877e725c9bb6f751c427442456a05384e4', + 'spv_tools_revision': '502e98295625f5f07c7373d959e3403be5aa9de7', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -892,7 +892,7 @@ # Tools used when building Chrome for Chrome OS. This affects both the Simple # Chrome workflow, as well as the chromeos-chrome ebuild. 'src/third_party/chromite': { - 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '97cf11a427e81470e9f93aa835b5069f9c1537c6', + 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '954fbcfe8ee7660c189fe4a28d03a0b8de800d74', 'condition': 'checkout_chromeos', }, @@ -1497,7 +1497,7 @@ }, 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '1f7eab68c0ce267b935f9ea3544d3105d7fd19dc', + Var('webrtc_git') + '/src.git' + '@' + 'af704183574c9b6540bd7dee27ba779950509f31', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1569,7 +1569,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@8216043b1fc4e7c0160ed64a18c273a1874faba3', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@bb82eeb03d64621b652021cd7ba28eab36d7f20f', 'condition': 'checkout_src_internal', }, @@ -1577,7 +1577,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': '2fb_lrpyVxv--jJsrDCqZ4sDRiHpCgnk80oOIdv3q-YC', + 'version': 'pGrZJhALiGd7xxQgijaE7hMxwdHHb3IJpLlKhFbUo5sC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -1588,7 +1588,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/media_app/app', - 'version': 'wHmgVwhdw29vHqkyUXbbeSCuBeOGOHCSL0B8dd3273MC', + 'version': 'WqJoWsae8v0BSdpCN_2iqYbhQITuBWwyhYO0NqTO9fsC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/OWNERS b/OWNERS index 3b6dacf5..de141da 100644 --- a/OWNERS +++ b/OWNERS
@@ -24,6 +24,7 @@ per-file PRESUBMIT*.py=jochen@chromium.org per-file README.md=* per-file WATCHLISTS=* +per-file *.pydeps=file://build/OWNERS per-file *.gn=file://build/OWNERS per-file *.gni=file://build/OWNERS per-file *fuzzer.*=file://testing/libfuzzer/OWNERS
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc index 46edc74..f834eed1 100644 --- a/ash/login/ui/lock_contents_view.cc +++ b/ash/login/ui/lock_contents_view.cc
@@ -2343,7 +2343,11 @@ ToggleSystemInfo(); return; } - Shell::Get()->login_screen_controller()->HandleAccelerator(action); + // Do not allow accelerator action when system modal window is open except + // `kShowFeedback` which opens feedback tool on top of system modal. + if (!Shell::IsSystemModalWindowOpen() || + action == LoginAcceleratorAction::kShowFeedback) + Shell::Get()->login_screen_controller()->HandleAccelerator(action); } bool LockContentsView::GetSystemInfoVisibility() const {
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_iw.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_iw.xtb index 4bb63f2..9ad329ad 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_iw.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_iw.xtb
@@ -64,7 +64,7 @@ <translation id="3020183492814296499">קיצורים</translation> <translation id="3084301071537457911">הדגשת הפריט הבא במדף</translation> <translation id="309173601632226815">הדגשת הלחצן של מרכז האפליקציות במדף</translation> -<translation id="3105917916468784889">ביצוע של צילום מסך</translation> +<translation id="3105917916468784889">צילום מסך</translation> <translation id="3126026824346185272">Ctrl</translation> <translation id="3140353188828248647">התמקדות בשורת כתובת האתר</translation> <translation id="3256109297135787951">הסרת הסימון מפריט במדף</translation> @@ -135,7 +135,7 @@ <translation id="6045998054441862242">הפעלת מצב של ניגודיות גבוהה</translation> <translation id="6052614013050385269">לחיצה ימנית על קישור</translation> <translation id="6129953537138746214">רווח</translation> -<translation id="6143669479988153888">התקרבות לדף</translation> +<translation id="6143669479988153888">הגדלת התצוגה של הדף</translation> <translation id="6185696379715117369">Page up</translation> <translation id="6228457605945141550">הפחתת הבהירות</translation> <translation id="6276708887952587684">הצגת מקור הדף</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index 43397a7..676a0b5 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" />এ <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> Hz) সমৰ্থন নকৰে। ৰিজ’লিউশ্বনটো <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />)লৈ সলনি কৰা হৈছে। সালসলনিসমূহ ৰাখিবলৈ নিশ্চিত কৰকত ক্লিক কৰক। পূৰ্বৱৰ্তী ছেটিংসমূহ <ph name="TIMEOUT_SECONDS" />ত পুনঃস্থাপন কৰা হ’ব।</translation> <translation id="1919743966458266018">কাৰ্য পৰিচালক খোলা শ্বর্টকাট সলনি কৰা হৈছে। অনুগ্ৰহ কৰি <ph name="OLD_SHORTCUT" />ৰ সলনি <ph name="NEW_SHORTCUT" /> ব্যৱহাৰ কৰক।</translation> <translation id="1923539912171292317">স্বয়ংক্ৰিয় ক্লিক</translation> +<translation id="1924640696879807758">ফ’নৰ পৰা</translation> <translation id="1928739107511554905">আপডে’টটো পাবলৈ কীব’ৰ্ড সংলগ্ন থকা Chromebook ৰিষ্টাৰ্ট কৰিবলৈ টাচ্চস্ক্ৰীণখন ব্যৱহাৰ কৰক।</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">০°</translation> @@ -682,6 +683,7 @@ <translation id="7904094684485781019">এই একাউণ্টটোৰ প্ৰশাসককে একাধিক ছাইন ইন কৰাৰ অনুমতি দিয়া নাই।</translation> <translation id="7933084174919150729">Google Assistant কেৱল প্ৰাথমিক প্ৰ’ফাইলৰ বাবে উপলব্ধ।</translation> <translation id="79341161159229895"><ph name="FIRST_PARENT_EMAIL" /> আৰু <ph name="SECOND_PARENT_EMAIL" />এ একাউণ্ট পৰিচালনা কৰে</translation> +<translation id="793716872548410480">আপোনাৰ ক্লিপব’ৰ্ড চাবলৈ <ph name="SHORTCUT_KEY_NAME" /> + ভি টিপক। আপুনি প্ৰতিলিপি কৰা অন্তিম ৫ টা বস্তু আপোনাৰ ক্লিপব’ৰ্ডত ছেভ কৰা হৈছে।</translation> <translation id="7955885781510802139">ৰঙৰ উচ্চ প্ৰভেদযুক্ত ম’ড</translation> <translation id="7977927628060636163">ম'বাইল নেটৱৰ্ক বিচাৰি থকা হৈছে...</translation> <translation id="7980780401175799550">Chrome OS নেভিগে’ট কৰাৰ নতুন উপায়সমূহ ব্যৱহাৰ কৰি চাওক</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index bd55e02a..c0fe189 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> no admite el valor de resolución <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> Hz), por lo que se cambió a <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />). Para mantener este cambio, haz clic en Confirmar. En <ph name="TIMEOUT_SECONDS" /> se restablecerá la configuración anterior.</translation> <translation id="1919743966458266018">Se modificó el acceso directo para abrir el administrador de tareas. Utiliza <ph name="NEW_SHORTCUT" /> en vez de <ph name="OLD_SHORTCUT" />.</translation> <translation id="1923539912171292317">Clics automáticos</translation> +<translation id="1924640696879807758">Del teléfono</translation> <translation id="1928739107511554905">Para obtener la actualización, usa la pantalla táctil para reiniciar tu Chromebook con el teclado conectado.</translation> <translation id="1951012854035635156">Asistente</translation> <translation id="1957803754585243749">0°</translation> @@ -687,6 +688,7 @@ <translation id="7904094684485781019">El administrador de esta cuenta inhabilitó el acceso múltiple.</translation> <translation id="7933084174919150729">El Asistente de Google solo está disponible para el perfil principal.</translation> <translation id="79341161159229895">Cuenta administrada por <ph name="FIRST_PARENT_EMAIL" /> y <ph name="SECOND_PARENT_EMAIL" /></translation> +<translation id="793716872548410480">Presiona <ph name="SHORTCUT_KEY_NAME" /> + V para ver el contenido de tu portapapeles. Los últimos 5 elementos que copiaste se guardan en el portapapeles.</translation> <translation id="7955885781510802139">Modo de contraste alto</translation> <translation id="7977927628060636163">Buscando redes móviles…</translation> <translation id="7980780401175799550">Prueba nuevas formas de navegar con el Sistema operativo Chrome</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb index 0d2a55d..94632add 100644 --- a/ash/strings/ash_strings_es.xtb +++ b/ash/strings/ash_strings_es.xtb
@@ -688,7 +688,7 @@ <translation id="7904094684485781019">El administrador de esta cuenta ha inhabilitado el inicio de sesión múltiple.</translation> <translation id="7933084174919150729">El Asistente de Google solo está disponible en el perfil principal.</translation> <translation id="79341161159229895">Cuenta gestionada por <ph name="FIRST_PARENT_EMAIL" /> y <ph name="SECOND_PARENT_EMAIL" /></translation> -<translation id="793716872548410480">Pulsa <ph name="SHORTCUT_KEY_NAME" /> + V para ver el portapapeles. En el portapapeles, se guardan los 5 últimos elementos que hayas copiado.</translation> +<translation id="793716872548410480">Pulsa <ph name="SHORTCUT_KEY_NAME" /> + V para ver el portapapeles, que guarda los 5 últimos elementos que hayas copiado.</translation> <translation id="7955885781510802139">Modo de contraste alto</translation> <translation id="7977927628060636163">Buscando redes móviles…</translation> <translation id="7980780401175799550">Prueba nuevas formas de desplazarte por Chrome OS</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index ae3b640..9e30d556 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> Hz)ને સપોર્ટ આપતું નથી. રિઝોલ્યુશનને બદલીને <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />) કરવામાં આવ્યું. ફેરફારો જાળવવા માટે કન્ફર્મ કરો પર ક્લિક કરો. અગાઉના સેટિંગ <ph name="TIMEOUT_SECONDS" />માં રિસ્ટોર કરવામાં આવશે.</translation> <translation id="1919743966458266018">Tasks સંચાલક ખોલવાનો શોર્ટકટ બદલાયો છે. કૃપા કરીને <ph name="NEW_SHORTCUT" /> ની બદલે <ph name="OLD_SHORTCUT" /> નો ઉપયોગ કરો.</translation> <translation id="1923539912171292317">આપમેળે ક્લિક્સ</translation> +<translation id="1924640696879807758">ફોન પરથી</translation> <translation id="1928739107511554905">અપડેટ મેળવવા માટે, તમારી Chromebookને જોડાયેલ કીબોર્ડ સાથે ફરીથી શરૂ કરવા માટે ટચસ્કીનનો ઉપયોગ કરો.</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> @@ -314,6 +315,7 @@ <translation id="4072264167173457037">મધ્યમ સિગ્નલ</translation> <translation id="4112140312785995938">પાછળ કરો</translation> <translation id="4114315158543974537">ફોન હબ ચાલુ કરો</translation> +<translation id="4121728057981832179">કોઈ વર્ચ્યુઅલ મશીન તમારા માઇક્રોફોનનો ઉપયોગ કરી રહ્યું છે</translation> <translation id="4129129681837227511">તમારી લૉક સ્ક્રીન પર નોટિફિકેશન જોવા માટે, સેટિંગને બદલવા માટે અનલૉક કરો</translation> <translation id="4146833061457621061">મ્યુઝિક વગાડો</translation> <translation id="4149156641122542261"><ph name="DEVICE_TYPE" /> <ph name="DOMAIN" /> દ્વારા મેનેજ કરવામાં આવે છે</translation> @@ -328,6 +330,7 @@ <translation id="4217571870635786043">ડિક્ટેશન</translation> <translation id="4239069858505860023">GPRS</translation> <translation id="4261870227682513959">નોટિફિકેશન સેટિંગ બતાવો. નોટિફિકેશન બંધ છે</translation> +<translation id="4267383818855338811">કોઈ વર્ચ્યુઅલ મશીન તમારા કૅમેરાનો ઉપયોગ કરી રહ્યું છે</translation> <translation id="4269883910223712419">આ ઉપકરણના વ્યવસ્થાપકની ક્ષમતા:</translation> <translation id="4279490309300973883">પ્રતિબિંબત થઈ રહ્યું છે</translation> <translation id="4285498937028063278">અનપિન કરો</translation> @@ -363,6 +366,7 @@ <translation id="4513946894732546136">પ્રતિસાદ</translation> <translation id="4527045527269911712">Bluetooth ડિવાઇસ "<ph name="DEVICE_NAME" />" ને જોડી બનાવવા માટે પરવાનગી જોઈએ છે.</translation> <translation id="453661520163887813">પૂર્ણપણે ચાર્જ થવામાં <ph name="TIME" /></translation> +<translation id="4544483149666270818">રેકોર્ડ કરવા માટે વિન્ડો પસંદ કરો</translation> <translation id="4560576029703263363">ચાલુ</translation> <translation id="4561267230861221837">3G</translation> <translation id="4565377596337484307">પાસવર્ડ છુપાવો</translation> @@ -402,6 +406,15 @@ <translation id="4918086044614829423">સ્વીકારો</translation> <translation id="4924411785043111640">ફરી શરૂ કરો અને રીસેટ કરો</translation> <translation id="4925542575807923399">આ એકાઉન્ટના એડમિન માટે જરૂરી છે કે આ એકાઉન્ટ એકથી વધુ સાઇન ઇન સત્રમાં પ્રથમ સાઇન ઇન કરેલ એકાઉન્ટ હોય.</translation> +<translation id="4942878304446937978">સ્ટેટસ ટ્રે, સમય <ph name="TIME" />, + <ph name="BATTERY" /> + <ph name="NETWORK" />, + <ph name="MIC" />, + <ph name="CAMERA" />, + <ph name="NOTIFICATION" />, + <ph name="IME" /> + <ph name="LOCALE" /></translation> +<translation id="4946376291507881335">કૅપ્ચર કરો</translation> <translation id="495046168593986294">ઉપર સ્ક્રોલ કરો</translation> <translation id="4961318399572185831">સ્ક્રીનને કાસ્ટ કરો</translation> <translation id="4969092041573468113"><ph name="HOURS" /> કલાક <ph name="MINUTES" /> મિનિટ <ph name="SECONDS" /> સેકન્ડ</translation> @@ -447,6 +460,7 @@ <translation id="554893713779400387">શ્રુતલેખન ટૉગલ કરો</translation> <translation id="556042886152191864">બટન</translation> <translation id="5571066253365925590">Bluetooth સક્ષમ છે</translation> +<translation id="558849140439112033">કૅપ્ચર કરવાના વિસ્તારને પસંદ કરવા માટે ખેંચો</translation> <translation id="5597451508971090205"><ph name="SHORT_WEEKDAY" />, <ph name="DATE" /></translation> <translation id="5600837773213129531">બોલાયેલ પ્રતિસાદને બંધ કરવા માટે Ctrl + Alt + Z દબાવો.</translation> <translation id="5625955975703555628">LTE+</translation> @@ -474,9 +488,11 @@ <translation id="5860033963881614850">બંધ</translation> <translation id="5876666360658629066">માતાપિતાનો કોડ દાખલ કરો</translation> <translation id="5895138241574237353">પુનઃપ્રારંભ કરો</translation> +<translation id="589817443623831496">પૉઇન્ટ સ્કૅનિંગ</translation> <translation id="5901316534475909376">Shift + Esc</translation> <translation id="5909862606227538307">નિષ્ક્રિય ડેસ્કટૉપ.</translation> <translation id="5911909173233110115"><ph name="USERNAME" /> (<ph name="MAIL" />)</translation> +<translation id="5915278665499293471">પૂર્ણસ્ક્રીન કૅપ્ચર કરવા માટે સ્ક્રીન પર ગમે ત્યાં ક્લિક કરો</translation> <translation id="5916664084637901428">ચાલુ</translation> <translation id="5920710855273935292">માઇક્રોફોન મ્યૂટ કરેલો છે.</translation> <translation id="594179686076170922">તમારા ફોનને કનેક્ટ કરી રહ્યાં છીએ…</translation> @@ -534,6 +550,7 @@ <translation id="6490471652906364588">USB-C ઉપકરણ (જમણું પોર્ટ)</translation> <translation id="649452524636452238">સ્માર્ટ કાર્ડ પિન</translation> <translation id="6501401484702599040"><ph name="RECEIVER_NAME" /> પર સ્ક્રીન કાસ્ટ કરી રહ્યાં છીએ</translation> +<translation id="6520517963145875092">કૅપ્ચર કરવા માટે વિન્ડો પસંદ કરો</translation> <translation id="652139407789908527">આ અપડેટ દરમ્યાન, સામાન્ય કરતાં વધુ વાર માટે (એક મિનિટ સુધી) તમારી સ્ક્રીન પર કંઈ દેખાશે નહીં. અપડેટની પ્રક્રિયા ચાલી રહી હોય, ત્યારે કૃપા કરીને પાવર બટન દબાવશો નહીં.</translation> <translation id="6528179044667508675">ખલેલ પાડશો નહિ</translation> <translation id="65320610082834431">ઇમોજી</translation> @@ -562,6 +579,7 @@ <translation id="6751052314767925245">તમારા વ્યવસ્થાપક દ્વારા લાગુ કરેલી</translation> <translation id="6751826523481687655">કાર્યપ્રદર્શનની નોંધ રાખવાનું ચાલુ કરેલું છે</translation> <translation id="6752912906630585008">ડેસ્ક <ph name="REMOVED_DESK" /> કાઢી નાખ્યું અને ડેસ્ક <ph name="RECEIVE_DESK" /> સાથે મર્જ કર્યું</translation> +<translation id="6757237461819837179">કોઈ મીડિયા ચલાવી રહ્યાં નથી</translation> <translation id="6777216307882431711">કનેક્ટ કરેલા બધા USB-C ડિવાઇસને પાવર સપ્લાય આપી રહ્યાં છીએ</translation> <translation id="6790428901817661496">ચલાવો</translation> <translation id="6803622936009808957">કોઈ સમર્થિત રિઝોલ્યૂશન મળ્યું ન હોવાથી, પ્રદર્શનોને પ્રતિબિંબિત કરી શકાયા નથી. તેને બદલે વિસ્તૃત ડેસ્કટૉપ દાખલ કર્યું.</translation> @@ -610,6 +628,7 @@ <translation id="7348093485538360975">ઑન-સ્ક્રીન કીબોર્ડ</translation> <translation id="735745346212279324">VPN ડિસ્કનેક્ટ કર્યું છે</translation> <translation id="7377169924702866686">Caps Lock ચાલુ છે.</translation> +<translation id="7378203170292176219">રેકોર્ડ કરવાના વિસ્તારને પસંદ કરવા માટે ખેંચો</translation> <translation id="7378594059915113390">મીડિયા નિયંત્રણો</translation> <translation id="7398254312354928459">સ્વિચ કરેલ નેટવર્ક કનેક્શન</translation> <translation id="7405710164030118432">ડિવાઇસને અનલૉક કરવા માટે, તમારી Family Linkનો માતાપિતા માટેનો ઍક્સેસ કોડ દાખલ કરો</translation> @@ -636,6 +655,7 @@ <translation id="7618774594543487847">ન્યૂટ્રલ</translation> <translation id="7624117708979618027"><ph name="TEMPERATURE_F" />° F</translation> <translation id="7633755430369750696">નજીકના શેરિંગ સેટિંગ બતાવો.</translation> +<translation id="7641938616688887143">રેકોર્ડ કરો</translation> <translation id="7642647758716480637"><ph name="NETWORK_NAME" /> માટે સેટિંગ ખોલો, <ph name="CONNECTION_STATUS" /></translation> <translation id="7645176681409127223"><ph name="USER_NAME" /> (માલિક)</translation> <translation id="7647488630410863958">તમારી સૂચનાઓ જોવા માટે ડિવાઇસને અનલૉક કરો</translation> @@ -667,6 +687,7 @@ <translation id="7904094684485781019">આ એકાઉન્ટ માટે વ્યસ્થાપકે એકથી વધુ સાઇન ઇનને નામંજૂર કર્યું છે.</translation> <translation id="7933084174919150729">Google સહાયક માત્ર પ્રાથમિક પ્રોફાઇલ માટે જ ઉપલબ્ધ છે.</translation> <translation id="79341161159229895"><ph name="FIRST_PARENT_EMAIL" /> અને <ph name="SECOND_PARENT_EMAIL" /> દ્વારા મેનેજ કરાતું એકાઉન્ટ</translation> +<translation id="793716872548410480">તમારું ક્લિપબોર્ડ જોવા માટે <ph name="SHORTCUT_KEY_NAME" /> + V દબાવો. તમે કૉપિ કરેલી છેલ્લી 5 આઇટમ તમારા ક્લિપબોર્ડ પર સાચવવામાં આવી છે.</translation> <translation id="7955885781510802139">ઉચ્ચ કોન્ટ્રાસ્ટ મોડ</translation> <translation id="7977927628060636163">મોબાઇલ નેટવર્કની શોધ કરી રહ્યું છે...</translation> <translation id="7980780401175799550">Chrome OS પર નૅવિગેટ કરવાની નવી રીતો અજમાવી જુઓ</translation> @@ -732,6 +753,7 @@ <translation id="8563862697512465947">સૂચના સેટિંગ્સ</translation> <translation id="857201607579416096">મેનૂને સ્ક્રીનની નીચેના જમણા ખૂણામાં ખસેડ્યું.</translation> <translation id="8594115950068821369">-<ph name="FORMATTED_TIME" /></translation> +<translation id="861041328460089089">પૂર્ણસ્ક્રીન કૅપ્ચર કરવા માટે સ્ક્રીન પર ગમે ત્યાં ટૅપ કરો</translation> <translation id="8627191004499078455"><ph name="DEVICE_NAME" /> સાથે કનેક્ટ થયા</translation> <translation id="8631727435199967028">ઍક્સેસિબિલિટી સેટિંગ</translation> <translation id="8637598503828012618"><ph name="CONNECTION_STATUS" />, સિગ્નલની સશક્તતા <ph name="SIGNAL_STRENGTH" />, તમારા વ્યવસ્થાપક દ્વારા મેનેજ કરવામાં આવે છે</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb index 8218712..f7f0a21 100644 --- a/ash/strings/ash_strings_iw.xtb +++ b/ash/strings/ash_strings_iw.xtb
@@ -19,7 +19,7 @@ <translation id="112308213915226829">הסתרה אוטומטית של המדף</translation> <translation id="1153356358378277386">מכשירים מותאמים</translation> <translation id="1175572348579024023">גלילה</translation> -<translation id="1178581264944972037">השהה</translation> +<translation id="1178581264944972037">השהיה</translation> <translation id="1190609913194133056">מרכז התראות</translation> <translation id="1195412055398077112">סריקת יתר</translation> <translation id="119944043368869598">ניקוי הכל</translation> @@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> לא תומך ברזולוציה של <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> הרץ). הרזולוציה הוחלפה ל-<ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />). עליך ללחוץ על 'אישור' כדי לשמור את השינויים. ההגדרות הקודמות ישוחזרו בעוד <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1919743966458266018">מקש הקיצור לפתיחת מנהל המשימות השתנה. השתמש ב-<ph name="NEW_SHORTCUT" /> במקום ב-<ph name="OLD_SHORTCUT" />.</translation> <translation id="1923539912171292317">לחיצות אוטומטיות</translation> +<translation id="1924640696879807758">מהטלפון</translation> <translation id="1928739107511554905">כדי להתקין את העדכון, יש להשתמש במסך המגע ולהפעיל מחדש את ה-Chromebook כשהמקלדת מחוברת.</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> @@ -300,7 +301,7 @@ <translation id="394485226368336402">הגדרות אודיו</translation> <translation id="3962859241508114581">הטראק הקודם</translation> <translation id="3969043077941541451">כבוי</translation> -<translation id="397105322502079400">מחשב...</translation> +<translation id="397105322502079400">מתבצע חישוב...</translation> <translation id="3977512764614765090">שיעור הטעינה של הסוללה הוא <ph name="PERCENTAGE" />% והטעינה נמשכת.</translation> <translation id="3995138139523574647">מכשיר עם יציאת USB-C (יציאה ימנית-אחורית)</translation> <translation id="40062176907008878">כתב יד</translation> @@ -360,7 +361,7 @@ <translation id="4477892968187500306">המכשיר הזה עשוי להכיל אפליקציות שלא אומתו על-ידי Google.</translation> <translation id="4479639480957787382">אתרנט</translation> <translation id="4481530544597605423">מכשירים לא מותאמים</translation> -<translation id="4505050298327493054">שולחן פעיל.</translation> +<translation id="4505050298327493054">שולחן עבודה וירטואלי פעיל.</translation> <translation id="4506458088675900627">יש תנועה חדשה על לוח המגע למעבר לסקירה הכללית</translation> <translation id="4513946894732546136">משוב</translation> <translation id="4527045527269911712">מכשיר ה-Bluetooth "<ph name="DEVICE_NAME" />" מבקש הרשאה לבצע התאמה.</translation> @@ -517,8 +518,8 @@ <translation id="6054305421211936131">כניסה באמצעות כרטיס חכם</translation> <translation id="6062360702481658777">תצא באופן אוטומטי בעוד <ph name="LOGOUT_TIME_LEFT" />.</translation> <translation id="607652042414456612">מכשירי Bluetooth קרובים יכולים לאתר את המחשב שלך, והוא יופיע כ-"<ph name="NAME" />" עם הכתובת <ph name="ADDRESS" /></translation> -<translation id="612734058257491180">Google Assistant אינו זמין בגלישה כאורח.</translation> -<translation id="615957422585914272">הצג מקלדת במסך</translation> +<translation id="612734058257491180">Google Assistant לא זמינה בגלישה כאורח.</translation> +<translation id="615957422585914272">הצגת מקלדת במסך</translation> <translation id="6164005077879661055">כל הקבצים והנתונים המקומיים המשויכים למשתמש בפיקוח יימחקו לצמיתות לאחר שמשתמש בפיקוח זה יוסר. המנהל עדיין יוכל לראות את האתרים שבהם משתמש בפיקוח זה ביקר, ואת ההגדרות שלו, בכתובת <ph name="MANAGEMENT_URL" />.</translation> <translation id="6165508094623778733">למידע נוסף</translation> <translation id="6192859646269780503">איתור טלפון</translation> @@ -611,7 +612,7 @@ <translation id="7088960765736518739">גישה באמצעות מתג</translation> <translation id="7098389117866926363">מכשיר עם יציאת USB-C (יציאה שמאלית מאחור)</translation> <translation id="7131634465328662194">המערכת תוציא אותך מהחשבון באופן אוטומטי.</translation> -<translation id="7143207342074048698">מתחבר</translation> +<translation id="7143207342074048698">מתבצע חיבור</translation> <translation id="7165278925115064263">Alt+Shift+K</translation> <translation id="7168224885072002358">חוזר לרזולוציה הקודמת בעוד <ph name="TIMEOUT_SECONDS" /></translation> <translation id="7180611975245234373">רענון</translation> @@ -688,6 +689,7 @@ <translation id="7904094684485781019">מנהל החשבון הזה אסר על כניסה עם מספר חשבונות.</translation> <translation id="7933084174919150729">Google Assistant זמין רק לפרופיל ראשי.</translation> <translation id="79341161159229895">החשבון מנוהל על-ידי <ph name="FIRST_PARENT_EMAIL" /> ועל-ידי <ph name="SECOND_PARENT_EMAIL" /></translation> +<translation id="793716872548410480">לצפייה בלוח העריכה, יש ללחוץ על <ph name="SHORTCUT_KEY_NAME" /> + V. בלוח העריכה שמורים חמשת הפריטים האחרונים שהעתקת.</translation> <translation id="7955885781510802139">מצב ניגודיות גבוהה</translation> <translation id="7977927628060636163">מחפש רשתות סלולריות...</translation> <translation id="7980780401175799550">דרכים חדשות לנווט ב-Chrome OS</translation> @@ -802,7 +804,7 @@ <translation id="8983038754672563810">HSPA</translation> <translation id="8990809378771970590">מקלדת בשימוש: <ph name="IME_NAME" /></translation> <translation id="899350903320462459">יש לבטל את נעילת המכשיר כ-<ph name="LOGIN_ID" /> על מנת לבצע את פעולת ההודעה</translation> -<translation id="9017320285115481645">יש להזין את קוד הגישה להורים של Family Link.</translation> +<translation id="9017320285115481645">יש להזין את קוד הגישה להורים עבור Family Link.</translation> <translation id="9029474291399787231">יש עדכון בשביל Adobe Flash Player</translation> <translation id="9047624247355796468">פתיחת ההגדרות של <ph name="NETWORK_NAME" /></translation> <translation id="9056839673611986238">המכשיר יוחזר למצב קודם</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index 6ed3f56..d156d56 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> Hz) ସମର୍ଥନ କରେ ନାହିଁ। ରିଜୋଲ୍ୟୁସନ୍ <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />)କୁ ପରିବର୍ତ୍ତନ କରାଯାଇଥିଲା। ପରିବର୍ତ୍ତନଗୁଡ଼ିକ ରଖିବାକୁ "ସୁନିଶ୍ଚିତ କରନ୍ତୁ"ରେ କ୍ଲିକ୍ କରନ୍ତୁ। <ph name="TIMEOUT_SECONDS" />ରେ ପୂର୍ବବର୍ତ୍ତୀ ସେଟିଂସ୍ ରିଷ୍ଟୋର୍ କରାଯିବ।</translation> <translation id="1919743966458266018">'ଟାସ୍କ୍ ମ୍ୟାନେଜର୍' ଖୋଲିବାକୁ ଥିବା ସର୍ଟ୍କଟ୍ଟି ବଦଳିଯାଇଛି। ଦୟାକରି <ph name="OLD_SHORTCUT" /> ପରିବର୍ତ୍ତେ <ph name="NEW_SHORTCUT" />ଟିକୁ ବ୍ୟବହାର କରନ୍ତୁ।</translation> <translation id="1923539912171292317">ସ୍ଵଚାଳିତ କ୍ଲିକ୍</translation> +<translation id="1924640696879807758">ଫୋନରୁ</translation> <translation id="1928739107511554905">ଅପ୍ଡେଟ୍ ପ୍ରାପ୍ତ କରିବା ପାଇଁ, କୀବୋର୍ଡ ସଂଲଗ୍ନ ଥିବା ଆପଣଙ୍କର Chromebook ରିଷ୍ଟାର୍ଟ କରିବାକୁ ଟଚ୍ସ୍କ୍ରିନ୍ର ବ୍ୟବହାର କରନ୍ତୁ।</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1957803754585243749">0°</translation> @@ -686,6 +687,7 @@ <translation id="7904094684485781019">ଏହି ଆକାଉଣ୍ଟର ବ୍ୟବସ୍ଥାପକ ଏକାଧିକ ସାଇନ୍ ଇନ୍ ପାଇଁ ଅନୁମତି ଦେଇନାହାନ୍ତି।</translation> <translation id="7933084174919150729">Google Assistant କେବଳ ପ୍ରାଥମିକ ପ୍ରୋଫାଇଲ୍ ପାଇଁ ଉପଲବ୍ଧ ଅଟେ।</translation> <translation id="79341161159229895"><ph name="FIRST_PARENT_EMAIL" /> ଏବଂ <ph name="SECOND_PARENT_EMAIL" /> ଦ୍ୱାରା ଆକାଉଣ୍ଟ ପରିଚାଳିତ ହେଉଛି</translation> +<translation id="793716872548410480">ଆପଣଙ୍କ କ୍ଲିପବୋର୍ଡ ଦେଖିବାକୁ <ph name="SHORTCUT_KEY_NAME" /> + V ଦବାନ୍ତୁ। ଆପଣ କପି କରିଥିବା ଗତ 5ଟି ଆଇଟମକୁ ଆପଣଙ୍କ କ୍ଲିପବୋର୍ଡରେ ସେଭ୍ କରାଯାଇଛି।</translation> <translation id="7955885781510802139">ଉଚ୍ଚ କଣ୍ଟ୍ରାଷ୍ଟ ମୋଡ୍</translation> <translation id="7977927628060636163">ମୋବାଇଲ୍ ନେଟ୍ୱର୍କ ଖୋଜୁଛି...</translation> <translation id="7980780401175799550">Chrome OSକୁ ନାଭିଗେଟ୍ କରିବା ପାଇଁ ନୂଆ ଉପାୟଗୁଡ଼ିକ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb index be0fcc4..bd2c104 100644 --- a/ash/strings/ash_strings_ur.xtb +++ b/ash/strings/ash_strings_ur.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> <ph name="SPECIFIED_RESOLUTION" />(Hz<ph name="SPECIFIED_REFRESH_RATE" />) کو سپورٹ نہیں کرتا ہے۔ ریزولیوشن کو تبدیل کر کے <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />) کر دیا گیا۔ تبدیلیاں باقی رکھنے کے لیے تصدیق کریں پر کلک کریں۔ گزشتہ ترتیبات کو <ph name="TIMEOUT_SECONDS" /> میں بحال کر دیا جائے گا۔</translation> <translation id="1919743966458266018">ٹاسک مینیجر کھولنے کے شارٹ کٹ کو تبدیل کر دیا گیا ہے۔ براہ کرم <ph name="OLD_SHORTCUT" /> کی بجائے <ph name="NEW_SHORTCUT" /> استعمال کریں۔</translation> <translation id="1923539912171292317">خودکار کلکس</translation> +<translation id="1924640696879807758">فون سے</translation> <translation id="1928739107511554905">اپ ڈیٹ حاصل کرنے کیلئے، ٹچ اسکرین استعمال کر کے منسلک شدہ کی بورڈ سے اپنا Chromebook دوبارہ شروع کریں۔</translation> <translation id="1951012854035635156">اسسٹنٹ</translation> <translation id="1957803754585243749">0°</translation> @@ -686,6 +687,7 @@ <translation id="7904094684485781019">اس اکاؤنٹ کے منتظم نے متعدد سائن ان کی اجازت ختم کر دی ہے۔</translation> <translation id="7933084174919150729">Google اسسٹنٹ صرف بنیادی پروفائل کے لیے دستیاب ہے۔</translation> <translation id="79341161159229895"><ph name="FIRST_PARENT_EMAIL" /> اور <ph name="SECOND_PARENT_EMAIL" /> کے زیر نظم اکاؤنٹ</translation> +<translation id="793716872548410480">اپنا کلپ بورڈ دیکھنے کے لئے <ph name="SHORTCUT_KEY_NAME" /> + V کو دبائیں۔ آپ کے کاپی کردہ آخری 5 آئٹمز کو آپ کے کلپ بورڈ میں محفوظ کیا گیا ہے۔</translation> <translation id="7955885781510802139">اعلی تناسب امتزاج وضع</translation> <translation id="7977927628060636163">موبائل نیٹ ورکس کو تلاش کیا جا رہا ہے…</translation> <translation id="7980780401175799550">Chrome OS پر نیویگیٹ کرنے کیلئے نئے طریقے آزمائیں</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb index 3e3027f..3b2e56f8 100644 --- a/ash/strings/ash_strings_vi.xtb +++ b/ash/strings/ash_strings_vi.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144"><ph name="DISPLAY_NAME" /> không hỗ trợ <ph name="SPECIFIED_RESOLUTION" /> (<ph name="SPECIFIED_REFRESH_RATE" /> Hz). Độ phân giải đã được đổi thành <ph name="FALLBACK_RESOLUTION" /> (<ph name="FALLBACK_REFRESH_RATE" />). Hãy nhấp vào xác nhận để lưu các thay đổi. Các tùy chọn cài đặt trước sẽ được khôi phục sau <ph name="TIMEOUT_SECONDS" /> nữa.</translation> <translation id="1919743966458266018">Phím tắt để mở trình quản lý tác vụ đã thay đổi. Vui lòng sử dụng <ph name="NEW_SHORTCUT" /> thay vì <ph name="OLD_SHORTCUT" />.</translation> <translation id="1923539912171292317">Nhấp chuột tự động</translation> +<translation id="1924640696879807758">Từ điện thoại</translation> <translation id="1928739107511554905">Để cập nhật, hãy dùng màn hình cảm ứng để khởi động lại Chromebook bằng bàn phím đã kết nối.</translation> <translation id="1951012854035635156">Trợ lý</translation> <translation id="1957803754585243749">0°</translation> @@ -686,6 +687,7 @@ <translation id="7904094684485781019">Quản trị viên của tài khoản này đã không cho phép đăng nhập nhiều tài khoản.</translation> <translation id="7933084174919150729">Bạn chỉ có thể sử dụng Trợ lý Google cho hồ sơ chính.</translation> <translation id="79341161159229895">Tài khoản được quản lý bởi <ph name="FIRST_PARENT_EMAIL" /> và <ph name="SECOND_PARENT_EMAIL" /></translation> +<translation id="793716872548410480">Nhấn tổ hợp phím <ph name="SHORTCUT_KEY_NAME" /> + V để xem khay nhớ tạm. 5 mục gần đây nhất mà bạn đã sao chép sẽ được lưu vào khay nhớ tạm.</translation> <translation id="7955885781510802139">Chế độ tương phản cao</translation> <translation id="7977927628060636163">Đang tìm kiếm mạng di động...</translation> <translation id="7980780401175799550">Thử những cách mới để thao tác trong Chrome OS</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb index 0915a02..a084e953 100644 --- a/ash/strings/ash_strings_zh-CN.xtb +++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -100,6 +100,7 @@ <translation id="1888656773939766144">“<ph name="DISPLAY_NAME" />”不支持 <ph name="SPECIFIED_RESOLUTION" />(<ph name="SPECIFIED_REFRESH_RATE" /> 赫兹)。分辨率已改为 <ph name="FALLBACK_RESOLUTION" />(<ph name="FALLBACK_REFRESH_RATE" />)。点击“确认”即可保留更改。系统将在 <ph name="TIMEOUT_SECONDS" />后恢复以前的设置。</translation> <translation id="1919743966458266018">用于打开任务管理器的快捷键已更改。请使用 <ph name="NEW_SHORTCUT" />,而不是 <ph name="OLD_SHORTCUT" />。</translation> <translation id="1923539912171292317">自动点击</translation> +<translation id="1924640696879807758">来自手机</translation> <translation id="1928739107511554905">要想获取此项更新,请在已连接该键盘的情况下使用触摸屏重新启动您的 Chromebook。</translation> <translation id="1951012854035635156">智能助理</translation> <translation id="1957803754585243749">0°</translation> @@ -686,6 +687,7 @@ <translation id="7904094684485781019">此帐号的管理员已停用多帐号登录。</translation> <translation id="7933084174919150729">Google 助理仅适用于主要个人资料。</translation> <translation id="79341161159229895">该帐号由 <ph name="FIRST_PARENT_EMAIL" /> 和 <ph name="SECOND_PARENT_EMAIL" /> 管理</translation> +<translation id="793716872548410480">按<ph name="SHORTCUT_KEY_NAME" /> + V 可查看您的剪贴板。您复制的最后 5 项内容会保存到您的剪贴板中。</translation> <translation id="7955885781510802139">高对比度模式</translation> <translation id="7977927628060636163">正在搜索移动网络…</translation> <translation id="7980780401175799550">尝试使用新方式在 Chrome 操作系统中导航</translation>
diff --git a/base/tracing/protos/resources.grd b/base/tracing/protos/resources.grd index a009575..d5e0112 100644 --- a/base/tracing/protos/resources.grd +++ b/base/tracing/protos/resources.grd
@@ -1,7 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <grit base_dir="." latest_public_release="0" current_release="1"> <outputs> - <output filename="grit/tracing_proto_resources.h" type="rc_header" /> + <output filename="grit/tracing_proto_resources.h" type="rc_header"> + <emit emit_type="prepend"></emit> + </output> <output filename="tracing_proto_resources.pak" type="data_package" /> </outputs> <release seq="1">
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni index 4832714..9ac49fb4 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni
@@ -122,7 +122,6 @@ if (enable_java_templates) { import("//build/config/sanitizers/sanitizers.gni") - import("//tools/grit/grit_rule.gni") # JNI target implementation. See generate_jni or generate_jar_jni for usage. template("generate_jni_impl") { @@ -1258,102 +1257,6 @@ } } - # Declare a target that generates localized strings.xml from a .grd file. - # - # If this target is included in the deps of an android resources/library/apk, - # the strings.xml will be included with that target. - # - # Variables - # deps: Specifies the dependencies of this target. - # grd_file: Path to the .grd file to generate strings.xml from. - # outputs: Expected grit outputs (see grit rule). - # - # Example - # java_strings_grd("foo_strings_grd") { - # grd_file = "foo_strings.grd" - # } - template("java_strings_grd") { - forward_variables_from(invoker, [ "testonly" ]) - - _resources_zip = "$target_out_dir/$target_name.resources.zip" - _grit_target_name = "${target_name}__grit" - _grit_output_dir = "$target_gen_dir/${target_name}_grit_output" - - grit(_grit_target_name) { - forward_variables_from(invoker, - [ - "deps", - "defines", - ]) - grit_flags = [ - "-E", - "ANDROID_JAVA_TAGGED_ONLY=false", - ] - output_dir = _grit_output_dir - resource_ids = "" - source = invoker.grd_file - outputs = invoker.outputs - } - - _zip_target_name = "${target_name}__zip" - - zip(_zip_target_name) { - base_dir = _grit_output_dir - - # This needs to get outputs from grit's internal target, not the final - # source_set. - inputs = filter_exclude(get_target_outputs(":${_grit_target_name}_grit"), - [ "*.stamp" ]) - output = _resources_zip - deps = [ ":$_grit_target_name" ] - } - - android_generated_resources(target_name) { - generating_target_name = ":$_zip_target_name" - generated_resources_zip = _resources_zip - } - } - - # Declare a target that packages strings.xml generated from a grd file. - # - # If this target is included in the deps of an android resources/library/apk, - # the strings.xml will be included with that target. - # - # Variables - # grit_output_dir: directory containing grit-generated files. - # generated_files: list of android resource files to package. - # - # Example - # java_strings_grd_prebuilt("foo_strings_grd") { - # grit_output_dir = "$root_gen_dir/foo/grit" - # generated_files = [ - # "values/strings.xml" - # ] - # } - template("java_strings_grd_prebuilt") { - forward_variables_from(invoker, [ "testonly" ]) - - _resources_zip = "$target_out_dir/$target_name.resources.zip" - _zip_target_name = "${target_name}__zip" - - zip(_zip_target_name) { - forward_variables_from(invoker, [ "visibility" ]) - - base_dir = invoker.grit_output_dir - inputs = rebase_path(invoker.generated_files, ".", base_dir) - output = _resources_zip - if (defined(invoker.deps)) { - deps = invoker.deps - } - } - - android_generated_resources(target_name) { - forward_variables_from(invoker, [ "resource_overlay" ]) - generating_target_name = ":$_zip_target_name" - generated_resources_zip = _resources_zip - } - } - # Declare a Java executable target # # Same as java_library, but also creates a wrapper script within
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index a6d7a75d..ee59d30ad 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -0.20201018.3.1 +0.20201019.1.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index a6d7a75d..ee59d30ad 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -0.20201018.3.1 +0.20201019.1.1
diff --git a/chrome/android/features/autofill_assistant/BUILD.gn b/chrome/android/features/autofill_assistant/BUILD.gn index 81ae043f..ca57d1f 100644 --- a/chrome/android/features/autofill_assistant/BUILD.gn +++ b/chrome/android/features/autofill_assistant/BUILD.gn
@@ -6,6 +6,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") import("//chrome/common/features.gni") +import("//tools/grit/grit_rule.gni") # The animated_poodle_java target is overridden downstream and used # instead of this one if the enable_chrome_android_internal flag is @@ -269,7 +270,6 @@ "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantHeaderUiTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantInfoBoxUiTest.java", - "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantInputActionIntegrationTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantKeyboardIntegrationTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantNavigationIntegrationTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantOverlayIntegrationTest.java",
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java index 4619e8d..a2cec03 100644 --- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java +++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java
@@ -15,7 +15,6 @@ import org.chromium.chrome.autofill_assistant.R; import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.app.ChromeActivity; -import org.chromium.chrome.browser.autofill_assistant.carousel.AssistantCarouselModel; import org.chromium.chrome.browser.autofill_assistant.carousel.AssistantChip; import org.chromium.chrome.browser.autofill_assistant.carousel.AssistantChip.Type; import org.chromium.chrome.browser.autofill_assistant.metrics.DropOutReason; @@ -339,9 +338,9 @@ */ @CalledByNative private AssistantChip createActionButton(int icon, String text, int actionIndex, - boolean disabled, boolean sticky, String identifier) { + boolean disabled, boolean sticky, boolean visible) { return new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, icon, text, disabled, sticky, - identifier, () -> safeNativeOnUserActionSelected(actionIndex)); + visible, () -> safeNativeOnUserActionSelected(actionIndex)); } /** @@ -349,8 +348,8 @@ */ @CalledByNative private AssistantChip createHighlightedActionButton(int icon, String text, int actionIndex, - boolean disabled, boolean sticky, String identifier) { - return new AssistantChip(Type.BUTTON_FILLED_BLUE, icon, text, disabled, sticky, identifier, + boolean disabled, boolean sticky, boolean visible) { + return new AssistantChip(Type.BUTTON_FILLED_BLUE, icon, text, disabled, sticky, visible, () -> safeNativeOnUserActionSelected(actionIndex)); } @@ -361,9 +360,9 @@ */ @CalledByNative private AssistantChip createCancelButton(int icon, String text, int actionIndex, - boolean disabled, boolean sticky, String identifier) { + boolean disabled, boolean sticky, boolean visible) { return new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, icon, text, disabled, sticky, - identifier, () -> safeNativeOnCancelButtonClicked(actionIndex)); + visible, () -> safeNativeOnCancelButtonClicked(actionIndex)); } /** @@ -371,9 +370,9 @@ */ @CalledByNative private AssistantChip createCloseButton( - int icon, String text, boolean disabled, boolean sticky, String identifier) { + int icon, String text, boolean disabled, boolean sticky, boolean visible) { return new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, icon, text, disabled, sticky, - identifier, this::safeNativeOnCloseButtonClicked); + visible, this::safeNativeOnCloseButtonClicked); } @CalledByNative @@ -394,24 +393,6 @@ } @CalledByNative - private void setAllChipsVisibleExcept(String identifier, boolean visible) { - AssistantCarouselModel model = getModel().getActionsModel(); - List<AssistantChip> chips = model.get(AssistantCarouselModel.CHIPS); - // Copy the list and modify the copy. Modifying the actual list in-place will not fire the - // relevant change notifications. TODO(b/144075373): Refactor to avoid this deep copy, - // preferably by moving this to native. - List<AssistantChip> newChips = new ArrayList<>(); - for (int i = 0; i < chips.size(); ++i) { - AssistantChip newChip = new AssistantChip(chips.get(i)); - newChips.add(newChip); - if (!chips.get(i).getIdentifier().equals(identifier)) { - newChip.setVisible(visible); - } - } - model.setChips(newChips); - } - - @CalledByNative private void setViewportMode(@AssistantViewportMode int mode) { mCoordinator.getBottomBarCoordinator().setViewportMode(mode); }
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/carousel/AssistantChip.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/carousel/AssistantChip.java index 8cedf67..1e517c5 100644 --- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/carousel/AssistantChip.java +++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/carousel/AssistantChip.java
@@ -67,34 +67,20 @@ */ private final boolean mSticky; - private final String mIdentifier; - /** The callback that will be triggered when this chip is clicked. */ private final Runnable mSelectedListener; public AssistantChip(@Type int type, @Icon int icon, String text, boolean disabled, - boolean sticky, String identifier, Runnable selectedListener) { + boolean sticky, boolean visible, Runnable selectedListener) { mType = type; mIcon = icon; mText = text; mDisabled = disabled; - mVisible = true; mSticky = sticky; - mIdentifier = identifier; + mVisible = visible; mSelectedListener = selectedListener; } - public AssistantChip(AssistantChip other) { - mType = other.mType; - mIcon = other.mIcon; - mText = other.mText; - mDisabled = other.mDisabled; - mVisible = other.mVisible; - mSticky = other.mSticky; - mIdentifier = other.mIdentifier; - mSelectedListener = other.mSelectedListener; - } - public int getType() { return mType; } @@ -127,10 +113,6 @@ return mSticky; } - public String getIdentifier() { - return mIdentifier; - } - public Runnable getSelectedListener() { return mSelectedListener; } @@ -144,7 +126,6 @@ AssistantChip that = (AssistantChip) other; return this.getType() == that.getType() && this.getText().equals(that.getText()) && this.getIcon() == that.getIcon() && this.isSticky() == that.isSticky() - && this.getIdentifier().equals(that.getIdentifier()) && this.isDisabled() == that.isDisabled() && this.isVisible() == that.isVisible(); } }
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantActionsCarouselUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantActionsCarouselUiTest.java index 7c7cba2..65a869e 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantActionsCarouselUiTest.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantActionsCarouselUiTest.java
@@ -96,7 +96,7 @@ -> model.set(AssistantCarouselModel.CHIPS, Collections.singletonList(new AssistantChip( AssistantChip.Type.BUTTON_HAIRLINE, AssistantChip.Icon.NONE, - "Test", false, true, "", null)))); + "Test", false, true, true, null)))); // Chip was created and is displayed on the screen. onView(is(coordinator.getView())) @@ -117,10 +117,10 @@ List<AssistantChip> chips = new ArrayList<>(); for (int i = 0; i < numChips; i++) { chips.add(new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, AssistantChip.Icon.NONE, - "T" + i, false, false, "", null)); + "T" + i, false, false, true, null)); } chips.add(new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, AssistantChip.Icon.NONE, - "X", false, true, "", null)); + "X", false, true, true, null)); TestThreadUtils.runOnUiThreadBlocking(() -> model.set(AssistantCarouselModel.CHIPS, chips)); @@ -145,10 +145,10 @@ List<AssistantChip> chips = new ArrayList<>(); for (int i = 0; i < numChips; i++) { chips.add(new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, AssistantChip.Icon.NONE, - "Test" + i, false, false, "", null)); + "Test" + i, false, false, true, null)); } chips.add(new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, AssistantChip.Icon.NONE, - "Cancel", false, true, "", null)); + "Cancel", false, true, true, null)); TestThreadUtils.runOnUiThreadBlocking(() -> model.set(AssistantCarouselModel.CHIPS, chips)); // Cancel chip is initially displayed to the user. @@ -174,9 +174,9 @@ List<AssistantChip> chips = new ArrayList<>(); chips.add(new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, AssistantChip.Icon.NONE, - "Test 2", false, false, "", null)); + "Test 2", false, false, true, null)); chips.add(new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, AssistantChip.Icon.NONE, - "Cancel", false, true, "", null)); + "Cancel", false, true, true, null)); TestThreadUtils.runOnUiThreadBlocking(() -> model.set(AssistantCarouselModel.CHIPS, chips)); onView(withText("Cancel")).check(matches(isDisplayed())); onView(withText("Test 2")).check(matches(isDisplayed())); @@ -185,7 +185,7 @@ List<AssistantChip> newChips = new ArrayList<>(); newChips.add(chips.get(0)); newChips.add(new AssistantChip(AssistantChip.Type.BUTTON_HAIRLINE, AssistantChip.Icon.NONE, - "Test 1", false, false, "", null)); + "Test 1", false, false, true, null)); newChips.add(chips.get(1)); TestThreadUtils.runOnUiThreadBlocking( () -> model.set(AssistantCarouselModel.CHIPS, newChips));
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantHeaderUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantHeaderUiTest.java index cad8a5de..d717ef0 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantHeaderUiTest.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantHeaderUiTest.java
@@ -206,8 +206,9 @@ AssistantHeaderCoordinator coordinator = createCoordinator(model); String chipText = "Hello World"; - AssistantChip chip = new AssistantChip(AssistantChip.Type.BUTTON_FILLED_BLUE, Icon.DONE, - chipText, /* disabled= */ false, /* sticky= */ false, "", () -> {}); + AssistantChip chip = + new AssistantChip(AssistantChip.Type.BUTTON_FILLED_BLUE, Icon.DONE, chipText, + /* disabled= */ false, /* sticky= */ false, /* visible= */ true, () -> {}); // Set the header chip without displaying it. List<AssistantChip> chips = new ArrayList<>();
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantInputActionIntegrationTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantInputActionIntegrationTest.java deleted file mode 100644 index 26aaa82..0000000 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantInputActionIntegrationTest.java +++ /dev/null
@@ -1,334 +0,0 @@ -package org.chromium.chrome.browser.autofill_assistant; - -import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.withText; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.checkElementExists; -import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.getElementValue; -import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.startAutofillAssistant; -import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntil; -import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntilViewMatchesCondition; - -import android.support.test.InstrumentationRegistry; - -import androidx.test.filters.MediumTest; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.chromium.base.test.util.CommandLineFlags; -import org.chromium.chrome.browser.autofill_assistant.proto.ActionProto; -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.ClickProto; -import org.chromium.chrome.browser.autofill_assistant.proto.ClickType; -import org.chromium.chrome.browser.autofill_assistant.proto.DropdownSelectStrategy; -import org.chromium.chrome.browser.autofill_assistant.proto.KeyboardValueFillStrategy; -import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto; -import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto.Choice; -import org.chromium.chrome.browser.autofill_assistant.proto.SelectOptionProto; -import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto; -import org.chromium.chrome.browser.autofill_assistant.proto.SelectorProto.Filter; -import org.chromium.chrome.browser.autofill_assistant.proto.SetFormFieldValueProto; -import org.chromium.chrome.browser.autofill_assistant.proto.SetFormFieldValueProto.KeyPress; -import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto; -import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto; -import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule; -import org.chromium.chrome.browser.customtabs.CustomTabsTestUtils; -import org.chromium.chrome.browser.flags.ChromeSwitches; -import org.chromium.chrome.test.ChromeJUnit4ClassRunner; - -import java.util.ArrayList; -import java.util.Collections; - -/** - * Tests autofill assistant's input actions such as keyboard and clicking. - */ -@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -@RunWith(ChromeJUnit4ClassRunner.class) -public class AutofillAssistantInputActionIntegrationTest { - @Rule - public CustomTabActivityTestRule mTestRule = new CustomTabActivityTestRule(); - - private static final String TEST_PAGE = "/components/test/data/autofill_assistant/html/" - + "autofill_assistant_target_website.html"; - - @Before - public void setUp() throws Exception { - AutofillAssistantPreferencesUtil.setInitialPreferences(true); - mTestRule.startCustomTabActivityWithIntent(CustomTabsTestUtils.createMinimalCustomTabIntent( - InstrumentationRegistry.getTargetContext(), - mTestRule.getTestServer().getURL(TEST_PAGE))); - } - - @Test - @MediumTest - public void fillFormFieldWithText() throws Exception { - ArrayList<ActionProto> list = new ArrayList<>(); - - SelectorProto element_set_value = - (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#input1")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setSetFormValue( - SetFormFieldValueProto.newBuilder() - .setElement(element_set_value) - .addValue(KeyPress.newBuilder().setText("Set Value")) - .setFillStrategy(KeyboardValueFillStrategy.SET_VALUE)) - .build()); - SelectorProto element_keystrokes = - (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#input2")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setSetFormValue( - SetFormFieldValueProto.newBuilder() - .setElement(element_keystrokes) - .addValue(KeyPress.newBuilder().setText("Keystrokes")) - .setFillStrategy( - KeyboardValueFillStrategy.SIMULATE_KEY_PRESSES)) - .build()); - SelectorProto element_keystrokes_select = - (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#input3")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setSetFormValue( - SetFormFieldValueProto.newBuilder() - .setElement(element_keystrokes_select) - .addValue( - KeyPress.newBuilder().setText("Keystrokes Select")) - .setFillStrategy( - KeyboardValueFillStrategy - .SIMULATE_KEY_PRESSES_SELECT_VALUE)) - .build()); - list.add((ActionProto) ActionProto.newBuilder() - .setPrompt(PromptProto.newBuilder() - .setMessage("Finished") - .addChoices(Choice.newBuilder())) - .build()); - - AutofillAssistantTestScript script = new AutofillAssistantTestScript( - (SupportedScriptProto) SupportedScriptProto.newBuilder() - .setPath(TEST_PAGE) - .setPresentation(PresentationProto.newBuilder().setAutostart(true).setChip( - ChipProto.newBuilder().setText("Done"))) - .build(), - list); - - runScript(script); - - waitUntilViewMatchesCondition(withText("Finished"), isCompletelyDisplayed()); - assertThat(getElementValue(mTestRule.getWebContents(), "input1"), is("Set Value")); - assertThat(getElementValue(mTestRule.getWebContents(), "input2"), is("Keystrokes")); - assertThat(getElementValue(mTestRule.getWebContents(), "input3"), is("Keystrokes Select")); - } - - @Test - @MediumTest - public void clearFormFieldFromText() throws Exception { - ArrayList<ActionProto> list = new ArrayList<>(); - - SelectorProto element_set_value = - (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#input1")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setSetFormValue( - SetFormFieldValueProto.newBuilder() - .setElement(element_set_value) - .addValue(KeyPress.newBuilder().setText("")) - .setFillStrategy(KeyboardValueFillStrategy.SET_VALUE)) - .build()); - SelectorProto element_keystrokes = - (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#input2")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setSetFormValue( - SetFormFieldValueProto.newBuilder() - .setElement(element_keystrokes) - .addValue(KeyPress.newBuilder().setText("")) - .setFillStrategy( - KeyboardValueFillStrategy.SIMULATE_KEY_PRESSES)) - .build()); - SelectorProto element_keystrokes_select = - (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#input3")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setSetFormValue( - SetFormFieldValueProto.newBuilder() - .setElement(element_keystrokes_select) - .addValue(KeyPress.newBuilder().setText("")) - .setFillStrategy( - KeyboardValueFillStrategy - .SIMULATE_KEY_PRESSES_SELECT_VALUE)) - .build()); - list.add((ActionProto) ActionProto.newBuilder() - .setPrompt(PromptProto.newBuilder() - .setMessage("Finished") - .addChoices(Choice.newBuilder())) - .build()); - - AutofillAssistantTestScript script = new AutofillAssistantTestScript( - (SupportedScriptProto) SupportedScriptProto.newBuilder() - .setPath(TEST_PAGE) - .setPresentation(PresentationProto.newBuilder().setAutostart(true).setChip( - ChipProto.newBuilder().setText("Done"))) - .build(), - list); - - assertThat(getElementValue(mTestRule.getWebContents(), "input1"), is("helloworld1")); - assertThat(getElementValue(mTestRule.getWebContents(), "input2"), is("helloworld2")); - assertThat(getElementValue(mTestRule.getWebContents(), "input3"), is("helloworld3")); - - runScript(script); - - waitUntilViewMatchesCondition(withText("Finished"), isCompletelyDisplayed()); - assertThat(getElementValue(mTestRule.getWebContents(), "input1"), is("")); - assertThat(getElementValue(mTestRule.getWebContents(), "input2"), is("")); - assertThat(getElementValue(mTestRule.getWebContents(), "input3"), is("")); - } - - @Test - @MediumTest - public void selectOptionFromDropdown() throws Exception { - ArrayList<ActionProto> list = new ArrayList<>(); - - SelectorProto element = (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#select")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setSelectOption( - SelectOptionProto.newBuilder() - .setElement(element) - .setSelectedOption("one") - .setSelectStrategy(DropdownSelectStrategy.VALUE_MATCH)) - .build()); - list.add((ActionProto) ActionProto.newBuilder() - .setPrompt(PromptProto.newBuilder() - .setMessage("Value Match") - .addChoices(Choice.newBuilder().setChip( - ChipProto.newBuilder() - .setType(ChipType.HIGHLIGHTED_ACTION) - .setText("Continue")))) - .build()); - list.add((ActionProto) ActionProto.newBuilder() - .setSelectOption( - SelectOptionProto.newBuilder() - .setElement(element) - .setSelectedOption("Three") - .setSelectStrategy(DropdownSelectStrategy.LABEL_MATCH)) - .build()); - list.add((ActionProto) ActionProto.newBuilder() - .setPrompt(PromptProto.newBuilder() - .setMessage("Label Match") - .addChoices(Choice.newBuilder().setChip( - ChipProto.newBuilder() - .setType(ChipType.HIGHLIGHTED_ACTION) - .setText("Continue")))) - .build()); - list.add((ActionProto) ActionProto.newBuilder() - .setSelectOption(SelectOptionProto.newBuilder() - .setElement(element) - .setSelectedOption("Zürich") - .setSelectStrategy( - DropdownSelectStrategy.LABEL_STARTS_WITH)) - .build()); - list.add((ActionProto) ActionProto.newBuilder() - .setPrompt(PromptProto.newBuilder() - .setMessage("Label Starts With") - .addChoices(Choice.newBuilder())) - .build()); - - AutofillAssistantTestScript script = new AutofillAssistantTestScript( - (SupportedScriptProto) SupportedScriptProto.newBuilder() - .setPath(TEST_PAGE) - .setPresentation(PresentationProto.newBuilder().setAutostart(true).setChip( - ChipProto.newBuilder().setText("Done"))) - .build(), - list); - - runScript(script); - - waitUntilViewMatchesCondition(withText("Value Match"), isCompletelyDisplayed()); - assertThat(getElementValue(mTestRule.getWebContents(), "select"), is("one")); - onView(withText("Continue")).perform(click()); - - waitUntilViewMatchesCondition(withText("Label Match"), isCompletelyDisplayed()); - assertThat(getElementValue(mTestRule.getWebContents(), "select"), is("three")); - onView(withText("Continue")).perform(click()); - - waitUntilViewMatchesCondition(withText("Label Starts With"), isCompletelyDisplayed()); - assertThat(getElementValue(mTestRule.getWebContents(), "select"), is("two")); - } - - @Test - @MediumTest - public void clickingOnElementToHide() { - ArrayList<ActionProto> list = new ArrayList<>(); - - SelectorProto element_click = - (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#touch_area_one")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setClick(ClickProto.newBuilder() - .setElementToClick(element_click) - .setClickType(ClickType.CLICK)) - .build()); - SelectorProto element_tap = - (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#touch_area_five")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setClick(ClickProto.newBuilder() - .setElementToClick(element_tap) - .setClickType(ClickType.TAP)) - .build()); - SelectorProto element_js = - (SelectorProto) SelectorProto.newBuilder() - .addFilters(Filter.newBuilder().setCssSelector("#touch_area_six")) - .build(); - list.add((ActionProto) ActionProto.newBuilder() - .setClick(ClickProto.newBuilder() - .setElementToClick(element_js) - .setClickType(ClickType.JAVASCRIPT)) - .build()); - list.add((ActionProto) ActionProto.newBuilder() - .setPrompt(PromptProto.newBuilder() - .setMessage("Finished") - .addChoices(Choice.newBuilder())) - .build()); - - AutofillAssistantTestScript script = new AutofillAssistantTestScript( - (SupportedScriptProto) SupportedScriptProto.newBuilder() - .setPath(TEST_PAGE) - .setPresentation(PresentationProto.newBuilder().setAutostart(true).setChip( - ChipProto.newBuilder().setText("Done"))) - .build(), - list); - - runScript(script); - - waitUntilViewMatchesCondition(withText("Finished"), isCompletelyDisplayed()); - waitUntil(() -> !checkElementExists(mTestRule.getWebContents(), "touch_area_one")); - waitUntil(() -> !checkElementExists(mTestRule.getWebContents(), "touch_area_five")); - waitUntil(() -> !checkElementExists(mTestRule.getWebContents(), "touch_area_six")); - } - - private void runScript(AutofillAssistantTestScript script) { - AutofillAssistantTestService testService = - new AutofillAssistantTestService(Collections.singletonList(script)); - startAutofillAssistant(mTestRule.getActivity(), testService); - } -} \ No newline at end of file
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantKeyboardIntegrationTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantKeyboardIntegrationTest.java index 269d605..e280a9a 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantKeyboardIntegrationTest.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantKeyboardIntegrationTest.java
@@ -6,11 +6,14 @@ import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.getElementValue; import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.tapElement; @@ -36,6 +39,7 @@ import org.chromium.chrome.browser.autofill_assistant.proto.ClickType; import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto; import org.chromium.chrome.browser.autofill_assistant.proto.ElementAreaProto.Rectangle; +import org.chromium.chrome.browser.autofill_assistant.proto.ElementConditionProto; import org.chromium.chrome.browser.autofill_assistant.proto.FocusElementProto; import org.chromium.chrome.browser.autofill_assistant.proto.KeyboardValueFillStrategy; import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto; @@ -304,4 +308,68 @@ tapElement(mTestRule, "iframe", "name"); waitUntilKeyboardMatchesCondition(mTestRule, /* isShowing= */ true); } + + @Test + @MediumTest + public void hideChipsWhileKeyboardShowing() throws Exception { + SelectorProto element = + (SelectorProto) SelectorProto.newBuilder() + .addFilters( + SelectorProto.Filter.newBuilder().setCssSelector("#profile_name")) + .build(); + + ArrayList<ActionProto> list = new ArrayList<>(); + list.add( + (ActionProto) ActionProto.newBuilder() + .setFocusElement(FocusElementProto.newBuilder() + .setElement(element) + .setTouchableElementArea( + ElementAreaProto.newBuilder().addTouchable( + Rectangle.newBuilder().addElements( + element)))) + .build()); + list.add((ActionProto) ActionProto.newBuilder() + .setPrompt( + PromptProto.newBuilder() + .setMessage("Highlighted") + .addChoices( + Choice.newBuilder() + .setChip(ChipProto.newBuilder().setText( + "Done")) + .setShowOnlyWhen( + ElementConditionProto.newBuilder() + .setMatch(element))) + .addChoices(Choice.newBuilder().setChip( + ChipProto.newBuilder() + .setType(ChipType.CANCEL_ACTION) + .setText("Cancel")))) + .build()); + + AutofillAssistantTestScript script = new AutofillAssistantTestScript( + (SupportedScriptProto) SupportedScriptProto.newBuilder() + .setPath(TEST_PAGE) + .setPresentation(PresentationProto.newBuilder().setAutostart(true).setChip( + ChipProto.newBuilder().setText("Done"))) + .build(), + list); + + runAutofillAssistant(script); + + waitUntilViewMatchesCondition(withText("Highlighted"), isCompletelyDisplayed()); + waitUntilViewMatchesCondition(withText("Done"), isDisplayed()); + onView(withText("Cancel")).check(matches(isDisplayed())); + + tapElement(mTestRule, "profile_name"); + waitUntilKeyboardMatchesCondition(mTestRule, /* isShowing= */ true); + waitUntilViewMatchesCondition(withText("Done"), not(isDisplayed())); + // Chips of type CANCEL should stay visible. + onView(withText("Cancel")).check(matches(isDisplayed())); + + // Clicking on a cancel chip while the keyboard is showing hides the keyboard instead of + // closing Autofill Assistant. + onView(withText("Cancel")).perform(click()); + waitUntilKeyboardMatchesCondition(mTestRule, /* isShowing= */ false); + waitUntilViewMatchesCondition(withText("Done"), isDisplayed()); + onView(withText("Cancel")).check(matches(isDisplayed())); + } }
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java index 64470f6..89672a1 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java
@@ -233,13 +233,15 @@ private void testChips(InOrder inOrder, AssistantCarouselModel carouselModel, AssistantActionsCarouselCoordinator carouselCoordinator) { - List<AssistantChip> chips = Arrays.asList( - new AssistantChip(AssistantChip.Type.CHIP_ASSISTIVE, AssistantChip.Icon.NONE, - "chip 0", - /* disabled= */ false, /* sticky= */ false, "", () -> {/* do nothing */}), - new AssistantChip(AssistantChip.Type.CHIP_ASSISTIVE, AssistantChip.Icon.NONE, - "chip 1", - /* disabled= */ false, /* sticky= */ false, "", mRunnableMock)); + List<AssistantChip> chips = + Arrays.asList(new AssistantChip(AssistantChip.Type.CHIP_ASSISTIVE, + AssistantChip.Icon.NONE, "chip 0", + /* disabled= */ false, /* sticky= */ false, + /* visible= */ true, () -> {/* do nothing */}), + new AssistantChip(AssistantChip.Type.CHIP_ASSISTIVE, + AssistantChip.Icon.NONE, "chip 1", + /* disabled= */ false, /* sticky= */ false, /* visible= */ true, + mRunnableMock)); TestThreadUtils.runOnUiThreadBlocking(() -> carouselModel.setChips(chips)); RecyclerView chipsViewContainer = carouselCoordinator.getView(); Assert.assertEquals(2, chipsViewContainer.getAdapter().getItemCount());
diff --git a/chrome/android/features/keyboard_accessory/internal/BUILD.gn b/chrome/android/features/keyboard_accessory/internal/BUILD.gn index cb8446a..051d207 100644 --- a/chrome/android/features/keyboard_accessory/internal/BUILD.gn +++ b/chrome/android/features/keyboard_accessory/internal/BUILD.gn
@@ -5,6 +5,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") import("//chrome/common/features.gni") +import("//tools/grit/grit_rule.gni") android_library("internal_java") { deps = [
diff --git a/chrome/android/features/start_surface/internal/BUILD.gn b/chrome/android/features/start_surface/internal/BUILD.gn index 25841d96..37c87129 100644 --- a/chrome/android/features/start_surface/internal/BUILD.gn +++ b/chrome/android/features/start_surface/internal/BUILD.gn
@@ -6,6 +6,7 @@ import("//build/config/locales.gni") import("//chrome/common/features.gni") import("//components/feed/features.gni") +import("//tools/grit/grit_rule.gni") java_strings_grd("java_strings_grd") { defines = chrome_grit_defines
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java index 6704c21..52ade5e 100644 --- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java +++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java
@@ -274,6 +274,7 @@ @Feature({"RenderTest"}) // clang-format off @CommandLineFlags.Add({BASE_PARAMS}) + @DisabledTest(message = "https://crbug.com/1139807") @DisableIf.Build(sdk_is_greater_than = O_MR1, message = "crbug.com/1077552") public void testRenderGrid_10WebTabs_InitialScroll() throws IOException { // clang-format on
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java index db80ed5..be6b848 100644 --- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java +++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
@@ -70,6 +70,7 @@ import org.chromium.base.test.util.DisableIf; import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; +import org.chromium.base.test.util.FlakyTest; import org.chromium.base.test.util.Restriction; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.DeferredStartupHandler; @@ -373,6 +374,7 @@ @MediumTest @Feature({"StartSurface"}) @CommandLineFlags.Add({BASE_PARAMS + "/single"}) + @FlakyTest(message = "https://crbug.com/1139515") public void testShow_SingleAsHomepage() { if (!mImmediateReturn) { onView(withId(org.chromium.chrome.tab_ui.R.id.home_button)).perform(click());
diff --git a/chrome/android/features/tab_ui/BUILD.gn b/chrome/android/features/tab_ui/BUILD.gn index 9bbf8d2..8bfd9ce 100644 --- a/chrome/android/features/tab_ui/BUILD.gn +++ b/chrome/android/features/tab_ui/BUILD.gn
@@ -7,6 +7,7 @@ import("//chrome/android/features/tab_ui/buildflags.gni") import("//chrome/common/features.gni") import("//components/module_installer/android/module_desc_java.gni") +import("//tools/grit/grit_rule.gni") java_strings_grd("java_strings_grd") { defines = chrome_grit_defines
diff --git a/chrome/android/features/vr/BUILD.gn b/chrome/android/features/vr/BUILD.gn index 2776d2e..c6b4230 100644 --- a/chrome/android/features/vr/BUILD.gn +++ b/chrome/android/features/vr/BUILD.gn
@@ -6,6 +6,7 @@ import("//build/config/locales.gni") import("//chrome/common/features.gni") import("//device/vr/buildflags/buildflags.gni") +import("//tools/grit/grit_rule.gni") assert(enable_vr)
diff --git a/chrome/android/features/vr/java/strings/translations/android_chrome_vr_strings_iw.xtb b/chrome/android/features/vr/java/strings/translations/android_chrome_vr_strings_iw.xtb index 1ef389d..fab52633 100644 --- a/chrome/android/features/vr/java/strings/translations/android_chrome_vr_strings_iw.xtb +++ b/chrome/android/features/vr/java/strings/translations/android_chrome_vr_strings_iw.xtb
@@ -3,8 +3,8 @@ <translationbundle lang="iw"> <translation id="1729516292547892356">עליך לעדכן את Google VR Services כדי שתוכל להציג תוכן של מציאות מדומה</translation> <translation id="1938981467853765413"> שליחת משוב</translation> -<translation id="360207483134687714">עזור לשפר את חוויית VR ב-Chrome</translation> +<translation id="360207483134687714">רוצה לעזור לשפר את חוויית VR ב-Chrome?</translation> <translation id="3789841737615482174">התקן</translation> -<translation id="473775607612524610">עדכן</translation> +<translation id="473775607612524610">עדכון</translation> <translation id="9071742570345586758">עליך להתקין את Google VR Services כדי שתוכל להציג תוכן של מציאות מדומה</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/java/res/layout/account_picker_bottom_sheet_view.xml b/chrome/android/java/res/layout/account_picker_bottom_sheet_view.xml index 15e526f..d395af8 100644 --- a/chrome/android/java/res/layout/account_picker_bottom_sheet_view.xml +++ b/chrome/android/java/res/layout/account_picker_bottom_sheet_view.xml
@@ -78,8 +78,8 @@ android:layout_width="32dp" android:layout_height="32dp" android:layout_gravity="center" - android:layout_marginTop="30dp" - android:layout_marginBottom="24dp" + android:layout_marginTop="64dp" + android:layout_marginBottom="128dp" android:visibility="gone" /> <org.chromium.ui.widget.ButtonCompat
diff --git a/chrome/android/java/res/layout/new_tab_page_feed_v2_expandable_header.xml b/chrome/android/java/res/layout/new_tab_page_feed_v2_expandable_header.xml index 0e6b49c..57bb7ea 100644 --- a/chrome/android/java/res/layout/new_tab_page_feed_v2_expandable_header.xml +++ b/chrome/android/java/res/layout/new_tab_page_feed_v2_expandable_header.xml
@@ -14,7 +14,7 @@ android:orientation="horizontal" android:gravity="center_vertical" android:layoutDirection="locale" - app:showHairlineWhenDisabled="false"> + app:animatePaddingWhenDisabled="true"> <!-- Note: Setting textDirection to "locale" makes sure that a non-translated English word in the title text view is aligned based on the device locale and not the text content. @@ -27,18 +27,20 @@ android:textAppearance="@style/TextAppearance.TextAccentMediumThick.Secondary" android:textDirection="locale" /> + <!-- Note ignore RtlHardcoded since this is an image, and the paddingLeft is for + spacing the image away from the header title above. + --> <org.chromium.components.browser_ui.widget.listmenu.ListMenuButton android:id="@+id/header_menu" - android:layout_width="@dimen/snippets_article_header_menu_size" + android:layout_width="@dimen/feed_v2_header_menu_width" android:layout_height="@dimen/snippets_article_header_menu_size" android:scaleType="fitXY" - android:padding="15dp" - android:layout_marginTop="@dimen/feed_v2_header_menu_vertical_inset" - android:layout_marginBottom="@dimen/feed_v2_header_menu_vertical_inset" - android:layout_marginEnd="@dimen/feed_v2_header_menu_end_inset" + android:paddingVertical="15dp" + android:paddingStart="15dp" android:background="@null" android:src="@drawable/ic_settings_gear_24dp" android:contentDescription="@string/accessibility_ntp_feed_menu_button" app:menuMaxWidth="@dimen/feed_header_menu_max_width" - app:tint="@null" /> + app:tint="@null" + tools:ignore="RtlHardcoded"/> </org.chromium.chrome.browser.ntp.snippets.SectionHeaderView>
diff --git a/chrome/android/java/res/values/attrs.xml b/chrome/android/java/res/values/attrs.xml index 79de5d0..5bc1ceda 100644 --- a/chrome/android/java/res/values/attrs.xml +++ b/chrome/android/java/res/values/attrs.xml
@@ -22,6 +22,6 @@ </declare-styleable> <declare-styleable name="SectionHeaderView"> - <attr name="showHairlineWhenDisabled" format="boolean"/> + <attr name="animatePaddingWhenDisabled" format="boolean"/> </declare-styleable> </resources>
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml index 01722b9..7c2ae653 100644 --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml
@@ -358,9 +358,10 @@ <dimen name="ntp_wide_card_lateral_margins_v2">36dp</dimen> <dimen name="snippets_article_header_height">40dp</dimen> <dimen name="snippets_article_header_menu_size">48dp</dimen> - <dimen name="feed_v2_header_menu_vertical_inset">-4dp</dimen> + <dimen name="feed_v2_header_menu_width">33dp</dimen> + <dimen name="feed_v2_header_menu_touch_padding">4dp</dimen> + <dimen name="feed_v2_header_menu_disabled_padding">11dp</dimen> <!-- This should match |ntp_header_lateral_margins_v2|. --> - <dimen name="feed_v2_header_menu_end_inset">-16dp</dimen> <dimen name="ntp_header_lateral_margins_v2">16dp</dimen> <!-- This is in sp because we want the icon to scale with the TextView it sits alongside. --> <dimen name="content_suggestions_card_modern_margin">12dp</dimen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SectionHeaderView.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SectionHeaderView.java index cb489c13..7a415e3 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SectionHeaderView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SectionHeaderView.java
@@ -4,10 +4,14 @@ package org.chromium.chrome.browser.ntp.snippets; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Rect; import android.util.AttributeSet; +import android.view.TouchDelegate; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; @@ -34,6 +38,7 @@ */ public class SectionHeaderView extends LinearLayout implements View.OnClickListener { private static final int IPH_TIMEOUT_MS = 10000; + private static final int ANIMATION_DURATION_MS = 200; // Views in the header layout that are set during inflate. private TextView mTitleView; @@ -45,7 +50,7 @@ private SectionHeader mHeader; private boolean mHasMenu; - private boolean mHairlineWhenDisabled = true; + private boolean mAnimatePaddingWhenDisabled; public SectionHeaderView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); @@ -53,8 +58,8 @@ attrs, R.styleable.SectionHeaderView, 0, 0); try { - mHairlineWhenDisabled = attrArray.getBoolean( - R.styleable.SectionHeaderView_showHairlineWhenDisabled, true); + mAnimatePaddingWhenDisabled = attrArray.getBoolean( + R.styleable.SectionHeaderView_animatePaddingWhenDisabled, false); } finally { attrArray.recycle(); } @@ -74,6 +79,25 @@ if (mHasMenu) { mMenuView.setOnClickListener((View v) -> { displayMenu(); }); + int touchPadding; + // If we are animating padding, add additional touch area around the menu. + if (mAnimatePaddingWhenDisabled) { + touchPadding = getResources().getDimensionPixelSize( + R.dimen.feed_v2_header_menu_touch_padding); + } else { + touchPadding = 0; + } + post(() -> { + Rect rect = new Rect(); + mMenuView.getHitRect(rect); + + rect.top -= touchPadding; + rect.bottom += touchPadding; + rect.left -= touchPadding; + rect.right += touchPadding; + + setTouchDelegate(new TouchDelegate(rect, mMenuView)); + }); } } @@ -114,9 +138,39 @@ mStatusView.setText( mHeader.isExpanded() ? R.string.hide_content : R.string.show_content); } - setBackgroundResource(mHeader.isExpanded() || !mHairlineWhenDisabled - ? 0 - : R.drawable.hairline_border_card_background); + if (mAnimatePaddingWhenDisabled) { + int finalHorizontalPadding = 0; + boolean isClosingHeader = !mHeader.isExpanded(); + if (isClosingHeader) { + // If closing header, add additional padding. + finalHorizontalPadding = getResources().getDimensionPixelSize( + R.dimen.feed_v2_header_menu_disabled_padding); + } else { + // Otherwise, remove the background now. + setBackgroundResource(0); + } + ValueAnimator animator = + ValueAnimator.ofInt(getPaddingLeft(), finalHorizontalPadding); + animator.addUpdateListener((ValueAnimator animation) -> { + int horizontalPadding = (Integer) animation.getAnimatedValue(); + setPadding(/*left*/ horizontalPadding, getPaddingTop(), + /*right*/ horizontalPadding, getPaddingBottom()); + }); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + // If we closed the header, add the hairline after animation. + if (isClosingHeader) { + setBackgroundResource(R.drawable.hairline_border_card_background); + } + } + }); + animator.setDuration(ANIMATION_DURATION_MS); + animator.start(); + } else { + setBackgroundResource( + mHeader.isExpanded() ? 0 : R.drawable.hairline_border_card_background); + } } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckUpdatesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckUpdatesDelegateImpl.java index ebccbbbc..52bd994 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckUpdatesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckUpdatesDelegateImpl.java
@@ -68,8 +68,9 @@ int status = mOmaha.checkForUpdates(); // Post the results back to the UI thread. PostTask.postTask(UiThreadTaskTraits.DEFAULT, () -> { - if (statusCallback.get() != null) { - statusCallback.get().onResult(convertOmahaUpdateStatus(status)); + Callback<Integer> strongRef = statusCallback.get(); + if (strongRef != null) { + strongRef.onResult(convertOmahaUpdateStatus(status)); } }); });
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/OWNERS b/chrome/android/java/src/org/chromium/chrome/browser/signin/OWNERS index 4ecdd8f7..014e2498 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/OWNERS +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/OWNERS
@@ -1,4 +1,4 @@ bsazonov@chromium.org aliceywang@chromium.org -# COMPONENT: Services>Signin +# COMPONENT: Services>SignIn
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java index 6e8dae8..0c8eb0c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/account_picker/AccountPickerBottomSheetView.java
@@ -178,15 +178,13 @@ void setUpSignInInProgressView() { mLogoImage.setImageResource(R.drawable.chrome_sync_logo); mAccountPickerTitle.setText(R.string.signin_account_picker_bottom_sheet_signin_title); - mAccountPickerSubtitle.setVisibility(View.INVISIBLE); - // Set the account picker subtitle text in case there's an error. - mAccountPickerSubtitle.setText(R.string.signin_account_picker_general_error_subtitle); mSpinnerView.setVisibility(View.VISIBLE); - mContinueAsButton.setVisibility(View.INVISIBLE); - mDismissButton.setVisibility(View.INVISIBLE); + mAccountPickerSubtitle.setVisibility(View.GONE); mHorizontalDivider.setVisibility(View.GONE); mSelectedAccountView.setVisibility(View.GONE); + mContinueAsButton.setVisibility(View.GONE); + mDismissButton.setVisibility(View.GONE); } void setUpIncognitoInterstitialView() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator.java index f82abf5..5ccf5340 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator.java
@@ -10,6 +10,7 @@ import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.toolbar.load_progress.LoadProgressProperties.CompletionState; +import org.chromium.chrome.features.start_surface.StartSurfaceConfiguration; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.content_public.browser.NavigationHandle; import org.chromium.ui.modelutil.PropertyModel; @@ -111,7 +112,14 @@ } private void onNewTabObserved(Tab tab) { - if (tab == null) return; + if (tab == null) { + // If start surface is enabled and new tab is null, then new tab is home page or tab + // switcher. Finish progress bar loading. + if (StartSurfaceConfiguration.isStartSurfaceEnabled()) { + finishLoadProgress(false); + } + return; + } if (tab.isLoading()) { if (NativePageFactory.isNativePageUrl(tab.getUrlString(), tab.isIncognito())) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java index 5854ddc..a1a04b5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -229,7 +229,9 @@ if (layout instanceof StaticLayout || layout instanceof SimpleAnimationLayout) { return; } - mContextualSearchManagerSupplier.get().dismissContextualSearchBar(); + if (mContextualSearchManagerSupplier.get() != null) { + mContextualSearchManagerSupplier.get().dismissContextualSearchBar(); + } } @Override
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index 4a45df1..13cc53aa 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-88.0.4294.0_rc-r1-merged.afdo.bz2 +chromeos-chrome-amd64-88.0.4296.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/android/webapk/shell_apk/BUILD.gn b/chrome/android/webapk/shell_apk/BUILD.gn index df4640b2..91e69084 100644 --- a/chrome/android/webapk/shell_apk/BUILD.gn +++ b/chrome/android/webapk/shell_apk/BUILD.gn
@@ -4,6 +4,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") +import("//tools/grit/grit_rule.gni") import("current_version/current_version.gni") import("generate_manifest_for_upload_outputs.gni") import("mustache_pass.gni")
diff --git a/chrome/app/chromium_strings.grd b/chrome/app/chromium_strings.grd index f1a342b..10f7544 100644 --- a/chrome/app/chromium_strings.grd +++ b/chrome/app/chromium_strings.grd
@@ -1176,7 +1176,7 @@ Set up your new Chromium profile </message> <message name="IDS_PROFILE_PICKER_ASK_ON_STARTUP" desc="Text for the checkbox on the profile picker main view"> - Ask when I open Chromium + Ask when Chromium opens </message> </if> </messages>
diff --git a/chrome/app/chromium_strings_grd/IDS_PROFILE_PICKER_ASK_ON_STARTUP.png.sha1 b/chrome/app/chromium_strings_grd/IDS_PROFILE_PICKER_ASK_ON_STARTUP.png.sha1 index 6dc2496..e5670854 100644 --- a/chrome/app/chromium_strings_grd/IDS_PROFILE_PICKER_ASK_ON_STARTUP.png.sha1 +++ b/chrome/app/chromium_strings_grd/IDS_PROFILE_PICKER_ASK_ON_STARTUP.png.sha1
@@ -1 +1 @@ -630ac6a34bb1915cfee2dd9e8ce472a56e302874 \ No newline at end of file +4cb9c6b65bb30ae0d4391ab58ca3a0d184460e51 \ No newline at end of file
diff --git a/chrome/app/google_chrome_strings.grd b/chrome/app/google_chrome_strings.grd index b239908..780fc63 100644 --- a/chrome/app/google_chrome_strings.grd +++ b/chrome/app/google_chrome_strings.grd
@@ -1192,7 +1192,7 @@ Set up your new Chrome profile </message> <message name="IDS_PROFILE_PICKER_ASK_ON_STARTUP" desc="Text for the checkbox on the profile picker main view"> - Ask when I open Chrome + Ask when Chrome opens </message> </if>
diff --git a/chrome/app/google_chrome_strings_grd/IDS_PROFILE_PICKER_ASK_ON_STARTUP.png.sha1 b/chrome/app/google_chrome_strings_grd/IDS_PROFILE_PICKER_ASK_ON_STARTUP.png.sha1 index 6dc2496..e5670854 100644 --- a/chrome/app/google_chrome_strings_grd/IDS_PROFILE_PICKER_ASK_ON_STARTUP.png.sha1 +++ b/chrome/app/google_chrome_strings_grd/IDS_PROFILE_PICKER_ASK_ON_STARTUP.png.sha1
@@ -1 +1 @@ -630ac6a34bb1915cfee2dd9e8ce472a56e302874 \ No newline at end of file +4cb9c6b65bb30ae0d4391ab58ca3a0d184460e51 \ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb index 9f25f18..35555597 100644 --- a/chrome/app/resources/chromium_strings_en-GB.xtb +++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -186,6 +186,7 @@ <translation id="6863361426438995919">Google Pay (copied to Chromium)</translation> <translation id="6893813176749746474">Chromium has been updated, but you haven't used it for 30 days or more.</translation> <translation id="6964305034639999644">Open link in Chromium inco&gnito window</translation> +<translation id="6978145336957848883">Weak passwords are easy to guess. Let Chromium <ph name="BEGIN_LINK" />create and remember strong passwords for you<ph name="END_LINK" />.</translation> <translation id="6990124437352146030">Chromium needs permission to access your microphone for this site</translation> <translation id="701244094609242530">Chromium can't check your extensions. Try again later.</translation> <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium didn't find known harmful software on your computer. Last checked: 1 hour ago.}other{Chromium didn't find known harmful software on your computer. Last checked: {NUM_HOURS} hours ago.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb index 2980049..ddb730c 100644 --- a/chrome/app/resources/chromium_strings_gu.xtb +++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -46,6 +46,7 @@ <translation id="2711502716910134313">Chromium ટૅબ</translation> <translation id="2718390899429598676">ઉમેરેલી સુરક્ષા માટે, Chromium તમારા ડેટાને એન્ક્રિપ્ટ કરશે.</translation> <translation id="2770231113462710648">ડિફૉલ્ટ બ્રાઉઝરને આના પર બદલો:</translation> +<translation id="2774556997178638058"><ph name="BEGIN_LINK" />તમારા વ્યવસ્થાપક<ph name="END_LINK" /> દ્વારા Chromiumની હાનિકારક સૉફ્ટવેર ચેક કરવાની સુવિધા બંધ કરવામાં આવી છે</translation> <translation id="2799223571221894425">ફરીથી લોંચ કરો</translation> <translation id="2847479871509788944">Chromium માંથી દૂર કરો...</translation> <translation id="2853765747879685679">હું Chromium ખોલું ત્યારે પૂછો</translation> @@ -53,6 +54,7 @@ <translation id="2910007522516064972">&Chromium વિશે</translation> <translation id="2977470724722393594">Chromium અપ ટૂ ડેટ છે</translation> <translation id="2983934633046890458">Chromium પાસવર્ડમાં ફેરફાર કરવાનો પ્રયાસ કરે છે.</translation> +<translation id="3031887101543416445">{NUM_DAYS,plural, =1{Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: 1 દિવસ પહેલાં.}one{Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_DAYS} દિવસ પહેલાં.}other{Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_DAYS} દિવસ પહેલાં.}}</translation> <translation id="3032706164202344641">Chromium તમારા પાસવર્ડ ચેક કરી શકતું નથી. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation> <translation id="3032787606318309379">Chromium માં ઉમેરી રહ્યું છે...</translation> <translation id="3068515742935458733">ક્રૅશ રિપોર્ટ અને <ph name="UMA_LINK" /> Googleને મોકલીને Chromium ને વધુ સારું બનાવવામાં મદદ કરો.</translation> @@ -72,6 +74,7 @@ <translation id="347328004046849135">જ્યારે તમે ચેડાં કરવામાં આવેલા પાસવર્ડ વડે સાઇન ઇન કરશો ત્યારે Chromium તમને સૂચિત કરશે</translation> <translation id="3474745554856756813">આ, <ph name="ITEMS_COUNT" /> આઇટમને આ ડિવાઇસમાંથી ડિલીટ કરશે. પછીથી તમારો ડેટા ફરીથી મેળવવા માટે, Chromium માં <ph name="USER_EMAIL" /> તરીકે સાઇન ઇન કરો.</translation> <translation id="3509308970982693815">કૃપા કરીને બધી Chromium વિંડોઝ બંધ કરો અને ફરીથી પ્રયાસ કરો.</translation> +<translation id="3527440529060401414">Chromium હાનિકારક સૉફ્ટવેર માટે તમારું કમ્પ્યુટર ચેક કરી શકે છે</translation> <translation id="3575459661164320785">તમારા કમ્પ્યુટરમાં નુકસાનકારક સૉફ્ટવેર છે. Chromium તે કાઢી શકે છે, તમારું સેટિંગ પાછું મેળવી શકે છે અને એક્સ્ટેંશન બંધ કરી શકે છે જેથી તમારું બ્રાઉઝર ફરી સામાન્ય રીતે કામ કરી શકે.</translation> <translation id="3639635944603682591">આ વ્યક્તિનો બ્રાઉઝિંગ ડેટા આ ડિવાઇસમાંથી ડિલીટ કરવામાં આવશે. આ ડેટા પાછો મેળવવા માટે, Chromiumમાં <ph name="USER_EMAIL" /> તરીકે સાઇન ઇન કરો.</translation> <translation id="364817392622123556">{COUNT,plural, =0{Chromium માટે નવી અપડેટ ઉપલબ્ધ છે અને તે જેવું તમે ફરીથી લૉન્ચ કરશો, તેને લાગુ કરવામાં આવશે.}=1{Chromium માટે નવી અપડેટ ઉપલબ્ધ છે અને તે જેવું તમે ફરીથી લૉન્ચ કરશો, તેને લાગુ કરવામાં આવશે. તમારી છુપી વિન્ડો ફરીથી ખૂલશે નહીં.}one{Chromium માટે નવી અપડેટ ઉપલબ્ધ છે અને તે જેવું તમે ફરીથી લૉન્ચ કરશો, તેને લાગુ કરવામાં આવશે. તમારી # છુપી વિન્ડો ફરીથી ખૂલશે નહીં.}other{Chromium માટે નવી અપડેટ ઉપલબ્ધ છે અને તે જેવું તમે ફરીથી લૉન્ચ કરશો, તેને લાગુ કરવામાં આવશે. તમારી # છુપી વિન્ડો ફરીથી ખૂલશે નહીં.}}</translation> @@ -87,18 +90,21 @@ <translation id="3945058413678539331">Chromium પાસવર્ડની કૉપિ કરવાનો પ્રયાસ કરી રહ્યું છે. આની મંજૂરી આપવા માટે તમારો Windows પાસવર્ડ લખો.</translation> <translation id="4036079820698952681"><ph name="BEGIN_LINK" />વર્તમાન સેટિંગ્સ<ph name="END_LINK" />ની જાણ કરીને Chromium ને બહેતર બનાવવામાં સહાય કરો</translation> <translation id="4050175100176540509">નવીનતમ વર્ઝનમાં મહત્ત્વપૂર્ણ સુરક્ષા સુધારણાઓ અને નવી સુવિધાઓ ઉપલબ્ધ છે.</translation> +<translation id="4136604564421273381">Chromium તમારા કમ્પ્યુટરમાંથી હાનિકારક સૉફ્ટવેર કાઢી નાખી રહ્યું છે...</translation> <translation id="419998258129752635"><ph name="PAGE_TITLE" /> - નેટવર્ક સાઇન ઇન - Chromium</translation> <translation id="421369550622382712">Chromium માટે શ્રેષ્ઠ એપ્લીકેશન્સ, રમતો, એક્સટેન્શન્સ અને થીમ્સ શોધો.</translation> <translation id="4216212958613226427">આ ભાષાનો ઉપયોગ Chromium UI પ્રદર્શિત કરવા માટે થાય છે</translation> <translation id="4230135487732243613">તમારા Chromium ડેટાને આ એકાઉન્ટ સાથે લિંક કરીએ?</translation> <translation id="4271805377592243930">Chromium સાથે સહાય મેળવો</translation> <translation id="4285930937574705105">અમઉલ્લેખિત ભૂલને કારણે ઇન્સ્ટોલેશન નિષ્ફળ થયું. જો Chromium હાલમાં ચાલી રહ્યું હોય, તો તેને બંધ કરો અને ફરી પ્રયાસ કરો.</translation> +<translation id="4352041330999353637">Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: ગઈકાલે.</translation> <translation id="4407044323746248786">છતાં પણ Chromiumમાંથી બહાર નિકળવું છે?</translation> <translation id="4415566066719264597">Chromiumને બૅકગ્રાઉન્ડમાં ચાલવા દો</translation> <translation id="4423735387467980091">Chromium ને કસ્ટમાઇઝ અને નિયંત્રિત કરો</translation> <translation id="4544142686420020088">કંઈક ખોટુ થયું હોવાને કારણે Chromium અપડેટ થયું નથી. <ph name="BEGIN_LINK" />Chromium અપડેટ કરવામાં આવતી સમસ્યાઓ અને નિષ્ફળ થયેલા અપડેટ સુધારો.<ph name="END_LINK" /></translation> <translation id="4567424176335768812">તમે <ph name="USER_EMAIL_ADDRESS" /> તરીકે સાઇન ઇન છો. હવે તમે તમારા બધા સાઇન ઇન કરેલા ઉપકરણો પર તમારા બુકમાર્ક્સ, ઇતિહાસ અને અન્ય સેટિંગ્સને ઍક્સેસ કરી શકો છો.</translation> <translation id="459535195905078186">Chromium ઍપ્લિકેશનો</translation> +<translation id="4595492485953540730">{NUM_MINS,plural, =1{Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: 1 મિનિટ પહેલાં.}one{Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_MINS} મિનિટ પહેલાં.}other{Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_MINS} મિનિટ પહેલાં.}}</translation> <translation id="4677944499843243528">બીજા કમ્પ્યુટર (<ph name="HOST_NAME" />) પર પ્રોફાઇલ બીજી Chromium પ્રક્રિયા (<ph name="PROCESS_ID" />) દ્વારા ઉપયોગમાં હોય એવું લાગે છે. Chromium એ પ્રોફાઇલને લૉક કરી છે જેથી તે દૂષિત ન થઈ જાય. જો તમને ખાતરી છે કે કોઈ અન્ય પ્રક્રિયાઓ આ પ્રોફાઇલનો ઉપયોગ કરી રહી નથી, તો તમે પ્રોફાઇલને અનલૉક કરી અને Chromium ને ફરીથી લોંચ કરી શકો છો.</translation> <translation id="469338717132742108">Chromium OS સાથે સહાય મેળવો</translation> <translation id="4708774505295300557">કોઈએ આ કોમ્પ્યુટર પર પહેલા <ph name="ACCOUNT_EMAIL_LAST" /> તરીકે Chromiumમાં સાઇન ઇન કર્યું છે. તમારી માહિતી અલગ રાખવા માટે કૃપા કરીને નવો Chromium વપરાશકર્તા બનાવો.</translation> @@ -107,6 +113,7 @@ <translation id="4750035648288509542">લગભગ અપ ટૂ ડેટ છે! અપડેટ કરવાનું સમાપ્ત કરવા માટે Chromium ફરી શરૂ કરો. છૂપી વિંડો ફરીથી ખૂલશે નહીં.</translation> <translation id="4788777615168560705">Chromium તમારા પાસવર્ડ ચેક કરી શકતું નથી. 24 કલાક પછી ફરી પ્રયાસ કરજો અથવા <ph name="BEGIN_LINK" />તમારા Google એકાઉન્ટમાં પાસવર્ડ ચેક કરો<ph name="END_LINK" />.</translation> <translation id="479167709087336770">આ પણ Google શોધમાં જે જોડણી તપાસનારનો ઉપયોગ થાય છે તેનો જ ઉપયોગ કરે છે. તમે બ્રાઉઝરમાં ટાઇપ કરો છો તે ટેક્સ્ટ Googleને મોકલવામાં આવે છે. તમે સેટિંગમાં આ વર્તણૂકને હંમેશાં બદલી શકો છો.</translation> +<translation id="487524289568229802">Chromium હાનિકારક સૉફ્ટવેર માટે તમારું કમ્પ્યુટર ચેક કરી રહ્યું છે...</translation> <translation id="4888717733111232871">mDNS ટ્રાફિકને મંજૂરી આપવા Chromium માટે ઇનબાઉન્ડ નિયમ.</translation> <translation id="4893632094755846570">આ તમારો બ્રાઉઝિંગ ડેટા આ ડિવાઇસમાંથી હંમેશ માટે ડિલીટ કરશે. આ ડેટા પાછો મેળવવા માટે, Chromiumમાં આ તરીકે સાઇન ઇન કરો</translation> <translation id="4943838377383847465">Chromium પૃષ્ઠભૂમિ મોડમાં છે.</translation> @@ -171,6 +178,7 @@ કેટલીક સુવિધાઓ ઉપલબ્ધ થઈ શકે છે. કૃપા કરીને અલગ પ્રોફાઇલ ડિરેક્ટરીનો ઉલ્લેખ કરો અથવા Chromiumના નવા વર્ઝનનો ઉપયોગ કરો.</translation> <translation id="6734080038664603509">&Chromium ને અપડેટ કરો</translation> <translation id="6734291798041940871">Chromium, તમારા કમ્પ્યુટર પર તમામ વપરાશકર્તાઓ માટે પહેલાંથી ઇન્સ્ટૉલ કરેલ છે.</translation> +<translation id="6737557815519435616">Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: એક પળ પહેલાં.</translation> <translation id="6762551859069255163">ઑફિસ માટેનું અને વ્યક્તિગત બ્રાઉઝિંગ અલગ પાડવા અથવા આ ડિવાઇસનો ઉપયોગ કરતા વિવિધ લોકો માટે, Chromiumમાં ભિન્ન પ્રોફાઇલનો ઉપયોગ કરો</translation> <translation id="6774082503108938489">તમારા માતાપિતાએ Chromium માટે "સાઇટ, ઍપ અને એક્સ્ટેન્શન માટેની પરવાનગીઓ" બંધ કરી છે. આ <ph name="EXTENSION_TYPE_PARAMETER" /> ચાલુ કરવાની મંજૂરી નથી.</translation> <translation id="6847869444787758381">Chromium વડે તમે તમારા પાસવર્ડમાં ક્યારેક ચેડાં થાય તો તેના વિશે જાણકારી મેળવી શકો છો</translation> @@ -180,6 +188,7 @@ <translation id="6964305034639999644">Chromium છુ&પી વિંડોમાં લિંક ખોલો</translation> <translation id="6990124437352146030">Chromiumને આ સાઇટ માટે તમારા માઇક્રોફોનના ઍક્સેસની પરવાનગીની જરૂર પડે છે</translation> <translation id="701244094609242530">Chromium તમારા એક્સ્ટેંશન ચેક કરી શકતું નથી. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation> +<translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: 1 કલાક પહેલાં.}one{Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_HOURS} કલાક પહેલાં.}other{Chromiumને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_HOURS} કલાક પહેલાં.}}</translation> <translation id="705851970750939768">Chromium ને અપડેટ કરો</translation> <translation id="7066436765290594559">Chromium OS તમારા ડેટાને સિંક કરી શક્યું નથી. કૃપા કરીને તમારા સિંક પાસફ્રેઝને અપડેટ કરો.</translation> <translation id="7067091210845072982">જો છબીમાં ઉપયોગી વર્ણન ન હોય, તો Chromium તમને વર્ણન પૂરું પાડવાનો પ્રયાસ કરશે. વર્ણન બનાવવા માટે, Googleને છબીઓ મોકલવામાં આવે છે.</translation> @@ -240,6 +249,7 @@ <translation id="8621669128220841554">અનુલ્લેખિત ભૂલને કારણે ઇન્સ્ટોલેશન નિષ્ફળ રહ્યું. કૃપા કરીને Chromium ફરીથી ડાઉનલોડ કરો.</translation> <translation id="8697124171261953979">જ્યારે તમે Chromium શરૂ કરો અથવા ઑમ્નિબૉક્સ પરથી શોધ કરો ત્યારે કયું પૃષ્ઠ બતાવવામાં આવે તે તેનું પણ નિયંત્રણ કરે છે.</translation> <translation id="8704119203788522458">આ તમારું Chromium છે</translation> +<translation id="8733034664173984083">Chromium કોઈ હાનિકારક સૉફ્ટવેર માટે તમારું કમ્પ્યુટર ચેક કરી રહ્યું હતું ત્યારે કોઈ ભૂલ આવી</translation> <translation id="8796602469536043152">Chromiumને આ સાઇટ માટે તમારા કૅમેરા અને માઇક્રોફોનના ઍક્સેસની પરવાનગીની જરૂર પડે છે</translation> <translation id="8803635938069941624">Chromium OS શરતો</translation> <translation id="8821041990367117597">સાઇન ઇન વિગતો જૂની હોવાને કારણે Chromium તમારા ડેટાને સિંક કરી શક્યું નથી.</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb index 46add99..0e6e0305 100644 --- a/chrome/app/resources/chromium_strings_iw.xtb +++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -91,8 +91,8 @@ <translation id="421369550622382712">אפליקציות, משחקים, תוספים ועיצובים מעולים בשביל Chromium.</translation> <translation id="4216212958613226427">זו השפה שבה מוצג ממשק המשתמש של Chromium</translation> <translation id="4230135487732243613">האם לקשר את הנתונים שלך ב-Chromium לחשבון זה?</translation> -<translation id="4271805377592243930">קבל עזרה בנושא Chromium</translation> -<translation id="4285930937574705105">ההתקנה נכשלה בשל שגיאה לא צפויה. אם Chromium פועל כעת, סגור אותו ונסה שוב.</translation> +<translation id="4271805377592243930">עזרה בנושא Chromium</translation> +<translation id="4285930937574705105">ההתקנה נכשלה בשל שגיאה לא צפויה. אם Chromium פועל כעת, יש לסגור אותו ולנסות שוב.</translation> <translation id="4352041330999353637">Chromium לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: אתמול.</translation> <translation id="4407044323746248786">לסגור את Chromium בכל זאת?</translation> <translation id="4415566066719264597">Chromium יכול לפעול ברקע</translation> @@ -119,7 +119,7 @@ <translation id="5224391634244552924">אין סיסמאות שמורות. Chromium יכול לבדוק את הסיסמאות שלך רק אם שמרת אותן.</translation> <translation id="5277894862589591112">כדי להחיל את השינויים שביצעת, יש להפעיל מחדש את Chromium</translation> <translation id="5358375970380395591">אתה נכנס עם חשבון מנוהל ונותן למנהל המערכת שלו שליטה על הפרופיל שלך ב-Chromium. הנתונים שלך ב-Chromium, כגון יישומים, סימניות, היסטוריה, סיסמאות והגדרות אחרות ייקשרו באופן קבוע ל-<ph name="USER_NAME" />. תוכל למחוק את הנתונים האלה באמצעות לוח הבקרה של חשבונות Google, אבל לא תוכל לשייך את הנתונים האלה לחשבון אחר. <ph name="LEARN_MORE" /></translation> -<translation id="5386450000063123300">מעדכן את Chromium (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="5386450000063123300">מתבצע עדכון של Chromium (<ph name="PROGRESS_PERCENT" />)</translation> <translation id="538767207339317086">התרת כניסה אל Chromium</translation> <translation id="5398878173008909840">גרסה חדשה של Chromium זמינה כעת.</translation> <translation id="5416696090975899932">Chromium לא יכול להראות את התצוגה המקדימה של ההדפסה כשמציג ה-PDF המובנה חסר.</translation> @@ -204,7 +204,7 @@ <translation id="7448255348454382571">הפעלה מחדש של Chromium OS</translation> <translation id="7449453770951226939"><ph name="PAGE_TITLE" /> - Chromium בגירסת פיתוח</translation> <translation id="7451052299415159299">Chromium זקוק להרשאת גישה למצלמה בשביל האתר הזה</translation> -<translation id="7483335560992089831">לא ניתן להתקין את אותה גרסת Chromium שפועלת כרגע. סגור את Chromium ונסה שוב.</translation> +<translation id="7483335560992089831">לא ניתן להתקין את אותה גרסת Chromium שפועלת כרגע. יש לסגור את Chromium ולנסות שוב.</translation> <translation id="753534427205733210">{0,plural, =1{Chromium יופעל מחדש בעוד דקה}two{Chromium יופעל מחדש בעוד # דקות}many{Chromium יופעל מחדש בעוד # דקות}other{Chromium יופעל מחדש בעוד # דקות}}</translation> <translation id="7549178288319965365">על מערכת ההפעלה של Chromium</translation> <translation id="7561906087460245826">הסרת נתונים גם מ-Chromium (<ph name="URL" />)</translation>
diff --git a/chrome/app/resources/chromium_strings_ka.xtb b/chrome/app/resources/chromium_strings_ka.xtb index 8180b86b..35a3696 100644 --- a/chrome/app/resources/chromium_strings_ka.xtb +++ b/chrome/app/resources/chromium_strings_ka.xtb
@@ -186,6 +186,7 @@ <translation id="6863361426438995919">Google Pay (Chromium-ში კოპირებული)</translation> <translation id="6893813176749746474">Chromium განახლდა, მაგრამ თქვენ მას არ იყენებდით მინიმუმ 30 დღის განმავლობაში.</translation> <translation id="6964305034639999644">ბმულის გახსნა Chromium-ის ინკო&გნიტო ფანჯარაში</translation> +<translation id="6978145336957848883">სუსტი პაროლები ადვილი გამოსაცნობია, ამიტომ მიეცით საშუალება Chromium-ს, <ph name="BEGIN_LINK" />თქვენთვის შექმნას და დაიმახსოვროს ძლიერი პაროლები<ph name="END_LINK" />.</translation> <translation id="6990124437352146030">Chromium საჭიროებს თქვენს მიკროფონზე წვდომის ნებართვას ამ საიტისთვის</translation> <translation id="701244094609242530">Chromium ვერ ახერხებს გაფართოებების შემოწმებას. ცადეთ მოგვიანებით.</translation> <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium-მა თქვენს კომპიუტერში საზიანო პროგრამული უზრუნველყოფა ვერ აღმოაჩინა. ბოლო შემოწმება: 1 საათის წინ.}other{Chromium-მა თქვენს კომპიუტერში საზიანო პროგრამული უზრუნველყოფა ვერ აღმოაჩინა. ბოლო შემოწმება: {NUM_HOURS} საათის წინ.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb index a54bdab..9562776 100644 --- a/chrome/app/resources/chromium_strings_ml.xtb +++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -186,6 +186,7 @@ <translation id="6863361426438995919">Google Pay (Chromium-ത്തിലേക്ക് പകർത്തി)</translation> <translation id="6893813176749746474">Chromium അപ്ഡേറ്റുചെയ്തു, എന്നാൽ കുറഞ്ഞത് 30 ദിവസം പോലും നിങ്ങൾ ഇത് ഉപയോഗിച്ചില്ല.</translation> <translation id="6964305034639999644">Chromium അദൃശ്യ വിൻഡോയിൽ ലിങ്ക് തുറക്കുക</translation> +<translation id="6978145336957848883">ദുർബലമായ പാസ്വേഡുകൾ ഊഹിക്കാൻ എളുപ്പമാണ്. <ph name="BEGIN_LINK" />നിങ്ങൾക്കായി ശക്തമായ പാസ്വേഡുകൾ സൃഷ്ടിക്കാനും ഓർമ്മിക്കാനും<ph name="END_LINK" /> Chromium-ത്തെ അനുവദിക്കുക.</translation> <translation id="6990124437352146030">ഈ സൈറ്റിനായി, Chromium-ത്തിന് നിങ്ങളുടെ മൈക്രോഫോൺ ആക്സസ് ചെയ്യാനുള്ള അനുമതി ആവശ്യമാണ്</translation> <translation id="701244094609242530">Chromium-ന് നിങ്ങളുടെ വിപുലീകരണങ്ങൾ പരിശോധിക്കാനാവുന്നില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="7028347026395185822">{NUM_HOURS,plural, =1{നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ അറിയപ്പെടുന്ന ദോഷകരമായ സോഫ്റ്റ്വെയർ Chromium കണ്ടെത്തിയില്ല. അവസാനം പരിശോധിച്ചത്: ഒരു മണിക്കൂർ മുമ്പ്.}other{നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ അറിയപ്പെടുന്ന ദോഷകരമായ സോഫ്റ്റ്വെയർ Chromium കണ്ടെത്തിയില്ല. അവസാനം പരിശോധിച്ചത്: {NUM_HOURS} മണിക്കൂർ മുമ്പ്.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_mn.xtb b/chrome/app/resources/chromium_strings_mn.xtb index 00b59f81..e9e78d1 100644 --- a/chrome/app/resources/chromium_strings_mn.xtb +++ b/chrome/app/resources/chromium_strings_mn.xtb
@@ -184,6 +184,7 @@ <translation id="6863361426438995919">Google Pay (Chromium-д хуулсан)</translation> <translation id="6893813176749746474">Chromium нь шинэчлэгдсэн байгаа хэдий ч та үүнийг доод тал нь 30 хоногийн турш ашиглаагүй байна.</translation> <translation id="6964305034639999644">Холбоосыг Chromium-н нууцлалтай цонхонд нээх</translation> +<translation id="6978145336957848883">Сул нууц үгийг таахад хялбар байдаг. Chromium-д <ph name="BEGIN_LINK" />танд зориулан сайн нууц үг үүсгэж, санах<ph name="END_LINK" /> боломж олгоорой.</translation> <translation id="6990124437352146030">Энэ сайтыг ашиглахын тулд Chromium-д таны микрофонд хандах зөвшөөрөл шаардлагатай</translation> <translation id="701244094609242530">Chromium таны өргөтгөлүүдийг шалгах боломжгүй байна. Дараа дахин оролдоно уу.</translation> <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium таны компьютерooс мэдэгдэж буй хортой программ хангамж олсонгүй. Хамгийн сүүлд шалгасан: 1 цагийн өмнө.}other{Chromium таны компьютерooс мэдэгдэж буй хортой программ хангамж олсонгүй. Хамгийн сүүлд шалгасан: {NUM_HOURS} цагийн өмнө.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb index a4c8d8f..a8883ae 100644 --- a/chrome/app/resources/chromium_strings_nl.xtb +++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -186,6 +186,7 @@ <translation id="6863361426438995919">Google Pay (gekopieerd naar Chromium)</translation> <translation id="6893813176749746474">Chromium is bijgewerkt, maar je hebt het programma minstens 30 dagen niet gebruikt.</translation> <translation id="6964305034639999644">Link openen in een Chromium-inco&gnitovenster</translation> +<translation id="6978145336957848883">Zwakke wachtwoorden zijn makkelijk te raden. Laat Chromium <ph name="BEGIN_LINK" />sterke wachtwoorden voor je instellen en onthouden<ph name="END_LINK" />.</translation> <translation id="6990124437352146030">Chromium heeft toegangsrechten voor je microfoon nodig voor deze site</translation> <translation id="701244094609242530">Chromium kan je extensies niet checken. Probeer het later opnieuw.</translation> <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium heeft geen bekende schadelijke software gevonden op je computer Laatst gecheckt: 1 uur geleden.}other{Chromium heeft geen bekende schadelijke software gevonden op je computer Laatst gecheckt: {NUM_HOURS} uur geleden.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb index e91542d2..e2a14a71 100644 --- a/chrome/app/resources/chromium_strings_sw.xtb +++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -186,6 +186,7 @@ <translation id="6863361426438995919">Google Pay (imenakiliwa kwenye Chromium)</translation> <translation id="6893813176749746474">Chromium imesasishwa, lakini hujaitumia angalau kwa siku 30.</translation> <translation id="6964305034639999644">Fungua kiungo katika dirisha fiche la Chromium</translation> +<translation id="6978145336957848883">Ni rahisi kukisia manenosiri dhaifu. Iruhusu Chromium <ph name="BEGIN_LINK" />itunge na ikumbuke manenosiri thabiti kwa niaba yako<ph name="END_LINK" />.</translation> <translation id="6990124437352146030">Chromium inahitaji ruhusa ya kufikia maikrofoni yako katika tovuti hii</translation> <translation id="701244094609242530">Chromium imeshindwa kukagua viendelezi vyako. Jaribu tena baadaye.</translation> <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium haikupata programu hatari kwenye kompyuta yako. Mara ya mwisho kukagua: saa moja iliyopita.}other{Chromium haikupata programu hatari kwenye kompyuta yako. Mara ya mwisho kukagua: saa {NUM_HOURS} zilizopita.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb index cc7b02c7..ea8fc91 100644 --- a/chrome/app/resources/chromium_strings_te.xtb +++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -182,6 +182,7 @@ <translation id="6863361426438995919">Google Pay (Chromiumకి కాపీ చేయబడింది)</translation> <translation id="6893813176749746474">Chromium నవీకరించబడింది, కానీ మీరు దీన్ని గత 30 రోజులుగా ఉపయోగించలేదు.</translation> <translation id="6964305034639999644">Chromium అజ్ఞా&త విండోలో లింక్ను తెరువు</translation> +<translation id="6978145336957848883">బలహీనమైన పాస్వర్డ్లను ఊహించడం చాలా సులభం. <ph name="BEGIN_LINK" />మీ కోసం శక్తివంతమైన పాస్వర్డ్లను క్రియేట్ చేయడం, గుర్తుంచుకోవడం<ph name="END_LINK" /> చేయడానికి Chromiumను అనుమతించండి.</translation> <translation id="6990124437352146030">ఈ సైట్ కోసం మీ మైక్రోఫోన్ను యాక్సెస్ చేయడానికి Chromiumకు అనుమతి అవసరం</translation> <translation id="701244094609242530">Chromium మీ ఎక్స్టెన్షన్లను తనిఖీ చేయలేకపోయింది. తర్వాత మళ్లీ ట్రై చేయండి.</translation> <translation id="7028347026395185822">{NUM_HOURS,plural, =1{మీ కంప్యూటర్లో తెలిసిన హానికరమైన సాఫ్ట్వేర్ను Chromium కనుగొనలేదు. చివరగా చెక్ చేసినది: 1 గంట క్రితం.}other{మీ కంప్యూటర్లో తెలిసిన హానికరమైన సాఫ్ట్వేర్ను Chromium కనుగొనలేదు. చివరగా చెక్ చేసినది: {NUM_HOURS} గంటల క్రితం.}}</translation>
diff --git a/chrome/app/resources/chromium_strings_th.xtb b/chrome/app/resources/chromium_strings_th.xtb index 1d7518d..f317290 100644 --- a/chrome/app/resources/chromium_strings_th.xtb +++ b/chrome/app/resources/chromium_strings_th.xtb
@@ -184,6 +184,7 @@ <translation id="6863361426438995919">Google Pay (คัดลอกไปยัง Chromium)</translation> <translation id="6893813176749746474">Chromium ได้รับการอัปเดตแล้ว แต่คุณไม่ได้ใช้งานมาไม่ต่ำกว่า 30 วันแล้ว</translation> <translation id="6964305034639999644">เปิดลิงก์ในหน้าต่างที่ไม่ระบุตัวตนของ Chromium</translation> +<translation id="6978145336957848883">รหัสผ่านที่ไม่รัดกุมนั้นคาดเดาได้ง่าย ให้ Chromium <ph name="BEGIN_LINK" />สร้างและจดจำรหัสผ่านที่รัดกุมให้คุณ<ph name="END_LINK" /></translation> <translation id="6990124437352146030">Chromium ต้องการสิทธิ์เข้าถึงไมโครโฟนของคุณสำหรับเว็บไซต์นี้</translation> <translation id="701244094609242530">Chromium ตรวจสอบส่วนขยายของคุณไม่ได้ โปรดลองอีกครั้งภายหลัง</translation> <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium ไม่พบซอฟต์แวร์ที่เป็นอันตรายในคอมพิวเตอร์ของคุณ ตรวจสอบล่าสุดเมื่อ 1 ชั่วโมงที่ผ่านมา}other{Chromium ไม่พบซอฟต์แวร์ที่เป็นอันตรายในคอมพิวเตอร์ของคุณ ตรวจสอบล่าสุดเมื่อ {NUM_HOURS} ชั่วโมงที่ผ่านมา}}</translation>
diff --git a/chrome/app/resources/chromium_strings_uz.xtb b/chrome/app/resources/chromium_strings_uz.xtb index 411e399..bfd6bbd 100644 --- a/chrome/app/resources/chromium_strings_uz.xtb +++ b/chrome/app/resources/chromium_strings_uz.xtb
@@ -182,6 +182,7 @@ <translation id="6863361426438995919">Google Pay (Chromium brauzeriga nusxalandi)</translation> <translation id="6893813176749746474">Chromium yangilandi, lekin siz undan 30 kun davomida foydalanmadingiz.</translation> <translation id="6964305034639999644">Havolani Chromium &inkognito oynasida ochish</translation> +<translation id="6978145336957848883">Kuchsiz parollar oson topiladi. Chromium <ph name="BEGIN_LINK" />siz uchun ishonchli parol yaratsin va eslab qolsin<ph name="END_LINK" />.</translation> <translation id="6990124437352146030">Bu sayt mikrofoningizdan foydalanishi uchun Chromium brauzeriga ruxsat berishingiz lozim</translation> <translation id="701244094609242530">Chromium kengaytmalaringizni tekshira olmadi. Keyinroq qayta urining.</translation> <translation id="7028347026395185822">{NUM_HOURS,plural, =1{Chromium kompyuteringizda zararli dasturlarni topa olmadi. Oxirgi marta: 1 soat oldin tekshirilgan.}other{Chromium kompyuteringizda zararli dasturlarni topa olmadi. Oxirgi marta: {NUM_HOURS} soat oldin tekshirilgan.}}</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index 441edddc..f08e673 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -867,6 +867,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" />এ ADB ডিবাগিং অক্ষম কৰিছে। ই ২৪ ঘণ্টাত আপোনাৰ <ph name="DEVICE_TYPE" /> ৰিছেট কৰিব। আপুনি ৰাখিবলৈ বিচৰা যিকোনো ফাইলৰ বেক আপ লওক।</translation> <translation id="1977965994116744507">আপোনাৰ <ph name="DEVICE_TYPE" />.আনলক কৰিবলৈ আপোনাৰ ফ’নটো ওচৰলৈ আনক।</translation> <translation id="1978006917103730774">ভৱিষ্যতৰ ছফ্টৱেৰ আৰু সুৰক্ষাৰ আপডে’টসমূহ স্বয়ংক্ৰিয়ভাৱে ইনষ্টল হ’ব।</translation> +<translation id="1978057560491495741">ঠিকনাটো আঁতৰাওক</translation> <translation id="1979095679518582070">এই সুবিধাটো বন্ধ কৰিলেও আপোনাৰ ডিভাইচটোৱে ছিষ্টেম আপডে’ট আৰু সুৰক্ষাৰ দৰে অত্যাৱশ্যকীয় সেৱাসমূহৰ বাবে দৰকাৰী তথ্য পঠিওৱাৰ ক্ষেত্ৰত কোনো প্ৰভাৱ নপৰে।</translation> <translation id="1979280758666859181">আপুনি <ph name="PRODUCT_NAME" />ৰ পুৰণি সংস্কৰণ থকা এটা চেনেললৈ সলনি কৰিবলৈ লৈছে। আপোনাৰ ডিভাইচত বৰ্তমান ইনষ্টল কৰি থোৱা চেনেলৰ সংস্কৰণৰ সৈতে সেই চেনেলৰ সংস্কৰণটো মিলিলে চেনেল সলনি কৰা হ’ব।</translation> <translation id="197989455406964291">KDC এ এনক্ৰিপশ্বনৰ প্ৰকাৰসমূহ সমৰ্থন নকৰে</translation> @@ -1068,6 +1069,7 @@ <translation id="2224444042887712269">এই ছেটিংটোৰ গৰাকী হৈছে <ph name="OWNER_EMAIL" />।</translation> <translation id="2224551243087462610">ফ’ল্ডাৰৰ নাম সম্পাদনা কৰক</translation> <translation id="2225864335125757863">আপোনাৰ একাউণ্টটো সুৰক্ষিত কৰি ৰাখিবলৈ এই পাছৱর্ডসমূহ তৎক্ষণাৎ সলনি কৰক:</translation> +<translation id="2226204716217107988">অন্য এটা প্ৰ’ফাইললৈ সলনি কৰিবনে?</translation> <translation id="2226449515541314767">এই ছাইটটোক MIDI ডিভাইচৰ সম্পূৰ্ণ নিয়ন্ত্ৰণ পোৱাৰ পৰা অৱৰোধ কৰা হৈছে।</translation> <translation id="2226907662744526012">পিন দিয়াৰ লগে লগে স্বয়ংক্ৰিয়ভাৱে আনলক কৰক</translation> <translation id="222704500187107962">আপুনি বৰ্তমানৰ ইনক’গনিট’ ছেশ্বনটোৰ পৰা বাহিৰ ওলালে এই ব্যতিক্ৰমটো স্বয়ংক্ৰিয়ভাৱে আঁতৰোৱা হ’ব</translation> @@ -1137,6 +1139,7 @@ <translation id="2307462900900812319">নেটৱৰ্ক কনফিগাৰ কৰক</translation> <translation id="230927227160767054">এই পৃষ্ঠাটোৱে এটা সেৱা হেণ্ডলাৰ ইনষ্টল কৰিব বিচাৰে।</translation> <translation id="2309620859903500144">এই ছাইটটোৰ আপোনাৰ গতি বা পোহৰ ধৰা পেলাব পৰা ছেন্সৰসমূহলৈ এক্সেছ অৱৰোধ কৰি ৰখা হৈছে।</translation> +<translation id="2312219318583366810">পৃষ্ঠাৰ URL</translation> <translation id="2314165183524574721">বৰ্তমানৰ দৃশ্যমানতাৰ ছেটিংটো লুকুৱাই থোৱা হৈছে</translation> <translation id="2314774579020744484">পৃষ্ঠাসমূহ অনুবাদ কৰাৰ সময়ত ব্যৱহাৰ কৰা ভাষা</translation> <translation id="2315414688463285945">Linux ফাইলসমূহ কনফিগাৰ কৰিবপৰা নগ’ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক।</translation> @@ -2340,6 +2343,7 @@ <translation id="3713047097299026954">এই সুৰক্ষাৰ চাবিটোত কোনো ছাইন ইন ডেটা ষ্ট'ৰ কৰি থোৱা নাই।</translation> <translation id="3714195043138862580">এই ডেম' ডিভাইচটো এক্সেছহীন অৱস্থাত ৰখা হৈছে।</translation> <translation id="3714633008798122362">ৱেব কেলেণ্ডাৰ</translation> +<translation id="3715954932774762075">একাধিক ভাষাত উপলব্ধ এপ্ আৰু ৱেবছাইটসমূহে এই সূচীখনৰ পৰা প্ৰথম সমৰ্থিত ভাষাটো ব্যৱহাৰ কৰিব। এই অগ্ৰাধিকাৰসমূহ আপোনাৰ ব্ৰাউজাৰৰ ছেটিঙৰ সৈতে ছিংক কৰা আছে। <ph name="BEGIN_LINK_LEARN_MORE" />অধিক জানক<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">গৃহ পৃষ্ঠা</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">আপুনি আৰু Google</translation> @@ -2500,6 +2504,7 @@ <translation id="3882165008614329320">কেমেৰা অথবা ফাইলৰ পৰা ইতিমধ্যে থকা ভিডিঅ’</translation> <translation id="3886446263141354045">এই ছাইটটো এক্সেছ কৰিবলৈ আপুনি কৰা অনুৰোধ <ph name="NAME" />লৈ পঠিওৱা হৈছে</translation> <translation id="3888550877729210209"><ph name="LOCK_SCREEN_APP_NAME" />ৰ জৰিয়তে টোকা লৈ থকা হৈছে</translation> +<translation id="3890064827463908288">ৱাই-ফাই ছিংক ব্যৱহাৰ কৰিবলৈ Chrome ছিংক অন কৰক</translation> <translation id="3892414795099177503">OpenVPN / L2TP যোগ কৰক...</translation> <translation id="3893536212201235195">আপোনাৰ সাধ্য সুবিধাৰ ছেটিংসমূহ পঢ়ক আৰু সলনি কৰক</translation> <translation id="3893630138897523026">ChromeVox (কথিত মতামত)</translation> @@ -3767,6 +3772,7 @@ <translation id="5449588825071916739">সকলো টেব বুকমার্ক কৰক</translation> <translation id="5449716055534515760">Win&dow বন্ধ কৰক</translation> <translation id="5452974209916053028">বৰ্তমানৰ ইনক’গনিট’ ছেশ্বন: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">কেপশ্বন বাবল <ph name="POSITION_ON_SCREEN_FROM_LEFT" />% ইটো মূৰলৈ, <ph name="POSITION_ON_SCREEN_FROM_TOP" />% তললৈ স্থানান্তৰ কৰা হৈছে</translation> <translation id="5454166040603940656"><ph name="PROVIDER" />ৰ সৈতে</translation> <translation id="5457113250005438886">অমান্য</translation> <translation id="5457459357461771897">আপোনাৰ কম্পিউটাৰৰ পৰা ফট’, সংগীত আৰু অন্য মিডিয়া পঢ়ক আৰু মচক</translation> @@ -3909,6 +3915,7 @@ <translation id="5602765853043467355">এই ডিভাইচৰ পৰা বুকমার্ক, ইতিহাস, পাছৱর্ড আৰু অধিক তথ্য মচক</translation> <translation id="5605623530403479164">অন্যান্য সন্ধান ইঞ্জিন</translation> <translation id="5605758115928394442">এইগৰাকী আপুনিয়েই হয় বুলি নিশ্চিত কৰিবলৈ আপোনাৰ ফ'নলৈ এটা জাননী পঠিওৱা হৈছে।</translation> +<translation id="560834977503641186">ৱাই-ফাই ছিংক, অধিক জানক</translation> <translation id="5608580678041221894">ক্ৰপ কৰা অংশ মিলাবলৈ বা আঁতৰাবলৈ তলত উল্লেখ কৰা চাবিসমূহ টিপক</translation> <translation id="5609231933459083978">এই এপ্লিকেশ্বনটো অমান্য যেন লাগিছে।</translation> <translation id="5610038042047936818">কেমেৰা ম’ডলৈ সলনি কৰক</translation> @@ -4099,6 +4106,7 @@ <translation id="5841270259333717135">ইথাৰনেট কনফিগাৰ কৰক</translation> <translation id="5842497610951477805">ব্লুটুথ সক্ষম কৰা আছে</translation> <translation id="5843706793424741864">ফাৰেনহাইট</translation> +<translation id="584451707753263735">লাইভ কেপশ্বন দৃশ্যমান হৈ আছে, ফ’কাছ সলনি কৰিবলৈ F6 টিপক</translation> <translation id="5844574845205796324">অন্বেষণ কৰিবলৈ নতুন সমলৰ পৰামৰ্শ দিয়ক</translation> <translation id="5846200638699387931">ৰিলেশ্বন ছিণ্টেক্স আসোঁৱাহ: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">আপডে’ট আৰু এপ্সমূহ ইনষ্টল কৰক। এয়া অব্যাহত ৰাখি আপুনি সন্মতি দিয়ে যে এই ডিভাইচটোৱেও স্বয়ংক্ৰিয়ভাৱে Google, আপোনাৰ বাহক আৰু আপোনাৰ ডিভাইচৰ নির্মাতাৰ পৰা আপডে’ট আৰু এপ্সমূহ ডাউনল’ড তথা ইনষ্টল কৰিব পাৰে। এই কার্যৰ বাবে চেলুলাৰ ডেটা ব্যৱহাৰ কৰা হ’ব পাৰে। এই এপ্সমূহৰ কিছুমানত এপত ক্ৰয়ৰ সুবিধা থাকিব পাৰে।</translation> @@ -5348,6 +5356,7 @@ <translation id="7340431621085453413">এতিয়া <ph name="FULLSCREEN_ORIGIN" /> পূৰ্ণ স্ক্ৰীণত দেখুওৱা হৈছে।</translation> <translation id="7340650977506865820">ছাইটটোৱে আপোনাৰ স্ক্ৰীণ শ্বেয়াৰ কৰি আছে</translation> <translation id="7341834142292923918">এই ছাইটলৈ এক্সেছ বিচাৰে</translation> +<translation id="7343372807593926528">মতামত পঠিওৱাৰ আগতে অনুগ্ৰহ কৰি সমস্যাটো বৰ্ণনা কৰক।</translation> <translation id="7345706641791090287">আপোনাৰ পাছৱৰ্ড নিশ্চিত কৰক</translation> <translation id="7346909386216857016">ঠিক আছে, বুজি পালোঁ</translation> <translation id="7347452120014970266">এই কাৰ্যই <ph name="ORIGIN_NAME" /> আৰু ইয়াৰ ইনষ্টল হৈ থকা এপ্সমূহে ষ্ট’ৰ কৰা সকলো ডেটা আৰু কুকি মচিব</translation> @@ -5762,6 +5771,7 @@ <translation id="7819857487979277519">PSK (WPA বা RSN)</translation> <translation id="7819992334107904369">Chromeৰ ছিংক</translation> <translation id="782057141565633384">ভিডিঅ’ৰ ঠিকনা প্ৰতি&লিপি কৰক</translation> +<translation id="7822187537422052256">আপুনি এই ঠিকনাটো আঁতৰাব বিচাৰে বুলি নিশ্চিতনে?</translation> <translation id="7824864914877854148">কোনো আসোঁৱাহৰ বাবে বেক আপ সম্পূৰ্ণ কৰিব পৰা নগ'ল</translation> <translation id="7825666486843191125">আপোনাৰ স্ক্ৰীনখন আনলক হৈ থাকিলে আপোনাৰ ওচৰত থকা সকলো সম্পৰ্ক</translation> <translation id="782590969421016895">বর্তমানৰ পৃষ্ঠাসমূহ ব্যৱহাৰ কৰক</translation> @@ -6286,6 +6296,7 @@ <translation id="8419098111404128271">’<ph name="SEARCH_TEXT" />’ৰ সন্ধানৰ ফলাফল</translation> <translation id="8419368276599091549">আপোনাৰ <ph name="DEVICE_TYPE" />লৈ স্বাগতম!</translation> <translation id="8420308167132684745">অভিধানৰ প্ৰৱিষ্টিসমূহ সম্পাদনা কৰক</translation> +<translation id="8421361468937925547">লাইভ কেপশ্বন (কেৱল ইংৰাজীত)</translation> <translation id="8422787418163030046">ট্ৰে’ উপলব্ধ নহয়</translation> <translation id="8425213833346101688">সলনি কৰক</translation> <translation id="8425492902634685834">টাস্কবাৰত পিন কৰক</translation> @@ -6314,6 +6325,7 @@ <translation id="8449036207308062757">সঞ্চয়াগাৰ পৰিচালনা কৰক</translation> <translation id="8452135315243592079">কোনো ছিম কাৰ্ড নাই</translation> <translation id="8455026683977728932">ADBৰ সবিশেষ বর্ণনা সক্ষম কৰিব পৰা নগ’ল</translation> +<translation id="8456398879271637452">লাইভ কেপশ্বন দৃশ্যমান হৈ আছে, ফ’কাছ সলনি কৰিবলৈ ক'ণ্ট্ৰল + বেক অথবা ক'ণ্ট্ৰল + ফৰৱাৰ্ড</translation> <translation id="845702320058262034">সংযোগ কৰিব নোৱাৰি। আপোনাৰ ফ’নৰ ব্লুটুথ অন হৈ থকাটো নিশ্চিত কৰক।</translation> <translation id="8457451314607652708">বুকমাৰ্ক আমদানি কৰক</translation> <translation id="8458627787104127436">আটাইবোৰ (<ph name="URL_COUNT" /> টা) নতুন ৱিণ্ড’ত খোলক</translation> @@ -6824,6 +6836,7 @@ <translation id="9027459031423301635">নতুন &টেবত লিংক খোলক</translation> <translation id="9030515284705930323">আপোনাৰ প্ৰতিষ্ঠানে আপোনাৰ একাউণ্টৰ বাবে Google Play Store সক্ষম কৰা নাই৷ অধিক তথ্যৰ বাবে আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক৷</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269"><ph name="PLUGIN_NAME" /> আৰু সমৰ্থিত নহয়</translation> <translation id="9031549947500880805">Google Driveত বেক আপ লওক। আপোনাৰ ডেটা সহজে পুনঃস্থাপন কৰক অথবা যিকোনো সময়তে ডিভাইচ সলনি কৰক। আপোনাৰ বেকআপত এপ্ ডেটাও আছে।</translation> <translation id="9033765790910064284">যি হ’লেও অব্যাহত ৰাখক</translation> <translation id="9033857511263905942">&পেষ্ট কৰক</translation> @@ -6832,6 +6845,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{আপোনাৰ এটা প্ৰয়াস বাকী আছে।}one{আপোনাৰ # টা প্ৰয়াস বাকী আছে।}other{আপোনাৰ # টা প্ৰয়াস বাকী আছে।}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571"><ph name="ORIGIN" />ৰ পাছৱৰ্ড আপডে’ট কৰিবনে?</translation> +<translation id="9041049756004505730">লাইভ কেপশ্বন দৃশ্যমান হৈ আছে, ফ’কাছ সলনি কৰিবলৈ ⌘ + অপশ্বন + আপ অথবা ডাউন এৰঅ'ত টিপক</translation> <translation id="9041692268811217999">আপোনাৰ প্ৰশাসকে আপোনাৰ মেছিনত থকা স্থানীয় ফাইললৈ এক্সেছ অক্ষম কৰিছে</translation> <translation id="904224458472510106">এই কাৰ্যটো আনডু কৰিব নোৱাৰি</translation> <translation id="9042893549633094279">গোপনীয়তা আৰু সুৰক্ষা</translation> @@ -6870,6 +6884,7 @@ <translation id="9088446193279799727">Linux কনফিগাৰ কৰিব পৰা নগ’ল। ইণ্টাৰনেটৰ লগত সংযোগ কৰক আৰু পুনৰ চেষ্টা কৰক।</translation> <translation id="9088917181875854783">অনুগ্ৰহ কৰি নিশ্চিত কৰক যে এই পাছকীটো "<ph name="DEVICE_NAME" />"ত দেখুওৱা হৈছে:</translation> <translation id="9089416786594320554">ইনপুট পদ্ধতি</translation> +<translation id="909108997331068008"><ph name="EXISTING_USER" />ৰ প্ৰ’ফাইলটো ইতিমধ্যে <ph name="NEW_USER" />ত ছাইন ইন হৈ আছে</translation> <translation id="9093429538970210897">আপগ্ৰে’ডটো সম্পূৰ্ণ কৰিব নোৱৰাৰ ক্ষেত্ৰত ফাইলসমূহৰ বেক আপ লোৱাটো চুপাৰিছ কৰা হয়। আপগ্ৰে’ডটো আৰম্ভ কৰাৰ ফলত Linux (বিটা) বন্ধ হৈ যাব। আগবঢ়াৰ পূৰ্বে অনুগ্ৰহ কৰি খোল খাই থকা ফাইলসমূহ ছেভ কৰক।</translation> <translation id="9094033019050270033">পাছৱৰ্ড আপডে’ট কৰক</translation> <translation id="9094038138851891550">ব্যৱহাৰকাৰীৰ নাম অমান্য</translation> @@ -7043,5 +7058,6 @@ <translation id="994289308992179865">&লুপ কৰক</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">সুৰক্ষিত সংযোগ স্থাপন কৰি থকা হৈছে...</translation> +<translation id="99731366405731005">ৱাই-ফাই ছিংক ব্যৱহাৰ কৰিবলৈ <ph name="LINK1_BEGIN" />Chrome ছিংক<ph name="LINK1_END" /> অন কৰক। <ph name="LINK2_BEGIN" />অধিক জানক<ph name="LINK2_END" /></translation> <translation id="998747458861718449">প&ৰীক্ষা কৰক</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index b59e3c3..241e4908 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -2622,7 +2622,7 @@ <translation id="4002329649066944389">Spravovat výjimky pro konkrétní weby</translation> <translation id="4002440992267487163">Nastavení kódu PIN</translation> <translation id="4005817994523282006">Metoda zjišťování časového pásma</translation> -<translation id="4007856537951125667">Skrýt klávesové zkratky</translation> +<translation id="4007856537951125667">Skrýt zkratky</translation> <translation id="4008291085758151621">V režimu virtuální reality informace o webu nejsou k dispozici</translation> <translation id="4010917659463429001">Chcete-li své záložky mít na mobilním zařízení, <ph name="GET_IOS_APP_LINK" />.</translation> <translation id="4014432863917027322">Opravit rozšíření <ph name="EXTENSION_NAME" />?</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 9ac8616a..91bd566 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -928,6 +928,7 @@ <translation id="204914487372604757">Create shortcut</translation> <translation id="2050339315714019657">Portrait</translation> <translation id="2053312383184521053">Idle State Data</translation> +<translation id="2054665754582400095">Your presence</translation> <translation id="2055585478631012616">You’ll be signed out of these sites, including in open tabs</translation> <translation id="205560151218727633">Google assistant logo</translation> <translation id="2058456167109518507">Device detected</translation> @@ -1214,6 +1215,7 @@ <translation id="2387052489799050037">Go home</translation> <translation id="2387458720915042159">Proxy connection type</translation> <translation id="2390347491606624519">Can’t connect to proxy; please sign in again</translation> +<translation id="2390782873446084770">Wi-Fi Sync</translation> <translation id="2391082728065870591">Send feedback report</translation> <translation id="2391419135980381625">Standard font</translation> <translation id="2392163307141705938">You reached the time limit that your parent set for <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation> @@ -1870,6 +1872,7 @@ <translation id="3157931365184549694">Restore</translation> <translation id="3158033540161634471">Set up your fingerprint</translation> <translation id="3159493096109238499">Beige</translation> +<translation id="3159978855457658359">Edit device name</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (hardware-backed)</translation> <translation id="3161522574479303604">All languages</translation> <translation id="3162853326462195145">School account</translation> @@ -3230,6 +3233,7 @@ <translation id="4761104368405085019">Use your microphone</translation> <translation id="4762718786438001384">Device disk space critically low</translation> <translation id="4763408175235639573">The following cookies were set when you viewed this page</translation> +<translation id="4764368918650455114">Make sure that both devices are unlocked, close together and have Bluetooth turned on. If you’re sharing with a Chromebook, make sure that it has Nearby Sharing turned on (open the status area by selecting the time, then select Nearby Share). <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation> <translation id="4765582662863429759">Allows Android Messages to relay texts from your phone to your Chromebook</translation> <translation id="476598255842811483">No one unless you open Nearby Share on your device</translation> <translation id="4768332406694066911">You have certificates from these organisations that identify you</translation> @@ -3392,6 +3396,7 @@ <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation> <translation id="496185450405387901">This app has been installed by your administrator.</translation> <translation id="4964455510556214366">Arrangement</translation> +<translation id="496446150016900060">Sync Wi-Fi networks with your phone</translation> <translation id="4965808351167763748">Are you sure that you want to set up this device to run Hangouts Meet?</translation> <translation id="496888482094675990">The Files app provides quick access to files that you've saved on Google Drive, external storage or your Chrome OS device.</translation> <translation id="4971412780836297815">Open when done</translation> @@ -3698,6 +3703,7 @@ <translation id="5341980496415249280">Please wait, packing…</translation> <translation id="5342091991439452114">PIN must be at least <ph name="MINIMUM" /> digits</translation> <translation id="5344036115151554031">Restoring Linux</translation> +<translation id="5345916423802287046">Start app when you sign in</translation> <translation id="5350293332385664455">Turn off Google Assistant</translation> <translation id="535123479159372765">Text copied from other device</translation> <translation id="5352033265844765294">Time Stamping</translation> @@ -4007,6 +4013,7 @@ <translation id="5704875434923668958">Syncing to</translation> <translation id="5705005699929844214">Always show accessibility options</translation> <translation id="5705882733397021510">Go back</translation> +<translation id="5707117624115653804">Customise caption size and style for apps and sites that support this setting</translation> <translation id="5707185214361380026">Failed to load extension from:</translation> <translation id="5708171344853220004">Microsoft Principal Name</translation> <translation id="5709557627224531708">Set Chrome as your default browser</translation> @@ -4170,6 +4177,7 @@ <translation id="5904614460720589786">Couldn't set up <ph name="APP_NAME" /> because of a configuration problem. Please contact your administrator. Error code: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Nearly up to date! Restart your device to finish updating.</translation> <translation id="5906732635754427568">Data associated with this app will be removed from this device.</translation> +<translation id="5908474332780919512">Start app when you sign in</translation> <translation id="5908695239556627796">Mouse scroll speed</translation> <translation id="5908769186679515905">Block sites from running Flash</translation> <translation id="5910363049092958439">Sa&ve Image As...</translation> @@ -4710,6 +4718,7 @@ <translation id="6532527800157340614">Sign-in failed because your access token could not be retrieved. Please check your network connection and try again.</translation> <translation id="6532663472409656417">Enterprise enrolled</translation> <translation id="6535331821390304775">Always allow <ph name="ORIGIN" /> to open links of this type in the associated app</translation> +<translation id="6537613839935722475">The name can use letters, numbers and hyphens (-)</translation> <translation id="6538635548667167211">Current data usage setting is Data</translation> <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Note:<ph name="END_BOLD" /> Only enable if you know what you are doing or if you have been asked to do so, as collection of data may reduce performance.</translation> <translation id="6541638731489116978">This site has been blocked from accessing your motion sensors.</translation> @@ -4798,6 +4807,7 @@ <translation id="6650234781371031356">Your password for <ph name="WEBSITE" /> is stored on this device and in your Google Account. Which one do you want to delete?</translation> <translation id="665061930738760572">Open in &New Window</translation> <translation id="6651237644330755633">Trust this certificate for identifying websites</translation> +<translation id="6651495917527016072">Sync Wi-Fi networks with your phone. <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> integration is only supported on x86_64 platforms. Chromebooks built on top of an ARM or x86 platform do not support this functionality.</translation> <translation id="6654509035557065241">Prefer network</translation> <translation id="6655190889273724601">Developer mode</translation> @@ -5401,6 +5411,7 @@ <translation id="7375235221357833624">{0,plural, =1{Update device within an hour}other{Update device within # hours}}</translation> <translation id="7376553024552204454">Highlight the mouse cursor when it's moving</translation> <translation id="7377451353532943397">Continue blocking sensor access</translation> +<translation id="7378611153938412599">Weak passwords are easy to guess. Make sure that you’re creating strong passwords. <ph name="BEGIN_LINK" />See more security tips.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Open Chrome Web Store</translation> <translation id="7378812711085314936">Get data connection</translation> <translation id="7380622428988553498">Device name contains invalid characters</translation> @@ -5925,6 +5936,7 @@ <translation id="7959074893852789871">The file contained multiple certificates, some of which were not imported:</translation> <translation id="7961015016161918242">Never</translation> <translation id="7963001036288347286">Touchpad acceleration</translation> +<translation id="7963608432878156675">This name is visible to other devices for Bluetooth and network connections</translation> <translation id="7963826112438303517">Your Assistant uses these recordings and your spoken requests to create and update your voice model, which is only stored on devices where you've turned on Voice Match. View or retrain voice activity in Assistant Settings.</translation> <translation id="7966241909927244760">C&opy Image Address</translation> <translation id="7966571622054096916">{COUNT,plural, =1{1 item in bookmark list}other{{COUNT} items in bookmark list}}</translation> @@ -6389,6 +6401,7 @@ <translation id="850875081535031620">No harmful software found</translation> <translation id="8509177919508253835">Reset security keys and create PINs</translation> <translation id="8509646642152301857">Spell check dictionary download failed.</translation> +<translation id="8512396579636492893">{COUNT,plural, =0{No weak passwords found}=1{Found {COUNT} weak password}other{Found {COUNT} weak passwords}}</translation> <translation id="8512476990829870887">End Process</translation> <translation id="851263357009351303">Always allow <ph name="HOST" /> to show images</translation> <translation id="8513108775083588393">Auto-rotate</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index b6f2b1e3..1811bc0 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -867,6 +867,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" /> inhabilitó la depuración ADB. Este proceso restablecerá la <ph name="DEVICE_TYPE" /> dentro de 24 horas. Crea una copia de seguridad de los archivos que deseas conservar.</translation> <translation id="1977965994116744507">Acerca el teléfono para desbloquear tu <ph name="DEVICE_TYPE" />.</translation> <translation id="1978006917103730774">Se instalarán automáticamente las futuras versiones del software y las actualizaciones de seguridad.</translation> +<translation id="1978057560491495741">Quita la dirección</translation> <translation id="1979095679518582070">Aunque esta función esté desactivada, este dispositivo podrá enviar la información necesaria para los servicios esenciales, como seguridad y actualizaciones del sistema.</translation> <translation id="1979280758666859181">Estás por cambiar a un canal que tiene una versión anterior de <ph name="PRODUCT_NAME" />. El cambio de canal se aplicará cuando la versión del canal coincida con la versión que esté instalada en ese momento en tu dispositivo.</translation> <translation id="197989455406964291">KDC no es compatible con el tipo de encriptación</translation> @@ -1068,6 +1069,7 @@ <translation id="2224444042887712269">Esta configuración pertenece a <ph name="OWNER_EMAIL" />.</translation> <translation id="2224551243087462610">Editar nombre de carpeta</translation> <translation id="2225864335125757863">Para mantener tu cuenta segura, cambia estas contraseñas de inmediato:</translation> +<translation id="2226204716217107988">¿Deseas cambiar a un perfil diferente?</translation> <translation id="2226449515541314767">Se bloqueó este sitio para que no tenga el control total de los dispositivos MIDI</translation> <translation id="2226907662744526012">Desbloquear automáticamente cuando se ingresa el PIN</translation> <translation id="222704500187107962">Se quitará esta excepción automáticamente después de que salgas de la sesión de incógnito actual.</translation> @@ -1137,6 +1139,7 @@ <translation id="2307462900900812319">Configurar red</translation> <translation id="230927227160767054">Esta página quiere instalar un controlador de servicios.</translation> <translation id="2309620859903500144">Este sitio no tiene permiso para acceder a los sensores de movimiento y luz.</translation> +<translation id="2312219318583366810">URL de la página</translation> <translation id="2314165183524574721">Se estableció la configuración de visibilidad actual en Oculta</translation> <translation id="2314774579020744484">El idioma que se usa cuando se traducen páginas</translation> <translation id="2315414688463285945">Se produjo un error al configurar los archivos de Linux. Vuelve a intentarlo.</translation> @@ -2340,6 +2343,7 @@ <translation id="3713047097299026954">Esta llave de seguridad no tiene almacenados datos de acceso</translation> <translation id="3714195043138862580">Se estableció el estado de desaprovisionamiento para este dispositivo de demostración.</translation> <translation id="3714633008798122362">Calendario web</translation> +<translation id="3715954932774762075">Las apps y los sitios web que están disponibles en múltiples idiomas usarán el primer idioma compatible de esta lista. Estas preferencias están sincronizadas con la configuración de tu navegador. <ph name="BEGIN_LINK_LEARN_MORE" />Más información<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">Página principal</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">Tú y Google</translation> @@ -2500,6 +2504,7 @@ <translation id="3882165008614329320">Video existente de la cámara o archivo</translation> <translation id="3886446263141354045">Tu solicitud de acceso a este sitio se envió a <ph name="NAME" /></translation> <translation id="3888550877729210209">Tomar notas con <ph name="LOCK_SCREEN_APP_NAME" /></translation> +<translation id="3890064827463908288">Activa la Sincronización de Chrome para usar la Sincronización Wi-Fi</translation> <translation id="3892414795099177503">Agregar OpenVPN/L2TP…</translation> <translation id="3893536212201235195">Leer y cambiar la configuración de accesibilidad</translation> <translation id="3893630138897523026">ChromeVox (comentarios por voz)</translation> @@ -3771,6 +3776,7 @@ <translation id="5449588825071916739">Agregar a favoritos todas las pestañas</translation> <translation id="5449716055534515760">Cerrar ven&tana</translation> <translation id="5452974209916053028">Sesión actual en modo Incógnito: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">Se movió el cuadro de subtítulos <ph name="POSITION_ON_SCREEN_FROM_LEFT" />% horizontalmente y <ph name="POSITION_ON_SCREEN_FROM_TOP" />% verticalmente</translation> <translation id="5454166040603940656">con <ph name="PROVIDER" /></translation> <translation id="5457113250005438886">Sin validez</translation> <translation id="5457459357461771897">Leer y eliminar fotos, música y otro contenido multimedia desde tu computadora</translation> @@ -3914,6 +3920,7 @@ <translation id="5602765853043467355">Borrar favoritos, historial, contraseñas y otras opciones de configuración de este dispositivo</translation> <translation id="5605623530403479164">Otros motores de búsqueda</translation> <translation id="5605758115928394442">Se envió una notificación a tu teléfono para confirmar que eres tú</translation> +<translation id="560834977503641186">Sincronización Wi-Fi, Más información</translation> <translation id="5608580678041221894">Presionar las siguientes teclas para ajustar o mover el área recortada</translation> <translation id="5609231933459083978">Parece que la aplicación no es válida.</translation> <translation id="5610038042047936818">Cambiar al modo de cámara</translation> @@ -4104,6 +4111,7 @@ <translation id="5841270259333717135">Configurar Ethernet</translation> <translation id="5842497610951477805">Activación de Bluetooth</translation> <translation id="5843706793424741864">Fahrenheit</translation> +<translation id="584451707753263735">El Subtitulado instantáneo está visible; presiona F6 para cambiar el enfoque</translation> <translation id="5844574845205796324">Sugerir nuevo contenido para explorar</translation> <translation id="5846200638699387931">Error de sintaxis relacional: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">Instala actualizaciones y apps. Si continúas, aceptas que este dispositivo también descargue e instale automáticamente actualizaciones y apps de Google, tu proveedor y el fabricante del dispositivo usando datos móviles. Es posible que algunas de estas apps ofrezcan compras directas desde la aplicación.</translation> @@ -5358,6 +5366,7 @@ <translation id="7340431621085453413">Visualización de <ph name="FULLSCREEN_ORIGIN" /> en pantalla completa.</translation> <translation id="7340650977506865820">El sitio está compartiendo la pantalla</translation> <translation id="7341834142292923918">Requiere acceso a este sitio</translation> +<translation id="7343372807593926528">Describe el problema antes de enviar los comentarios.</translation> <translation id="7345706641791090287">Confirma tu contraseña</translation> <translation id="7346909386216857016">Entendido</translation> <translation id="7347452120014970266">Esta acción borrará todos los datos y cookies almacenados por <ph name="ORIGIN_NAME" /> y sus apps instaladas</translation> @@ -5774,6 +5783,7 @@ <translation id="7819857487979277519">PSK (WPA o RSN)</translation> <translation id="7819992334107904369">Sincronización de Chrome</translation> <translation id="782057141565633384">Copiar dirección del video</translation> +<translation id="7822187537422052256">¿Confirmas que deseas quitar esta dirección?</translation> <translation id="7824864914877854148">No se pudo completar la copia de seguridad debido a un error</translation> <translation id="7825666486843191125">Todos los contactos cerca de tu ubicación cuando tienes desbloqueada la pantalla</translation> <translation id="782590969421016895">Usar páginas actuales</translation> @@ -6300,6 +6310,7 @@ <translation id="8419098111404128271">Resultados de la búsqueda para "<ph name="SEARCH_TEXT" />"</translation> <translation id="8419368276599091549">Te damos la bienvenida a tu <ph name="DEVICE_TYPE" /></translation> <translation id="8420308167132684745">Editar entradas del diccionario</translation> +<translation id="8421361468937925547">Subtitulado instantáneo (solo en inglés)</translation> <translation id="8422787418163030046">Falta la bandeja</translation> <translation id="8425213833346101688">Cambiar</translation> <translation id="8425492902634685834">Asociar a la barra de tareas</translation> @@ -6328,6 +6339,7 @@ <translation id="8449036207308062757">Administrar almacenamiento</translation> <translation id="8452135315243592079">Falta la tarjeta SIM</translation> <translation id="8455026683977728932">No se pudo habilitar la ilustración de ADB</translation> +<translation id="8456398879271637452">El Subtitulado instantáneo está visible; presiona Ctrl + flecha hacia atrás o Ctrl + flecha hacia adelante para cambiar el enfoque</translation> <translation id="845702320058262034">No se puede establecer la conexión. Asegúrate de que la conexión Bluetooth del teléfono esté activada.</translation> <translation id="8457451314607652708">Importar favoritos</translation> <translation id="8458627787104127436">Abrir todo (<ph name="URL_COUNT" />) en una ventana nueva</translation> @@ -6838,6 +6850,7 @@ <translation id="9027459031423301635">Abrir vínculo en la pes&taña nueva</translation> <translation id="9030515284705930323">Tu organización no habilitó Google Play Store para tu cuenta. Comunícate con tu administrador para obtener más información.</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269">Ya no se admite <ph name="PLUGIN_NAME" /></translation> <translation id="9031549947500880805">Crea una copia de seguridad en Google Drive. Restaura tus datos o cambia de dispositivo en cualquier momento con facilidad. Se incluyen datos de apps.</translation> <translation id="9033765790910064284">Continuar de todos modos</translation> <translation id="9033857511263905942">&Pegar</translation> @@ -6846,6 +6859,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{Te queda un intento.}other{Te quedan # intentos.}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571">¿Quieres actualizar la contraseña para <ph name="ORIGIN" />?</translation> +<translation id="9041049756004505730">El Subtitulado instantáneo está visible; presiona ⌘ + Opción + flecha hacia arriba o abajo para cambiar el enfoque</translation> <translation id="9041692268811217999">Tu administrador bloqueó el acceso a los archivos locales en tu máquina</translation> <translation id="904224458472510106">Esta acción no se puede deshacer</translation> <translation id="9042893549633094279">Privacidad y seguridad</translation> @@ -6884,6 +6898,7 @@ <translation id="9088446193279799727">No se pudo configurar Linux. Conéctate a Internet y vuelve a intentarlo.</translation> <translation id="9088917181875854783">Confirma que esta clave de acceso se muestra en "<ph name="DEVICE_NAME" />":</translation> <translation id="9089416786594320554">Métodos de entrada</translation> +<translation id="909108997331068008">El perfil de <ph name="EXISTING_USER" /> ya accedió a <ph name="NEW_USER" /></translation> <translation id="9093429538970210897">Te recomendamos realizar una copia de seguridad de los archivos en caso de que la actualización no pueda completarse. Si inicias la actualización, se cerrará Linux (Beta). Antes de continuar guarda los archivos abiertos.</translation> <translation id="9094033019050270033">Actualizar contraseña</translation> <translation id="9094038138851891550">El nombre de usuario no es válido</translation> @@ -7057,5 +7072,6 @@ <translation id="994289308992179865">Bucle</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">Estableciendo una conexión segura...</translation> +<translation id="99731366405731005">Activa la <ph name="LINK1_BEGIN" />Sincronización de Chrome<ph name="LINK1_END" /> para usar la Sincronización Wi-Fi. <ph name="LINK2_BEGIN" />Más información<ph name="LINK2_END" /></translation> <translation id="998747458861718449">Inspeccionar</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 3b08d02..1e8f6378 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -2346,7 +2346,7 @@ <translation id="3713047097299026954">Esta llave de seguridad no contiene datos de inicio de sesión</translation> <translation id="3714195043138862580">Este dispositivo de demostración se ha situado en un estado de baja.</translation> <translation id="3714633008798122362">calendario web</translation> -<translation id="3715954932774762075">Los sitios web y aplicaciones que estén disponibles en varios idiomas usarán el primer idioma de esta lista (si es uno de los disponibles). Estas preferencias se sincronizan con los ajustes de tu navegador. <ph name="BEGIN_LINK_LEARN_MORE" />Más información<ph name="END_LINK_LEARN_MORE" /></translation> +<translation id="3715954932774762075">Los sitios web y aplicaciones que estén disponibles en varios idiomas usarán el primer idioma admitido de esta lista. Estas preferencias se sincronizan con los ajustes de tu navegador. <ph name="BEGIN_LINK_LEARN_MORE" />Más información<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">Página principal</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">Google y tú</translation> @@ -3778,7 +3778,7 @@ <translation id="5449588825071916739">Añadir todas las pestañas a marcadores...</translation> <translation id="5449716055534515760">Cerrar &ventana</translation> <translation id="5452974209916053028">Sesión de incógnito actual: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> -<translation id="5454005855577728171">El cuadro de subtítulos se ha movido un <ph name="POSITION_ON_SCREEN_FROM_LEFT" /> % hacia la derecha y un <ph name="POSITION_ON_SCREEN_FROM_TOP" /> % hacia abajo</translation> +<translation id="5454005855577728171">Se ha movido el cuadro de subtítulos un <ph name="POSITION_ON_SCREEN_FROM_LEFT" /> % hacia la derecha y un <ph name="POSITION_ON_SCREEN_FROM_TOP" /> % hacia abajo</translation> <translation id="5454166040603940656">con <ph name="PROVIDER" /></translation> <translation id="5457113250005438886">No válido</translation> <translation id="5457459357461771897">Leer y eliminar fotos, música y otros archivos multimedia de tu ordenador</translation> @@ -5785,7 +5785,7 @@ <translation id="7819857487979277519">PSK (WPA o RSN)</translation> <translation id="7819992334107904369">Sincronización de Chrome</translation> <translation id="782057141565633384">C&opiar dirección de vídeo</translation> -<translation id="7822187537422052256">¿Quieres quitar esta dirección?</translation> +<translation id="7822187537422052256">¿Seguro que quieres quitar esta dirección?</translation> <translation id="7824864914877854148">No se ha podido completar la copia de seguridad debido a un error</translation> <translation id="7825666486843191125">Todos los contactos que haya cerca de ti cuando tu pantalla esté desbloqueada</translation> <translation id="782590969421016895">Utilizar páginas actuales</translation> @@ -6900,7 +6900,7 @@ <translation id="9088446193279799727">No se ha podido configurar Linux. Conéctate a Internet y vuelve a intentarlo.</translation> <translation id="9088917181875854783">Confirma que esta clave de acceso aparezca en "<ph name="DEVICE_NAME" />":</translation> <translation id="9089416786594320554">Métodos de entrada</translation> -<translation id="909108997331068008">Ya se ha iniciado sesión con el perfil de <ph name="EXISTING_USER" /> usando <ph name="NEW_USER" /></translation> +<translation id="909108997331068008">El perfil de <ph name="EXISTING_USER" /> ya ha iniciado sesión con <ph name="NEW_USER" /></translation> <translation id="9093429538970210897">Se recomienda crear una copia de seguridad de los archivos por si no se pudiera completar la actualización. Al iniciar la actualización, se apagará Linux (beta). Antes de continuar, guarda los archivos que tengas abiertos.</translation> <translation id="9094033019050270033">Actualizar contraseña</translation> <translation id="9094038138851891550">El nombre de usuario no es válido</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index 3c2a332..4d818aa 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -277,6 +277,7 @@ <translation id="1313705515580255288">તમારા બુકમાર્ક, ઇતિહાસ અને બીજા સેટિંગ તમારા Google એકાઉન્ટ સાથે સિંક કરવામાં આવશે.</translation> <translation id="1314565355471455267">Android VPN</translation> <translation id="131461803491198646">હોમ નેટવર્ક, રોમિંગ નહીં</translation> +<translation id="1315056510003830387">ફ્લૅશનો ઉપયોગ કરવાની મંજૂરી નથી</translation> <translation id="1316136264406804862">શોધી રહ્યું છે ...</translation> <translation id="1316495628809031177">સિંક થોભાવ્યું છે</translation> <translation id="1317637799698924700">તમારું ડૉકિંગ સ્ટેશન USB Type-C સુસંગત મોડમાં ઑપરેટ થશે.</translation> @@ -335,6 +336,7 @@ <translation id="1386791642444521222">વાસ્તવિક સિમને સક્રિય કરો</translation> <translation id="1387519831959169718">તમારું બ્રાઉઝિંગ અલગ રાખવા માટે તમે <ph name="NEW_USER" /> માટે નવી પ્રોફાઇલ બનાવી શકો છો</translation> <translation id="138784436342154190">ડિફૉલ્ટ સ્ટાર્ટઅપ પૃષ્ઠને પુનઃસ્થાપિત કરીએ?</translation> +<translation id="1388253969141979417">તમારા માઇક્રોફોનનો ઉપયોગ કરવાની મંજૂરી છે</translation> <translation id="1388728792929436380">અપડેટ પૂર્ણ થશે ત્યારે તમારું <ph name="DEVICE_TYPE" /> ફરી શરૂ થશે.</translation> <translation id="1389342855416376185">સંરક્ષિત કન્ટેન્ટને બ્લૉક કરો</translation> <translation id="1390548061267426325">નિયમિત ટૅબ તરીકે ખોલો</translation> @@ -385,6 +387,7 @@ <translation id="1433811987160647649">ઍક્સેસ કરતાં પહેલાં પૂછો</translation> <translation id="1434696352799406980">આ તમારા સ્ટાર્ટઅપ પેજ, નવું ટેબ પેજ, શોધ એંજિન અને પિન કરેલ ટેબને રીસેટ કરશે. તે તમામ એક્સટેન્શનને પણ બંધ કરશે અને કુકી જેવો અસ્થાયી ડેટા પણ કાઢી નાંખશે. તમારા બુકમાર્ક, ઇતિહાસ અને સાચવેલાં પાસવર્ડ કાઢી નાંખવામાં આવશે નહિ.</translation> <translation id="1434886155212424586">હોમપેજ એ નવું ટેબ પૃષ્ઠ છે</translation> +<translation id="1435515966666225466">તમારા કમ્પ્યુટરને ઍક્સેસ કરવા માટે પ્લગ-ઇનનો ઉપયોગ કરવાની મંજૂરી છે</translation> <translation id="1436390408194692385"><ph name="TICKET_TIME_LEFT" /> માટે માન્ય</translation> <translation id="1436671784520050284">સેટઅપ ચાલુ રાખો</translation> <translation id="1436784010935106834">દૂર કરેલું</translation> @@ -468,6 +471,7 @@ <translation id="1530838837447122178">માઉસ અને ટચપેડ ઉપકરણ સેટિંગ્સ ખોલો</translation> <translation id="1531004739673299060">ઍપ્લિકેશન વિંડો</translation> <translation id="1531275250079031713">'નવું વાઇ-ફાઇ કનેક્શન ઉમેરો' સંવાદ બતાવો</translation> +<translation id="1535228823998016251">મોટો અવાજ</translation> <translation id="1536754031901697553">ડિસ્કનેક્ટ થઈ રહ્યું છે…</translation> <translation id="1537254971476575106">પૂર્ણસ્ક્રીન મૅગ્નિફાયર</translation> <translation id="15373452373711364">મોટું માઉસ કર્સર</translation> @@ -550,6 +554,7 @@ <translation id="1627408615528139100">પહેલેથી જ ડાઉનલોડ કરેલ છે</translation> <translation id="1628948239858170093">ખોલતા પહેલાં ફાઇલને સ્કૅન કરીએ?</translation> <translation id="1629314197035607094">પાસવર્ડની સમયસીમા સમાપ્ત થઈ</translation> +<translation id="163072119192489970">ડેટા મોકલવાનું અને પ્રાપ્ત કરવાનું સમાપ્ત કરવાની મંજૂરી છે</translation> <translation id="1630768113285622200">ફરી શરૂ કરો અને ચાલુ રાખો</translation> <translation id="1632082166874334883">પાસવર્ડને તમારા Google એકાઉન્ટમાં સ્ટોર કર્યો</translation> <translation id="1632803087685957583">તમને તમારા કીબોર્ડ પુનરાવર્તન દર, શબ્દ પૂર્વાનુમાન અને વધુને સમાયોજિત કરવાની મંજૂરી આપે છે</translation> @@ -747,6 +752,7 @@ <translation id="1841705068325380214"><ph name="EXTENSION_NAME" />ને અક્ષમ કરેલ છે</translation> <translation id="184273675144259287">તમારી Linux ઍપ અને ફાઇલોને બદલે પહેલાંનો બૅકઅપ મૂકો</translation> <translation id="1842766183094193446">શું તમે ખરેખર ડેમો મોડ ચાલુ કરવા માગો છો?</translation> +<translation id="1845727111305721124">સાઉન્ડ ચલાવવાની મંજૂરી છે</translation> <translation id="1846308012215045257"><ph name="PLUGIN_NAME" /> ચલાવવા માટે Control-ક્લિક કરો</translation> <translation id="1849186935225320012">આ પૃષ્ઠ પાસે MIDI ઉપકરણોનું સંપૂર્ણ નિયંત્રણ છે.</translation> <translation id="1850508293116537636">&ઘડિયાળની દિશામાં ફેરવો</translation> @@ -771,6 +777,7 @@ <translation id="187145082678092583">ઓછી ઍપ</translation> <translation id="1871534214638631766">તમે જ્યારે રાઇટ ક્લિક કરો અથવા કન્ટેન્ટને થોડીવાર દબાવી રાખો, ત્યારે સંબંધિત માહિતી બતાવો</translation> <translation id="1871615898038944731">તમારું <ph name="DEVICE_TYPE" /> અપ ટૂ ડેટ છે</translation> +<translation id="1874248162548993294">કોઈપણ જાહેરાતો બતાવવાની મંજૂરી છે</translation> <translation id="1874972853365565008">{NUM_TABS,plural, =1{ટૅબને બીજી વિંડોમાં ખસેડો}one{ટૅબને બીજી વિંડોમાં ખસેડો}other{ટૅબને બીજી વિંડોમાં ખસેડો}}</translation> <translation id="1875386316419689002">આ ટૅબ HID ડિવાઇસ સાથે કનેક્ટ કરેલું છે.</translation> <translation id="1875387611427697908">આ ફક્ત <ph name="CHROME_WEB_STORE" />માંથી જ ઉમેરી શકાશે</translation> @@ -826,6 +833,7 @@ <translation id="1931152874660185993">કોઈ ઘટકો ઇન્સ્ટોલ કર્યા નથી.</translation> <translation id="1932098463447129402">આની પહેલા નહીં</translation> <translation id="1933809209549026293">કૃપા કરીને માઉસ અથવા કીબોર્ડને કનેક્ટ કરો. જો તમે Bluetooth ડિવાઇસ વાપરી રહ્યા હો, તો તે જોડી માટે તૈયાર છે તેની ખાતરી કરો.</translation> +<translation id="1935303383381416800">તમારું સ્થાન જોવાની મંજૂરી છે</translation> <translation id="1936931585862840749">કેટલી કૉપિ પ્રિન્ટ કરવાની છે એ દર્શાવવા માટે સંખ્યાનો ઉપયોગ કરો (1 થી <ph name="MAX_COPIES" /> સુધીની).</translation> <translation id="1937774647013465102">આ ડિવાઇસ કે જે <ph name="ARCHITECTURE_DEVICE" /> છે તેના વડે <ph name="ARCHITECTURE_CONTAINER" /> પ્રકારના કન્ટેનર આર્કિટેક્ચરની આયાત કરી શકાતી નથી. તમે આ કન્ટેનરની જુદા ડિવાઇસમાં પુનઃસ્થાપના કરવાનો પ્રયાસ કરી શકો છો અથવા તમે આ કન્ટેનર છબીમાંની ફાઇલોને ફાઇલો ઍપમાં ખોલીને તેમને ઍક્સેસ કરી શકો છો.</translation> <translation id="1938351510777341717">બાહ્ય આદેશ</translation> @@ -858,6 +866,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" /> દ્વારા ADB ડિબગીંગ બંધ કરાયું છે. આમ કરવાથી 24 કલાકમાં તમારું <ph name="DEVICE_TYPE" /> રીસેટ થશે. તમે રાખવા માગતા હો તેવી કોઈપણ ફાઇલનું બૅકઅપ લો.</translation> <translation id="1977965994116744507">તમારા <ph name="DEVICE_TYPE" />ને અનલૉક કરવા તમારા ફોનને વધુ નજીક લાવો.</translation> <translation id="1978006917103730774">ભાવિ સૉફ્ટવેર અને સુરક્ષા અપડેટ ઑટોમૅટિક રીતે ઇન્સ્ટૉલ કરવામાં આવશે.</translation> +<translation id="1978057560491495741">સરનામું દૂર કરો</translation> <translation id="1979095679518582070">આ સુવિધાને બંધ કરવાથી સિસ્ટમ અપડેટ અને સુરક્ષા જેવી આવશ્યક સેવાઓ માટે આવશ્યક માહિતી મોકલવાની આ ડિવાઇસની ક્ષમતાને અસર થતી નથી.</translation> <translation id="1979280758666859181">તમે ચેનલને <ph name="PRODUCT_NAME" />ના જૂના વર્ઝન સાથે બદલી રહ્યા છો. જ્યારે ચેનલ વર્ઝન હાલમાં તમારા ડિવાઇસ પર ઇન્સ્ટૉલ કરેલા વર્ઝનથી મેળ ખાતું હોય ત્યારે ચેનલ ફેરફાર લાગુ થશે.</translation> <translation id="197989455406964291">KDCમાં એન્ક્રિપ્શન પ્રકારની સુવિધા નથી</translation> @@ -943,6 +952,7 @@ <translation id="2090165459409185032">તમારી એકાઉન્ટ માહિતી ફરીથી મેળવવા માટે, આના પર જાઓ: google.com/accounts/recovery</translation> <translation id="2090876986345970080">સિસ્ટમ સુરક્ષા સેટિંગ</translation> <translation id="2091887806945687916">ધ્વનિ</translation> +<translation id="209539936453343974">માતાપિતાના યોગ્ય નિયંત્રણોનું સેટઅપ કરવા માટે, બાળકનું એક એવું Google એકાઉન્ટ હોવું જરૂરી છે કે જેને માતાપિતા દ્વારા મેનેજ કરવામાં આવતું હોય. <ph name="DEVICE_TYPE_PLURAL" /> માતાપિતાને સ્ક્રીન મર્યાદાઓ સેટઅપ કરવાની, વેબસાઇટને મંજૂરી આપવા કે બ્લૉક કરવાની અને Family Link ઍપ સાથે વધુ કાર્યો કરવાની મંજૂરી આપે છે. જો બાળકને Google Classroom જેવી સાઇટ પર શાળાનો અભ્યાસ કરવાની જરૂર પડતી હોય, તો શાળાના એકાઉન્ટને પછીથી ઉમેરી શકાશે.</translation> <translation id="2096715839409389970">ત્રીજા પક્ષની કુકીને સાફ કરો</translation> <translation id="2097372108957554726">નવા ડિવાઇસને નોંધવા માટે તમારે Chromeમાં સાઇન ઇન કરવાની જરૂર છે</translation> <translation id="2098805196501063469">બાકીના પાસવર્ડ ચેક કરો</translation> @@ -1058,6 +1068,7 @@ <translation id="2224444042887712269">આ સેટિંગ <ph name="OWNER_EMAIL" /> ની છે.</translation> <translation id="2224551243087462610">ફોલ્ડરના નામમાં ફેરફાર કરો</translation> <translation id="2225864335125757863">તમારા એકાઉન્ટને સુરક્ષિત રાખવા માટે, આ પાસવર્ડ તાત્કાલિક બદલો:</translation> +<translation id="2226204716217107988">અન્ય પ્રોફાઇલ પર સ્વિચ કરીએ?</translation> <translation id="2226449515541314767">આ સાઇટને MIDI ઉપકરણોના સંપૂર્ણ નિયંત્રણ કરવાથી અવરોધિત કરવામાં આવી છે.</translation> <translation id="2226907662744526012">એકવાર પિન દાખલ કર્યા પછી ઑટોમૅટિક રીતે અનલૉક કરો</translation> <translation id="222704500187107962">તમે હાલના છૂપા સત્રમાંથી બહાર નીકળો, તે પછી આ અપવાદને ઑટોમૅટિક રીતે કાઢી નાખવામાં આવશે</translation> @@ -1092,6 +1103,7 @@ <translation id="2261323523305321874">તમારા વ્યવસ્થાપકે સિસ્ટમ વ્યાપી ફેરફાર કર્યો છે જે અમુક જૂની પ્રોફાઇલને બંધ કરે છે.</translation> <translation id="2262332168014443534">લાઇટ મોડ, HTTPS સહિત બધા પેજ પર બ્રાઉઝ કરવાનું વધુ ઝડપી બનાવે છે.</translation> <translation id="2262477216570151239">પુનરાવર્તન પહેલાં વિલંબ</translation> +<translation id="2262888617381992508">સંરક્ષિત કન્ટેન્ટ ચલાવવાની મંજૂરી નથી</translation> <translation id="2263189956353037928">સાઇન આઉટ કરો અને પાછા સાઇન ઇન કરો</translation> <translation id="2263371730707937087">સ્ક્રીનનો રિફ્રેશ થવાનો રેટ</translation> <translation id="22665427234727190">જ્યારે કોઈ સાઇટ બ્લૂટૂથ ડિવાઇસને ઍક્સેસ કરવા માગે ત્યારે પૂછો (સુઝાવ આપીએ છીએ)</translation> @@ -1126,6 +1138,7 @@ <translation id="2307462900900812319">નેટવર્ક ગોઠવો</translation> <translation id="230927227160767054">આ પૃષ્ઠ સેવા હેન્ડલર ઇન્સ્ટોલ કરવા માગે છે.</translation> <translation id="2309620859903500144">આ સાઇટને તમારા મોશન અથવા લાઇટ સેન્સરને ઍક્સેસ કરવાથી બ્લૉક કરવામાં આવી છે.</translation> +<translation id="2312219318583366810">પેજનું URL</translation> <translation id="2314165183524574721">હાલના સેટિંગ અનુસાર કોઈ જોઈ શકતું નથી</translation> <translation id="2314774579020744484">પેજનો અનુવાદ કરતી વખતે ઉપયોગમાં લેવાયેલી ભાષા</translation> <translation id="2315414688463285945">Linux ફાઇલોની ગોઠવણ કરવામાં ભૂલ. કૃપા કરીને ફરીથી પ્રયાસ કરો.</translation> @@ -1360,6 +1373,7 @@ <translation id="2571655996835834626">તમારી તે સેટિંગને બદલો કે જે કૂકી, JavaScript, પ્લગ-ઇન, ભૌગોલિક સ્થાન, માઇક્રોફોન, કૅમેરા, વગેરે જેવી સુવિધાઓની વેબસાઇટના ઍક્સેસને નિયંત્રિત કરે છે</translation> <translation id="2572032849266859634"><ph name="VOLUME_NAME" /> ને માત્ર વાંચવાની ઍક્સેસ મંજૂર કરવામાં આવી છે.</translation> <translation id="2575247648642144396">જ્યારે એક્સ્ટેંશન વર્તમાન પૃષ્ઠ પર કાર્ય કરી શકે ત્યારે આ આયકન દૃશ્યક્ષમ હશે. આયકન પર ક્લિક કરીને અથવા <ph name="EXTENSION_SHORTCUT" /> દબાવીને આ એક્સ્ટેંશનનો ઉપયોગ કરો.</translation> +<translation id="2575441894380764255">ઘૃણાસ્પદ અથવા ભ્રામક જાહેરાતો બતાવવાની મંજૂરી નથી</translation> <translation id="257779572837908839">મીટિંગ માટે Chromebox તરીકે સેટ કરો</translation> <translation id="2579232805407578790">સર્વર સાથે કનેક્ટ કરી શકાયું નથી. કૃપા કરીને તમારું નેટવર્ક કનેક્શન ચેક કરો અને ફરી પ્રયાસ કરો. જો સમસ્યા ચાલુ રહે, તો તમારી Chromebook ફરી શરૂ કરો. ભૂલનો કોડ: <ph name="ERROR_CODE" />.</translation> <translation id="2580889980133367162">બહુવિધ ફાઇલો ડાઉનલોડ કરવા માટે હંમેશા <ph name="HOST" /> ને મંજૂરી આપો</translation> @@ -1626,6 +1640,7 @@ <translation id="2880660355386638022">વિંડોનું સ્થાન નિયોજન</translation> <translation id="2881076733170862447">તમે એક્સ્ટેંશનને ક્લિક કરો ત્યારે</translation> <translation id="2882943222317434580"><ph name="IDS_SHORT_PRODUCT_NAME" /> પુનઃપ્રારંભ થશે અને પળવારમાં ફરીથી સેટ થશે</translation> +<translation id="288387288628762616">ફ્લૅશનો ઉપયોગ કરવાની મંજૂરી છે</translation> <translation id="2885378588091291677">કાર્ય વ્યવસ્થાપક</translation> <translation id="2885729872133513017">સર્વરના પ્રતિસાદને ડીકોડ કરતી વખતે સમસ્યા આવી.</translation> <translation id="2886771036282400576">• <ph name="PERMISSION" /></translation> @@ -1660,6 +1675,7 @@ <translation id="2923234477033317484">આ એકાઉન્ટ કાઢી નાખો</translation> <translation id="2926085873880284723">ડિફૉલ્ટ શૉર્ટક્ટ ફરી મેળવો</translation> <translation id="2927017729816812676">કૅશ મેમરી સ્ટોરેજ</translation> +<translation id="2928795416630981206">તમારા કૅમેરાની સ્થિતિને ટ્રૅક કરવાની મંજૂરી છે</translation> <translation id="2931157624143513983">પ્રિન્ટ કરી શકાય એટલી જગ્યામાં બંધબેસતું કરો</translation> <translation id="2932085390869194046">પાસવર્ડ સૂચવો...</translation> <translation id="2932330436172705843"><ph name="PROFILE_DISPLAY_NAME" /> (બાળકો માટેનું એકાઉન્ટ)</translation> @@ -1667,6 +1683,7 @@ <translation id="2932883381142163287">દુરુપયોગ જણાવો</translation> <translation id="2933632078076743449">છેલ્લે અપડેટ</translation> <translation id="2934999512438267372">MIDI ડિવાઇસનું સંપૂર્ણ નિયંત્રણ મંજૂર કરવામાં આવ્યું</translation> +<translation id="2935654492420446828">પછીથી સ્કૂલનું એકાઉન્ટ ઉમેરો</translation> <translation id="2936851848721175671">બૅકઅપ અને પુનઃસ્થાપના</translation> <translation id="2938225289965773019"><ph name="PROTOCOL" /> લિંક્સ ખોલો</translation> <translation id="2938845886082362843">તમારી સિક્યુરિટી કીમાં સ્ટોર કરવામાં આવેલો સાઇન-ઇન ડેટા જુઓ અને ડિલીટ કરો</translation> @@ -1770,6 +1787,7 @@ <translation id="3060379269883947824">સાંભળવા માટે પસંદ કરોને ચાલુ કરો</translation> <translation id="3060952009917586498">ડિવાઇસની ભાષા બદલો. હાલની ભાષા <ph name="LANGUAGE" /> છે.</translation> <translation id="3065041951436100775">ટેબ ફરજિયાત બંધ કરવાનો પ્રતિસાદ.</translation> +<translation id="306535478112428611">તમારા ડિવાઇસમાંની ફાઇલોમાં અને ફોલ્ડરોમાં ફેરફાર કરવાની મંજૂરી નથી</translation> <translation id="3065522099314259755">કીબોર્ડ પુનરાવર્તનની વિલંબતા</translation> <translation id="3067198179881736288">ઍપ ઇન્સ્ટૉલ કરીએ?</translation> <translation id="3067198360141518313">આ પ્લગિન ચલાવો</translation> @@ -1905,6 +1923,7 @@ <translation id="324849028894344899"><ph name="WINDOW_TITLE" /> - નેટવર્ક ભૂલ</translation> <translation id="3248902735035392926">સલામતી મહત્ત્વપૂર્ણ છે. થોડી ક્ષણ ફાળવીને <ph name="BEGIN_LINK" />હમણાં જ તમારા એક્સ્ટેંશન ચેક કરો<ph name="END_LINK" /></translation> <translation id="3251759466064201842"><પ્રમાણપત્રનો ભાગ નથી></translation> +<translation id="325238099842880997">બાળકોના ચલાવવા, શોધખોળ કરવા અને ઘરે શાળાનો અભ્યાસ કરવા માટેના મૂળભૂત ડિજિટલ નિયમો સેટ કરો</translation> <translation id="3253225298092156258">ઉપલબ્ધ નથી</translation> <translation id="3253448572569133955">અજાણ એકાઉન્ટ</translation> <translation id="3254084468305910013">{COUNT,plural, =0{સુરક્ષા સંબંધિત કોઈ સમસ્યા મળી નથી}=1{સુરક્ષા સંબંધિત {COUNT} સમસ્યા મળી છે}one{સુરક્ષા સંબંધિત {COUNT} સમસ્યા મળી છે}other{સુરક્ષા સંબંધિત {COUNT} સમસ્યા મળી છે}}</translation> @@ -2032,6 +2051,7 @@ <translation id="3404249063913988450">સ્ક્રીન સેવર ચાલુ કરો</translation> <translation id="3405664148539009465">ફોન્ટ્સ કસ્ટમાઇઝ કરો </translation> <translation id="3405763860805964263">...</translation> +<translation id="3406290648907941085">વર્ચ્યુઅલ રિયાલિટી ડિવાઇસ અને ડેટાનો ઉપયોગ કરવાની મંજૂરી છે</translation> <translation id="3406396172897554194">ભાષા કે ઇનપુટના નામ મુજબ શોધો</translation> <translation id="3406605057700382950">બુકમાર્ક્સ બાર &બતાવો</translation> <translation id="340671561090997290">{NUM_EXTENSIONS,plural, =1{આ એક્સ્ટેન્શન જોખમકારક હોઈ શકે છે}one{આ એક્સ્ટેન્શન જોખમકારક હોઈ શકે છે}other{આ એક્સ્ટેન્શન જોખમકારક હોઈ શકે છે}}</translation> @@ -2196,6 +2216,7 @@ <translation id="3586806079541226322">આ ફાઇલ ખોલી શકાતી નથી</translation> <translation id="3586931643579894722">વિગતો છુપાવો</translation> <translation id="3587482841069643663">બધા</translation> +<translation id="3588790464166520201">ચુકવણી હૅન્ડલર ઇન્સ્ટૉલ કરવાની મંજૂરી છે</translation> <translation id="3589766037099229847">અસુરક્ષિત કન્ટેન્ટ બ્લૉક</translation> <translation id="3590194807845837023">પ્રોફાઇલ અનલૉક કરો અને ફરીથી લોંચ કરો</translation> <translation id="3590295622232282437">મેનેજ કરાયેલ સત્રમાં દાખલ થઈ રહ્યા છીએ.</translation> @@ -2321,6 +2342,7 @@ <translation id="3713047097299026954">આ સુરક્ષા કીમાં કોઈ સાઇન ઇન ડેટા સ્ટોર કરેલો નથી</translation> <translation id="3714195043138862580">આ ડેમો મોડ જોગવાઈ દૂર કરી સ્થિતિમાં મૂકવામાં આવી છે.</translation> <translation id="3714633008798122362">વેબ કેલેન્ડર</translation> +<translation id="3715954932774762075">એકથી વધારે ભાષાઓમાં ઉપલબ્ધ ઍપ અને વેબસાઇટ આ સૂચિમાંની પહેલી સપોર્ટેડ ભાષાનો ઉપયોગ કરશે. આ પસંદગીઓને તમારા બ્રાઉઝર સેટિંગ સાથે સિંક કરવામાં આવે છે. <ph name="BEGIN_LINK_LEARN_MORE" />વધુ જાણો<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">હોમપેજ</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">તમે અને Google</translation> @@ -2421,6 +2443,7 @@ <translation id="3822559385185038546">આ પ્રૉક્સી તમારા એડમિન દ્વારા લાગુ કરવામાં આવે છે</translation> <translation id="3823310065043511710">Linux માટે ઓછામાં ઓછી <ph name="INSTALL_SIZE" /> ખાલી સ્પેસનો સુઝાવ આપવામાં આવે છે.</translation> <translation id="3824621460022590830">ડિવાઇસની નોંધણી માટેનું ટોકન અમાન્ય છે. કૃપા કરીને તમારા ડિવાઇસના માલિક અથવા વ્યવસ્થાપકનો સંપર્ક કરો. ભૂલનો કોડ: <ph name="ERROR_CODE" />.</translation> +<translation id="3826071569074535339">મોશન સેન્સરનો ઉપયોગ કરવાની મંજૂરી છે</translation> <translation id="3826440694796503677">તમારા વ્યવસ્થાપકે Googleના વધુ એકાઉન્ટ ઉમેરવાની ક્ષમતા બંધ કરી છે</translation> <translation id="3827306204503227641">અનસેન્ડબૉક્સ્ડ પ્લગિન્સને મંજૂરી આપવાનું ચાલુ રાખો</translation> <translation id="3827774300009121996">&પૂર્ણ સ્ક્રીન</translation> @@ -2473,11 +2496,14 @@ <translation id="3873423927483480833">પિન બતાવો</translation> <translation id="3873915545594852654">ARC++માં સમસ્યા આવી.</translation> <translation id="3874164307099183178">Google Assistant ચાલુ કરો</translation> +<translation id="3877075909000773256"><ph name="USER_NAME" />ના ડિવાઇસ માટે નજીકના શેર સેટિંગ, <ph name="USER_EMAIL" /> એકાઉન્ટ હેઠળ શેર કરવામાં આવી રહ્યાં છે.</translation> +<translation id="387771067039689031">તમારા કમ્પ્યુટરને ઍક્સેસ કરવા માટે પ્લગ-ઇનનો ઉપયોગ કરવાની મંજૂરી નથી</translation> <translation id="3879748587602334249">ડાઉનલોડ મેનેજર</translation> <translation id="3881478300875776315">ઓછી પંક્તિઓ બતાવો</translation> <translation id="3882165008614329320">કૅમેરા અથવા ફાઇલમાંથી અસ્તિત્વમાં છે તે વીડિયો</translation> <translation id="3886446263141354045">આ સાઇટને ઍક્સેસ કરવાની તમારી વિનંતી <ph name="NAME" /> ને મોકલવામાં આવી છે</translation> <translation id="3888550877729210209"><ph name="LOCK_SCREEN_APP_NAME" /> વડે નોંધ લેવી</translation> +<translation id="3890064827463908288">વાઇ-ફાઇ સિંકનો ઉપયોગ કરવા માટે 'Chrome સિંક' ચાલુ કરો</translation> <translation id="3892414795099177503">OpenVPN / L2TP ઉમેરો...</translation> <translation id="3893536212201235195">તમારી ઍક્સેસિબિલિટી સેટિંગ્સને વાંચો અને બદલો</translation> <translation id="3893630138897523026">ChromeVox (બોલાયેલ પ્રતિસાદ)</translation> @@ -2509,6 +2535,7 @@ <translation id="3919145445993746351">તમારા બધા કમ્પ્યુટર પર તમારા એક્સ્ટેંશન મેળવવા માટે સિંક કરવાનું ચાલુ કરો</translation> <translation id="3920504717067627103">પ્રમાણપત્ર નીતિઓ</translation> <translation id="392089482157167418">ChromeVox ચાલુ કરો (બોલાયેલો પ્રતિસાદ)</translation> +<translation id="3920909973552939961">ચુકવણી હૅન્ડલર ઇન્સ્ટૉલ કરવાની મંજૂરી નથી</translation> <translation id="3923184630988645767">ડેટા વપરાશ</translation> <translation id="3923676227229836009">આ પેજ ફાઇલોમાં જોવાની મંજૂરી ધરાવે છે</translation> <translation id="3924145049010392604">Meta</translation> @@ -2633,6 +2660,7 @@ <translation id="4058793769387728514">હવે દસ્તાવેજ તપાસો</translation> <translation id="406070391919917862">પૃષ્ઠભૂમિ ઍપ્લિકેશનો</translation> <translation id="4061374428807229313">શેર કરવા માટે, Files ઍપમાં કોઈ ફોલ્ડર પર રાઇટ-ક્લિક કરો, પછી "Parallels ડેસ્કટૉપ સાથે શેર કરો" પસંદ કરો.</translation> +<translation id="406213378265872299">કસ્ટમાઇઝ કરેલી વર્તણૂકો</translation> <translation id="4065876735068446555">તમે ઉપયોગમાં લઈ રહ્યાં છો તે નેટવર્ક (<ph name="NETWORK_ID" />) માટે, તમારે તેના લોગિન પૃષ્ઠની મુલાકાત લેવાની જરૂર હોઈ શકે છે.</translation> <translation id="4066207411788646768">તમારા નેટવર્કમાં ઉપલબ્ધ હોય એવા પ્રિન્ટર જોવા માટે, કૃપા કરીને તમારું નેટવર્ક ચેક કરો</translation> <translation id="4068776064906523561">સાચવેલ ફિંગરપ્રિન્ટ</translation> @@ -2779,6 +2807,7 @@ <translation id="425573743389990240">બેટરી ડિસ્ચાર્જ દર વોટ્સમાં (ઋણ મૂલ્યનો અર્થ છે બેટરી ચાર્જ થઈ રહી છે)</translation> <translation id="4256316378292851214">વીડિયોને આ રૂપે સા&ચવો...</translation> <translation id="4258348331913189841">ફાઇલ સિસ્ટમ્સ</translation> +<translation id="4259388776256904261">આમાં થોડો સમય લાગી શકે છે</translation> <translation id="4260182282978351200"><ph name="FILE_NAME" /> જોખમકારક હોઈ શકે છે. સ્કૅન કરવા માટે Googleની વિગતવાર સુરક્ષાને મોકલીએ? ડાઉનલોડ બાર વિભાગમાં પહોંચવા માટે Shift+F6 દબાવો.</translation> <translation id="4263223596040212967">તમારા કીબોર્ડનું લેઆઉટ ચેક કરો અને ફરી પ્રયાસ કરો.</translation> <translation id="4263757076580287579">પ્રિન્ટર નોંધણી રદ કરવામાં આવી છે.</translation> @@ -2930,6 +2959,7 @@ <translation id="4450974146388585462">તપાસ કરો</translation> <translation id="4451479197788154834">તમારો પાસવર્ડ આ ડિવાઇસ પર અને તમારા Google એકાઉન્ટમાં સચવાયો.</translation> <translation id="4451757071857432900">ઘૃણાસ્પદ અથવા ભ્રામક જાહેરાતો બતાવતી સાઇટ પર બ્લૉક કરેલ છે (ભલામણ કરેલ)</translation> +<translation id="4453205916657964690">સબનેટ માસ્ક</translation> <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> શોધો અથવા URL ટાઇપ કરો</translation> <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> દિવસ પહેલાં સક્રિય</translation> <translation id="4460014764210899310">અલગ થયેલું ગ્રૂપ</translation> @@ -2957,6 +2987,7 @@ <translation id="4481530544597605423">જોડીથી અલગ કરેલા ઉપકરણો</translation> <translation id="4483049906298469269">નૉન-ડિફૉલ્ટ નેટવર્ક ગેટવેને પિંગ કરવામાં નિષ્ફળ રહ્યાં</translation> <translation id="4487489714832036847">Chromebooksમાં પરંપરાગત સૉફ્ટવેરને બદલે ઍપનો ઉપયોગ કરવામાં આવે છે. ઉત્પાદકતા, મનોરંજન અને બીજા ઘણા માટે ઍપ મેળવો.</translation> +<translation id="4488257340342212116">તમારા કૅમેરાનો ઉપયોગ કરવાની મંજૂરી છે</translation> <translation id="4488502501195719518">બધો ડેટા સાફ કરીએ?</translation> <translation id="449232563137139956">ઑનલાઇન સ્ટોર કે નવા લેખ માટે ફોટા આપવા જેવા મુદ્દાઓ માટે ચિત્ર આપવા માટે, સાઇટ સામાન્ય રીતે છબીઓ બતાવે છે</translation> <translation id="4493468155686877504">સુઝાવ આપેલું (<ph name="INSTALL_SIZE" />)</translation> @@ -2989,6 +3020,7 @@ <translation id="4524832533047962394">પૂરો પાડેલો નોંધણી મોડ ઑપરેટિંગ સિસ્ટમનાં આ વર્ઝન દ્વારા સમર્થિત નથી. કૃપા કરીને ખાતરી કરો કે તમે એકદમ નવું વર્ઝન ચલાવી રહ્યાં છો અને ફરી પ્રયાસ કરો.</translation> <translation id="4527186207340858212">ઑફિસ માટે નવી પ્રોફાઇલ બનાવવી છે?</translation> <translation id="452750746583162491">તમારા સિંક કરેલા ડેટાનો રિવ્યૂ કરો</translation> +<translation id="4527929807707405172">રિવર્સ સ્ક્રોલિંગ ચાલુ કરો. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation> <translation id="4528494169189661126">સૂચિત અનુવાદ</translation> <translation id="4530494379350999373">મૂળ</translation> <translation id="4531924570968473143">આ <ph name="DEVICE_TYPE" /> પર કોને ઉમેરવાનું પસંદ કરશો?</translation> @@ -3009,6 +3041,7 @@ <translation id="4545028762441890696">તેને ફરીથી ચાલુ કરવા માટે, આના તરફથી નવી પરવાનગીઓ સ્વીકારો:</translation> <translation id="4545759655004063573">અપૂરતી પરવાનગીઓને કારણે સાચવી શકાતું નથી. કૃપા કરીને બીજી જગ્યાએ સાચવો.</translation> <translation id="4546308221697447294">Google Chrome વડે ઝડપથી બ્રાઉઝ કરો</translation> +<translation id="4546345569117159016">જમણું બટન</translation> <translation id="4546692474302123343">Google Assistant વૉઇસ ઇનપુટ</translation> <translation id="4547659257713117923">અન્ય ડિવાઇસમાંથી કોઈ ટેબ નથી</translation> <translation id="4547672827276975204">આપમેળે સેટ કરો</translation> @@ -3068,6 +3101,7 @@ <translation id="4608500690299898628">&શોધો...</translation> <translation id="4608520674724523647">સફળ નોંધણીનું ચિત્ર</translation> <translation id="4608703838363792434"><ph name="FILE_NAME" />માં સંવેદનશીલ કન્ટેન્ટ છે</translation> +<translation id="4609987916561367134">Javascriptનો ઉપયોગ કરવાની મંજૂરી આપી છે</translation> <translation id="4610162781778310380"><ph name="PLUGIN_NAME" />માં એક ભૂલ આવી છે</translation> <translation id="4610637590575890427">શું તમારી ઈચ્છા <ph name="SITE" /> પર જવાની હતી?</translation> <translation id="4611114513649582138">ડેટા કનેક્શન ઉપલબ્ધ</translation> @@ -3179,6 +3213,7 @@ <translation id="473775607612524610">અપડેટ કરો</translation> <translation id="473936925429402449">પસંદ કરેલા, <ph name="TOTAL_ELEMENTS" />માંથી વધારાના <ph name="CURRENT_ELEMENT" /> કન્ટેન્ટ</translation> <translation id="4739639199548674512">ટિકિટ</translation> +<translation id="4742334355511750246">છબીઓ બતાવવાની મંજૂરી નથી</translation> <translation id="4743260470722568160"><ph name="BEGIN_LINK" />ઍપ્લિકેશનો કેવી રીતે અપલોડ કરવી તે જાણો<ph name="END_LINK" /></translation> <translation id="4744981231093950366">{NUM_TABS,plural, =1{સાઇટને અનમ્યૂટ કરો}one{સાઇટને અનમ્યૂટ કરો}other{સાઇટને અનમ્યૂટ કરો}}</translation> <translation id="4746351372139058112">Messages</translation> @@ -3314,6 +3349,7 @@ <translation id="4908811072292128752">બે સાઇટ એકસાથે બ્રાઉઝ કરવા માટે એક નવી ટૅબ ખોલો</translation> <translation id="4909038193460299775">આ એકાઉન્ટ <ph name="DOMAIN" /> દ્વારા મેનેજ કરવામાં આવી રહ્યું હોવાથી, આ ડિવાઇસ પરથી તમારા બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને બીજા સેટિંગ સાફ કરવામાં આવશે. જો કે, તમારો ડેટા તમારા Google એકાઉન્ટમાં સ્ટોર રહેશે અને <ph name="BEGIN_LINK" />Google ડૅશબોર્ડ<ph name="END_LINK" /> પર મેનેજ કરવામાં આવી શકે છે.</translation> <translation id="4912643508233590958">નિષ્ક્રિય વેકઅપ્સ</translation> +<translation id="4915961947098019832">છબીઓ બતાવવાની મંજૂરી છે</translation> <translation id="4916542008280060967">સાઇટને <ph name="FILE_NAME" />માં ફેરફાર કરવાની મંજૂરી આપીએ?</translation> <translation id="491691592645955587">એક સુરક્ષિત બ્રાઉઝર પર સ્વિચ કરો</translation> <translation id="4917385247580444890">સશક્ત</translation> @@ -3401,6 +3437,7 @@ <translation id="5027550639139316293">ઇમેઇલ પ્રમાણપત્ર</translation> <translation id="5027562294707732951">એક્સ્ટેન્શન ઉમેરો</translation> <translation id="5029568752722684782">કૉપિ સાફ કરો</translation> +<translation id="5033137252639132982">મોશન સેન્સરનો ઉપયોગ કરવાની મંજૂરી નથી</translation> <translation id="5033266061063942743">ભૌમિતિક આકાર</translation> <translation id="5036662165765606524">કોઈપણ સાઇટને આપમેળે બહુવિધ ફાઇલો ડાઉનલોડ કરવાની મંજૂરી આપશો નહીં</translation> <translation id="5037676449506322593">બધા પસંદ કરો</translation> @@ -3450,6 +3487,7 @@ <translation id="5088172560898466307">સર્વર હોસ્ટનું નામ</translation> <translation id="5088534251099454936">RSA એન્ક્રિપ્શનવાળું PKCS #1 SHA-512</translation> <translation id="5089810972385038852">રાજ્ય</translation> +<translation id="5090637338841444533">તમારા કૅમેરાની સ્થિતિ ટ્રૅક કરવાની મંજૂરી નથી</translation> <translation id="5094721898978802975">સહયોગ કરતી મૂળ ઍપ્લિકેશન સાથે સંચાર કરો</translation> <translation id="5097002363526479830">નેટવર્ક '<ph name="NAME" />' થી કનેક્ટ કરવામાં નિષ્ફળ: <ph name="DETAILS" /></translation> <translation id="5097649414558628673">સાધન: <ph name="PRINT_NAME" /></translation> @@ -3737,6 +3775,7 @@ <translation id="5449588825071916739">તમામ ટૅબ્સ બુકમાર્ક કરો</translation> <translation id="5449716055534515760">Close Win&dow</translation> <translation id="5452974209916053028">વર્તમાન છૂપું સત્ર: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">કૅપ્શન બબલને આડું <ph name="POSITION_ON_SCREEN_FROM_LEFT" />% પર અને નીચે <ph name="POSITION_ON_SCREEN_FROM_TOP" />% પર ખસેડવામાં આવ્યું</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> સાથે</translation> <translation id="5457113250005438886">અમાન્ય</translation> <translation id="5457459357461771897">વાંચો અને તમારા કમ્પ્યુટરમાંથી ફોટો, મ્યુઝિક અને બીજું મીડિયા ડિલીટ કરો</translation> @@ -3758,6 +3797,7 @@ <translation id="5471768120198416576">કેમ છો! હું તમારો ટેક્સ્ટ-ટુ-સ્પીચ વૉઇસ છું.</translation> <translation id="5472627187093107397">આ સાઇટ માટેનો પાસવર્ડ સાચવો</translation> <translation id="5473333559083690127">નવો PIN ફરીથી દાખલ કરો</translation> +<translation id="5481273127572794904">એકથી વધારે ફાઇલો ઑટોમૅટિક રીતે ડાઉનલોડ કરવાની મંજૂરી નથી</translation> <translation id="5481941284378890518">નજીકના પ્રિન્ટર્સ ઉમેરો</translation> <translation id="5483785310822538350">ફાઇલ અને ઉપકરણ ઍક્સેસને રદબાતલ કરો</translation> <translation id="5485080380723335835">તમારું <ph name="DEVICE_TYPE" /> સુરક્ષા માટે લૉક કરેલ છે. ચાલુ રાખવા માટે તમારો પાસવર્ડ જાતે દાખલ કરો.</translation> @@ -3779,6 +3819,7 @@ <translation id="5495466433285976480">આ તમારા આગલાં પુનઃપ્રારંભ પછી બધા સ્થાનિક વપરાશકર્તાઓ, ફાઇલો, ડેટા અને અન્ય સેટિંગ્સને દૂર કરશે. બધા વપરાશકર્તાઓને ફરી સાઇન ઇન કરવાની જરૂર પડશે.</translation> <translation id="5495597166260341369">ડિસ્પ્લે ચાલુ રાખે છે</translation> <translation id="5496587651328244253">ગોઠવો</translation> +<translation id="5496730470963166430">પૉપ-અપ મોકલવા અથવા રીડાયરેક્ટનો ઉપયોગ કરવાની મંજૂરી નથી</translation> <translation id="5497251278400702716">આ ફાઇલ</translation> <translation id="5498967291577176373">તમારા નામ, સરનામા કે ફોન નંબર માટેના ઇનલાઇન સૂચનો વડે વધુ ઝડપથી ટાઇપ કરો</translation> <translation id="5499313591153584299">આ ફાઇલ તમારા કમ્પ્યુટર માટે હાનિકારક હોઇ શકે છે.</translation> @@ -3786,6 +3827,7 @@ <translation id="5500709606820808700">સલામતી માટે તપાસ આજે કરવામાં આવી</translation> <translation id="5501809658163361512">{COUNT,plural, =1{<ph name="DEVICE_NAME" />માંથી <ph name="ATTACHMENTS" /> મેળવવામાં નિષ્ફળ રહ્યાં}one{<ph name="DEVICE_NAME" />માંથી <ph name="ATTACHMENTS" /> મેળવવામાં નિષ્ફળ રહ્યાં}other{<ph name="DEVICE_NAME" />માંથી <ph name="ATTACHMENTS" /> મેળવવામાં નિષ્ફળ રહ્યાં}}</translation> <translation id="5502500733115278303">Firefox પરથી આયાત કરેલું</translation> +<translation id="5502915260472117187">બાળક માટે</translation> <translation id="5503982651688210506"><ph name="HOST" />ને તમારા કૅમેરાનો ઉપયોગ કરવાની અને તેને ખસેડવાની સાથે તમારા માઇક્રોફોનનો ઉપયોગ કરવાની મંજૂરી આપવાનું ચાલુ રાખો</translation> <translation id="5505264765875738116">સાઇટ તમને નોટિફિકેશન મોકલવા માટે પૂછી શકશે નહીં</translation> <translation id="5505307013568720083">શાહી ખલાસ થઇ ગઇ છે</translation> @@ -3873,9 +3915,11 @@ <translation id="5596627076506792578">વધુ વિકલ્પો</translation> <translation id="5600706100022181951">અપડેટ ડાઉનલોડ કરવામાં <ph name="UPDATE_SIZE_MB" /> MB મોબાઇલ ડેટા વપરાશે. શું તમે ચાલુ રાખવા માગો છો?</translation> <translation id="5601503069213153581">PIN</translation> +<translation id="5601823921345337195">MIDI ડિવાઇસ સાથે કનેક્ટ કરવાની મંજૂરી આપેલી નથી</translation> <translation id="5602765853043467355">આ ઉપકરણમાંથી બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને વધુ સાફ કરો</translation> <translation id="5605623530403479164">અન્ય શોધ એંજીન્સ</translation> <translation id="5605758115928394442">તમે જ છો તે કન્ફર્મ કરવા માટે તમારા ફોન પર નોટિફિકેશન મોકલવામાં આવ્યું હતું.</translation> +<translation id="560834977503641186">વાઇ-ફાઇ સિંક, વધુ જાણો</translation> <translation id="5608580678041221894">કાપવા માટેના ક્ષેત્રને સમાયોજિત કરવા અથવા ખસેડવા માટે નીચેની કીને ટૅપ કરો</translation> <translation id="5609231933459083978">ઍપ્લિકેશન અમાન્ય હોય તેવું લાગે છે.</translation> <translation id="5610038042047936818">કૅમેરા મોડ પર સ્વિચ કરો</translation> @@ -3994,6 +4038,7 @@ <translation id="5747552184818312860">સમાપ્ત થાય છે</translation> <translation id="5747785204778348146">વિકાસકર્તા - અસ્થાયી</translation> <translation id="5747809636523347288">પેસ્ટ કરો અને <ph name="URL" /> પર જાઓ</translation> +<translation id="5754152670305761216">સંરક્ષિત કન્ટેન્ટ ચલાવવાની મંજૂરી છે</translation> <translation id="5756163054456765343">સ&હાય કેન્દ્ર</translation> <translation id="5759728514498647443">તમે <ph name="APP_NAME" /> મારફતે છાપવા માટે મોકલેલા દસ્તાવેજો <ph name="APP_NAME" /> દ્વારા વાંચી શકાય છે.</translation> <translation id="5763751966069581670">કોઈ USB ઉપકરણ મળ્યું નથી</translation> @@ -4066,6 +4111,7 @@ <translation id="5841270259333717135">ઇથરનેટ ગોઠવો</translation> <translation id="5842497610951477805">બ્લૂટૂથ ચાલુ</translation> <translation id="5843706793424741864">ફેરનહીટ</translation> +<translation id="584451707753263735">લાઇવ કૅપ્શન જોઈ શકાય છે, ફોકસ ફરી ખસેડવા માટે F6 દબાવો</translation> <translation id="5844574845205796324">શોધખોળ કરવા માટે નવું કન્ટેન્ટ સૂચવો</translation> <translation id="5846200638699387931">રિલેશન સિન્ટેક્સ ભૂલ: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">અપડેટ અને ઍપ ઇન્સ્ટૉલ કરો. આગળ વધીને, તમે સંમત થાઓ છો કે આ ડિવાઇસ સંભવતઃ મોબાઇલ ડેટાનો ઉપયોગ કરીને Google, તમારા કૅરિઅર અને તમારા ડિવાઇસના નિર્માતાના અપડેટ અને ઍપ ઑટોમૅટિક રીતે ડાઉનલોડ અને ઇન્સ્ટૉલ પણ કરી શકે છે. આમાંની અમુક ઍપ ઍપમાંથી ખરીદીની ઑફર કરી શકે છે. આમાંથી અમુક ઍપ, ઍપમાંથી ખરીદીઓની ઑફર કરી શકે છે.</translation> @@ -4461,6 +4507,7 @@ <translation id="6295158916970320988">બધી સાઇટ્સ</translation> <translation id="6295855836753816081">સાચવી રહ્યું છે...</translation> <translation id="6298962879096096191">Android ઍપ્લિકેશનોને ઇન્સ્ટૉલ કરવા માટે Google Play નો ઉપયોગ કરો</translation> +<translation id="6300177430812514606">ડેટા મોકલવા કે પ્રાપ્ત કરવાનું સમાપ્ત કરવાની મંજૂરી નથી</translation> <translation id="630065524203833229">&બહાર નીકળો</translation> <translation id="6300718114348072351"><ph name="PRINTER_NAME" />ને ઑટોમૅટિક રીતે ગોઠવી શકાતું નથી. કૃપા કરીને વિગતવાર પ્રિન્ટરની વિગતો જણાવો. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation> <translation id="6301076166764763868">વ્યક્તિગત અને <ph name="EXISTING_USER" /> બ્રાઉઝિંગને અલગ પાડવા માટે, <ph name="NEW_USER" /> માટે નવી પ્રોફાઇલ બનાવો</translation> @@ -4538,6 +4585,7 @@ <translation id="6390020764191254941">ટૅબને નવી વિંડોમાં ખસેડો</translation> <translation id="6390799748543157332">આ વિંડોમાં તમે જે પેજ જોઈ રહ્યાં છો એ બ્રાઉઝર ઇતિહાસમાં દેખાશે નહિ અને એ તમે બધી ખૂલેલી અતિથિ વિંડો બંધ કરી દો એ પછી તમારા કમ્પ્યુટર પર કૂકી જેવા કોઈ બીજા નિશાન છોડશે નહિ. જો કે, તમે ડાઉનલોડ કરેલી કોઈ પણ ફાઇલો જાળવવામાં આવશે.</translation> <translation id="6393156038355142111">સશક્ત પાસવર્ડ સૂચવો</translation> +<translation id="6393550101331051049">અસુરક્ષિત કન્ટેન્ટ બતાવવાની મંજૂરી છે</translation> <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />સિસ્ટમ માહિતી<ph name="END_LINK1" /> અને <ph name="BEGIN_LINK2" />મેટ્રિક્સ<ph name="END_LINK2" /> મોકલો</translation> <translation id="6396988158856674517">સાઇટને મોશન સેન્સરનો ઉપયોગ કરવાથી બ્લૉક કરો</translation> <translation id="6398715114293939307">Google Play સ્ટોર દૂર કરો</translation> @@ -4570,6 +4618,7 @@ <translation id="6425556984042222041">ટેક્સ્ટ ટૂ સ્પીચની ઝડપ</translation> <translation id="6426200009596957090">ChromeVox સેટિંગ્સ ખોલો</translation> <translation id="642654727595919401"><ph name="DOMAIN" /> માટે જરૂરી છે કે તમે તમારા ડેટાનું બૅકઅપ લઈને આ <ph name="DEVICE_TYPE" /> 1 અઠવાડિયાની અંદર પરત કરો.<ph name="LINK_BEGIN" />વિગતો જુઓ<ph name="LINK_END" /></translation> +<translation id="642729974267661262">સાઉન્ડ ચલાવવાની મંજૂરી નથી</translation> <translation id="6428982734197629783">છબીની પ્રક્રિયા કરી રહ્યાં છીએ</translation> <translation id="6429384232893414837">અપડેટમાં ભૂલ</translation> <translation id="6430814529589430811">Base64-encoded ASCII, એકલ પ્રમાણપત્ર</translation> @@ -4598,6 +4647,7 @@ <translation id="6458701200018867744">અપલોડ નિષ્ફળ થયું (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation> <translation id="6459488832681039634">શોધવા માટે પસંદગીનો ઉપયોગ કરો</translation> <translation id="6459799433792303855">સક્રિય વિંડો બીજા ડિસ્પ્લેમાં ખસેડી છે.</translation> +<translation id="6460566145397380451">MIDI ડિવાઇસ સાથે કનેક્ટ કરવાની મંજૂરી છે</translation> <translation id="6460601847208524483">આગલું શોધો</translation> <translation id="6461170143930046705">નેટવર્ક શોધી રહ્યાં છીએ...</translation> <translation id="6463795194797719782">&સંપાદિત કરો</translation> @@ -4629,6 +4679,7 @@ <translation id="6499681088828539489">શેર કરેલ નેટવર્ક માટે પ્રૉક્સીને મંજૂરી ન આપો</translation> <translation id="650266656685499220">આલ્બમ બનાવવા માટે, Google Photos પર જાઓ</translation> <translation id="6503077044568424649">સૌથી વધુ જોવાયેલ</translation> +<translation id="650457560773015827">ડાબું બટન</translation> <translation id="6504611359718185067">કોઈ પ્રિન્ટર ઉમેરવા માટે ઇન્ટરનેટથી કનેક્ટ કરો</translation> <translation id="6506374932220792071">SHA-256 સાથે X9.62 ECDSA સહી</translation> <translation id="6508248480704296122"><ph name="NAME_PH" />થી સંબંધિત</translation> @@ -4830,6 +4881,7 @@ <translation id="676560328519657314">Google Payમાં તમારી ચુકવણી પદ્ધતિઓ</translation> <translation id="6767566652486411142">બીજી ભાષા પસંદ કરો...</translation> <translation id="6767639283522617719">ડોમેન જોડી શકાતું નથી. સંસ્થાકીય એકમ માટે સેટિંગ યોગ્ય છે તેની ખાતરી કરો.</translation> +<translation id="6768034047581882264">અસુરક્ષિત કન્ટેન્ટ બતાવવાની મંજૂરી નથી</translation> <translation id="6769557323306147204"><ph name="ORGANIZATION_NAME" /> તમને આ ડિવાઇસ અપડેટ કરવાનો સુઝાવ આપે છે.</translation> <translation id="6769712124046837540">પ્રિન્ટર ઉમેરી રહ્યું છે...</translation> <translation id="6770602306803890733">તમારી સાથે જ વેબ પરની દરેક વ્યક્તિ માટે સુરક્ષાને બહેતર બનાવે છે</translation> @@ -4921,6 +4973,7 @@ <translation id="6865313869410766144">સ્વતઃભરણ ફોર્મ ડેટા</translation> <translation id="6865598234501509159">પેજ <ph name="LANGUAGE" />માં નથી</translation> <translation id="6865708901122695652">WebRTC ઇવેન્ટ લૉગ (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> +<translation id="686609795364435700">શાંત</translation> <translation id="686664946474413495">રંગ તાપમાન</translation> <translation id="6868934826811377550">વિગતો જુઓ</translation> <translation id="6871644448911473373">OCSP પ્રતિસાદકર્તા: <ph name="LOCATION" /></translation> @@ -4970,6 +5023,7 @@ <translation id="6922745772873733498">પ્રિન્ટ કરવા માટે પિન દાખલ કરો</translation> <translation id="6923132443355966645">સ્ક્રૉલ કરો/ ક્લિક કરો</translation> <translation id="6923633482430812883">શેર માઉન્ટ કરવામાં ભૂલ. કૃપા કરીને ચેક કરો કે તમે કનેક્ટ કરવાનો પ્રયાસ કરી રહ્યા છો તે ફાઇલ સર્વર SMBv2 અથવા તે પછીના વર્ઝનનું સમર્થન કરે છે.</translation> +<translation id="6929126689972602640">માતાપિતાના યોગ્ય નિયંત્રણોને સ્કૂલના એકાઉન્ટ માટે સપોર્ટ આપવામાં આવતો નથી. ઘરેથી સ્કૂલનો અભ્યાસ કરવા Google Classroom અને અન્ય વેબસાઇટને ઍક્સેસ કરવા સ્કૂલનું એકાઉન્ટ ઉમેરવા માટે, પહેલા બાળકના વ્યક્તિગત એકાઉન્ટ વડે સાઇન ઇન કરો. તમે પછીથી સેટઅપમાં સ્કૂલનું એકાઉન્ટ ઉમેરી શકો છો.</translation> <translation id="6929760895658557216">ઓકે Google</translation> <translation id="6930036377490597025">બાહ્ય સુરક્ષા કોડ અને બિલ્ટ-ઇન સેન્સર</translation> <translation id="6930161297841867798">{NUM_EXTENSIONS,plural, =1{એક્સ્ટેંશન નકારવામાં આવ્યું છે}one{# એક્સ્ટેંશન નકારવામાં આવ્યું છે}other{# એક્સ્ટેંશન નકારવામાં આવ્યા છે}}</translation> @@ -5010,6 +5064,7 @@ <translation id="6972629891077993081">HID ડિવાઇસ</translation> <translation id="6972754398087986839">પ્રારંભ કરો</translation> <translation id="6972887130317925583">ચેડાં કરાયેલો પાસવર્ડ સફળતાપૂર્વક બદલ્યો. કોઈપણ સમયે <ph name="SETTINGS" />માં તમારા પાસવર્ડ ચેક કરો.</translation> +<translation id="697312151395002334">પૉપ-અપ મોકલવા અને રીડાયરેક્ટનો ઉપયોગ કરવાની મંજૂરી છે</translation> <translation id="6973611239564315524">Debian 10 માટેનું અપગ્રેડ (Buster) ઉપલબ્ધ છે</translation> <translation id="6974609594866392343">ઑફલાઇન ડેમો મોડ</translation> <translation id="6977381486153291903">ફર્મવેયર પુનરાવર્તન</translation> @@ -5032,6 +5087,7 @@ <translation id="6995899638241819463">જો ડેટા ઉલ્લંઘનમાં પાસવર્ડ જાહેર થાય તો તમને ચેતવણી આપવામાં આવે છે</translation> <translation id="6997642619627518301"><ph name="NAME_PH" /> - પ્રવૃત્તિ લૉગ</translation> <translation id="6997707937646349884">તમારા ઉપકરણો પર:</translation> +<translation id="6998093258894828179">કાર્ડ છુપાવો</translation> <translation id="6998793565256476099">વીડિયો કૉન્ફરન્સ માટે ડિવાઇસની નોંધણી કરો</translation> <translation id="6999956497249459195">નવું ગ્રૂપ</translation> <translation id="7000206553895739324"><ph name="PRINTER_NAME" /> કનેક્ટ કરેલું છે પણ ગોઠવણી જરૂરી છે</translation> @@ -5048,6 +5104,7 @@ <translation id="7005848115657603926">અમાન્ય પૃષ્ઠ શ્રેણી, <ph name="EXAMPLE_PAGE_RANGE" /> નો ઉપયોગ કરો</translation> <translation id="7006634003215061422">નીચેનો હાસિયો</translation> <translation id="7007648447224463482">બધું નવી વિંડોમાં ખોલો</translation> +<translation id="7009709314043432820"><ph name="APP_NAME" /> તમારા કૅમેરાનો ઉપયોગ કરી રહી છે</translation> <translation id="701080569351381435">સ્રોત જુઓ</translation> <translation id="7014174261166285193">ઇન્સ્ટોલેશન નિષ્ફળ થયું.</translation> <translation id="7017004637493394352">ફરીથી "Ok Google" કહો</translation> @@ -5067,6 +5124,7 @@ <translation id="7038632520572155338">સ્વિચ ઍક્સેસ</translation> <translation id="7039326228527141150"><ph name="VENDOR_NAME" /> થી USB ઉપકરણો ઍક્સેસ કરો</translation> <translation id="7039912931802252762">Microsoft Smart Card Logon</translation> +<translation id="7039951224110875196">બાળક માટે Google એકાઉન્ટ બનાવો</translation> <translation id="7040230719604914234">ઑપરેટર</translation> <translation id="7043108582968290193">થઈ ગયું! કોઈ અસંગત ઍપ્લિકેશન મળી નથી.</translation> <translation id="7044124535091449260">સાઇટ ઍક્સેસ વિશે વધુ જાણો</translation> @@ -5138,6 +5196,7 @@ <translation id="7121362699166175603">ઍડ્રેસ બારમાં ઇતિહાસ અને ઑટોમૅટિક રીતે પૂર્ણતા સાફ કરે છે. તમારા Google એકાઉન્ટમાં <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> પર બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો હોય શકે.</translation> <translation id="7121438501124788993">ડેવલપર મોડ</translation> <translation id="7121728544325372695">સ્માર્ટ ડૅશ</translation> +<translation id="7123030151043029868">એકથી વધારે ફાઇલો ઑટોમૅટિક રીતે ડાઉનલોડ કરવાની મંજૂરી છે</translation> <translation id="7123360114020465152">હવે સમર્થિત રહ્યું નથી</translation> <translation id="7125148293026877011">Crostini ડિલીટ કરો</translation> <translation id="7127980134843952133">ડાઉનલોડ ઇતિહાસ</translation> @@ -5152,6 +5211,7 @@ <translation id="7136984461011502314"><ph name="PRODUCT_NAME" /> માં આપનું સ્વાગત છે</translation> <translation id="7136993520339022828">તેમાં એક ભૂલ છે. કૃપા કરીને અન્ય છબી પસંદ કરીને ફરી પ્રયત્ન કરો.</translation> <translation id="713888829801648570">માફ કરશો, તમારો પાસવર્ડ ચકાસી શકાયો નથી કારણ કે તમે ઑફલાઇન છો.</translation> +<translation id="7139627972753429585"><ph name="APP_NAME" /> તમારા માઇક્રોફોનનો ઉપયોગ કરી રહી છે</translation> <translation id="7140928199327930795">કોઈ અન્ય ઉપલબ્ધ ઉપકરણો નથી.</translation> <translation id="7141105143012495934">સાઇન ઇન નિષ્ફળ થયું કારણ કે તમારી એકાઉન્ટ વિગતો પાછી મેળવી શકાઈ નથી. કૃપા કરીને તમારા એડમિનનો સંપર્ક કરો અથવા ફરી પ્રયાસ કરો.</translation> <translation id="7143207342074048698">કનેક્ટિંગ</translation> @@ -5291,6 +5351,7 @@ <translation id="7324297612904500502">બીટા ચર્ચા મંચ</translation> <translation id="7325209047678309347">કાગળ ભરાઈ ગયું છે</translation> <translation id="7325437708553334317">હાઇ કોન્ટ્રાસ્ટ એક્સ્ટેંશન</translation> +<translation id="7326004502692201767">બાળક માટે આ <ph name="DEVICE_TYPE" />નું સેટઅપ કરો</translation> <translation id="7328699668338161242">તમારું આસિસ્ટંટ પહેલેથી જ તમારો અવાજ ઓળખી શકે છે</translation> <translation id="7328867076235380839">અમાન્ય મિશ્રણ</translation> <translation id="7329154610228416156">સાઇન ઇન નિષ્ફળ થયું કારણ કે તે બિન-સુરક્ષિત URL (<ph name="BLOCKED_URL" />) નો ઉપયોગ કરવા માટે ગોઠવાયેલું હતું. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation> @@ -5306,6 +5367,7 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> હવે પૂર્ણ સ્ક્રીન છે.</translation> <translation id="7340650977506865820">સાઇટ તમારી સ્ક્રીન શેર કરી રહી છે</translation> <translation id="7341834142292923918">આ સાઇટને ઍક્સેસ કરવા માગે છે</translation> +<translation id="7343372807593926528">કૃપા કરીને પ્રતિસાદ મોકલતા પહેલાં સમસ્યાનું વર્ણન કરો.</translation> <translation id="7345706641791090287">તમારા પાસવર્ડની પુષ્ટિ કરો</translation> <translation id="7346909386216857016">બરાબર, સમજાઇ ગયું</translation> <translation id="7347452120014970266">આનાથી <ph name="ORIGIN_NAME" /> અને તેને ઇન્સ્ટૉલ કરેલી ઍપ દ્વારા સ્ટોર કરવામાં આવેલો બધો ડેટા અને કુકી સાફ કરવામાં આવશે</translation> @@ -5415,6 +5477,7 @@ <translation id="7465635034594602553">કંઈક ખોટું થયું. કૃપા કરીને થોડી વાર રાહ જુઓ અને <ph name="APP_NAME" /> ફરીથી ચલાવો.</translation> <translation id="7465778193084373987">નેટસ્કેપ પ્રમાણપત્ર રિવોકેશન URL</translation> <translation id="7469894403370665791">આ નેટવર્કથી આપમેળે કનેક્ટ થાઓ</translation> +<translation id="7470424110735398630">તમારું ક્લિપબોર્ડ જોવાની મંજૂરી છે</translation> <translation id="747114903913869239">ભૂલ: એક્સટેન્શનને ડિકોડ કરવામાં અક્ષમ</translation> <translation id="7473891865547856676">નહીં આભાર</translation> <translation id="747459581954555080">બધુ પુનર્પ્રાપ્ત કરો</translation> @@ -5524,6 +5587,7 @@ <translation id="7607002721634913082">થોભાવેલું</translation> <translation id="7608810328871051088">Androidની પસંદગીઓ</translation> <translation id="7609148976235050828">કૃપા કરીને ઇન્ટરનેટથી કનેક્ટ થાઓ અને ફરી પ્રયાસ કરો.</translation> +<translation id="7612655942094160088">કનેક્ટ કરેલી ફોન સુવિધાઓ ચાલુ છે.</translation> <translation id="7614260613810441905">કોઈ સાઇટ તમારા ડિવાઇસમાંની ફાઇલો કે ફોલ્ડરોમાં ફેરફાર કરવા માગે ત્યારે પૂછવામાં આવે (સુઝાવ આપેલો છે)</translation> <translation id="761530003705945209">Google ડ્રાઇવ પર બૅકઅપ લો. તમારો ડેટા સરળતાથી પાછો મેળવો અથવા ડિવાઇસને કોઈપણ સમયે સ્વિચ કરો. તમારા બૅકઅપમાં ઍપનો ડેટા શામેલ છે. તમારું બૅકઅપ Google પર અપલોડ કરવામાં આવે છે અને તમારા Google એકાઉન્ટ પાસવર્ડનો ઉપયોગ કરીને એન્ક્રિપ્ટ કરવામાં આવે છે.</translation> <translation id="7615365294369022248">તમારું એકાઉન્ટ ઉમેરતી વખતે ભૂલ આવી હતી</translation> @@ -5642,6 +5706,7 @@ <translation id="7732111077498238432">નેટવર્ક નીતિ દ્વારા નિયંત્રિત છે</translation> <translation id="7737115349420013392">"<ph name="DEVICE_NAME" />"ની સાથે જોડી બનાવો…</translation> <translation id="7737238973539693982">Linux (બીટા) ડિલીટ કરો</translation> +<translation id="7737948071472253612">તમારા કૅમેરાનો ઉપયોગ કરવાની મંજૂરી નથી</translation> <translation id="7740996059027112821">માનક</translation> <translation id="7742706086992565332">તમે કેટલીક ચોક્કસ વેબસાઇટ પર કેટલું મોટું કે નાનું કરવા માગો છો તે સેટ કરી શકો છો</translation> <translation id="774377079771918250">સાચવવા માટેનું સ્થાન પસંદ કરો</translation> @@ -5650,6 +5715,7 @@ <translation id="7750228210027921155">ચિત્રમાં ચિત્ર</translation> <translation id="7751260505918304024">બધું બતાવો</translation> <translation id="7753735457098489144">સ્ટોરેજ સ્પેસના અભાવના કારણે ઇન્સ્ટૉલ કરવું નિષ્ફળ થયું. સ્પેસ ખાલી કરવા માટે, ડિવાઇસ સ્ટોરેજમાંથી ફાઇલો ડિલીટ કરો.</translation> +<translation id="7754347746598978109">Javascriptનો ઉપયોગ કરવાની મંજૂરી નથી</translation> <translation id="7754704193130578113">ડાઉનલોડ કરતાં પહેલાં પ્રત્યેક ફાઇલને ક્યાં સાચવવી છે તે જણાવો</translation> <translation id="7755287808199759310">તમારા માટે તમારા માતાપિતા તેને અનાવરોધિત કરી શકે છે</translation> <translation id="7757592200364144203">ડિવાઇસનું નામ બદલો</translation> @@ -5701,6 +5767,7 @@ <translation id="7798844538707273832"><ph name="PERMISSION" /> ઑટોમૅટિક રીતે બ્લૉક થઈ</translation> <translation id="7799299114731150374">વૉલપેપર સફળતાપૂર્વક સેટ કર્યું</translation> <translation id="7800518121066352902">ઘ&ડિયાળની વિપરિત દિશામાં ફેરવો</translation> +<translation id="7802539296536804623">આ પેજ પર કાર્ડ બતાવશો નહીં</translation> <translation id="780301667611848630">નહીં, આભાર</translation> <translation id="7804072833593604762">ટૅબ બંધ કરી છે</translation> <translation id="7805768142964895445">સ્થિતિ</translation> @@ -5716,6 +5783,7 @@ <translation id="7819857487979277519">PSK (WPA અથવા RSN)</translation> <translation id="7819992334107904369">Chrome સિંક</translation> <translation id="782057141565633384">વીડિયો ઍડ્રેસ કૉ&પિ કરો</translation> +<translation id="7822187537422052256">શું તમે ખરેખર આ સરનામું કાઢી નાખવા માગો છો?</translation> <translation id="7824864914877854148">ભૂલને કારણે બૅકઅપ પૂર્ણ ન કરી શકાયું</translation> <translation id="7825666486843191125">તમારી સ્ક્રીન અનલૉક કરેલી હોય, ત્યારે તમારી નજીકના બધા સંપર્કો</translation> <translation id="782590969421016895">ચાલુ પૃષ્ઠોનો ઉપયોગ કરો</translation> @@ -6124,6 +6192,7 @@ <translation id="826905130698769948">અમાન્ય ક્લાયન્ટ પ્રમાણપત્ર</translation> <translation id="8270242299912238708">PDF દસ્તાવેજો</translation> <translation id="827097179112817503">હોમ બટન દર્શાવો</translation> +<translation id="8271379370373330993">આગલા કેટલાક પગલાં માતાપિતા માટે છે. એકાઉન્ટ સેટઅપ થઈ જાય તે પછી તમે બાળકને <ph name="DEVICE_TYPE" /> પાછું આપી શકો છો.</translation> <translation id="8272443605911821513">"વધુ સાધનો" મેનૂમાં એક્સટેન્શન્સને ક્લિક કરીને તમારા એક્સટેન્શન્સનું સંચાલન કરો.</translation> <translation id="8274332263553132018">ફાઇલ કાસ્ટ કરો</translation> <translation id="8274924778568117936">અપડેટ પૂર્ણ ન થાય ત્યાં સુધી તમારું <ph name="DEVICE_TYPE" /> બંધ કરતા નહીં. ઇન્સ્ટૉલેશન પૂર્ણ થયા બાદ તમારું <ph name="DEVICE_TYPE" /> ફરી શરૂ થશે.</translation> @@ -6148,6 +6217,7 @@ <translation id="8300011035382349091">આ ટૅબ માટે બુકમાર્કમાં ફેરફાર કરો</translation> <translation id="8300374739238450534">ઘેરો વાદળી</translation> <translation id="8300849813060516376">OTASP નિષ્ફળ</translation> +<translation id="8304383784961451596">તમે આ ડિવાઇસનો ઉપયોગ કરવા માટે અધિકૃત નથી. કૃપા કરીને સાઇન-ઇનની પરવાનગી માટે વ્યવસ્થાપકનો સંપર્ક કરો અથવા Family Link દ્વારા નિરીક્ષિત Google એકાઉન્ટ વડે સાઇન ઇન કરો.</translation> <translation id="8308179586020895837"><ph name="HOST" /> તમારા કૅમેરાને ઍક્સેસ કરવા માંગે છે કે કેમ તે પૂછો</translation> <translation id="830868413617744215">બીટા</translation> <translation id="8309458809024885768">પ્રમાણપત્ર પહેલાંથી અસ્તિત્વમાં છે</translation> @@ -6161,6 +6231,7 @@ <translation id="8322814362483282060">આ પૃષ્ઠને તમારા માઇક્રોફોનને ઍક્સેસ કરવાથી અવરોધિત કરવામાં આવ્યું છે.</translation> <translation id="8323167517179506834">URL લખો</translation> <translation id="8324784016256120271">સાઇટ વિવિધ સાઇટ પરની તમારી બ્રાઉઝિંગ પ્રવૃત્તિ જોવા માટે કુકીનો ઉપયોગ કરી શકે છે. ઉદાહરણ તરીકે, મનગમતી જાહેરાતો બનાવવા માટે</translation> +<translation id="8325413836429495820">તમારું ક્લિપબોર્ડ જોવાની મંજૂરી નથી</translation> <translation id="8326478304147373412">PKCS #7, પ્રમાણપત્ર ચેન</translation> <translation id="8327039559959785305">Linux ફાઇલોને માઉન્ટ કરવામાં ભૂલ આવી છે. કૃપા કરીને ફરી પ્રયાસ કરો.</translation> <translation id="8327676037044516220">પરવાનગીઓ અને કન્ટેન્ટ સેટિંગ</translation> @@ -6210,6 +6281,7 @@ <translation id="8382913212082956454">&ઇમેઇલ સરનામું કૉપિ કરો</translation> <translation id="8386091599636877289">નીતિ મળી નથી.</translation> <translation id="8386903983509584791">સ્કૅન પૂર્ણ થયું</translation> +<translation id="8387361103813440603">તમારું સ્થાન જોવાની મંજૂરી નથી</translation> <translation id="8389416080014625855">આ પેજ માટે QR કોડ બનાવો</translation> <translation id="8389492867173948260">આ એક્સટેંશનને તમે મુલાકાત લો તે વેબસાઇટ પરનો તમારો બધો ડેટા વાંચવાની અને બદલવાની મંજૂરી આપો:</translation> <translation id="8390449457866780408">સર્વર અનુપલબ્ધ.</translation> @@ -6233,6 +6305,7 @@ <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' માટે શોધ પરિણામ</translation> <translation id="8419368276599091549">તમારા <ph name="DEVICE_TYPE" /> પર સ્વાગત છે!</translation> <translation id="8420308167132684745">શબ્દકોશમાં ઉમેરેલા શબ્દોમાં ફેરફાર કરો</translation> +<translation id="8421361468937925547">લાઇવ કૅપ્શન (માત્ર અંગ્રેજીમાં)</translation> <translation id="8422787418163030046">ટ્રે ખૂટે છે</translation> <translation id="8425213833346101688">બદલો</translation> <translation id="8425492902634685834">ટાસ્કબારમાં પિન કરો</translation> @@ -6261,6 +6334,7 @@ <translation id="8449036207308062757">સ્ટોરેજ સંચાલિત કરો</translation> <translation id="8452135315243592079">SIM કાર્ડ ખૂટે છે</translation> <translation id="8455026683977728932">ADBનું ચિત્ર ચાલુ કરવામાં નિષ્ફળ રહ્યાં</translation> +<translation id="8456398879271637452">લાઇવ કૅપ્શન જોઈ શકાય છે, ફોકસ ફરી ખસેડવા માટે Ctrl + પાછળ કે Ctrl + આગળ દબાવો</translation> <translation id="845702320058262034">કનેક્ટ કરી શકાતું નથી. તમારા ફોનનું બ્લૂટૂથ ચાલુ હોવાની ખાતરી કરો.</translation> <translation id="8457451314607652708">બુકમાર્ક્સ આયાત કરો</translation> <translation id="8458627787104127436">બધી (<ph name="URL_COUNT" />) URL નવી વિન્ડોમાં ખોલો</translation> @@ -6394,6 +6468,7 @@ <translation id="8621866727807194849">તમારા કમ્પ્યુટરમાં નુકસાનકારક સૉફ્ટવેર છે. Chrome તે કાઢી નાખે છે, તમારી સેટિંગ પાછી મેળવે છે અને એક્સ્ટેંશન બંધ કરે છે. તેને કારણે તમારું બ્રાઉઝર ફરી સામાન્ય રીતે કામ કરતું થઈ જશે.</translation> <translation id="8621979332865976405">તમારી સંપૂર્ણ સ્ક્રીન શેર કરો</translation> <translation id="862542460444371744">&એક્સ્ટેન્શન્સ</translation> +<translation id="8625663000550647058">તમારા માઇક્રોફોનનો ઉપયોગ કરવાની મંજૂરી નથી</translation> <translation id="862727964348362408">સસ્પેન્ડેડ</translation> <translation id="862750493060684461">CSS કૅશ મેમરી</translation> <translation id="8627706565932943526">સમન્વય ભૂલ</translation> @@ -6474,6 +6549,7 @@ <translation id="8714838604780058252">પૃષ્ઠભૂમિ ગ્રાફિક્સ</translation> <translation id="8715480913140015283">બૅકગ્રાઉન્ડ ટૅબ તમારા કૅમેરાનો ઉપયોગ કરી રહ્યું છે</translation> <translation id="8716931980467311658">આ <ph name="DEVICE_TYPE" />માંથી બધી Linux ઍપ્લિકેશનો અને તમારા Linux ફાઇલોના ફોલ્ડરનો ડેટા ડિલીટ કરીએ?</translation> +<translation id="8717145295869185525">વર્ચ્યુઅલ રિયાલિટી ડિવાઇસ અને ડેટાનો ઉપયોગ કરવાની મંજૂરી નથી</translation> <translation id="8717864919010420084">લિંકની કૉપિ કરો</translation> <translation id="8719472795285728850">એક્સ્ટેન્શન પ્રવૃત્તિઓ સાંભળી રહ્યાં છીએ…</translation> <translation id="8719653885894320876"><ph name="PLUGIN_NAME" /> ડાઉનલોડ નિષ્ફળ થયું</translation> @@ -6769,6 +6845,7 @@ <translation id="9027459031423301635">લિંક નવા &ટૅબમાં ખોલો</translation> <translation id="9030515284705930323">તમારા એકાઉન્ટ માટે તમારી સંસ્થાએ Google Play સ્ટોર ચાલુ કરેલ નથી. વધુ માહિતી માટે તમારા એડમિનનો સંપર્ક કરો.</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269"><ph name="PLUGIN_NAME" />ને હવે સપોર્ટ કરવામાં આવતું નથી</translation> <translation id="9031549947500880805">Google ડ્રાઇવ પર બૅકઅપ લો. તમારો ડેટા સરળતાથી પાછો મેળવો અથવા ડિવાઇસને કોઈપણ સમયે સ્વિચ કરો. તમારા બૅકઅપમાં ઍપનો ડેટા શામેલ છે.</translation> <translation id="9033765790910064284">તો પણ ચાલુ રાખો</translation> <translation id="9033857511263905942">&પેસ્ટ કરો</translation> @@ -6777,6 +6854,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{તમારી પાસે હવે એક પ્રયાસ બાકી છે.}one{તમારી પાસે હવે # પ્રયાસ બાકી છે.}other{તમારી પાસે હવે # પ્રયાસો બાકી છે.}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571"><ph name="ORIGIN" /> માટેનો પાસવર્ડ અપડેટ કરીએ?</translation> +<translation id="9041049756004505730">લાઇવ કૅપ્શન જોઈ શકાય છે, ફોકસ ફરી ખસેડવા માટે ⌘ + વિકલ્પ + ઉપરનો ઍરો અથવા નીચેનો ઍરો દબાવો</translation> <translation id="9041692268811217999">તમારા વ્યવસ્થાપકે તમારા મશીન પરની સ્થાનિક ફાઇલોનો ઍક્સેસ બંધ કરેલ છે</translation> <translation id="904224458472510106">આ ઑપરેશનનો છેલ્લો ફેરફાર રદ કરી શકાતો નથી</translation> <translation id="9042893549633094279">ગોપનીયતા અને સુરક્ષા</translation> @@ -6815,6 +6893,7 @@ <translation id="9088446193279799727">Linux ગોઠવી શકાતું નથી. ઇન્ટરનેટ સાથે કનેક્ટ કરો અને ફરી પ્રયાસ કરો.</translation> <translation id="9088917181875854783">કૃપા કરીને ખાતરી કરો કે "<ph name="DEVICE_NAME" />" પર આ પાસકી દેખાય છે:</translation> <translation id="9089416786594320554">ઇનપુટ પદ્ધતિઓ</translation> +<translation id="909108997331068008"><ph name="EXISTING_USER" />ની પ્રોફાઇલ વડે પહેલેથી <ph name="NEW_USER" />માં સાઇન ઇન કરવામાં આવ્યું છે</translation> <translation id="9093429538970210897">અપગ્રેડ કરવાનું પૂર્ણ ન થઈ શકવાના કિસ્સા માટે, ફાઇલોનું બૅકઅપ લેવાનો સુઝાવ આપવામાં આવે છે. અપડેટની પ્રક્રિયા શરૂ કરવાથી Linux (બીટા) શટ ડાઉન થઈ જશે. કૃપા કરીને આગળ વધતા પહેલાં ખુલ્લી ફાઇલોને સાચવો.</translation> <translation id="9094033019050270033">પાસવર્ડ અપડેટ કરો</translation> <translation id="9094038138851891550">વપરાશકર્તાનું નામ અમાન્ય છે</translation> @@ -6895,6 +6974,7 @@ <translation id="9179734824669616955">તમારા <ph name="DEVICE_TYPE" /> પર Linux (બીટા) સેટ અપ કરો</translation> <translation id="9180281769944411366">આ પ્રક્રિયામાં થોડો સમય લાગી શકે છે. Linux કન્ટેઇનર શરૂ કરી રહ્યાં છીએ.</translation> <translation id="9180380851667544951">સાઇટ તમારી સ્ક્રીનને શેર કરી શકે છે</translation> +<translation id="9186963452600581158">બાળકના Google એકાઉન્ટ વડે સાઇન ઇન કરો</translation> <translation id="9188732951356337132">વપરાશ અને નિદાનનો ડેટા મોકલો. આ ડિવાઇસ હાલમાં Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલી રહ્યું છે. આનો ઉપયોગ તમારા બાળકને ઓળખવા માટે થશે નહીં અને સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. જો તમારા બાળક માટે વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તેમના Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK2" />વધુ જાણો<ph name="END_LINK2" /></translation> <translation id="9190063653747922532">L2TP/IPsec + પૂર્વ-શેર કરેલી કી</translation> <translation id="9198090666959937775">સિક્યુરિટી કી તરીકે તમારા Android ફોનનો ઉપયોગ કરો</translation> @@ -6987,5 +7067,6 @@ <translation id="994289308992179865">&લૂપ કરો</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">સુરક્ષિત કનેક્શન સ્થાપિત કરી રહ્યું છે...</translation> +<translation id="99731366405731005">વાઇ-ફાઇ સિંકનો ઉપયોગ કરવા માટે <ph name="LINK1_BEGIN" />Chrome સિંક<ph name="LINK1_END" /> ચાલુ કરો. <ph name="LINK2_BEGIN" />વધુ જાણો<ph name="LINK2_END" /></translation> <translation id="998747458861718449">ત&પાસ કરો</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index 3f88c3d..49772a4 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -2145,7 +2145,7 @@ <translation id="3491669675709357988">Ձեր երեխայի հաշվում կարգավորված չէ Family Link-ի ծնողական վերահսկողությունը։ Այն կարող եք ավելացնել՝ կարգավորումն ավարտելուց հետո։ Ծնողական վերահսկողության մասին տեղեկությունները դիտեք Հնարավորություններ հավելվածում։</translation> <translation id="3491678231052507920">Կայքերը սովորաբար օգտագործում են վիրտուալ իրականության սարքերն ու տվյալները՝ VR աշխատաշրջաններ սկսելու համար</translation> <translation id="3492788708641132712">Համաժամացումը չի աշխատում։ Փորձեք նորից մուտք գործել։</translation> -<translation id="3493486281776271508">Պահանջվում է իներնետ կապ</translation> +<translation id="3493486281776271508">Պահանջվում է ինտերնետ կապ</translation> <translation id="3493881266323043047">Վավերականություն</translation> <translation id="3494769164076977169">Հարցնել, երբ կայքն ուզում է ավտոմատ ֆայլեր ներբեռնել առաջին ֆայլից հետո (հանձնարարելի)</translation> <translation id="3495496470825196617">Անգործուն ռեժիմի միացում լիցքավորման ընթացքում</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index eaf443d..2461bfe1 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -89,7 +89,7 @@ <translation id="1097515232094183876">{COUNT,plural, =1{קישור אחד}two{# קישורים}many{# קישורים}other{# קישורים}}</translation> <translation id="1097658378307015415">לפני הכניסה לחשבון, היכנס כאורח כדי להפעיל את הרשת <ph name="NETWORK_ID" /></translation> <translation id="1099962274138857708">התמונה הועתקה מהמכשיר הבא: <ph name="DEVICE_NAME" /></translation> -<translation id="1102187190604780492">ה-Assistant יכול להציג באופן יזום מידע הקשור למה שמופיע במסך</translation> +<translation id="1102187190604780492">Assistant יכולה להציג באופן יזום מידע הקשור למה שמופיע במסך</translation> <translation id="1103523840287552314">ברצוני לקבל תרגום מ<ph name="LANGUAGE" /> תמיד</translation> <translation id="1108600514891325577">&הפסק</translation> <translation id="1110155001042129815">המתן</translation> @@ -143,7 +143,7 @@ <translation id="1161575384898972166">היכנס אל <ph name="TOKEN_NAME" /> כדי לייצא את אישור הלקוח.</translation> <translation id="1163931534039071049">&הצגת מקור המסגרת</translation> <translation id="1164891049599601209">הוזנה באתר מטעה</translation> -<translation id="1164899421101904659">הזן מפתח לביטול נעילת ה-PIN</translation> +<translation id="1164899421101904659">יש להזין מפתח לביטול נעילת קוד האימות</translation> <translation id="1165039591588034296">שגיאה</translation> <translation id="1166212789817575481">סגור את הכרטיסיות משמאל</translation> <translation id="1168020859489941584">פותח ב-<ph name="TIME_REMAINING" />...</translation> @@ -159,7 +159,7 @@ <translation id="1175364870820465910">הדפסה…</translation> <translation id="1177138678118607465">Google עשויה להשתמש בהיסטוריית הגלישה שלך כדי להתאים אישית את החיפוש, מודעות ושירותים נוספים של Google. אפשר לשנות את ההגדרה הזו בכתובת myaccount.google.com/activitycontrols/search.</translation> <translation id="1177863135347784049">מותאם אישית</translation> -<translation id="1178581264944972037">השהה</translation> +<translation id="1178581264944972037">השהיה</translation> <translation id="117916940443676133">מפתח האבטחה שלך אינו מוגן באמצעות קוד אימות. כדי לנהל את פרטי הכניסה, צריך תחילה ליצור קוד אימות.</translation> <translation id="1181037720776840403">הסרה</translation> <translation id="1183237619868651138">לא ניתן להתקין את <ph name="EXTERNAL_CRX_FILE" /> במטמון המקומי.</translation> @@ -248,7 +248,7 @@ <translation id="1275718070701477396">נבחר</translation> <translation id="1276994519141842946">לא ניתן היה להסיר את <ph name="APP_NAME" /></translation> <translation id="127946606521051357">מכשיר בקרבת מקום מנסה לבצע שיתוף</translation> -<translation id="1280820357415527819">מחפש רשתות סלולריות</translation> +<translation id="1280820357415527819">בחיפוש אחר רשתות סלולריות</translation> <translation id="1280965841156951489">אישור לערוך קבצים</translation> <translation id="1285320974508926690">איני רוצה לקבל תרגום של אתר זה</translation> <translation id="1285484354230578868">אחסן נתונים בחשבון Google Drive</translation> @@ -287,7 +287,7 @@ <translation id="1326317727527857210">כדי לקבל את הכרטיסיות מהמכשירים האחרים שלך, יש להיכנס ל-Chrome.</translation> <translation id="1327074568633507428">מדפסת ב-Google Cloud Print</translation> <translation id="1327272175893960498">כרטיסי Kerberos</translation> -<translation id="1327495825214193325">כדי להשתמש בניפוי באגים באמצעות ADB צריך להפעיל מחדש את ה<ph name="DEVICE_TYPE" /> הזה. כדי להשבית את האפשרות הזו צריך לאפס את המכשיר להגדרות היצרן.</translation> +<translation id="1327495825214193325">כדי להשתמש בניפוי באגים באמצעות ADB צריך להפעיל מחדש את ה-<ph name="DEVICE_TYPE" /> הזה. כדי להשבית את האפשרות הזו צריך לאפס את המכשיר להגדרות היצרן.</translation> <translation id="1327794256477341646">תכונות שצריכות גישה למיקום לא יפעלו</translation> <translation id="1327977588028644528">שער</translation> <translation id="1329584516321524826">עודכן עכשיו</translation> @@ -347,7 +347,7 @@ <translation id="1396963298126346194">הזנת שם משתמש או סיסמה שגויים</translation> <translation id="1397500194120344683">אין מכשירים שיכולים להתחבר. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation> <translation id="1397738625398125236">אפשר לבדוק אם יש חיבור לשער באמצעות פינג</translation> -<translation id="1398853756734560583">הגדל</translation> +<translation id="1398853756734560583">הגדלת החלון</translation> <translation id="139911022479327130">ביטול הנעילה של הטלפון ואימות הזהות שלך</translation> <translation id="1399511500114202393">אין אישור משתמש</translation> <translation id="1401308693935339022">שימוש במיקום. אפליקציות ושירותים עם הרשאת מיקום יכולים להשתמש במיקום של המכשיר הזה. Google עשויה לאסוף נתוני מיקום מדי פעם, ולהשתמש בנתונים האלה בצורה אנונימית כדי לשפר את הדיוק של המיקום ואת האיכות של שירותים מבוססי-מיקום.</translation> @@ -358,7 +358,7 @@ <translation id="1407135791313364759">פתח הכל</translation> <translation id="140723521119632973">הפעלה סלולרית</translation> <translation id="1407489512183974736">חתוך במרכז</translation> -<translation id="1408504635543854729">עיין בתוכן של המכשיר באמצעות האפליקציה 'קבצים'. התוכן מוגבל על-ידי מנהל מערכת, ואי אפשר לשנות אותו.</translation> +<translation id="1408504635543854729">ניתן לעיין בתוכן של המכשיר באמצעות האפליקציה 'קבצים'. התוכן מוגבל על-ידי מנהל מערכת, ואי אפשר לשנות אותו.</translation> <translation id="1408980562518920698">ניהול מידע אישי</translation> <translation id="1410197035576869800">סמל האפליקציה</translation> <translation id="1410616244180625362">להמשיך לאפשר ל-<ph name="HOST" /> לגשת למצלמה</translation> @@ -426,7 +426,7 @@ <translation id="1484979925941077974">נעשה שימוש ב-Bluetooth באתר</translation> <translation id="1485015260175968628">יכול כעת:</translation> <translation id="1485141095922496924">גרסה <ph name="PRODUCT_VERSION" /> (<ph name="PRODUCT_CHANNEL" />) <ph name="PRODUCT_MODIFIER" /> <ph name="PRODUCT_VERSION_BITS" /></translation> -<translation id="1486096554574027028">חפש בסיסמאות</translation> +<translation id="1486096554574027028">חיפוש בסיסמאות</translation> <translation id="1487335504823219454">מופעל - הגדרות מותאמות אישית</translation> <translation id="1489664337021920575">יש לבחור אפשרות אחרת</translation> <translation id="1492417797159476138">שם המשתמש הזה כבר נשמר לאתר זה</translation> @@ -463,7 +463,7 @@ <translation id="1524430321211440688">מקלדת</translation> <translation id="1524563461097350801">לא, תודה</translation> <translation id="1525740877599838384">קביעת מיקום רק באמצעות Wi-Fi</translation> -<translation id="152629053603783244">האם להפעיל מחדש את Linux?</translation> +<translation id="152629053603783244">הפעלת Linux מחדש</translation> <translation id="1526335046150927198">הפעלה של האצת גלילה בלוח מגע</translation> <translation id="1526560967942511387">מסמך ללא שם</translation> <translation id="1527336312600375509">קצב הרענון של הצג</translation> @@ -497,7 +497,7 @@ <translation id="15662109988763471">המדפסת שנבחרה אינה זמינה או שאינה מותקנת כראוי. יש לבדוק את המדפסת או לנסות לבחור מדפסת אחרת.</translation> <translation id="1567387640189251553">חוברה מקלדת אחרת מאז שהזנת את הסיסמה בפעם האחרונה. ייתכן שהיא מנסה לתעד את ההקשות שלך.</translation> <translation id="1567993339577891801">קונסולת JavaScript</translation> -<translation id="1568323446248056064">פתח את הגדרות המכשיר של התצוגה</translation> +<translation id="1568323446248056064">פתיחת הגדרות התצוגה של המכשיר</translation> <translation id="1572139610531470719"><ph name="WINDOW_TITLE" /> (אורח)</translation> <translation id="1572266655485775982">הפעלת Wi-Fi</translation> <translation id="1572876035008611720">הזן את כתובת האימייל</translation> @@ -566,7 +566,7 @@ <translation id="1637246113959718501">לא ניתן להוריד את הקבצים הנדרשים. יש לנסות שוב מאוחר יותר.</translation> <translation id="1637350598157233081">הסיסמה שלך שמורה במכשיר הזה</translation> <translation id="1637765355341780467">אירעה שגיאה בפתיחת הפרופיל שלך. ייתכן שחלק מהתכונות לא יהיו זמינות.</translation> -<translation id="1639239467298939599">טוען</translation> +<translation id="1639239467298939599">בטעינה</translation> <translation id="163993578339087550"><ph name="SERVICE_NAME" /> רוצה לבדוק אם יש ברשותך מכשיר Chrome OS כשיר.</translation> <translation id="1640235262200048077">עורך שיטות הקלט (IME) <ph name="IME_NAME" /> עדיין לא עובד באפליקציות Linux</translation> <translation id="1640283014264083726">PKCS #1 MD4 עם הצפנת RSA</translation> @@ -641,7 +641,7 @@ <translation id="1721937473331968728">תוכל להוסיף ל-<ph name="CLOUD_PRINT_NAME" /> מדפסות קלאסיות המחוברות למחשב שלך.</translation> <translation id="1722460139690167654">מכשיר <ph name="BEGIN_LINK" /><ph name="DEVICE_TYPE" /> שלך מנוהל<ph name="END_LINK" /> על ידי <ph name="ENROLLMENT_DOMAIN" /></translation> <translation id="1723824996674794290">&חלון חדש</translation> -<translation id="1725149567830788547">הצג &בקרים</translation> +<translation id="1725149567830788547">הצגת &בקרים</translation> <translation id="1726100011689679555">שרתי שמות</translation> <translation id="1727662110063605623">יש לפתוח את ההגדרות כדי לחבר את <ph name="USB_DEVICE_NAME" /> אל Parallels Desktop או Linux</translation> <translation id="1729533290416704613">הגדרה זו גם קובעת איזה דף מוצג כשאתה מבצע חיפוש מסרגל הכתובות.</translation> @@ -810,7 +810,7 @@ <translation id="1906181697255754968">אתרים ניגשים בדרך כלל לקבצים ולתיקיות כדי לתמוך בתכונות כמו שמירה אוטומטית של עבודה</translation> <translation id="1906828677882361942">חסימת הגישה של כל האתרים אל יציאות טוריות</translation> <translation id="1909880997794698664">האם אתה בטוח שברצונך להשאיר מכשיר זה במצב קיוסק באופן קבוע?</translation> -<translation id="1910721550319506122">ברוך הבא!</translation> +<translation id="1910721550319506122">ברוכים הבאים!</translation> <translation id="1915073950770830761">Canary</translation> <translation id="1916502483199172559">דמות ברירת מחדל אדומה</translation> <translation id="1918141783557917887">&קטן יותר</translation> @@ -823,7 +823,7 @@ <translation id="1925017091976104802">יש ללחוץ על <ph name="MODIFIER_KEY_DESCRIPTION" /> כדי להדביק</translation> <translation id="1925021887439448749">הזן כתובת אינטרנט מותאמת אישית</translation> <translation id="1925124445985510535">בדיקת הבטיחות פעלה בשעה <ph name="TIME" /></translation> -<translation id="1926339101652878330">ההגדרות האלה נשלטות על פי מדיניות הארגון. צור קשר עם מנהל המערכת שלך לקבלת מידע נוסף.</translation> +<translation id="1926339101652878330">ההגדרות האלה נשלטות על פי מדיניות הארגון. יש ליצור קשר עם מנהל המערכת לקבלת מידע נוסף.</translation> <translation id="1927632033341042996">אצבע <ph name="NEW_FINGER_NUMBER" /></translation> <translation id="192817607445937251">קוד אימות לנעילת מסך</translation> <translation id="1928202201223835302">הזן את ה-PIN הישן</translation> @@ -867,6 +867,7 @@ <translation id="1976307821760494606">ניפוי באגים באמצעות ADB הושבת על-ידי <ph name="DOMAIN" />. פעולה זו תאפס את מכשיר <ph name="DEVICE_TYPE" /> שלך בתוך 24 שעות. כדאי לגבות קבצים שברצונך לשמור.</translation> <translation id="1977965994116744507">יש לקרב את הטלפון כדי לבטל את הנעילה של <ph name="DEVICE_TYPE" />.</translation> <translation id="1978006917103730774">עדכוני תוכנה ואבטחה עתידיים יותקנו באופן אוטומטי.</translation> +<translation id="1978057560491495741">הסרת הכתובת</translation> <translation id="1979095679518582070">השבתת התכונה הזו לא משפיעה על היכולת של המכשיר הזה לשלוח את המידע הדרוש עבור שירותים חיוניים, כמו אבטחה ועדכוני מערכת.</translation> <translation id="1979280758666859181">אתה עובר לערוץ עם גרסה ישנה יותר של <ph name="PRODUCT_NAME" />. שינוי הערוץ יוחל כאשר גרסת הערוץ תתאים לגרסה המותקנת כעת במכשיר שלך.</translation> <translation id="197989455406964291">KDC לא תומך בסוג ההצפנה</translation> @@ -956,14 +957,14 @@ <translation id="2096715839409389970">ניקוי קובצי cookie של צד שלישי</translation> <translation id="2097372108957554726">עליך להיכנס מחדש ל-Chrome כדי לרשום מכשירים חדשים</translation> <translation id="2098805196501063469">בדיקת הסיסמאות הנותרות</translation> -<translation id="2099172618127234427">אתה מאפשר תכונות ניפוי באגים במערכת ההפעלה של Chrome שיגדירו sshd daemon ויאפשרו אתחול מכונני USB.</translation> +<translation id="2099172618127234427">פעולה זו מאפשרת תכונות ניפוי באגים במערכת ההפעלה של Chrome שיגדירו sshd daemon ויאפשרו אתחול מכונני USB.</translation> <translation id="2099686503067610784">למחוק את אישור השרת "<ph name="CERTIFICATE_NAME" />"?</translation> <translation id="2100273922101894616">כניסה אוטומטית</translation> <translation id="2101225219012730419">גרסה:</translation> <translation id="211144231511833662">ניקוי הסוגים</translation> <translation id="2111670510994270194">כרטיסייה חדשה מצד שמאל</translation> <translation id="21133533946938348">הצמד כרטיסייה</translation> -<translation id="2113479184312716848">פתח &קובץ...</translation> +<translation id="2113479184312716848">פתיחת &קובץ...</translation> <translation id="2113921862428609753">גישה לפרטי רשות</translation> <translation id="2114326799768592691">טען מחדש את ה&מסגרת</translation> <translation id="2114896190328250491">צילום מאת <ph name="NAME" /></translation> @@ -1068,6 +1069,7 @@ <translation id="2224444042887712269">ההגדרה הזו שייכת ל-<ph name="OWNER_EMAIL" />.</translation> <translation id="2224551243087462610">ערוך את שם התיקייה</translation> <translation id="2225864335125757863">כדי להגן על החשבון, יש לשנות את הסיסמאות הבאות באופן מיידי:</translation> +<translation id="2226204716217107988">לעבור לפרופיל אחר?</translation> <translation id="2226449515541314767">האפשרות לשלוט שליטה מלאה על מכשירי MIDI נחסמה עבור אתר זה.</translation> <translation id="2226907662744526012">ביטול נעילה אוטומטי לאחר הזנת קוד האימות</translation> <translation id="222704500187107962">החריגה הזו תוסר באופן אוטומטי אחרי היציאה מסשן המצב האנונימי</translation> @@ -1134,9 +1136,10 @@ <translation id="2301382460326681002">ספריית הבסיס של ההרחבה אינה חוקית.</translation> <translation id="23030561267973084">"<ph name="EXTENSION_NAME" />" ביקש אישורים נוספים.</translation> <translation id="23055578400314116">יש לבחור שם משתמש</translation> -<translation id="2307462900900812319">הגדר את הרשת</translation> +<translation id="2307462900900812319">הגדרת רשת</translation> <translation id="230927227160767054">דף זה מעוניין להתקין handler של שירות.</translation> <translation id="2309620859903500144">נחסמה הגישה של האתר הזה אל חיישני התנועה או התאורה.</translation> +<translation id="2312219318583366810">כתובת ה-URL של הדף</translation> <translation id="2314165183524574721">הגדרת הרשאות הגישה הנוכחית מוסתרת</translation> <translation id="2314774579020744484">השפה שאליה דפים יתורגמו</translation> <translation id="2315414688463285945">קרתה שגיאה בקביעת ההגדרה של קובצי Linux. צריך לנסות שוב.</translation> @@ -1151,7 +1154,7 @@ <translation id="2323018538045954000">רשתות Wi-Fi שמורות</translation> <translation id="2325444234681128157">שמירת סיסמה</translation> <translation id="2326188115274135041">יש לאשר את קוד האימות כדי להפעיל את ביטול הנעילה האוטומטי</translation> -<translation id="2326931316514688470">&טען אפליקציה מחדש</translation> +<translation id="2326931316514688470">&טעינת האפליקציה מחדש</translation> <translation id="2327492829706409234">הפעל יישום</translation> <translation id="2328561734797404498">יש להפעיל מחדש את המכשיר כדי להשתמש ב-<ph name="APP_NAME" />.</translation> <translation id="2329597144923131178">יש להיכנס כדי לקבל גישה אל הסימניות, ההיסטוריה, הסיסמאות והגדרות נוספות בכל המכשירים שברשותך.</translation> @@ -1253,7 +1256,7 @@ <translation id="2445484935443597917">יצירת פרופיל חדש</translation> <translation id="2448312741937722512">סוג</translation> <translation id="2448810255793562605">סריקה אוטומטית של גישה באמצעות מתג</translation> -<translation id="2450223707519584812">לא תוכל להוסיף משתמשים מפני שהמפתחות של Google API חסרים. לפרטים, עבור אל <ph name="DETAILS_URL" />.</translation> +<translation id="2450223707519584812">לא תהיה אפשרות להוסיף משתמשים מפני שהמפתחות של Google API חסרים. לפרטים, יש לעבור אל <ph name="DETAILS_URL" />.</translation> <translation id="2450849356604136918">אין תצוגות פעילות</translation> <translation id="2451298179137331965">2x</translation> <translation id="2453860139492968684">סיום</translation> @@ -1292,7 +1295,7 @@ <translation id="2487067538648443797">הוספת סימניה חדשה</translation> <translation id="2487268545026948104">כדי לשחזר את הנתונים שלך, יש להתחבר לאינטרנט</translation> <translation id="2489829450872380594">בפעם הבאה, טלפון חדש יבטל את הנעילה של ה-<ph name="DEVICE_TYPE" /> הזה. אפשר להשבית את Smart Lock דרך ההגדרות.</translation> -<translation id="2489918096470125693">הוסף &תיקיה...</translation> +<translation id="2489918096470125693">הוספת &תיקייה...</translation> <translation id="2490481887078769936">'<ph name="FILE_NAME" />' הוסר מהרשימה</translation> <translation id="249113932447298600">מצטערים, המכשיר <ph name="DEVICE_LABEL" /> אינו נתמך בשלב זה.</translation> <translation id="2492461744635776704">המערכת מכינה את בקשת החתימה על אישור</translation> @@ -1443,7 +1446,7 @@ <translation id="2661714428027871023">במצב הטעינה המהירה גולשים מהר יותר וצורכים פחות נתונים. כדי לקבל מידע נוסף, אפשר ללחוץ כאן.</translation> <translation id="2662876636500006917">Chrome Web Store</translation> <translation id="2663302507110284145">שפה</translation> -<translation id="2665394472441560184">הוסף מילה חדשה</translation> +<translation id="2665394472441560184">מילה חדשה</translation> <translation id="2665647207431876759">פג תוקף</translation> <translation id="2665717534925640469">דף זה מוצג כעת במסך מלא והשבית את סמן העכבר שלך.</translation> <translation id="2665919335226618153">אוי, לא! היתה שגיאה במהלך הפרמוט.</translation> @@ -1496,7 +1499,7 @@ <translation id="2721695630904737430">מנהל המערכת שלך השבית את המשתמשים בפיקוח.</translation> <translation id="2724841811573117416">יומני WebRTC</translation> <translation id="2725200716980197196">קישוריות הרשת התחדשה</translation> -<translation id="2727633948226935816">אל תזכיר לי שוב</translation> +<translation id="2727633948226935816">אני לא רוצה לקבל עוד תזכורת</translation> <translation id="2727712005121231835">גודל ממשי</translation> <translation id="2729314457178420145">אני רוצה גם לנקות את נתוני הגלישה (<ph name="URL" />). פעולה זו עשויה לנתק אותך מ-Google.com. <ph name="LEARN_MORE" /></translation> @@ -1510,7 +1513,7 @@ <translation id="2732134891301408122">תוכן נוסף של <ph name="CURRENT_ELEMENT" /> מתוך <ph name="TOTAL_ELEMENTS" /></translation> <translation id="2734760316755174687">הפעולה תאפס גם אתרים שהם חלק מ-<ph name="SITE_GROUP_NAME" />.</translation> <translation id="2735712963799620190">לוח זמנים</translation> -<translation id="2737363922397526254">כווץ...</translation> +<translation id="2737363922397526254">כיווץ...</translation> <translation id="2738771556149464852">לא אחרי</translation> <translation id="2739191690716947896">ניפוי באגים</translation> <translation id="2739240477418971307">שינוי הגדרות הנגישות שלך</translation> @@ -1801,7 +1804,7 @@ <translation id="308268297242056490">URI</translation> <translation id="3082780749197361769">הכרטיסייה הזו משתמשת במצלמה או במיקרופון שלך.</translation> <translation id="3083193146044397360">האתר נחסם זמנית כדי להגן על האבטחה שלך</translation> -<translation id="3084548735795614657">שחרר כדי להתקין</translation> +<translation id="3084548735795614657">יש לשחרר כדי להתקין</translation> <translation id="3084771660770137092">ייתכן שהזיכרון של Chrome אזל או שתהליך שפעל על דף האינטרנט הופסק מסיבה כלשהי. כדי להמשיך, טען מחדש או עבור לדף אחר.</translation> <translation id="3084958266922136097">השבתת שומר המסך</translation> <translation id="3085412380278336437">האתר רשאי להשתמש במצלמה</translation> @@ -2052,7 +2055,7 @@ <translation id="3405763860805964263">...</translation> <translation id="3406290648907941085">מורשים להשתמש בנתונים או במכשירים של מציאות מדומה</translation> <translation id="3406396172897554194">חיפוש לפי שפה או לפי שם שיטת הקלט</translation> -<translation id="3406605057700382950">&הצג את סרגל הסימניות</translation> +<translation id="3406605057700382950">&הצגת סרגל הסימניות</translation> <translation id="340671561090997290">{NUM_EXTENSIONS,plural, =1{התוסף הזה עשוי להיות מסוכן}two{התוספים האלה עשויים להיות מסוכנים}many{התוספים האלה עשויים להיות מסוכנים}other{התוספים האלה עשויים להיות מסוכנים}}</translation> <translation id="3409785640040772790">מפות</translation> <translation id="3410832398355316179">כל הקבצים והנתונים המקומיים שמשויכים למשתמש הזה יימחקו לצמיתות אחרי שהמשתמש יוסר. <ph name="USER_EMAIL" /> יוכל עדיין להיכנס לחשבון מאוחר יותר.</translation> @@ -2144,7 +2147,7 @@ <translation id="3494769164076977169">שאל כאשר אתר מנסה להוריד קבצים באופן אוטומטי לאחר הקובץ הראשון (מומלץ)</translation> <translation id="3495496470825196617">מעבר למצב שינה בזמן טעינה</translation> <translation id="3495660573538963482">ההגדרות של Google Assistant</translation> -<translation id="3496213124478423963">התרחק</translation> +<translation id="3496213124478423963">התרחקות מתצוגה</translation> <translation id="3497560059572256875">שיתוף הדודל</translation> <translation id="3498215018399854026">לא הצלחנו ליצור קשר עם ההורה שלך. נסה שוב מאוחר יותר.</translation> <translation id="3500417806337761827">אירעה שגיאה בטעינת השיתוף. כבר נטענו יותר מדי שיתופי SMB.</translation> @@ -2192,7 +2195,7 @@ <translation id="3559262020195162408">התקנת המדיניות במכשיר נכשלה.</translation> <translation id="3559533181353831840">הזמן הנותר: בערך <ph name="TIME_LEFT" /></translation> <translation id="3560034655160545939">&בדיקת איות</translation> -<translation id="3562423906127931518">התהליך הזה עשוי להימשך כמה דקות. מגדיר את מאגר Linux.</translation> +<translation id="3562423906127931518">התהליך הזה עשוי להימשך כמה דקות. מתבצעת הגדרה של מאגר Linux.</translation> <translation id="3563432852173030730">לא ניתן היה להוריד את יישום הקיוסק.</translation> <translation id="3564334271939054422">ייתכן שתתבקש להיכנס לדף ההתחברות של רשת ה-Wi-Fi שבה אתה משתמש (<ph name="NETWORK_ID" />).</translation> <translation id="3564848315152754834">מפתח אבטחה בחיבור USB</translation> @@ -2284,7 +2287,7 @@ <translation id="3652817283076144888">מתבצע אתחול</translation> <translation id="3653160965917900914">התקני רשת לשיתוף קבצים</translation> <translation id="3653842108912548333">גישה ל-Assistant באמצעות Voice Match</translation> -<translation id="3653999333232393305">המשך לאפשר ל-<ph name="HOST" /> לגשת למיקרופון שלך</translation> +<translation id="3653999333232393305">להמשיך לאפשר ל-<ph name="HOST" /> לגשת למיקרופון</translation> <translation id="3654045516529121250">קרא את הגדרות הנגישות שלך</translation> <translation id="3655712721956801464">{NUM_FILES,plural, =1{גישה קבועה אל קובץ אחד.}two{גישה קבועה אל # קבצים.}many{גישה קבועה אל # קבצים.}other{גישה קבועה אל # קבצים.}}</translation> <translation id="3660234220361471169">לא אמין</translation> @@ -2341,6 +2344,7 @@ <translation id="3713047097299026954">אין פרטי כניסה במפתח האבטחה הזה</translation> <translation id="3714195043138862580">מכשיר ההדגמה הזה הועבר למצב ביטול של ניהול תצורה.</translation> <translation id="3714633008798122362">יומן אינטרנט</translation> +<translation id="3715954932774762075">אפליקציות ואתרים שזמינים במספר שפות ישתמשו בשפה הנתמכת הראשונה ברשימה הזו. ההעדפות האלה מסונכרנות עם ההגדרות של הדפדפן. <ph name="BEGIN_LINK_LEARN_MORE" />מידע נוסף<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">דף הבית</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">ההגדרות שלך ב-Google</translation> @@ -2501,6 +2505,7 @@ <translation id="3882165008614329320">סרטון קיים ממצלמה או מקובץ</translation> <translation id="3886446263141354045">הבקשה שלך לגשת לאתר הזה נשלחה אל <ph name="NAME" /></translation> <translation id="3888550877729210209">כתיבת הערות בעזרת <ph name="LOCK_SCREEN_APP_NAME" /></translation> +<translation id="3890064827463908288">צריך להפעיל סנכרון Chrome כדי להשתמש בסנכרון Wi-Fi</translation> <translation id="3892414795099177503">הוסף OpenVPN / L2TP...</translation> <translation id="3893536212201235195">קרא ושנה את הגדרות הנגישות שלך</translation> <translation id="3893630138897523026">ChromeVox (משוב קולי)</translation> @@ -2519,9 +2524,9 @@ <translation id="3900966090527141178">ייצוא סיסמאות</translation> <translation id="3901991538546252627">מתחבר אל: <ph name="NAME" /></translation> <translation id="3904326018476041253">שירותי מיקום</translation> -<translation id="3905761538810670789">תקן את היישום</translation> +<translation id="3905761538810670789">תיקון האפליקציה</translation> <translation id="3908393983276948098"><ph name="PLUGIN_NAME" /> לא מעודכן</translation> -<translation id="3908501907586732282">הפעל תוסף</translation> +<translation id="3908501907586732282">הפעלת תוסף</translation> <translation id="3909791450649380159">גז&ור</translation> <translation id="39103738135459590">קוד הפעלה</translation> <translation id="3911824782900911339">דף 'כרטיסייה חדשה'</translation> @@ -2588,7 +2593,7 @@ <translation id="3967919079500697218">היכולת לצלם צילומי מסך הושבתה על-ידי מנהל המערכת שלך.</translation> <translation id="3969092967100188979">פועל, בנדידה</translation> <translation id="3970114302595058915">מזהה</translation> -<translation id="397105322502079400">מחשב...</translation> +<translation id="397105322502079400">מתבצע חישוב...</translation> <translation id="3971764089670057203">טביעות אצבעות במפתח האבטחה הזה</translation> <translation id="3973660817924297510">המערכת בודקת סיסמאות (<ph name="CHECKED_PASSWORDS" /> מתוך <ph name="TOTAL_PASSWORDS" />)…</translation> <translation id="3975565978598857337">יצירת הקשר עם השרת של התחום נכשלה</translation> @@ -2706,7 +2711,7 @@ <translation id="4112194537011183136"><ph name="DEVICE_NAME" /> (אופליין)</translation> <translation id="4115002065223188701">הרשת מחוץ לטווח</translation> <translation id="4115080753528843955">שירותי תוכן מסוימים משתמשים במזהים ייחודיים כדי להעניק הרשאת גישה לתוכן מוגן</translation> -<translation id="4115378294792113321">מגנטה</translation> +<translation id="4115378294792113321">מג'נטה</translation> <translation id="4118579674665737931">אפשר להפעיל מחדש את המכשיר ולנסות שוב.</translation> <translation id="4120388883569225797">לא ניתן לאפס את מפתח האבטחה הזה</translation> <translation id="4120817667028078560">הנתיב ארוך מדי</translation> @@ -2763,7 +2768,7 @@ <translation id="420283545744377356">השבתה של שומר המסך</translation> <translation id="4206144641569145248">חייזר</translation> <translation id="4206323443866416204">דוח משוב</translation> -<translation id="4208390505124702064">חפש ב-<ph name="SITE_NAME" /></translation> +<translation id="4208390505124702064">חיפוש ב-<ph name="SITE_NAME" /></translation> <translation id="4209092469652827314">גדול</translation> <translation id="4209251085232852247">מושבת</translation> <translation id="4209464433672152343">מסמכים <ph name="BEGIN_LINK_HELP" />נשלחים אל Google<ph name="END_LINK_HELP" /> כדי להכין אותם להדפסה. ב<ph name="BEGIN_LINK_DASHBOARD" />מרכז השליטה של Google Cloud Print<ph name="END_LINK_DASHBOARD" /> אפשר להציג, לערוך ולנהל את המדפסות ואת היסטוריית ההדפסות.</translation> @@ -2831,7 +2836,7 @@ <translation id="4289540628985791613">סקירה כללית</translation> <translation id="4295072614469448764">האפליקציה זמינה במסוף שלך. בחלק מהמקרים מופיע סמל במרכז האפליקציות.</translation> <translation id="4295979599050707005">יש להיכנס שוב כדי לאשר את השימוש בחשבון שלך, <ph name="USER_EMAIL" />, ביחד עם אתרים, אפליקציות ותוספים ב-Chrome וב-Google Play. ניתן גם להסיר את החשבון הזה. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation> -<translation id="4296575653627536209">הוסף משתמש בפיקוח</translation> +<translation id="4296575653627536209">הוספת משתמש בפיקוח</translation> <translation id="4297219207642690536">הפעלה מחדש ואתחול</translation> <translation id="4297813521149011456">סיבוב מסך</translation> <translation id="4299596693977045093">הגדרת eSIM</translation> @@ -3157,7 +3162,7 @@ <translation id="4665014895760275686">יצרן</translation> <translation id="4665446389743427678">כל הנתונים שמאוחסנים על ידי <ph name="SITE" /> יימחקו.</translation> <translation id="4666911709726371538">עוד אפליקציות</translation> -<translation id="4668721319092543482">לחץ כדי להפעיל את <ph name="PLUGIN_NAME" /></translation> +<translation id="4668721319092543482">יש ללחוץ כדי להפעיל את <ph name="PLUGIN_NAME" /></translation> <translation id="4670064810192446073">מציאות מדומה</translation> <translation id="4671265665487288124">אתרים יכולים לבקש הרשאה להוריד מספר קבצים באופן אוטומטי (מומלץ)</translation> <translation id="46733273239502219">המערכת תמחק גם נתונים שנשמרו במצב אופליין באפליקציות מותקנות</translation> @@ -3187,7 +3192,7 @@ <translation id="4707302005824653064">המנהל (<ph name="CUSTODIAN_EMAIL" />) יכול לבדוק את נתוני השימוש וההיסטוריה באתר chrome.com.</translation> <translation id="4707579418881001319">L2TP/IPSec + אישור משתמש</translation> <translation id="4708794300267213770">הצג את מסך הנעילה ביציאה ממצב שינה</translation> -<translation id="4708849949179781599">צא מ-<ph name="PRODUCT_NAME" /></translation> +<translation id="4708849949179781599">יציאה מ-<ph name="PRODUCT_NAME" /></translation> <translation id="4711638718396952945">שחזור הגדרות</translation> <translation id="4716483597559580346">ביצוע Powerwash להגברת האבטחה</translation> <translation id="471880041731876836">אין לך הרשאה להיכנס אל האתר הזה</translation> @@ -3207,7 +3212,7 @@ <translation id="473546211690256853">חשבון זה מנוהל על ידי <ph name="DOMAIN" /></translation> <translation id="4735803855089279419">המערכת לא הצליחה לקבוע את המזהים של המכשיר הזה.</translation> <translation id="4736292055110123391">סנכרון של הסימניות, הסיסמאות, ההיסטוריה ונתונים נוספים בכל המכשירים שברשותך</translation> -<translation id="473775607612524610">עדכן</translation> +<translation id="473775607612524610">עדכון</translation> <translation id="473936925429402449">נבחר, תוכן נוסף <ph name="CURRENT_ELEMENT" /> מתוך <ph name="TOTAL_ELEMENTS" /></translation> <translation id="4739639199548674512">כרטיסים</translation> <translation id="4742334355511750246">לא מורשים להציג תמונות</translation> @@ -3437,7 +3442,7 @@ <translation id="5033137252639132982">לא מורשים להשתמש בחיישני תנועה</translation> <translation id="5033266061063942743">צורות גיאומטריות</translation> <translation id="5036662165765606524">אל תאפשר לאף אתר להוריד קבצים מרובים באופן אוטומטי</translation> -<translation id="5037676449506322593">בחר הכל</translation> +<translation id="5037676449506322593">הכול</translation> <translation id="5038022729081036555">מחר תהיה לך אפשרות להשתמש באפליקציה למשך <ph name="TIME_LIMIT" />.</translation> <translation id="5038863510258510803">מפעיל...</translation> <translation id="5039696241953571917">הצגה וניהול של סיסמאות שמורות בחשבון Google</translation> @@ -3497,7 +3502,7 @@ <translation id="5111646998522066203">יציאה ממצב גלישה בסתר</translation> <translation id="5111692334209731439">&מנהל הסימניות</translation> <translation id="5112577000029535889">&כלים עבור מפתחים</translation> -<translation id="5113739826273394829">אם תלחץ על סמל זה, תנעל ידנית את <ph name="DEVICE_TYPE" /> זה. בפעם הבאה, תצטרך להקליד את הסיסמה כדי להיכנס.</translation> +<translation id="5113739826273394829">לחיצה על סמל זה תנעל ידנית את <ph name="DEVICE_TYPE" />. בפעם הבאה, תידרש סיסמה כדי להיכנס.</translation> <translation id="51143538739122961">צריך להכניס את מפתח האבטחה ולגעת בו</translation> <translation id="5115309401544567011">חבר את ה-<ph name="DEVICE_TYPE" /> למקור חשמל.</translation> <translation id="5115338116365931134">SSO</translation> @@ -3505,7 +3510,7 @@ <translation id="5117139026559873716">יש לנתק את הטלפון מה-<ph name="DEVICE_TYPE" />. הם לא יחוברו יותר באופן אוטומטי.</translation> <translation id="5117930984404104619">מעקב אחר ההתנהגות של תוספים אחרים, כולל כתובות אתרים שמבקרים בהם</translation> <translation id="5119173345047096771">Mozilla Firefox</translation> -<translation id="5121130586824819730">הדיסק הקשיח מלא. שמור במיקום אחר או פנה מקום בדיסק הקשיח.</translation> +<translation id="5121130586824819730">הדיסק הקשיח מלא. יש לשמור במיקום אחר או לפנות מקום בדיסק הקשיח.</translation> <translation id="5123433949759960244">כדורסל</translation> <translation id="5125751979347152379">כתובת אתר לא חוקית.</translation> <translation id="5126611267288187364">צפייה בשינויים</translation> @@ -3542,7 +3547,7 @@ <translation id="5159094275429367735">הגדרת Crostini</translation> <translation id="5159419673777902220">ההרשאות של התוסף הושבתו על ידי ההורה שלך</translation> <translation id="5160634252433617617">מקלדת פיזית</translation> -<translation id="5160857336552977725">היכנס אל ה-<ph name="DEVICE_TYPE" /></translation> +<translation id="5160857336552977725">יש להיכנס אל ה-<ph name="DEVICE_TYPE" /></translation> <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> נחסם</translation> <translation id="5166596762332123936"><ph name="PLUGIN_NAME" /> נחסם כי הוא לא מעודכן</translation> <translation id="5170568018924773124">הצג בתיקייה</translation> @@ -3642,7 +3647,7 @@ <translation id="5286194356314741248">סורק</translation> <translation id="5286252187236914003">L2TP/IPsec</translation> <translation id="5287425679749926365">החשבונות שלך</translation> -<translation id="5288678174502918605">פתח &מחדש את הכרטיסייה שנסגרה</translation> +<translation id="5288678174502918605">פתיחה &מחדש של הכרטיסייה שנסגרה</translation> <translation id="52895863590846877">הדף לא ב<ph name="LANGUAGE" /></translation> <translation id="52912272896845572">קובץ המפתח הפרטי אינו חוקי</translation> <translation id="529175790091471945">פרמט מכשיר זה</translation> @@ -3716,7 +3721,7 @@ <translation id="5377721922656071359">{COUNT,plural, =1{<ph name="ATTACHMENTS" /> נשלח בהצלחה אל <ph name="DEVICE_NAME" />}two{<ph name="ATTACHMENTS" /> נשלחו בהצלחה אל <ph name="DEVICE_NAME" />}many{<ph name="ATTACHMENTS" /> נשלחו בהצלחה אל <ph name="DEVICE_NAME" />}other{<ph name="ATTACHMENTS" /> נשלחו בהצלחה אל <ph name="DEVICE_NAME" />}}</translation> <translation id="537813040452600081">דפים שתעיין בהם בחלון זה לא יופיעו בהיסטוריה של הדפדפן, והם לא ישאירו במחשב עקבות אחרים, כגון קובצי Cookie, לאחר שתצא. קבצים שתוריד וסימניות שתיצור לא יישמרו.</translation> <translation id="5379140238605961210">המשך לחסום גישה למיקרופון</translation> -<translation id="5382591305415226340">נהל קישורים נתמכים</translation> +<translation id="5382591305415226340">ניהול קישורים נתמכים</translation> <translation id="5383377866517186886">המצלמה מושבתת בהעדפות המערכת של Mac</translation> <translation id="5383740867328871413">קבוצה ללא שם – <ph name="GROUP_CONTENTS" /> – <ph name="COLLAPSED_STATE" /></translation> <translation id="5388885445722491159">מתואם</translation> @@ -3758,7 +3763,7 @@ <translation id="5431825016875453137">OpenVPN / L2TP</translation> <translation id="543338862236136125">עריכת סיסמה</translation> <translation id="5434065355175441495">הצפנת RSA של PKCS #1</translation> -<translation id="5435779377906857208">לאשר תמיד – ל-<ph name="HOST" /> תהיה גישה למיקום שלך</translation> +<translation id="5435779377906857208">לאשר תמיד ל-<ph name="HOST" /> גישה למיקום</translation> <translation id="5436492226391861498">ממתין ל-Proxy Tunnel...</translation> <translation id="5436510242972373446">חפש ב-<ph name="SITE_NAME" />:</translation> <translation id="543806387003274181">יש לשמור את הקבצים וליצור עכשיו חשבון חדש.</translation> @@ -3769,9 +3774,10 @@ <translation id="5446983216438178612">הצג אישורים של ארגון</translation> <translation id="5448293924669608770">אופס. משהו השתבש בכניסה לחשבון</translation> <translation id="5449551289610225147">סיסמה לא חוקית</translation> -<translation id="5449588825071916739">צור סימניה לכל הכרטיסיות</translation> +<translation id="5449588825071916739">הוספת סימנייה לכל הכרטיסיות</translation> <translation id="5449716055534515760">סגירת ח&לון</translation> <translation id="5452974209916053028">סשן אנונימי נוכחי: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">הזזת את בועת הכתוביות %<ph name="POSITION_ON_SCREEN_FROM_LEFT" /> הצידה ו-%<ph name="POSITION_ON_SCREEN_FROM_TOP" /> למטה</translation> <translation id="5454166040603940656">עם <ph name="PROVIDER" /></translation> <translation id="5457113250005438886">לא חוקי</translation> <translation id="5457459357461771897">קריאה ומחיקה של קובצי תמונות, מוזיקה ומדיה מסוגים נוספים מהמחשב שלך</translation> @@ -3915,6 +3921,7 @@ <translation id="5602765853043467355">ניקוי הסימניות, ההיסטוריה, הסיסמאות ונתונים נוספים מהמכשיר הזה</translation> <translation id="5605623530403479164">מנועי חיפוש אחרים</translation> <translation id="5605758115928394442">הודעה נשלחה לטלפון שלך כדי לאשר את זהותך.</translation> +<translation id="560834977503641186">מידע נוסף על סנכרון Wi-Fi</translation> <translation id="5608580678041221894">הקש על המקשים הבאים כדי לשנות או להזיז את אזור החיתוך</translation> <translation id="5609231933459083978">נראה שהיישום אינו חוקי.</translation> <translation id="5610038042047936818">מעבר למצב מצלמה</translation> @@ -3945,7 +3952,7 @@ <translation id="5636996382092289526">כדי להשתמש ב-<ph name="NETWORK_ID" /> ייתכן שראשית יהיה עליך <ph name="LINK_START" />להיכנס לדף הכניסה של הרשת<ph name="LINK_END" />, שייפתח אוטומטית בעוד כמה שניות. אם הוא לא נפתח, לא ניתן יהיה להשתמש ברשת.</translation> <translation id="5637476008227280525">הפעלת נתונים סלולריים</translation> <translation id="5638309510554459422">תוספים ועיצובים זמינים ב<ph name="BEGIN_LINK" />חנות האינטרנט של Chrome<ph name="END_LINK" /></translation> -<translation id="5639549361331209298">טען מחדש את הדף, לחץ לחיצה ארוכה כדי להציג אפשרויות נוספות</translation> +<translation id="5639549361331209298">יש לטעון מחדש את הדף, אפשר ללחוץ לחיצה ארוכה כדי להציג אפשרויות נוספות</translation> <translation id="5640133431808313291">ניהול מפתחות אבטחה</translation> <translation id="5642508497713047">חותם CRL</translation> <translation id="5643321261065707929">רשת עם חיוב לפי שימוש בנתונים</translation> @@ -4105,6 +4112,7 @@ <translation id="5841270259333717135">הגדרת Ethernet</translation> <translation id="5842497610951477805">הפעלה של Bluetooth</translation> <translation id="5843706793424741864">פרנהייט</translation> +<translation id="584451707753263735">מוצגות כתוביות מיידיות. בהקשה על F6 ניתן להזיז את המיקוד</translation> <translation id="5844574845205796324">קבלת הצעות לתוכן חדש ומעניין</translation> <translation id="5846200638699387931">שגיאה בתחביר המציין את הקשר: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">התקנה של עדכונים ואפליקציות. המשך מהווה את הסכמתך לכך שהמכשיר הזה עשוי גם להוריד ולהתקין באופן אוטומטי עדכונים ואפליקציות מ-Google, מהספק שלך ומיצרן המכשיר, וייתכן שהדבר יתבצע תוך שימוש בחבילת הגלישה. חלק מהאפליקציות האלו עשויות לכלול רכישות מהאפליקציה.</translation> @@ -4125,14 +4133,14 @@ <translation id="5860033963881614850">כבוי</translation> <translation id="5860491529813859533">הפעל</translation> <translation id="5860494867054883682">מעדכן את המכשיר שלך לערוץ <ph name="CHANNEL_NAME" /> (<ph name="PROGRESS_PERCENT" />)</translation> -<translation id="5862109781435984885">הצג כלי סטיילוס במדף</translation> +<translation id="5862109781435984885">הצגת כלי סטיילוס במדף</translation> <translation id="5862319196656206789">הגדרה של מכשירים מחוברים</translation> <translation id="5863445608433396414">הפעל תכונות ניפוי באגים</translation> <translation id="5864195618110239517">שימוש בחיבור עם חיוב לפי שימוש בנתונים</translation> <translation id="5864471791310927901">חיפוש DHCP נכשל</translation> <translation id="5864754048328252126">מה לעשות בעת חוסר פעילות בזמן טעינה</translation> <translation id="5865508026715185451">האפליקציה <ph name="APP_NAME" /> תושהה בקרוב</translation> -<translation id="586567932979200359">אתה מפעיל את <ph name="PRODUCT_NAME" /> מתמונת הדיסק שלו. התקנתו במחשב מאפשרת לך להפעיל אותו ללא תמונת הדיסק, ומבטיחה שיישאר מעודכן.</translation> +<translation id="586567932979200359">מתבצעת הפעלה של <ph name="PRODUCT_NAME" /> מתמונת הדיסק שלו. התקנתו במחשב מאפשרת לך להפעיל אותו ללא תמונת הדיסק, ומבטיחה שיישאר מעודכן.</translation> <translation id="5865733239029070421">שליחת דוחות קריסה וסטטיסטיקת שימוש אל Google באופן אוטומטי</translation> <translation id="5866840822086176774">חזק מאוד</translation> <translation id="5867841422488265304">יש להזין ביטוי לחיפוש או כתובת אינטרנט</translation> @@ -4161,8 +4169,8 @@ <translation id="5906655207909574370">העדכון כמעט הושלם! הפעל מחדש את המכשיר כדי לסיים את העדכון.</translation> <translation id="5906732635754427568">המערכת תסיר מהמכשיר הזה נתונים המשויכים לאפליקציה הזו.</translation> <translation id="5908695239556627796">מהירות גלילת העכבר</translation> -<translation id="5908769186679515905">חסום הפעלה של Flash על-ידי אתרים</translation> -<translation id="5910363049092958439">שמ&ור תמונה כ...</translation> +<translation id="5908769186679515905">חסימת הפעלה של Flash על-ידי אתרים</translation> +<translation id="5910363049092958439">שמ&ירת תמונה בשם...</translation> <translation id="5910726859585389579"><ph name="DEVICE_TYPE" /> במצב לא מקוון</translation> <translation id="5911533659001334206">מציג קיצורי הדרך</translation> <translation id="5914724413750400082">מודולוס (<ph name="MODULUS_NUM_BITS" /> ביטים): @@ -4183,7 +4191,7 @@ התמונה תופיע במסך הכניסה ובמסך הנעילה ב-Chromebook.</translation> <translation id="5925147183566400388">מצביע על הצהרת הליכי אישור</translation> <translation id="592880897588170157">הורד קובצי PDF במקום לפתוח אותם ב-Chrome באופן אוטומטי</translation> -<translation id="5931146425219109062">לקרוא ולשנות את כל הנתונים שלך באתרים שבהם אתה מבקר</translation> +<translation id="5931146425219109062">לקרוא ולשנות את כל הנתונים שלך באתרים שבהם ביקרת</translation> <translation id="5932124097031739492">מערכת Linux שודרגה בהצלחה.</translation> <translation id="5932224571077948991">באתר מוצגות מודעות מפריעות או מטעות</translation> <translation id="59324397759951282">התקן USB של <ph name="MANUFACTURER_NAME" /></translation> @@ -4295,7 +4303,7 @@ <translation id="6064217302520318294">נעילת מסך</translation> <translation id="6065289257230303064">תכונות ספרייה של נושא אישור</translation> <translation id="6069464830445383022">הכניסה ל-Chromebook תתבצע באמצעות חשבון Google</translation> -<translation id="6069671174561668781">הגדר טפט</translation> +<translation id="6069671174561668781">הגדרת טפט</translation> <translation id="6071181508177083058">אשר סיסמה</translation> <translation id="6071576563962215370">המערכת לא הצליחה ליצור את נעילת המאפיינים של המכשיר בזמן ההתקנה.</translation> <translation id="6072442788591997866">אסור להשתמש באפליקציה <ph name="APP_NAME" /> במכשיר הזה. יש לפנות אל מנהל המערכת. קוד שגיאה: <ph name="ERROR_CODE" />.</translation> @@ -4314,7 +4322,7 @@ <translation id="6078752646384677957">יש לבדוק את עוצמת הקול למיקרופון ולאודיו.</translation> <translation id="6078769373519310690">"<ph name="CHROME_EXTENSION_NAME" />" רוצה להתחבר למכשיר HID</translation> <translation id="6080515710685820702">האם זהו מחשב משותף? כדאי לפתוח חלון גלישה בסתר.</translation> -<translation id="6080689532560039067">בדוק את שעת המערכת</translation> +<translation id="6080689532560039067">יש לבדוק את שעת המערכת</translation> <translation id="6082651258230788217">הצג בסרגל הכלים</translation> <translation id="608531959444400877"><ph name="WINDOW_TITLE" /> – חלק מקבוצה ללא שם</translation> <translation id="6085886413119427067">קביעת אופן ההתחברות לאתרים באמצעות קישור מאובטח</translation> @@ -4470,7 +4478,7 @@ <translation id="6262371516389954471">הגיבויים נשמרים ב-Google ומוצפנים באמצעות הסיסמה של חשבון Google שלך.</translation> <translation id="6263082573641595914">גרסת רשות אישורים של Microsoft</translation> <translation id="6263284346895336537">לא קריטי</translation> -<translation id="6264365405983206840">בחר &הכל</translation> +<translation id="6264365405983206840">בחירת &הכול</translation> <translation id="6265687851677020761">הסרת היציאה</translation> <translation id="6267166720438879315">בחר אישור כדי לאמת את עצמך מול <ph name="HOST_NAME" /></translation> <translation id="6267547857941397424">רשת <ph name="NETWORK_INDEX" /> מתוך <ph name="NETWORK_COUNT" />, <ph name="PHONE_NAME" />, עוצמת האות: <ph name="SIGNAL_STRENGTH" />%, סוללת הטלפון: <ph name="BATTERY_STATUS" />%, התחברות</translation> @@ -4596,7 +4604,7 @@ <translation id="6412673304250309937">המערכת בודקת כתובות URL ששמורות ב-Chrome ומכילות רשימות של אתרים לא בטוחים. אם אתר מסוים מנסה לגנוב סיסמה או אם המערכת מזהה הורדה של קובץ מזיק, Chrome עשוי גם לשלוח כתובות URL לבדיקה באמצעות 'גלישה בטוחה'. הנתונים שנשלחים לבדיקה כוללים ביטים מהתוכן של הדף.</translation> <translation id="6412931879992742813">חלון חדש של גלישה בסתר</translation> <translation id="641469293210305670">התקנת עדכונים ואפליקציות</translation> -<translation id="6414888972213066896">שאלת אחד מהוריך אם אתה יכול לבקר באתר הזה</translation> +<translation id="6414888972213066896">שאלת את אחד ההורים אם מותר לך להיכנס לאתר הזה</translation> <translation id="6415900369006735853">חיבור לאינטרנט דרך הטלפון</translation> <translation id="6416743254476733475">צריך להתיר או לחסום במחשב.</translation> <translation id="6417265370957905582">Google Assistant</translation> @@ -4680,7 +4688,7 @@ <translation id="6513247462497316522">Google Chrome ישתמש בנתונים לנייד אם אתה לא מחובר לרשת אחרת.</translation> <translation id="6514010653036109809">מכשיר זמין:</translation> <translation id="6514565641373682518">דף זה השבית את סמן העכבר שלך.</translation> -<translation id="6518014396551869914">הע&תק תמונה</translation> +<translation id="6518014396551869914">הע&תקת תמונה</translation> <translation id="6518133107902771759">אימות</translation> <translation id="651942933739530207">האם ברצונך ש-<ph name="APP_NAME" /> ישתף את המסך ואת פלט האודיו שלך?</translation> <translation id="6519437681804756269">[<ph name="TIMESTAMP" />] @@ -4807,7 +4815,7 @@ <translation id="6681668084120808868">צלם תמונה</translation> <translation id="6684827949542560880">המערכת מורידה את העדכון האחרון</translation> <translation id="668599234725812620">פתח את Google Play</translation> -<translation id="6686490380836145850">סגור את הכרטיסיות משמאל</translation> +<translation id="6686490380836145850">סגירת הכרטיסיות משמאל</translation> <translation id="6686817083349815241">שמור את הסיסמה שלך</translation> <translation id="6688285987813868112">יצירת קוד QR לתמונה הזו</translation> <translation id="6690659332373509948">לא ניתן לנתח את הקובץ: <ph name="FILE_NAME" /></translation> @@ -5114,7 +5122,7 @@ <translation id="7036706669646341689">מומלץ לפנות שטח אחסון של <ph name="DISK_SIZE" /> להתקנת Linux. כדי לפנות שטח אחסון, יש למחוק קבצים מהמכשיר.</translation> <translation id="7037509989619051237">טקסט לתצוגה מקדימה</translation> <translation id="7038632520572155338">גישה באמצעות מתג</translation> -<translation id="7039326228527141150">גש למכשירי USB של <ph name="VENDOR_NAME" /></translation> +<translation id="7039326228527141150">גישה למכשירי USB של <ph name="VENDOR_NAME" /></translation> <translation id="7039912931802252762">כניסה של כרטיס חכם של Microsoft </translation> <translation id="7039951224110875196">יצירת חשבון Google לילד או לילדה</translation> <translation id="7040230719604914234">ספק</translation> @@ -5131,7 +5139,7 @@ <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> -<translation id="7059858479264779982">הגדר להפעלה אוטומטית</translation> +<translation id="7059858479264779982">הגדרה להפעלה אוטומטית</translation> <translation id="7059893117020417984">כדי לגלוש באופן פרטי, יש ללחוץ על תפריט סמל הנקודות ולפתוח חלון גלישה בסתר</translation> <translation id="7062222374113411376">אתרים שנסגרו לאחרונה יוכלו לסיים שליחה וקבלה של נתונים (מומלץ)</translation> <translation id="7063129466199351735">מעבד קיצורי דרך...</translation> @@ -5174,7 +5182,7 @@ <translation id="7102832101143475489">תם פרק הזמן שהוקצב לבקשה</translation> <translation id="710640343305609397">פתיחת הגדרות רשת</translation> <translation id="7108338896283013870">הסתרה</translation> -<translation id="7108668606237948702">הזן</translation> +<translation id="7108668606237948702">הזנת מפתח</translation> <translation id="7109543803214225826">קיצור הדרך הוסר</translation> <translation id="7110644433780444336">{NUM_TABS,plural, =1{הוספת כרטיסייה לקבוצה}two{הוספת כרטיסיות לקבוצה}many{הוספת כרטיסיות לקבוצה}other{הוספת כרטיסיות לקבוצה}}</translation> <translation id="7113502843173351041">לדעת את כתובת האימייל שלך</translation> @@ -5205,8 +5213,8 @@ <translation id="713888829801648570">מצטערים, לא ניתן לאמת את סיסמתך מכיוון שאתה במצב לא מקוון.</translation> <translation id="7139627972753429585">המיקרופון בשימוש על ידי <ph name="APP_NAME" /></translation> <translation id="7140928199327930795">אין מכשירים זמינים נוספים.</translation> -<translation id="7141105143012495934">הכניסה נכשלה מפני שלא ניתן היה לאחזר את פרטי החשבון. צור קשר עם מנהל המערכת או נסה שוב.</translation> -<translation id="7143207342074048698">מתחבר</translation> +<translation id="7141105143012495934">הכניסה נכשלה מפני שלא ניתן היה לאחזר את פרטי החשבון. יש ליצור קשר עם מנהל המערכת או לנסות שוב.</translation> +<translation id="7143207342074048698">מתבצע חיבור</translation> <translation id="7144878232160441200">נסה שוב</translation> <translation id="714876143603641390">קישוריות LAN</translation> <translation id="7149893636342594995">מהיום האחרון</translation> @@ -5325,7 +5333,7 @@ <translation id="7297443947353982503">שם משתמש/סיסמה שגויים, או שאימות EAP נכשל</translation> <translation id="729761647156315797">בחירת שפה ומקלדת</translation> <translation id="7297726121602187087">ירוק כהה</translation> -<translation id="7299337219131431707">הפעל גלישה כאורח</translation> +<translation id="7299337219131431707">הפעלה של גלישה כאורח</translation> <translation id="730289542559375723">{NUM_APPLICATIONS,plural, =1{האפליקציה הזו עלולה למנוע מ-Chrome לפעול כמו שצריך.}two{האפליקציות האלה עלולות למנוע מ-Chrome לפעול כמו שצריך.}many{האפליקציות האלה עלולות למנוע מ-Chrome לפעול כמו שצריך.}other{האפליקציות האלה עלולות למנוע מ-Chrome לפעול כמו שצריך.}}</translation> <translation id="7303281435234579599">משהו השתבש במהלך הגדרת מצב ההדגמה.</translation> <translation id="7303900363563182677">האתר הזה לא יכול לגשת אל טקסט ותמונות שהועתקו ללוח העריכה</translation> @@ -5359,10 +5367,11 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> הוא במסך מלא כעת.</translation> <translation id="7340650977506865820">האתר משתף את המסך שלך</translation> <translation id="7341834142292923918">רוצה גישה לאתר הזה</translation> -<translation id="7345706641791090287">אשר את הסיסמה שלך</translation> +<translation id="7343372807593926528">יש לתאר את הבעיה לפני שליחת המשוב.</translation> +<translation id="7345706641791090287">עליך לאשר את הסיסמה שלך</translation> <translation id="7346909386216857016">בסדר, הבנתי</translation> <translation id="7347452120014970266">הפעולה הזו תמחק את כל הנתונים וקובצי ה-cookie שאוחסנו על-ידי <ph name="ORIGIN_NAME" /> ועל-ידי האפליקציות שהותקנו ממקור זה</translation> -<translation id="7347751611463936647">כדי להשתמש בתוסף זה, הקלד "<ph name="EXTENSION_KEYWORD" />", לאחר מכן הקש TAB ולאחר מכן הקלד את הפקודה או מונח החיפוש.</translation> +<translation id="7347751611463936647">כדי להשתמש בתוסף הזה, יש להקליד "<ph name="EXTENSION_KEYWORD" />" ואז "TAB", ולאחר מכן להקליד את הפקודה או את מונח החיפוש.</translation> <translation id="7347943691222276892">אפשר ללחוץ על הלחצן הזה כדי לצאת מדף המשנה <ph name="SUBPAGE_TITLE" />.</translation> <translation id="7348093485538360975">מקלדת על המסך</translation> <translation id="7352651011704765696">משהו השתבש</translation> @@ -5400,7 +5409,7 @@ <translation id="7388044238629873883">כמעט סיימת!</translation> <translation id="7388209873137778229">רק מכשירים נתמכים מוצגים.</translation> <translation id="7392118418926456391">סריקת וירוסים נכשלה</translation> -<translation id="7392915005464253525">פ&תח מחדש חלון סגור</translation> +<translation id="7392915005464253525">פ&תיחה מחדש של חלון שנסגר</translation> <translation id="7393073300870882456">{COUNT,plural, =1{פריט אחד הועתק}two{הועתקו {COUNT} פריטים}many{הועתקו {COUNT} פריטים}other{הועתקו {COUNT} פריטים}}</translation> <translation id="7396017167185131589">התיקיות המשותפות יופיעו כאן</translation> <translation id="7396845648024431313"><ph name="APP_NAME" /> יופעל עם אתחול המערכת וימשיך לפעול ברקע גם כאשר תסגור את כל החלונות האחרים של <ph name="PRODUCT_NAME" />.</translation> @@ -5467,7 +5476,7 @@ <translation id="7465522323587461835">{NUM_OPEN_TABS,plural, =1{כרטיסייה פתוחה אחת. עליך ללחוץ כדי להחליף את המצב של שורת הכרטיסיות}two{# כרטיסיות פתוחות. עליך ללחוץ כדי להחליף את המצב של שורת הכרטיסיות}many{# כרטיסיות פתוחות. עליך ללחוץ כדי להחליף את המצב של שורת הכרטיסיות}other{# כרטיסיות פתוחות. עליך ללחוץ כדי להחליף את המצב של שורת הכרטיסיות}}</translation> <translation id="7465635034594602553">משהו השתבש. יש להמתין כמה דקות ולהפעיל את <ph name="APP_NAME" /> מחדש.</translation> <translation id="7465778193084373987">כתובת אתר לביטול אישור של Netscape</translation> -<translation id="7469894403370665791">התחבר אוטומטית לרשת זו.</translation> +<translation id="7469894403370665791">התחברות באופן אוטומטי לרשת זו.</translation> <translation id="7470424110735398630">מורשים לראות את הלוח</translation> <translation id="747114903913869239">שגיאה: לא ניתן לפענח תוסף</translation> <translation id="7473891865547856676">לא, תודה</translation> @@ -5476,7 +5485,7 @@ <translation id="7475671414023905704">כתובת אתר לסיסמה שאבדה של Netscape</translation> <translation id="7476454130948140105">הסוללה חלשה מדי להתקנת העדכון (<ph name="BATTERY_PERCENT" />%)</translation> <translation id="7477793887173910789">שליטה במוזיקה, בסרטונים ועוד</translation> -<translation id="7478485216301680444">לא ניתן היה להתקין את יישום הקיוסק.</translation> +<translation id="7478485216301680444">לא ניתן היה להתקין אפליקציית "קיוסק".</translation> <translation id="7479221278376295180">סקירה כללית של השימוש בשטח אחסון</translation> <translation id="7481312909269577407">קדימה</translation> <translation id="7481358317100446445">מוכן</translation> @@ -5559,14 +5568,14 @@ <translation id="7578137152457315135">הגדרות של טביעות אצבעות</translation> <translation id="7580671184200851182">השמע את אותו אודיו מכל הרמקולים (אודיו מונו)</translation> <translation id="7581462281756524039">כלי לניקוי</translation> -<translation id="7582582252461552277">העדף רשת זו</translation> +<translation id="7582582252461552277">העדפת הרשת הזו</translation> <translation id="7583948862126372804">מספר</translation> <translation id="7586498138629385861">Chrome ימשיך לפעול כל עוד יש אפליקציות Chrome פתוחות.</translation> <translation id="7589461650300748890">היי! תיזהר.</translation> <translation id="7593653750169415785">האפשרות חסומה באופן אוטומטי כי בחרת בעבר שלא לתת הרשאה להצגת הודעות כמה פעמים</translation> <translation id="7595453277607160340">כדי להשתמש באפליקציות של Android ולוודא שה-<ph name="DEVICE_TYPE" /> ימשיך לפעול כראוי, צריך להיכנס שוב ולעדכן.</translation> <translation id="7595547011743502844"><ph name="ERROR" /> (קוד שגיאה <ph name="ERROR_CODE" />).</translation> -<translation id="7598466960084663009">הפעל מחדש את המחשב</translation> +<translation id="7598466960084663009">הפעלת המחשב מחדש</translation> <translation id="7599527631045201165">שם המכשיר ארוך מדי. יש להזין שם קצר יותר כדי לנסות שוב.</translation> <translation id="7600965453749440009">איני רוצה לקבל תרגום מ<ph name="LANGUAGE" /> בכלל</translation> <translation id="760197030861754408">כדי להתחבר, עבור אל <ph name="LANDING_PAGE" />.</translation> @@ -5584,7 +5593,7 @@ <translation id="7615365294369022248">אירעה שגיאה בהוספת חשבון</translation> <translation id="7616214729753637086">רישום המכשיר מתבצע...</translation> <translation id="7617263010641145920">הפעלה של חנות Play</translation> -<translation id="7617366389578322136">מתחבר אל <ph name="DEVICE_NAME" /></translation> +<translation id="7617366389578322136">מתבצע חיבור אל <ph name="DEVICE_NAME" /></translation> <translation id="7621382409404463535">המערכת לא הצליחה לשמור את תצורת המכשיר.</translation> <translation id="7622114377921274169">בטעינה.</translation> <translation id="7622768823216805500">אתרים מתקינים בדרך כלל רכיבי handler של תשלומים כדי להציע תכונות קנייה, כמו תשלום קל יותר בקופה</translation> @@ -5757,7 +5766,7 @@ <translation id="7797571222998226653">כבוי</translation> <translation id="7798844538707273832">ההרשאה <ph name="PERMISSION" /> נחסמה אוטומטית</translation> <translation id="7799299114731150374">הטפט הוגדר בהצלחה</translation> -<translation id="7800518121066352902">סובב נ&גד כיוון השעון</translation> +<translation id="7800518121066352902">סיבוב נ&גד כיוון השעון</translation> <translation id="7802539296536804623">אין להציג כרטיסים בדף הזה</translation> <translation id="780301667611848630">לא תודה</translation> <translation id="7804072833593604762">הכרטיסייה נסגרה</translation> @@ -5774,6 +5783,7 @@ <translation id="7819857487979277519">PSK (WPA או RSN)</translation> <translation id="7819992334107904369">סנכרון Chrome</translation> <translation id="782057141565633384">העתק כתובת &וידאו</translation> +<translation id="7822187537422052256">בחרת להסיר את הכתובת הזו. להמשיך?</translation> <translation id="7824864914877854148">אירעה שגיאה ולא ניתן להשלים את הגיבוי</translation> <translation id="7825666486843191125">כל אנשי הקשר בקרבתך כשהמסך אינו נעול</translation> <translation id="782590969421016895">שימוש בדפים הנוכחיים</translation> @@ -5818,7 +5828,7 @@ <translation id="7847212883280406910">הקש על Ctrl + Alt + S כדי לעבור אל <ph name="IDS_SHORT_PRODUCT_OS_NAME" /></translation> <translation id="7849264908733290972">פתיחת &תמונה בכרטיסייה חדשה</translation> <translation id="784934925303690534">טווח זמן</translation> -<translation id="7851457902707056880">הכניסה הוגבלה לחשבון הבעלים בלבד. בצע אתחול מחדש והיכנס באמצעות חשבון הבעלים. המחשב יבצע אתחול מחדש אוטומטי בתוך 30 שניות.</translation> +<translation id="7851457902707056880">הכניסה הוגבלה לחשבון הבעלים בלבד. יש לבצע אתחול מחדש ולהיכנס באמצעות חשבון הבעלים. המערכת תבצע אתחול מחדש באופן אוטומטי בתוך 30 שניות.</translation> <translation id="7851716364080026749">חסום תמיד גישה למצלמה ולמיקרופון</translation> <translation id="7851720427268294554">מנתח IPP</translation> <translation id="78526636422538552">הוספה של חשבונות Google הושבתה</translation> @@ -5985,7 +5995,7 @@ <translation id="8044262338717486897">האפליקציה <ph name="LINUX_APP_NAME" /> לא מגיבה.</translation> <translation id="8044899503464538266">אטי</translation> <translation id="8045253504249021590">הסינכרון הושבת באמצעות מרכז השליטה של Google.</translation> -<translation id="8045923671629973368">הזנה של מזהה יישום או כתובת אתר של חנות אינטרנט</translation> +<translation id="8045923671629973368">יש להזין מזהה אפליקציה או כתובת URL של חנות אינטרנט</translation> <translation id="8047242494569930800">העברה לחשבון Google</translation> <translation id="804786196054284061">הסכם רישיון למשתמש קצה</translation> <translation id="8049705080247101012">Google סימנה את "<ph name="EXTENSION_NAME" />" כזדוני, וההתקנה נמנעה</translation> @@ -6068,7 +6078,7 @@ <ph name="TIME" />. ההצפנה לא כוללת אמצעי תשלום וכתובות מ-Google Pay.</translation> <translation id="81238879832906896">פרח צהוב ולבן</translation> <translation id="8124313775439841391">ONC מנוהל</translation> -<translation id="813082847718468539">הצג נתוני אתר</translation> +<translation id="813082847718468539">הצגת נתוני אתר</translation> <translation id="8131740175452115882">אישור</translation> <translation id="8133676275609324831">&הצג בתיקייה</translation> <translation id="8135557862853121765"><ph name="NUM_KILOBYTES" />K</translation> @@ -6146,7 +6156,7 @@ <translation id="8227119283605456246">צירוף קובץ</translation> <translation id="8230134520748321204">האם לשמור את הסיסמה של <ph name="ORIGIN" />?</translation> <translation id="8230672074305416752">לא ניתן היה לבצע פינג לשער הרשת המוגדרת כברירת מחדל</translation> -<translation id="8234795456569844941">עזור למהנדסים שלנו לפתור את הבעיה הזו. ספר לנו מה קרה לפני שהוצגה לך הודעת השגיאה לגבי הפרופיל:</translation> +<translation id="8234795456569844941">רוצה לעזור למהנדסים שלנו לפתור את הבעיה הזו? אפשר לספר לנו מה קרה לפני שהוצגה לך הודעת השגיאה לגבי הפרופיל:</translation> <translation id="8236917170563564587">שיתוף הכרטיסייה הזו</translation> <translation id="8237647586961940482">ורוד כהה ואדום</translation> <translation id="8239032431519548577">ההרשמה ל-Enterprise הושלמה</translation> @@ -6290,7 +6300,7 @@ <translation id="839736845446313156">הירשם</translation> <translation id="8397825320644530257">ניתוק הטלפון המחובר</translation> <translation id="8398877366907290961">להמשיך בכל זאת</translation> -<translation id="8400146488506985033">נהל אנשים</translation> +<translation id="8400146488506985033">ניהול משתמשים</translation> <translation id="8401432541486058167">עליך לציין את קוד האימות המשויך לכרטיס החכם שלך.</translation> <translation id="8405046151008197676">ריכזנו עבורך את הפרטים החשובים לגבי העדכון האחרון</translation> <translation id="8407199357649073301">רמת הרישום ביומן:</translation> @@ -6302,6 +6312,7 @@ <translation id="8419098111404128271">תוצאות לחיפוש "<ph name="SEARCH_TEXT" />"</translation> <translation id="8419368276599091549">ה-<ph name="DEVICE_TYPE" /> שלך מוכן להגדרה.</translation> <translation id="8420308167132684745">עריכת ערכים במילון</translation> +<translation id="8421361468937925547">כתוביות מיידיות (באנגלית בלבד)</translation> <translation id="8422787418163030046">המגש חסר</translation> <translation id="8425213833346101688">שנה</translation> <translation id="8425492902634685834">הצמד לשורת המשימות</translation> @@ -6330,6 +6341,7 @@ <translation id="8449036207308062757">נהל אחסון</translation> <translation id="8452135315243592079">כרטיס SIM חסר</translation> <translation id="8455026683977728932">ההפעלה של איור ADB נכשלה</translation> +<translation id="8456398879271637452">מוצגות כתוביות מיידיות. בלחיצה על Ctrl + 'אחורה' או Ctrl + 'קדימה', ניתן להזיז את המיקוד</translation> <translation id="845702320058262034">לא ניתן להתחבר. יש לוודא שה-Bluetooth של הטלפון מופעל.</translation> <translation id="8457451314607652708">ייבוא סימניות</translation> <translation id="8458627787104127436">פתיחת כל הכתובות (<ph name="URL_COUNT" />) בחלון חדש</translation> @@ -6386,7 +6398,7 @@ <translation id="8524783101666974011">שמירת כרטיסים בחשבון Google</translation> <translation id="8525306231823319788">מסך מלא</translation> <translation id="8526666462501866815">השדרוג של Linux בוטל</translation> -<translation id="8528074251912154910">הוסף שפות</translation> +<translation id="8528074251912154910">הוספת שפות</translation> <translation id="8528962588711550376">מבצע כניסה.</translation> <translation id="8529925957403338845">יצירת החיבור לשיתוף אינטרנט מיידי בין ניידים נכשלה</translation> <translation id="8534656636775144800">אופס! משהו השתבש כשניסינו לצרף את הדומיין. יש לנסות שוב.</translation> @@ -6473,8 +6485,8 @@ <translation id="8631032106121706562">עלי כותרת</translation> <translation id="863109444997383731">אתרים לא יוכלו לבקש הצגה של התראות. אם אתר יבקש להציג התראות, בסרגל הכתובות יופיע חיווי לגבי חסימה שבוצעה.</translation> <translation id="8633025649649592204">פעילות אחרונה</translation> -<translation id="8635628933471165173">טוען מחדש...</translation> -<translation id="8637542770513281060">המחשב שלך מכיל מודול מאובטח המשמש ליישום תכונות אבטחה קריטיות רבות ב-Chrome OS. היכנס למרכז העזרה של Chromebook כדי לקבל מידע נוסף: https://support.google.com/chromebook/?p=sm</translation> +<translation id="8635628933471165173">בטעינה מחדש...</translation> +<translation id="8637542770513281060">המחשב שלך מכיל מודול מאובטח המשמש ליישום תכונות אבטחה קריטיות רבות ב-Chrome OS. אפשר להיכנס למרכז העזרה של Chromebook כדי לקבל מידע נוסף: https://support.google.com/chromebook/?p=sm</translation> <translation id="8637688295594795546">עדכון מערכת זמין. מתכונן להוריד…</translation> <translation id="8639047128869322042">מתבצע חיפוש של תוכנות מזיקות...</translation> <translation id="8639391553632924850"><ph name="INPUT_LABEL" /> – יציאה</translation> @@ -6499,7 +6511,7 @@ <translation id="8655972064210167941">הכניסה נכשלה מפני שלא ניתן היה לאמת את הסיסמה. צור קשר עם מנהל המערכת או נסה שוב.</translation> <translation id="8656768832129462377">אל תבדוק</translation> <translation id="8658645149275195032"><ph name="APP_NAME" /> משתף את המסך והאודיו שלך עם <ph name="TAB_NAME" />.</translation> -<translation id="8661290697478713397">פתח קישור בחלון &נסתר</translation> +<translation id="8661290697478713397">פתיחת הקישור בחלון &אנונימי</translation> <translation id="8662671328352114214">התחברות לרשת <ph name="TYPE" /></translation> <translation id="8662795692588422978">אנשים</translation> <translation id="8662811608048051533">תבוצע יציאה שלך מרוב האתרים.</translation> @@ -6628,7 +6640,7 @@ <translation id="8798441408945964110">שם ספק</translation> <translation id="8800004011501252845">מציג יעדים עבור</translation> <translation id="8800034312320686233">האתר לא פועל?</translation> -<translation id="8803953437405899238">פתח כרטיסייה חדשה בקליק אחד</translation> +<translation id="8803953437405899238">פתיחת כרטיסייה חדשה בקליק אחד</translation> <translation id="8804999695258552249">{NUM_TABS,plural, =1{העברת כרטיסייה לחלון אחר}two{העברת כרטיסיות לחלון אחר}many{העברת כרטיסיות לחלון אחר}other{העברת כרטיסיות לחלון אחר}}</translation> <translation id="8805140816472474147">אשר הגדרות סינכרון כדי להתחיל בסינכרון.</translation> <translation id="8806680466228877631"><ph name="SHORTCUT" /> מאפשר לפתוח מחדש כרטיסיות שנסגרו בטעות</translation> @@ -6740,7 +6752,7 @@ <translation id="8912793549644936705">מתח</translation> <translation id="8912810933860534797">הפעלת סריקה אוטומטית</translation> <translation id="8915370057835397490">טוען הצעה...</translation> -<translation id="8916476537757519021">תת-מסגרת לגלישה בסתר: <ph name="SUBFRAME_SITE" /></translation> +<translation id="8916476537757519021">תת-מסגרת למצב אנונימי: <ph name="SUBFRAME_SITE" /></translation> <translation id="8916749157829986308">הגדרת שם החלון</translation> <translation id="8918637186205009138">ה-<ph name="DEVICE_TYPE" /> של <ph name="GIVEN_NAME" /></translation> <translation id="8923880975836399332">כחול-ירקרק כהה</translation> @@ -6840,6 +6852,7 @@ <translation id="9027459031423301635">פתיחת קישור בכרטיסייה &חדשה</translation> <translation id="9030515284705930323">הארגון שלך לא הפעיל את חנות Google Play בחשבון שלך. למידע נוסף, פנה למנהל המערכת.</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269">אין יותר תמיכה בפלאגין <ph name="PLUGIN_NAME" /></translation> <translation id="9031549947500880805">גיבוי ב-Google Drive. ההגדרה הזו מאפשרת לאחזר נתונים בקלות או לעבור למכשיר אחר בכל שלב. הגיבוי כולל נתוני אפליקציות.</translation> <translation id="9033765790910064284">אני רוצה להמשיך בכל זאת</translation> <translation id="9033857511263905942">&הדבק</translation> @@ -6848,6 +6861,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{נשאר לך ניסיון אחד.}two{נשארו לך # ניסיונות.}many{נשארו לך # ניסיונות.}other{נשארו לך # ניסיונות.}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571">האם לעדכן את הסיסמה של <ph name="ORIGIN" />?</translation> +<translation id="9041049756004505730">מוצגות כתוביות מיידיות.בלחיצה על ⌘ + Option + חץ למעלה או חץ למטה, ניתן להזיז את המיקוד</translation> <translation id="9041692268811217999">הגישה לקבצים מקומיים במחשב שלך מושבתת על-ידי מנהל המערכת</translation> <translation id="904224458472510106">לא ניתן לבטל את הפעולה הזו</translation> <translation id="9042893549633094279">פרטיות ואבטחה</translation> @@ -6886,6 +6900,7 @@ <translation id="9088446193279799727">לא ניתן להגדיר את Linux. יש להתחבר לאינטרנט ולנסות שוב.</translation> <translation id="9088917181875854783">אשר שסיסמה זו מוצגת ב-"<ph name="DEVICE_NAME" />":</translation> <translation id="9089416786594320554">שיטות קלט</translation> +<translation id="909108997331068008">הפרופיל של <ph name="EXISTING_USER" /> כבר מחובר בכתובת <ph name="NEW_USER" /></translation> <translation id="9093429538970210897">מומלץ לגבות את הקבצים למקרה שלא ניתן יהיה להשלים את השדרוג. הפעלת השדרוג תגרום לכיבוי של Linux (בטא). לפני המשך התהליך יש לשמור את הקבצים הפתוחים.</translation> <translation id="9094033019050270033">עדכן סיסמה</translation> <translation id="9094038138851891550">שם משתמש לא חוקי</translation> @@ -6922,7 +6937,7 @@ <translation id="9131487537093447019">שליחת הודעות למכשירי Bluetooth וקבלת הודעות מהם.</translation> <translation id="9137013805542155359">הצג מקור</translation> <translation id="9137157311132182254">מנוע חיפוש מועדף</translation> -<translation id="9137248913990643158">היכנס לחשבונך ב-Chrome לפני שתשתמש באפליקציה הזו.</translation> +<translation id="9137248913990643158">יש להיכנס לחשבון ב-Chrome לפני שהשימוש באפליקציה הזו.</translation> <translation id="9137916601698928395">פתח קישור בתור <ph name="USER" /></translation> <translation id="9138978632494473300">הוסף קיצורי דרך במקומות הבאים:</translation> <translation id="9139988741193276691">המערכת מגדירה את Linux</translation> @@ -6986,7 +7001,7 @@ <translation id="9214695392875603905">קאפקייק</translation> <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" נוסף</translation> <translation id="9215742531438648683">הסרה של 'חנות Google Play'</translation> -<translation id="9218430445555521422">הגדר כברירת מחדל</translation> +<translation id="9218430445555521422">הגדרה כברירת מחדל</translation> <translation id="9219103736887031265">תמונות</translation> <translation id="9220525904950070496">הסרת חשבון</translation> <translation id="9220820413868316583">צריך להרים את האצבע ולנסות שוב.</translation> @@ -7006,7 +7021,7 @@ <translation id="936801553271523408">נתוני אבחון של מערכת</translation> <translation id="93766956588638423">תיקון התוסף</translation> <translation id="938339467127511841">אחסון Linux (בטא)</translation> -<translation id="938470336146445890">התקן אישור משתמש.</translation> +<translation id="938470336146445890">יש להתקין אישור משתמש.</translation> <translation id="939252827960237676">שמירת צילום המסך נכשלה</translation> <translation id="939519157834106403">SSID</translation> <translation id="939598580284253335">הזן משפט-סיסמה</translation> @@ -7059,5 +7074,6 @@ <translation id="994289308992179865">הפעל ב&רצף</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">יוצר חיבור מאובטח...</translation> +<translation id="99731366405731005">יש להפעיל <ph name="LINK1_BEGIN" />סנכרון Chrome<ph name="LINK1_END" /> כדי להשתמש בסנכרון Wi-Fi. <ph name="LINK2_BEGIN" />מידע נוסף<ph name="LINK2_END" /></translation> <translation id="998747458861718449">&בדוק</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index 21dcee8..a467200 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -928,6 +928,7 @@ <translation id="204914487372604757">მალსახმობის შექმნა</translation> <translation id="2050339315714019657">პორტრეტი</translation> <translation id="2053312383184521053">უმოქმედო მდგომარეობის მონაცემები</translation> +<translation id="2054665754582400095">თქვენი დასწრება</translation> <translation id="2055585478631012616">თქვენ გამოხვალთ ამ საიტებიდან, მათ შორის, გახსნილ ჩანართებზე</translation> <translation id="205560151218727633">Google ასისტენტის ლოგო</translation> <translation id="2058456167109518507">აღმოჩენილია მოწყობილობა</translation> @@ -1214,6 +1215,7 @@ <translation id="2387052489799050037">მთავარზე გადასვლა</translation> <translation id="2387458720915042159">პროქსი-სერვერის კავშირის ტიპი</translation> <translation id="2390347491606624519">პროქსი-სერვერთან დაკავშირება ვერ მოხერხდა, ხელახლა შედით სისტემაში</translation> +<translation id="2390782873446084770">Wi-Fi სინქრონიზაცია</translation> <translation id="2391082728065870591">გამოხმაურების ანგარიშის გაგზავნა</translation> <translation id="2391419135980381625">სტანდარტული შრიფტი</translation> <translation id="2392163307141705938">მიღწეულია მშობლის მიერ <ph name="IDS_SHORT_PRODUCT_NAME" />-ზე დაწესებული დროის ლიმიტი.</translation> @@ -1869,6 +1871,7 @@ <translation id="3157931365184549694">აღდგენა</translation> <translation id="3158033540161634471">თითის ანაბეჭდის დაყენება</translation> <translation id="3159493096109238499">ბეჟისფერი</translation> +<translation id="3159978855457658359">მოწყობილობის სახელის რედაქტირება</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (აპარატურულად მხარდაჭერილი)</translation> <translation id="3161522574479303604">ყველა ენა</translation> <translation id="3162853326462195145">სასწავლებლის ანგარიში</translation> @@ -3229,6 +3232,7 @@ <translation id="4761104368405085019">გამოიყენეთ თქვენი მიკროფონი</translation> <translation id="4762718786438001384">მოწყობილობის დისკზე ხელმისაწვდომი მეხსიერება კრიტიკულად არასაკმარისია</translation> <translation id="4763408175235639573">ამ გვერდის დათვალიერებისას შეიქმნა შემდეგი ქუქი-ჩანაწერები</translation> +<translation id="4764368918650455114">დარწმუნდით, რომ ორივე მოწყობილობა განბლოკილია, ახლოსაა ერთმანეთთან და მათზე ჩართულია Bluetooth. თუ Chromebook-თან აზიარებთ, მასზე ჩართული უნდა იყოს მახლობლად გაზიარება (ამისთვის გახსენით სტატუსის არე — ჯერ აირჩიეთ დრო, შემდეგ კი მახლობლად გაზიარება). <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation> <translation id="4765582662863429759">საშუალებას აძლევს Android Messages-ს, მოახდინოს ტექსტური შეტყობინებების რეტრანსლირება ტელეფონიდან თქვენს Chromebook-ში</translation> <translation id="476598255842811483">არავინ, სანამ მახლობლად გაზიარებას არ გახსნით თქვენს მოწყობილობაზე</translation> <translation id="4768332406694066911">თქვენ შენახული გაქვთ ქვემოთ ჩამოთვლილი ორგანიზაციების სერტიფიკატები, რომლებიც თქვენს ამოცნობას ახორციელებს</translation> @@ -3391,6 +3395,7 @@ <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> — <ph name="PROFILE_NAME" /></translation> <translation id="496185450405387901">ეს აპი დაინსტალირებულია თქვენი ადმინისტრატორის მიერ.</translation> <translation id="4964455510556214366">მოწყობა</translation> +<translation id="496446150016900060">Wi-Fi ქსელების სინქრონიზაცია თქვენს ტელეფონთან</translation> <translation id="4965808351167763748">ნამდვილად გსურთ ამ მოწყობილობის დაყენება Hangouts Meet-ის გასაშვებად?</translation> <translation id="496888482094675990">ფაილების პროგრამა უზრუნველყოფს სწრაფ წვდომას ფაილებზე, რომლებიც შეინახეთ Google Drive-ზე, გარე მეხსიერებაში ან თქვენს Chrome OS მოწყობილობაში.</translation> <translation id="4971412780836297815">დასრულების შემდეგ გახსნა</translation> @@ -3697,6 +3702,7 @@ <translation id="5341980496415249280">გთხოვთ, დაელოდოთ შეფუთვის დასრულებას...</translation> <translation id="5342091991439452114">PIN-კოდი უნდა შედგებოდეს მინიმუმ <ph name="MINIMUM" /> ციფრისგან</translation> <translation id="5344036115151554031">მიმდინარეობს Linux-ის აღდგენა</translation> +<translation id="5345916423802287046">აპის გაშვება სისტემაში შესვლისას</translation> <translation id="5350293332385664455">Google ასისტენტის გამორთვა</translation> <translation id="535123479159372765">სხვა მოწყობილობიდან დაკოპირდა ტექსტი</translation> <translation id="5352033265844765294">დროის აღბეჭდვა</translation> @@ -4006,6 +4012,7 @@ <translation id="5704875434923668958">სინქრონიზებულია შემდეგთან:</translation> <translation id="5705005699929844214">მარტივი წვდომის ვარიანტების ყოველთვის ჩვენება</translation> <translation id="5705882733397021510">უკან დაბრუნება</translation> +<translation id="5707117624115653804">სუბტიტრების ზომისა და სტილის მორგება აპებისა და საიტებისთვის, რომელთა მიერაც მხარდაჭერილია ეს პარამეტრი</translation> <translation id="5707185214361380026">გაფართოება ვერ ჩაიტვირთა:</translation> <translation id="5708171344853220004">Microsoft-ის მონაწილის სახელი</translation> <translation id="5709557627224531708">დააყენეთ Chrome ნაგულისხმევ ბრაუზერად</translation> @@ -4169,6 +4176,7 @@ <translation id="5904614460720589786"><ph name="APP_NAME" />-ის დაყენება ვერ მოხერხდა კონფიგურაციის პრობლემის გამო. გთხოვთ, დაუკავშირდეთ ადმინისტრატორს. შეცდომის კოდი: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">განახლება თითქმის მზად არის! დასასრულებლად, გადატვირთეთ თქვენი მოწყობილობა.</translation> <translation id="5906732635754427568">ამ აპთან დაკავშირებული მონაცემები ამ მოწყობილობიდან ამოიშლება.</translation> +<translation id="5908474332780919512">აპის გაშვება სისტემაში შესვლისას</translation> <translation id="5908695239556627796">მაუსით გადაადგილების სიჩქარე</translation> <translation id="5908769186679515905">საიტებისთვის Flash-ის გაშვების დაბლოკვა</translation> <translation id="5910363049092958439">გამოსახულების შენ&ახვა, როგორც…</translation> @@ -4709,6 +4717,7 @@ <translation id="6532527800157340614">შესვლა ვერ მოხერხდა, რადგან წვდომის ჟეტონი ვერ მოვიძიეთ. შეამოწმეთ თქვენი კავშირი ქსელთან და ცადეთ ხელახლა.</translation> <translation id="6532663472409656417">ორგანიზაციაში რეგისტრირებული</translation> <translation id="6535331821390304775">ამ ტიპის ბმულების ყოველთვის დაკავშირებულ აპში გახსნის დაშვება <ph name="ORIGIN" />-ისთვის</translation> +<translation id="6537613839935722475">სახელებში შეგიძლიათ გამოიყენოთ ასოები, ციფრები და დეფისები (-)</translation> <translation id="6538635548667167211">მონაცემთა გადაცემისთვის ამჟამად არჩეული გაქვთ „მობილური ინტერნეტი“</translation> <translation id="654039047105555694"><ph name="BEGIN_BOLD" />შენიშვნა:<ph name="END_BOLD" /> ჩართეთ მხოლოდ იმ შემთხვევაში, თუ ზუსტად იცით, რას აკეთებთ, ან თუ სისტემამ მოითხოვა ეს მოქმედება, რადგან მონაცემების შეგროვებამ შეიძლება შეამციროს ეფექტურობა.</translation> <translation id="6541638731489116978">ამ საიტს აეკრძალა მოძრაობის სენსორებზე წვდომა.</translation> @@ -4797,6 +4806,7 @@ <translation id="6650234781371031356"><ph name="WEBSITE" />-ის პაროლი შენახულია როგორც ამ მოწყობილობაზე, ისე თქვენს Google ანგარიშში. რომლის წაშლა გსურთ?</translation> <translation id="665061930738760572">&ახალ ფანჯარაში გახსნა</translation> <translation id="6651237644330755633">ამ სერტიფიკატისთვის ვებსაიტების ამოცნობის მინდობა</translation> +<translation id="6651495917527016072">მოახდინეთ Wi-Fi ქსელების სინქრონიზაცია თქვენს ტელეფონთან. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> ინტეგრაცია მხარდაჭერილია მხოლოდ x86_64 პლატფორმებზე. იმ Chromebook მოწყობილობების მიერ, რომლებიც შექმნილია ARM-ის ბაზაზე ან x86 პლატფორმაზე, ეს ფუნქცია მხარდაჭერილი არ არის.</translation> <translation id="6654509035557065241">ქსელისთვის უპირატესობის მინიჭება</translation> <translation id="6655190889273724601">შემმუშავებლის რეჟიმი</translation> @@ -5400,6 +5410,7 @@ <translation id="7375235221357833624">{0,plural, =1{განაახლეთ მოწყობილობა 1 საათის განმავლობაში}other{განაახლეთ მოწყობილობა # საათის განმავლობაში}}</translation> <translation id="7376553024552204454">მოძრაობისას მაუსის კურსორის გამოყოფა</translation> <translation id="7377451353532943397">სენსორებზე წვდომის აკრძალვის გაგრძელება</translation> +<translation id="7378611153938412599">სუსტი პაროლები ადვილი გამოსაცნობია, ამიტომ პაროლის შექმნისას ძლიერი ვარიანტები უნდა მოიფიქროთ. <ph name="BEGIN_LINK" />გაეცანით უსაფრთხოებასთან დაკავშირებულ სხვა რჩევებს.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome Web Store-ის გახსნა</translation> <translation id="7378812711085314936">მობილური ინტერნეტით სარგებლობა</translation> <translation id="7380622428988553498">მოწყობილობის სახელი შეიცავს არასწორ სიმბოლოებს</translation> @@ -5924,6 +5935,7 @@ <translation id="7959074893852789871">ფაილი შეიცავდა რამოდენიმე სერტიფიკატს. რამოდენიმე სერტიფიკატი არ იქნა იმპორტირებული:</translation> <translation id="7961015016161918242">არასოდეს</translation> <translation id="7963001036288347286">სენსორული პანელის აჩქარება</translation> +<translation id="7963608432878156675">ეს სახელი ხილული იქნება სხვა მოწყობილობებისთვის, Bluetooth და ქსელის კავშირების დამყარების მიზნით</translation> <translation id="7963826112438303517">ამ ჩანაწერებსა და თქვენს ხმოვან მოთხოვნებს ასისტენტი იყენებს, რომ შექმნას ან განაახლოს თქვენი ხმის მოდელი, რომელიც ინახება მხოლოდ იმ მოწყობილობებზე, რომლებზეც ჩართული გაქვთ Voice Match. ხმოვანი აქტივობის ნახვა ან გადამზადება შეგიძლიათ ასისტენტის პარამეტრებიდან.</translation> <translation id="7966241909927244760">სურათის მისამართის კ&ოპირება</translation> <translation id="7966571622054096916">{COUNT,plural, =1{სანიშნეების სიაში 1 ერთეულია}other{სანიშნეების სიაში {COUNT} ერთეულია}}</translation> @@ -6386,6 +6398,7 @@ <translation id="850875081535031620">საზიანო პროგრამული უზრუნველყოფა არ მოიძებნა</translation> <translation id="8509177919508253835">უსაფრთხოების გასაღებების გადაყენება და PIN-კოდების შექმნა</translation> <translation id="8509646642152301857">მართლწერის შემოწმების ლექსიკონი ვერ ჩამოიტვირთა.</translation> +<translation id="8512396579636492893">{COUNT,plural, =0{სუსტი პაროლები არ მოიძებნა}=1{მოიძებნა {COUNT} სუსტი პაროლი}other{მოიძებნა {COUNT} სუსტი პაროლი}}</translation> <translation id="8512476990829870887">პროცესის დასრულება</translation> <translation id="851263357009351303">ყოველთვის მიეცი ნება <ph name="HOST" />-ს, აჩვენოს გამოსახულებები</translation> <translation id="8513108775083588393">ავტომატური შეტრიალება</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index c0058c69..b11b6dd 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -925,6 +925,7 @@ <translation id="204914487372604757">കുറുക്കുവഴി സൃഷ്ടിക്കുക</translation> <translation id="2050339315714019657">പോർട്രെയ്റ്റ്</translation> <translation id="2053312383184521053">നിഷക്രിയ നില ഡാറ്റ</translation> +<translation id="2054665754582400095">നിങ്ങളുടെ സാന്നിധ്യം</translation> <translation id="2055585478631012616">തുറന്നിരിക്കുന്ന ടാബുകളിൽ നിന്ന് ഉൾപ്പെടെ, ഈ സൈറ്റുകളിൽ നിന്ന് നിങ്ങൾ സൈൻ ഔട്ട് ചെയ്യപ്പെടും.</translation> <translation id="205560151218727633">Google അസിസ്റ്റന്റ് ലോഗോ</translation> <translation id="2058456167109518507">ഉപകരണം കണ്ടെത്തി</translation> @@ -1211,6 +1212,7 @@ <translation id="2387052489799050037">ഹോമിലേക്ക് പോവുക</translation> <translation id="2387458720915042159">പ്രോക്സി കണക്ഷൻ തരം</translation> <translation id="2390347491606624519">പ്രോക്സിയിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ല, വീണ്ടും സെെൻ ഇൻ ചെയ്യുക</translation> +<translation id="2390782873446084770">Wi-Fi സമന്വയം</translation> <translation id="2391082728065870591">ഫീഡ്ബാക്ക് റിപ്പോർട്ട് അയയ്ക്കുക</translation> <translation id="2391419135980381625">സാധാരണ ഫോണ്ട്</translation> <translation id="2392163307141705938"><ph name="IDS_SHORT_PRODUCT_NAME" />-നായി നിങ്ങളുടെ രക്ഷിതാവ് സജ്ജീകരിച്ച സമയ പരിധിയിലെത്തി</translation> @@ -1867,6 +1869,7 @@ <translation id="3157931365184549694">പുനഃസ്ഥാപിക്കുക</translation> <translation id="3158033540161634471">നിങ്ങളുടെ ഫിംഗർപ്രിന്റ് സജ്ജമാക്കുക</translation> <translation id="3159493096109238499">ബീജ്</translation> +<translation id="3159978855457658359">ഉപകരണത്തിന്റെ പേര് എഡിറ്റ് ചെയ്യുക</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (ഹാർഡ്വെയർ പിന്തുണയുള്ളത്)</translation> <translation id="3161522574479303604">എല്ലാ ഭാഷകളും</translation> <translation id="3162853326462195145">സ്കൂൾ അക്കൗണ്ട്</translation> @@ -3226,6 +3229,7 @@ <translation id="4761104368405085019">നിങ്ങളുടെ മൈക്രോഫോൺ ഉപയോഗിക്കുക</translation> <translation id="4762718786438001384">ഉപകരണത്തിൽ ഡിസ്ക് ഇടം വളരെ കുറവാണ്</translation> <translation id="4763408175235639573">നിങ്ങള് ഈ പേജ് കണ്ടപ്പോള് ഇനിപ്പറയുന്ന കുക്കികളെ സജ്ജമാക്കി</translation> +<translation id="4764368918650455114">രണ്ട് ഉപകരണങ്ങളും അൺലോക്ക് ചെയ്തിട്ടുണ്ടെന്നും അടുത്തടുത്താണ് ഉള്ളതെന്നും Bluetooth ഓണാക്കിയിട്ടുണ്ടെന്നും ഉറപ്പാക്കുക. Chromebook-മായാണ് പങ്കിടുന്നതെങ്കിൽ അതിലെ സമീപമുള്ള പങ്കിടൽ ഓണാക്കിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക (സമയം തിരഞ്ഞെടുത്ത് സ്റ്റാറ്റസ് ഏരിയ തുറക്കുക, ശേഷം സമീപമുള്ള പങ്കിടൽ തിരഞ്ഞെടുക്കുക). <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation> <translation id="4765582662863429759">ഫോണിൽ നിന്ന് Chromebook-ലേക്ക് ടെക്സ്റ്റുകൾ കൈമാറാൻ Android മെസേജിനെ അനുവദിക്കുന്നു</translation> <translation id="476598255842811483">നിങ്ങളുടെ ഉപകരണത്തിൽ സമീപമുള്ള പങ്കിടൽ തുറന്നില്ലെങ്കിൽ ആർക്കും കഴിയില്ല</translation> <translation id="4768332406694066911">നിങ്ങള്ക്ക് ഈ ഓര്ഗനൈസേഷനുകളില് നിന്ന് നിങ്ങളെ തിരിച്ചറിയുന്ന സര്ട്ടിഫിക്കറ്റുകളുണ്ട്</translation> @@ -3388,6 +3392,7 @@ <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation> <translation id="496185450405387901">ഈ ആപ്പ് നിങ്ങളുടെ അഡ്മിൻ ഇൻസ്റ്റാൾ ചെയ്തതാണ്.</translation> <translation id="4964455510556214366">ക്രമീകരണം</translation> +<translation id="496446150016900060">വൈഫൈ നെറ്റ്വർക്കുകൾ നിങ്ങളുടെ ഫോണുമായി സമന്വയിപ്പിക്കാം</translation> <translation id="4965808351167763748">Hangouts Meet റൺ ചെയ്യാനായി ഈ ഉപകരണം സജ്ജമാക്കണോ?</translation> <translation id="496888482094675990">ഫയലുകളുടെ ആപ്പ്, നിങ്ങൾ Google ഡ്രൈവിലോ എക്സ്റ്റേണൽ സ്റ്റോറേജിലോ Chrome OS ഉപകരണത്തിലോ സംരക്ഷിച്ചിരിക്കുന്ന ഫയലുകളിലേക്ക് പെട്ടന്നുള്ള ആക്സസ് നൽകുന്നു.</translation> <translation id="4971412780836297815">പൂര്ത്തിയാക്കുമ്പോള് തുറക്കുക</translation> @@ -3694,6 +3699,7 @@ <translation id="5341980496415249280">കാത്തിരിക്കുക, പായ്ക്ക് ചെയ്യുന്നു...</translation> <translation id="5342091991439452114">പിൻ നമ്പറിൽ <ph name="MINIMUM" /> അക്കങ്ങളെങ്കിലും വേണം</translation> <translation id="5344036115151554031">Linux പുനഃസ്ഥാപിക്കുന്നു</translation> +<translation id="5345916423802287046">നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുമ്പോൾ ആപ്പ് ആരംഭിക്കുക</translation> <translation id="5350293332385664455">Google Assistant ഓഫാക്കുക</translation> <translation id="535123479159372765">മറ്റൊരു ഉപകരണത്തിൽ നിന്ന് പകർത്തിയ ടെക്സ്റ്റ്</translation> <translation id="5352033265844765294">സമയ സ്റ്റാമ്പിംഗ്</translation> @@ -4004,6 +4010,7 @@ <translation id="5704875434923668958">ഇതിലേക്ക് സമന്വയിപ്പിക്കുന്നു</translation> <translation id="5705005699929844214">ഉപയോഗസഹായി ഓപ്ഷനുകൾ എല്ലായ്പ്പോഴും കാണിക്കുക</translation> <translation id="5705882733397021510">മടങ്ങുക</translation> +<translation id="5707117624115653804">ഈ ക്രമീകരണം പിന്തുണയ്ക്കുന്ന ആപ്പുകൾക്കും സൈറ്റുകൾക്കുമായി അടിക്കുറിപ്പിന്റെ വലുപ്പവും സ്റ്റൈലും ഇഷ്ടാനുസൃതമാക്കുക</translation> <translation id="5707185214361380026">ഇതിൽ നിന്ന് വിപുലീകരണം ലോഡ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു:</translation> <translation id="5708171344853220004">Microsoft പ്രിന്സിപ്പല് നാമം</translation> <translation id="5709557627224531708">Chrome-നെ നിങ്ങളുടെ ഡിഫോൾട്ട് ബ്രൗസറായി സജ്ജീകരിക്കുക</translation> @@ -4167,6 +4174,7 @@ <translation id="5904614460720589786">കോൺഫിഗർ ചെയ്യലിലെ പ്രശ്നം കാരണം <ph name="APP_NAME" /> സജ്ജീകരിക്കാനായില്ല. നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക. പിശക് കോഡ്: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">എകദേശം അപ് റ്റു ഡേറ്റാണ്! അപ്ഡേറ്റ് ചെയ്യൽ പൂർത്തിയാക്കാൻ ഉപകരണം പുനരാരംഭിക്കുക.</translation> <translation id="5906732635754427568">ഈ ആപ്പുമായി ബന്ധപ്പെട്ട വിവരങ്ങൾ ഈ ഉപകരണത്തിൽ നിന്ന് നീക്കംചെയ്യപ്പെടും.</translation> +<translation id="5908474332780919512">നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുമ്പോൾ ആപ്പ് ആരംഭിക്കുക</translation> <translation id="5908695239556627796">മൗസ് സ്ക്രോള് ചെയ്യൽ വേഗത</translation> <translation id="5908769186679515905">Flash റൺ ചെയ്യുന്നതിൽ നിന്ന് സൈറ്റുകളെ തടയുക</translation> <translation id="5910363049092958439">ചിത്രം ഇതായി സം&രക്ഷിക്കുക...</translation> @@ -4708,6 +4716,7 @@ <translation id="6532527800157340614">നിങ്ങളുടെ ആക്സസ് ടോക്കൺ വീണ്ടെടുക്കാനാവാത്തതിനാൽ സൈൻ ഇൻ ചെയ്യാനായില്ല. നിങ്ങളുടെ നെറ്റ്വർക്ക് കണക്ഷൻ പരിശോധിച്ച ശേഷം വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="6532663472409656417">എൻറോൾ ചെയ്ത എന്റർപ്രൈസ്</translation> <translation id="6535331821390304775">ഇത്തരം ലിങ്കുകൾ, ബന്ധപ്പെട്ട ആപ്പിൽ തുറക്കാൻ <ph name="ORIGIN" /> എന്നതിനെ എപ്പോഴും അനുവദിക്കുക</translation> +<translation id="6537613839935722475">പേരിന് അക്ഷരങ്ങൾ, അക്കങ്ങൾ, ഹൈഫനുകൾ (-) എന്നിവ ഉപയോഗിക്കാം</translation> <translation id="6538635548667167211">നിലവിലെ ഡാറ്റ ഉപയോഗ ക്രമീകരണം "ഡാറ്റ" ആണ്</translation> <translation id="654039047105555694"><ph name="BEGIN_BOLD" />ശ്രദ്ധിക്കുക:<ph name="END_BOLD" /> ഡാറ്റയുടെ ശേഖരം പ്രകടനത്തെ കുറയ്ക്കുമെന്നതിനാൽ, ചെയ്യുന്നതെന്താണെന്ന് നിങ്ങൾക്ക് അറിയാമെങ്കിലോ അങ്ങനെ ചെയ്യാൻ നിങ്ങൾ ആവശ്യപ്പെട്ടാലോ മാത്രമേ പ്രവർത്തനക്ഷമമാക്കൂ.</translation> <translation id="6541638731489116978">നിങ്ങളുടെ ചലന സെൻസറുകൾ ആക്സസ് ചെയ്യുന്നതിൽ നിന്ന് ഈ സൈറ്റിനെ ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു.</translation> @@ -4796,6 +4805,7 @@ <translation id="6650234781371031356"><ph name="WEBSITE" /> എന്നതിനായുള്ള പാസ്വേഡ് ഈ ഉപകരണത്തിലും നിങ്ങളുടെ Google അക്കൗണ്ടിലും സംഭരിക്കുന്നു. ഏതാണ് നിങ്ങൾക്ക് ഇല്ലാതാക്കേണ്ടത്?</translation> <translation id="665061930738760572">&പുതിയ വിന്ഡോയില് തുറക്കുക</translation> <translation id="6651237644330755633">വെബ്സൈറ്റുകളെ തിരിച്ചറിയുന്നതിന് ഈ സർട്ടിഫിക്കറ്റിനെ വിശ്വസിക്കുക</translation> +<translation id="6651495917527016072">വൈഫൈ നെറ്റ്വർക്കുകൾ നിങ്ങളുടെ ഫോണുമായി സമന്വയിപ്പിക്കൂ. <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation> <translation id="665355505818177700">x86_64 പ്ലാറ്റ്ഫോമുകളിൽ മാത്രമേ Chrome <ph name="MS_AD_NAME" /> ഇന്റഗ്രേഷൻ പ്രവർത്തിക്കുകയുള്ളൂ. ഒരു ARM പ്ലാറ്റ്ഫോമിനോ x86 പ്ലാറ്റ്ഫോമിനോ മുകളിൽ നിർമ്മിച്ചിരിക്കുന്ന Chromebook-കളിൽ ഈ ഫംഗ്ഷനാലിറ്റി പ്രവർത്തിക്കില്ല.</translation> <translation id="6654509035557065241">നെറ്റ്വർക്ക് തിരഞ്ഞെടുക്കുക</translation> <translation id="6655190889273724601">ഡെവലപ്പര് മോഡ്</translation> @@ -5399,6 +5409,7 @@ <translation id="7375235221357833624">{0,plural, =1{ഒരു മണിക്കൂറിനുള്ളിൽ ഉപകരണം അപ്ഡേറ്റ് ചെയ്യുക}other{# മണിക്കൂറിനുള്ളിൽ ഉപകരണം അപ്ഡേറ്റ് ചെയ്യുക}}</translation> <translation id="7376553024552204454">മൗസ് കഴ്സർ നീക്കുമ്പോൾ അത് ഹൈലൈറ്റ് ചെയ്യുക</translation> <translation id="7377451353532943397">സെൻസർ ആക്സസ് ബ്ലോക്ക് ചെയ്യുന്നത് തുടരുക</translation> +<translation id="7378611153938412599">ദുർബലമായ പാസ്വേഡുകൾ ഊഹിക്കാൻ എളുപ്പമാണ്. നിങ്ങൾ സൃഷ്ടിക്കുന്നത് ശക്തമായ പാസ്വേഡുകളാണെന്ന് ഉറപ്പാക്കുക. <ph name="BEGIN_LINK" />കൂടുതൽ സുരക്ഷാ നുറുങ്ങുകൾ കാണുക.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome വെബ് സ്റ്റോർ തുറക്കുക</translation> <translation id="7378812711085314936">ഡാറ്റാ കണക്ഷൻ നേടുക</translation> <translation id="7380622428988553498">ഉപകരണ നാമത്തിൽ അസാധുവായ പ്രതീകങ്ങൾ അടങ്ങിയിരിക്കുന്നു</translation> @@ -5923,6 +5934,7 @@ <translation id="7959074893852789871">ഫയലില് ഒന്നിലധികം സാക്ഷ്യപ്ത്രങ്ങള് അടങ്ങിയിരിക്കുന്നു, അവയില് ചിലത് ഇറക്കുമതി ചെയ്തിട്ടില്ല:</translation> <translation id="7961015016161918242">ഒരിക്കലും</translation> <translation id="7963001036288347286">ടച്ച്പാഡ് ആക്സിലറേഷൻ</translation> +<translation id="7963608432878156675">Bluetooth-നും മറ്റ് നെറ്റ്വർക്ക് കണക്ഷനുകൾക്കുമായി ഈ പേര് മറ്റ് ഉപകരണങ്ങൾക്ക് ദൃശ്യമാകും</translation> <translation id="7963826112438303517">നിങ്ങളുടെ വോയ്സ് മോഡൽ സൃഷ്ടിക്കാനും അപ്ഡേറ്റ് ചെയ്യാനും, അസിസ്റ്റന്റ് ഈ റെക്കോർഡിംഗുകളും സംഭാഷണ അഭ്യർത്ഥനകളും ഉപയോഗിക്കുന്നു, Voice Match ഓണാക്കിയ ഉപകരണങ്ങളിൽ മാത്രമേ ഇത് ശേഖരിക്കുകയുള്ളൂ. Assistant ക്രമീകരണത്തിൽ വോയ്സ് ആക്റ്റിവിറ്റി കാണുകയോ പരിശീലിപ്പിക്കുകയോ ചെയ്യുക.</translation> <translation id="7966241909927244760">ഇമേജ് വിലാസം പകർത്തുക</translation> <translation id="7966571622054096916">{COUNT,plural, =1{ബുക്ക്മാർക്ക് ലിസ്റ്റിൽ ഒരു ഇനം}other{ബുക്ക്മാർക്ക് ലിസ്റ്റിൽ {COUNT} ഇനങ്ങൾ}}</translation> @@ -6387,6 +6399,7 @@ <translation id="850875081535031620">ദോഷകരമായ സോഫ്റ്റ്വെയറൊന്നും കണ്ടെത്തിയില്ല</translation> <translation id="8509177919508253835">സുരക്ഷാ കീകൾ പുനഃക്രമീകരിച്ച്, പിന്നുകൾ സൃഷ്ടിക്കുക</translation> <translation id="8509646642152301857">അക്ഷരപ്പിശക് പരിശോധന നിഘണ്ടു ഡൗൺലോഡ് ചെയ്യുന്നത് പരാജയപ്പെട്ടു.</translation> +<translation id="8512396579636492893">{COUNT,plural, =0{ദുർബലമായ പാസ്വേഡുകളൊന്നും കണ്ടെത്തിയില്ല}=1{ദുർബലമായ {COUNT} പാസ്വേഡ് കണ്ടെത്തി}other{ദുർബലമായ {COUNT} പാസ്വേഡുകൾ കണ്ടെത്തി}}</translation> <translation id="8512476990829870887">പ്രോസസ്സ് അവസാനിപ്പിക്കുക</translation> <translation id="851263357009351303">ചിത്രങ്ങൾ കാണിക്കുന്നതിന്<ph name="HOST" /> നെ എല്ലായ്പ്പോഴും അനുവദിക്കുക</translation> <translation id="8513108775083588393">സ്വയം തിരിയുക</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index aed9a22..fd89d0f 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -924,6 +924,7 @@ <translation id="204914487372604757">Богино холболт үүсгэх</translation> <translation id="2050339315714019657">Хөрөг зураг</translation> <translation id="2053312383184521053">Идэвхгүй хэлбэрийн өгөгдөл</translation> +<translation id="2054665754582400095">Таны байгаа эсэх</translation> <translation id="2055585478631012616">Та эдгээр сайтаас гарах бөгөөд үүнд нээлттэй табын сайтууд мөн багтана</translation> <translation id="205560151218727633">Google туслахын лого</translation> <translation id="2058456167109518507">Төхөөрөмж илэрсэн</translation> @@ -1210,6 +1211,7 @@ <translation id="2387052489799050037">Нүүр хуудас руу очих</translation> <translation id="2387458720915042159">Прокси холболтын төрөл</translation> <translation id="2390347491606624519">Проксид холбогдох боломжгүй байна, дахин нэвтэрнэ үү</translation> +<translation id="2390782873446084770">Wi-Fi синк</translation> <translation id="2391082728065870591">Санал хүсэлтийн тайлан илгээх</translation> <translation id="2391419135980381625">Стандарт үсгийн фонт</translation> <translation id="2392163307141705938">Та <ph name="IDS_SHORT_PRODUCT_NAME" /> дээр таны эцэг эхийн тохируулсан цагийн хязгаарт хүрсэн байна.</translation> @@ -1865,6 +1867,7 @@ <translation id="3157931365184549694">Дахин сэргээх</translation> <translation id="3158033540161634471">Хурууны хээгээ тохируулах</translation> <translation id="3159493096109238499">Цайвар бор (Бэйж)</translation> +<translation id="3159978855457658359">Төхөөрөмжийн нэрийг засах</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (техник хангамжаар дэмжигдсэн)</translation> <translation id="3161522574479303604">Бүх хэл</translation> <translation id="3162853326462195145">Сургуулийн бүртгэл</translation> @@ -3224,6 +3227,7 @@ <translation id="4761104368405085019">Микрофоноо ашигла</translation> <translation id="4762718786438001384">Төхөөрөмжийн дискний багтаамж маш бага байна</translation> <translation id="4763408175235639573">Таныг энэ хуудсыг харахад дараах күүкийг тохируулсан</translation> +<translation id="4764368918650455114">Хоёр төхөөрөмжийн түгжээг хоёуланг нь тайлсан эсэх, хоорондоо ойрхон байгаа эсэх, Bluetooth-г нь асаасан эсэхээ шалгана уу. Та Chromebook-тай хуваалцаж байгаа бол Ойролцоо хуваалцах онцлог асаалттай байгаа эсэхийг шалгана уу (цаг сонгож төлөв байдал илэрхийлэгчийг нээгээд, Ойролцоо хуваалцах онцлогийг сонгоно уу). <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation> <translation id="4765582662863429759">Андройд Мессежийг таны утаснаас таны Chromebook-д мессеж илгээхийг зөвшөөрдөг</translation> <translation id="476598255842811483">Та Ойролцоо хуваалцахыг төхөөрөмж дээрээ нээхгүй бол өөр хэн ч харахгүй</translation> <translation id="4768332406694066911">Танд эдгээр байгууллагаас таныг тодорхойлох сертификат байна</translation> @@ -3386,6 +3390,7 @@ <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation> <translation id="496185450405387901">Таны администратор энэ аппыг суулгасан байна.</translation> <translation id="4964455510556214366">Зохион байгуулалт</translation> +<translation id="496446150016900060">Wi-Fi сүлжээнүүдийг утастайгаа синк хийх</translation> <translation id="4965808351167763748">Hangouts Meet-г ажиллуулахын тулд энэ төхөөрөмжийг тохируулах уу?</translation> <translation id="496888482094675990">Файлууд апп нь таны Google Drive, гадаад хадгалалтын сан болон Chrome OS төхөөрөмж дээр хадгалсан файлууд руу хурдан нэвтрэх боломжийг олгодог.</translation> <translation id="4971412780836297815">Дууссаны дараа нээх</translation> @@ -3692,6 +3697,7 @@ <translation id="5341980496415249280">Багцалж байгаа тул хүлээнэ үү...</translation> <translation id="5342091991439452114">ПИН хамгийн багадаа <ph name="MINIMUM" /> оронтой байх ёстой</translation> <translation id="5344036115151554031">Linux-г сэргээж байна</translation> +<translation id="5345916423802287046">Нэвтрэх үедээ аппыг эхлүүлэх</translation> <translation id="5350293332385664455">Google Туслахыг унтраах</translation> <translation id="535123479159372765">Өөр төхөөрөмжөөс хуулсан текст</translation> <translation id="5352033265844765294">Цагаар тамгалах</translation> @@ -4002,6 +4008,7 @@ <translation id="5704875434923668958">Дараахад синк хийж байна</translation> <translation id="5705005699929844214">Хандалтын сонголтыг байнга харуулах</translation> <translation id="5705882733397021510">Буцах</translation> +<translation id="5707117624115653804">Энэ тохиргоог дэмждэг апп болон сайтуудад зориулж хадмалын хэмжээ болон загварыг тохируулах</translation> <translation id="5707185214361380026">:-ээс өргөтгөлийг ачаалах ажиллагаа амжилтгүй боллоо.</translation> <translation id="5708171344853220004">Майкрософтын үндсэн нэр</translation> <translation id="5709557627224531708">Chrome-г өгөгдмөл хөтчөөрөө тохируулна уу</translation> @@ -4165,6 +4172,7 @@ <translation id="5904614460720589786">Тохируулгын асуудлын улмаас <ph name="APP_NAME" />-г тохируулж чадсангүй. Админтайгаа холбогдоно уу. Алдааны код: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Удахгүй шинэчилж дууслаа! Шинэчлэлтийг дуусгахын тулд төхөөрөмжөө дахин асаана уу.</translation> <translation id="5906732635754427568">Энэ апп-тай холбоотой өгөгдлийг төхөөрөмжөөс устгах болно.</translation> +<translation id="5908474332780919512">Нэвтрэх үедээ аппыг эхлүүлэх</translation> <translation id="5908695239556627796">Хулганын гүйлгэлтийн хурд</translation> <translation id="5908769186679515905">Сайтыг Flash ажиллуулах тохиргоог блоклох</translation> <translation id="5910363049092958439">Зургийг өөр өргөтгөлтэйгээр хадгалах...</translation> @@ -4704,6 +4712,7 @@ <translation id="6532527800157340614">Таны хандалтын зүүлтийг сэргээж чадаагүй тул нэвтэрч чадсангүй. Сүлжээний холболтоо шалгаад дахин оролдоно уу.</translation> <translation id="6532663472409656417">Байгууллагад бүртгүүлсэн</translation> <translation id="6535331821390304775">Холбогдсон апп дээр энэ төрлийн холбооснуудыг нээхийг нь <ph name="ORIGIN" />-д үргэлж зөвшөөрөх</translation> +<translation id="6537613839935722475">Нэр үсэг, тоо, зураас (-) ашиглах боломжтой</translation> <translation id="6538635548667167211">Дата ашиглах одоогийн тохиргоо нь Дата байна</translation> <translation id="654039047105555694"><ph name="BEGIN_BOLD" /> Тайлбар: <ph name="END_BOLD" /> Та зөвхөн юу хийж байгаагаа мэдэж байгаа эсвэл өмнө нь ингэж хийж байсан бол идэвхжүүлж болно, өгөгдөл цуглуулах ажиллагаа нь үзүүлэлтийг бууруулж болно..</translation> <translation id="6541638731489116978">Энэ сайтыг таны хөдөлгөөн мэдрэгчийг ашиглахыг хориглосон байна.</translation> @@ -4792,6 +4801,7 @@ <translation id="6650234781371031356">Таны <ph name="WEBSITE" />-н нууц үгийг энэ төхөөрөмж болон таны Google Бүртгэлд хадгалсан. Та алийг нь устгахыг хүсэж байна вэ?</translation> <translation id="665061930738760572">Шинэ цонхонд нээх &</translation> <translation id="6651237644330755633">Веб хуудсыг тодорхойлохдоо энэ сертификатыг итгэмжилнэ үү</translation> +<translation id="6651495917527016072">Wi-Fi сүлжээнүүдийг утастайгаа синк хийнэ үү. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> интеграцийг зөвхөн x86_64 платформд дэмждэг. ARM эсвэл x86 платформ дээр суурилсан Chromebook энэ функцийг дэмждэггүй.</translation> <translation id="6654509035557065241">Сүлжээ сонгох</translation> <translation id="6655190889273724601">Хөгжүүлэгч горим</translation> @@ -5395,6 +5405,7 @@ <translation id="7375235221357833624">{0,plural, =1{Төхөөрөмжийг нэг цагийн дотор шинэчилнэ үү}other{Төхөөрөмжийг # цагийн дотор шинэчилнэ үү}}</translation> <translation id="7376553024552204454">Хулганы курсорыг хөдлөх явцад нь тодруулна уу</translation> <translation id="7377451353532943397">Мэдрэгчийн хандалтыг үргэлжлүүлэн хориглох</translation> +<translation id="7378611153938412599">Сул нууц үгийг таахад хялбар байдаг. Сайн нууц үг үүсгэж байгаа эсэхээ шалгаарай. <ph name="BEGIN_LINK" />Аюулгүй байдлын бусад зөвлөгөөг харна уу.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome Веб Дэлгүүр нээх</translation> <translation id="7378812711085314936">Дата холболт авах</translation> <translation id="7380622428988553498">Төхөөрөмжийн нэр буруу тэмдэгт агуулж байна</translation> @@ -5918,6 +5929,7 @@ <translation id="7959074893852789871">Энэ файл нь хэд хэдэн сертификат агуулж байгаа бөгөөд зарим нь импортлогдоогүй байна.</translation> <translation id="7961015016161918242">Хэзээ ч</translation> <translation id="7963001036288347286">Мэдрэгч самбарын хурдасгуур</translation> +<translation id="7963608432878156675">Энэ нэр нь Bluetooth болон сүлжээний холболтод зориулан бусад төхөөрөмжид харагдана</translation> <translation id="7963826112438303517">Таны Туслах таны дуу хоолойн загварыг үүсгэх болон шинэчлэх зорилгоор эдгээр бичлэг болон таны хэлсэн хүсэлтийг ашигладаг бөгөөд эдгээрийг зөвхөн таны Voice Match-г асаасан төхөөрөмжүүдэд хадгална. Дуу хоолойн үйл ажиллагаагаа Туслахын тохиргооноос харж эсвэл дахин тохируулна уу.</translation> <translation id="7966241909927244760">Зургийн хаягийг хуулах</translation> <translation id="7966571622054096916">{COUNT,plural, =1{Хавчуургын жагсаалтад 1 зүйл байна}other{Хавчуургын жагсаалтад {COUNT} зүйл байна}}</translation> @@ -6379,6 +6391,7 @@ <translation id="850875081535031620">Хортой программ олдсонгүй</translation> <translation id="8509177919508253835">Аюулгүй байдлын түлхүүрийг шинэчилж, ПИН үүсгэнэ үү</translation> <translation id="8509646642152301857">Зөв бичих дүрмийн алдаа шалгах толь бичгийг татаж авч чадсангүй.</translation> +<translation id="8512396579636492893">{COUNT,plural, =0{Сул нууц үг олсонгүй}=1{{COUNT} сул нууц үг оллоо}other{{COUNT} сул нууц үг оллоо}}</translation> <translation id="8512476990829870887">Дуусгах явц</translation> <translation id="851263357009351303"><ph name="HOST" />-д зургуудыг харуулахыг үргэлж зөвшөөр</translation> <translation id="8513108775083588393">Автомат эргэх</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 4cfce35..cfe2e23 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -474,7 +474,7 @@ <translation id="1530838837447122178">မောက်စ်နှင့် တာ့ချ်ပဲဒ်ကိရိယာဆက်တင်များကို ဖွင့်ပါ</translation> <translation id="1531004739673299060">အပလီကေးရှင်းဝင်းဒိုး</translation> <translation id="1531275250079031713">'Wi-Fi အသစ်ထည့်ရန်' အကွက်ကို ပြရန်</translation> -<translation id="1535228823998016251">ကျယ်သော</translation> +<translation id="1535228823998016251">ကျယ်</translation> <translation id="1536754031901697553">ချိတ်ဆက်မှု ဖြုတ်နေသည်...</translation> <translation id="1537254971476575106">မျက်နှာပြင်အပြည့် မှန်ဘီလူး</translation> <translation id="15373452373711364">ကြီးမားသည့် မောက်စ်ညွှန်ပြကိရိယာ</translation> @@ -4973,7 +4973,7 @@ <translation id="6865313869410766144">ဒေတာမှ အလိုလျောက် ဖြည့်စွက်</translation> <translation id="6865598234501509159">စာမျက်နှာသည် <ph name="LANGUAGE" /> ဘာသာဖြင့် မဟုတ်ပါ</translation> <translation id="6865708901122695652">WebRTC ဖြစ်စဉ်မှတ်တမ်းများ (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> -<translation id="686609795364435700">တိုးသော</translation> +<translation id="686609795364435700">တိုး</translation> <translation id="686664946474413495">အရောင်အပူချိန်</translation> <translation id="6868934826811377550">အသေးစိတ်များ ကြည့်ရန်</translation> <translation id="6871644448911473373">OCSP တုံ့ပြန်သူ: <ph name="LOCATION" /></translation> @@ -5715,7 +5715,7 @@ <translation id="7750228210027921155">တစ်ခုပေါ်တစ်ခုထပ်၍ ဖွင့်ရန်</translation> <translation id="7751260505918304024">အားလုံးပြပါ</translation> <translation id="7753735457098489144">သိုလှောင်ခန်း နေရာ မရှိသဖြင့် ထည့်သွင်း၍မရပါ။ နေရာလွတ်ပြုလုပ်ရန် စက်သိုလှောင်ခန်းမှ ဖိုင်များကို ဖျက်ပါ။</translation> -<translation id="7754347746598978109">Javascript သုံးရန် ခွင့်ပြုမထားပါ</translation> +<translation id="7754347746598978109">JavaScript သုံးရန် ခွင့်ပြုမထားပါ</translation> <translation id="7754704193130578113">ဒေါင်းလုဒ်မလုပ်မီ ဖိုင်တိုင်းကို မည်သည့်နေရာတွင် သိမ်းမည်ကို မေးပါ</translation> <translation id="7755287808199759310">သင့်မိဘသည် ၎င်းကို သင့်အတွက် ဖွင့်ပေးနိုင်ပါသည်</translation> <translation id="7757592200364144203">စက်အမည်ကို ပြောင်းရန်</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index cabf0c2..b8504ab 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -928,6 +928,7 @@ <translation id="204914487372604757">Snelle link maken</translation> <translation id="2050339315714019657">Staand</translation> <translation id="2053312383184521053">Gegevens van inactieve status</translation> +<translation id="2054665754582400095">Je aanwezigheid</translation> <translation id="2055585478631012616">Je wordt uitgelogd bij deze sites, ook in geopende tabbladen</translation> <translation id="205560151218727633">Google Assistent-logo</translation> <translation id="2058456167109518507">Apparaat gedetecteerd</translation> @@ -1214,6 +1215,7 @@ <translation id="2387052489799050037">Naar het startscherm</translation> <translation id="2387458720915042159">Proxyverbindingstype</translation> <translation id="2390347491606624519">Kan geen verbinding maken met proxy, log opnieuw in</translation> +<translation id="2390782873446084770">Wifi-synchronisatie</translation> <translation id="2391082728065870591">Feedbackrapport sturen</translation> <translation id="2391419135980381625">Standaard lettertype</translation> <translation id="2392163307141705938">Je hebt de tijdslimiet bereikt die je ouder heeft ingesteld voor <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation> @@ -1870,6 +1872,7 @@ <translation id="3157931365184549694">Herstellen</translation> <translation id="3158033540161634471">Je vingerafdruk instellen</translation> <translation id="3159493096109238499">Beige</translation> +<translation id="3159978855457658359">Apparaatnaam bewerken</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (met hardwareondersteuning)</translation> <translation id="3161522574479303604">Alle talen</translation> <translation id="3162853326462195145">Schoolaccount</translation> @@ -3230,6 +3233,7 @@ <translation id="4761104368405085019">Je microfoon gebruiken</translation> <translation id="4762718786438001384">Er is zeer weinig schijfruimte beschikbaar op het apparaat</translation> <translation id="4763408175235639573">De volgende cookies zijn opgeslagen toen je deze pagina bekeek</translation> +<translation id="4764368918650455114">Zorg dat beide apparaten zijn ontgrendeld, bij elkaar in de buurt zijn en dat bluetooth aanstaat. Als je content deelt met een Chromebook, zorg je dat 'Dichtbij delen' daarop aanstaat (open het statusgedeelte door de tijd te selecteren en selecteer Dichtbij delen). <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation> <translation id="4765582662863429759">Hiermee kan Android Berichten sms'jes van je telefoon naar je Chromebook doorsturen</translation> <translation id="476598255842811483">Niemand tenzij je 'Dichtbij delen' opent op je apparaat</translation> <translation id="4768332406694066911">Je hebt certificaten van deze organisaties waarmee je wordt geïdentificeerd</translation> @@ -3392,6 +3396,7 @@ <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation> <translation id="496185450405387901">Deze app is geïnstalleerd door je beheerder.</translation> <translation id="4964455510556214366">Indeling</translation> +<translation id="496446150016900060">Wifi-netwerken synchroniseren met je telefoon</translation> <translation id="4965808351167763748">Weet je zeker dat je dit apparaat wilt instellen voor Hangouts Meet?</translation> <translation id="496888482094675990">De app Bestanden biedt snelle toegang tot bestanden die je op Google Drive, externe opslag of je Chrome OS-apparaat hebt opgeslagen.</translation> <translation id="4971412780836297815">Openen wanneer klaar</translation> @@ -3698,6 +3703,7 @@ <translation id="5341980496415249280">Inpakken. Een ogenblik geduld...</translation> <translation id="5342091991439452114">Pincode moet minimaal <ph name="MINIMUM" /> cijfers bevatten</translation> <translation id="5344036115151554031">Linux herstellen</translation> +<translation id="5345916423802287046">App starten als je inlogt</translation> <translation id="5350293332385664455">De Google Assistent uitschakelen</translation> <translation id="535123479159372765">Tekst gekopieerd vanaf ander apparaat</translation> <translation id="5352033265844765294">Tijdstempel</translation> @@ -4007,6 +4013,7 @@ <translation id="5704875434923668958">Synchroniseren naar</translation> <translation id="5705005699929844214">Toegankelijkheidsopties altijd weergeven</translation> <translation id="5705882733397021510">Terug</translation> +<translation id="5707117624115653804">Pas het formaat en de stijl van de ondertiteling aan voor apps en sites die deze instelling ondersteunen</translation> <translation id="5707185214361380026">Laden van extensie mislukt vanuit:</translation> <translation id="5708171344853220004">Principal-naam van Microsoft</translation> <translation id="5709557627224531708">Chrome instellen als je standaardbrowser</translation> @@ -4170,6 +4177,7 @@ <translation id="5904614460720589786">Kan <ph name="APP_NAME" /> niet instellen vanwege een configuratieprobleem. Neem contact op met je beheerder. Foutcode: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Updaten bijna voltooid. Start je apparaat opnieuw op om de update te voltooien.</translation> <translation id="5906732635754427568">Gegevens die zijn gekoppeld aan deze app, worden verwijderd van dit apparaat.</translation> +<translation id="5908474332780919512">App starten als je inlogt</translation> <translation id="5908695239556627796">Scrollsnelheid voor muis</translation> <translation id="5908769186679515905">Niet toestaan dat sites Flash uitvoeren</translation> <translation id="5910363049092958439">Af&beelding opslaan als...</translation> @@ -4710,6 +4718,7 @@ <translation id="6532527800157340614">Inloggen mislukt omdat je toegangstoken niet kan worden opgehaald. Controleer de netwerkverbinding en probeer het opnieuw.</translation> <translation id="6532663472409656417">Ingeschreven voor Enterprise</translation> <translation id="6535331821390304775">Altijd toestaan dat <ph name="ORIGIN" /> links van dit type opent in de bijbehorende app</translation> +<translation id="6537613839935722475">Voor de naam kunnen letters, cijfers en koppeltekens (-) worden gebruikt</translation> <translation id="6538635548667167211">De huidige instelling voor datagebruik is 'Data'</translation> <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Opmerking:<ph name="END_BOLD" /> schakel dit alleen in als je weet wat je doet of als je bent gevraagd dit te doen, omdat het verzamelen van gegevens kan leiden tot verminderde prestaties.</translation> <translation id="6541638731489116978">Deze site heeft geen toegang tot je bewegingssensoren.</translation> @@ -4798,6 +4807,7 @@ <translation id="6650234781371031356">Je wachtwoord voor <ph name="WEBSITE" /> is opgeslagen op dit apparaat en in je Google-account. Welke versie wil je verwijderen?</translation> <translation id="665061930738760572">Openen in &nieuw venster</translation> <translation id="6651237644330755633">Dit certificaat vertrouwen voor het identificeren van websites</translation> +<translation id="6651495917527016072">Wifi-netwerken synchroniseren met je telefoon. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" />-integratie wordt alleen ondersteund op x86_64-platforms. Chromebooks die zijn gebouwd op een ARM- of x86-platform bieden geen ondersteuning voor deze functionaliteit.</translation> <translation id="6654509035557065241">Standaardnetwerk kiezen</translation> <translation id="6655190889273724601">Ontwikkelaarmodus</translation> @@ -5401,6 +5411,7 @@ <translation id="7375235221357833624">{0,plural, =1{Apparaat binnen een uur updaten}other{Apparaat binnen # uur updaten}}</translation> <translation id="7376553024552204454">De muisaanwijzer markeren terwijl deze beweegt</translation> <translation id="7377451353532943397">Toegang tot sensoren blijven blokkeren</translation> +<translation id="7378611153938412599">Zwakke wachtwoorden zijn makkelijk te raden. Stel sterke wachtwoorden in. <ph name="BEGIN_LINK" />Meer beveiligingstips bekijken<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome Web Store openen</translation> <translation id="7378812711085314936">Dataverbinding ophalen</translation> <translation id="7380622428988553498">Apparaatnaam bevat ongeldige tekens</translation> @@ -5924,6 +5935,7 @@ <translation id="7959074893852789871">Het bestand bevat meerdere certificaten. Sommige van deze certificaten zijn niet geïmporteerd:</translation> <translation id="7961015016161918242">Nooit</translation> <translation id="7963001036288347286">Touchpadversnelling</translation> +<translation id="7963608432878156675">Deze naam is zichtbaar voor andere apparaten voor bluetooth- en netwerkverbindingen</translation> <translation id="7963826112438303517">Je Assistent gebruikt deze opnamen en je spraakopdrachten om je spraakmodel te maken en te updaten. Dit wordt alleen opgeslagen op apparaten waarvoor je Voice Match hebt ingeschakeld. Je kunt je spraakactiviteit bekijken of het spraakmodel opnieuw trainen in de instellingen voor de Assistent.</translation> <translation id="7966241909927244760">Adres van afbeelding k&opiëren</translation> <translation id="7966571622054096916">{COUNT,plural, =1{1 item in bookmarklijst}other{{COUNT} items in bookmarklijst}}</translation> @@ -6388,6 +6400,7 @@ <translation id="850875081535031620">Er is geen schadelijke software gevonden</translation> <translation id="8509177919508253835">Beveiligingssleutels resetten en pincodes maken</translation> <translation id="8509646642152301857">Downloaden van woordenboek voor spellingcontrole is mislukt.</translation> +<translation id="8512396579636492893">{COUNT,plural, =0{Geen zwakke wachtwoorden gevonden}=1{{COUNT} zwak wachtwoord gevonden}other{{COUNT} zwakke wachtwoorden gevonden}}</translation> <translation id="8512476990829870887">Proces beëindigen</translation> <translation id="851263357009351303"><ph name="HOST" /> altijd toestaan afbeeldingen weer te geven</translation> <translation id="8513108775083588393">Autom. draaien</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index 2a2d55d4..ce39a4e 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -864,6 +864,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" /> ADB ଡିବଗିଂକୁ ଅକ୍ଷମ କରିଛି। ଏହା ଦ୍ୱାରା ଆପଣଙ୍କ <ph name="DEVICE_TYPE" /> 24 ଘଣ୍ଟାରେ ରିସେଟ୍ ହୋଇଯିବ। ଆପଣ ରଖିବାକୁ ଚାହୁଁଥିବା ଯେ କୌଣସି ଫାଇଲର ବ୍ୟାକଅପ୍ ନିଅନ୍ତୁ।</translation> <translation id="1977965994116744507">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" />ଅନ୍ଲକ୍ କରିବା ପାଇଁ ଆପଣଙ୍କ ଫୋନ୍କୁ ନିକଟକୁ ଆଣନ୍ତୁ।</translation> <translation id="1978006917103730774">ଭବିଷ୍ୟତର ସଫ୍ଟୱେୟାର୍ ଏବଂ ସୁରକ୍ଷା ଅପ୍ଡେଟ୍ଗୁଡ଼ିକ ସ୍ୱଚାଳିତରୂପେ ଇନ୍ଷ୍ଟଲ୍ ହେବ।</translation> +<translation id="1978057560491495741">ଠିକଣାକୁ କାଢ଼ି ଦିଅନ୍ତୁ</translation> <translation id="1979095679518582070">ଏହି ଫିଚରକୁ ବନ୍ଦ କରିବା ଫଳରେ ସିଷ୍ଟମ୍ ଅପଡେଟ୍ ଓ ସୁରକ୍ଷା ପରି ଏହି ଡିଭାଇସର ଅତ୍ୟାବଶ୍ୟକ ସେବା ପାଇଁ ଆବଶ୍ୟକୀୟ ସୂଚନା ପଠାଇବା କ୍ଷମତାକୁ ପ୍ରଭାବିତ କରେ ନାହିଁ।</translation> <translation id="1979280758666859181">ଆପଣ <ph name="PRODUCT_NAME" />ର ଏକ ପୁରୁଣା ସଂସ୍କରଣ ଥିବା ଏକ ଚ୍ୟାନେଲ୍କୁ ପରିବର୍ତ୍ତନ କରୁଛନ୍ତି। ଯେତେବେଳେ ଚ୍ୟାନେଲ୍ର ସଂସ୍କରଣ ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ ବର୍ତ୍ତମାନ ଇନ୍ଷ୍ଟଲ୍ ହୋଇଥିବା ସଂସ୍କରଣ ସହିତ ମେଳ ଖାଇବ, ସେତେବଳେ ଚ୍ୟାନେଲ୍ ପରିବର୍ତ୍ତନ କାର୍ଯ୍ୟକାରୀ ହେବ।</translation> <translation id="197989455406964291">KDC, ଏନକ୍ରିପସନ୍ର ପ୍ରକାର ସମର୍ଥନ କରେ ନାହିଁ</translation> @@ -1065,6 +1066,7 @@ <translation id="2224444042887712269">ଏହି ସେଟିଂ <ph name="OWNER_EMAIL" />ର ଅନ୍ତର୍ଗତ ଅଟେ।</translation> <translation id="2224551243087462610">ଫୋଲ୍ଡର ନାମ ସଂପାଦନ କରନ୍ତୁ</translation> <translation id="2225864335125757863">ଆପଣଙ୍କ ଆକାଉଣ୍ଟ ସୁରକ୍ଷିତ ରଖିବାକୁ ଏହି ପାସୱାର୍ଡଗୁଡ଼ିକ ତୁରନ୍ତ ପରିବର୍ତ୍ତନ କରନ୍ତୁ:</translation> +<translation id="2226204716217107988">ଅନ୍ୟ ଏକ ପ୍ରୋଫାଇଲକୁ ସ୍ୱିଚ୍ କରିବେ?</translation> <translation id="2226449515541314767">ଏହି ସାଇଟ୍ MIDI ଡିଭାଇସ୍ଗୁଡ଼ିକର ପୂର୍ଣ୍ଣ ନିୟନ୍ତ୍ରଣରୁ ଅବରୋଧ କରାଯାଇଛି।</translation> <translation id="2226907662744526012">PIN ଲେଖିବା ପରେ ସ୍ୱଚାଳିତ ଭାବେ ଅନଲକ୍ ହୋଇଯାଏ</translation> <translation id="222704500187107962">ଆପଣ ବର୍ତ୍ତମାନର ଇନକଗ୍ନିଟୋ ଅବଧିରୁ ବାହାରିବା ପରେ ଏହି ବ୍ୟତିକ୍ରମକୁ ସ୍ୱଚାଳିତ ଭାବେ କାଢ଼ି ଦିଆଯିବ</translation> @@ -1134,6 +1136,7 @@ <translation id="2307462900900812319">ନେଟ୍ୱର୍କ କନ୍ଫିଗର୍ କରନ୍ତୁ</translation> <translation id="230927227160767054">ଏହି ପୃଷ୍ଠା ଏକ ସେବା ହ୍ୟାଣ୍ଡଲର୍ ଇନ୍ଷ୍ଟଲ୍ କରିବାକୁ ଚାହୁଁଛି।</translation> <translation id="2309620859903500144">ଏହି ସାଇଟ୍କୁ ଆପଣଙ୍କ ମୋସନ୍ ଏବଂ ଲାଇଟ୍ ସେନ୍ସର୍ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ବ୍ଲକ୍ କରାଯାଇଛି।</translation> +<translation id="2312219318583366810">ପୃଷ୍ଠା URL</translation> <translation id="2314165183524574721">ବର୍ତ୍ତମାନର ଭିଜିବିଲିଟୀ ସେଟିଂକୁ ଲୁଚାଯାଇଛି</translation> <translation id="2314774579020744484">ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଅନୁବାଦ କରିବା ସମୟରେ ବ୍ୟବହାର କରାଯାଉଥିବା ଭାଷା</translation> <translation id="2315414688463285945">Linux ଫାଇଲ୍ଗୁଡ଼ିକ କନ୍ଫିଗର୍ କରିବାରେ ତ୍ରୁଟି। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> @@ -2336,6 +2339,7 @@ <translation id="3713047097299026954">ଏହି ସୁରକ୍ଷା କୀ’ରେ କୌଣସି ସାଇନ୍-ଇନ୍ ଡାଟା ଷ୍ଟୋର୍ ହୋଇନାହିଁ</translation> <translation id="3714195043138862580">ଏହି ଡେମୋ ଡିଭାଇସ୍ଟିକୁ ଏକ ଅବ୍ୟବସ୍ଥିତ ସ୍ଥିତିରେ ରଖାଯାଇଛି।</translation> <translation id="3714633008798122362">ୱେବ୍ କ୍ୟାଲେଣ୍ଡର୍</translation> +<translation id="3715954932774762075">ଏକାଧିକ ଭାଷାରେ ଉପଲବ୍ଧ ଆପ୍ ଏବଂ ୱେବସାଇଟଗୁଡ଼ିକ ଏହି ତାଲିକାରୁ ପ୍ରଥମ ସମର୍ଥିତ ଭାଷାକୁ ବ୍ୟବହାର କରିବ। ଆପଣଙ୍କ ବ୍ରାଉଜର୍ ସେଟିଂସ୍ ସହିତ ଏହି ପସନ୍ଦଗୁଡ଼ିକୁ ସିଙ୍କ୍ କରାଯାଇଛି। <ph name="BEGIN_LINK_LEARN_MORE" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">ମୂଳ ପୃଷ୍ଠା</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">ଆପଣ ଏବଂ Google</translation> @@ -2496,6 +2500,7 @@ <translation id="3882165008614329320">କ୍ୟାମେରା କିମ୍ବା ଫାଇଲ୍ରେ ପୂର୍ବରୁ ଥିବା ଭିଡିଓ</translation> <translation id="3886446263141354045">ଏହି ସାଇଟ୍କୁ ଆକ୍ସେସ୍ କରିବାକୁ ଆପଣଙ୍କର ଅନୁରୋଧ <ph name="NAME" />ଙ୍କୁ ପଠାଯାଇଛି</translation> <translation id="3888550877729210209"><ph name="LOCK_SCREEN_APP_NAME" />ରୁ ନୋଟ୍ ନେବା</translation> +<translation id="3890064827463908288">ୱାଇ-ଫାଇ ସିଙ୍କ୍ ବ୍ୟବହାର କରିବାକୁ Chrome ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="3892414795099177503">OpenVPN / L2TP ଯୋଗ କରନ୍ତୁ...</translation> <translation id="3893536212201235195">ଆପଣଙ୍କର ଆକ୍ସେସିବିଲିଟୀ ସେଟିଂସ୍ ପଢ଼ନ୍ତୁ ଏବଂ ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation> <translation id="3893630138897523026">ChromeVox (କଥିତ ମତାମତ)</translation> @@ -3766,6 +3771,7 @@ <translation id="5449588825071916739">ସମସ୍ତ ଟାବ୍କୁ ବୁକ୍ମାର୍କ କରନ୍ତୁ</translation> <translation id="5449716055534515760">Win&dow ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="5452974209916053028">ବର୍ତ୍ତମାନର ଇନକଗ୍ନିଟୋ ଅବଧି: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">କ୍ୟାପ୍ସନ୍ ବବଲକୁ <ph name="POSITION_ON_SCREEN_FROM_LEFT" />% ପାର୍ଶ୍ୱକୁ, <ph name="POSITION_ON_SCREEN_FROM_TOP" />% ତଳକୁ ମୁଭ୍ କରାଯାଇଛି</translation> <translation id="5454166040603940656"><ph name="PROVIDER" />ଙ୍କ ସହିତ</translation> <translation id="5457113250005438886">ଅବୈଧ</translation> <translation id="5457459357461771897">ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟର୍ରୁ ଫଟୋ, ସଙ୍ଗୀତ ଓ ଅନ୍ୟ ମିଡିଆ ପଢ଼ନ୍ତୁ ଏବଂ ଡିଲିଟ୍ କରନ୍ତୁ</translation> @@ -3909,6 +3915,7 @@ <translation id="5602765853043467355">ଏହି ଡିଭାଇସ୍ରୁ ବୁକ୍ମାର୍କ, ଇତିବୃତ୍ତି, ପାସ୍ୱର୍ଡ ଏବଂ ଆହୁରି ଅନେକ କିଛି ଖାଲି କରନ୍ତୁ</translation> <translation id="5605623530403479164">ଅନ୍ୟ ସନ୍ଧାନ ଇଞ୍ଜିନସମୂହ</translation> <translation id="5605758115928394442">ଏହା ଆପଣ ବୋଲି ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ ଆପଣଙ୍କ ଫୋନ୍କୁ ଗୋଟିଏ ବିଜ୍ଞପ୍ତି ପଠାଯାଇଥିଲା।</translation> +<translation id="560834977503641186">ୱାଇ-ଫାଇ ସିଙ୍କ୍, ଅଧିକ ଜାଣନ୍ତୁ</translation> <translation id="5608580678041221894">କ୍ରପିଂ ଏରିଆକୁ ଆଡ୍ଜଷ୍ଟ କରିବା ପାଇଁ କିମ୍ୱା ଘୁଞ୍ଚାଇବା ପାଇଁ ନିମ୍ନରେ ଥିବା କୀଗୁଡ଼ିକୁ ଟାପ୍ କରନ୍ତୁ</translation> <translation id="5609231933459083978">ଆପ୍ଲିକେସନ୍ ଅବୈଧ ଥିବା ଜଣାପଡୁଛି।</translation> <translation id="5610038042047936818">କ୍ୟାମେରା ମୋଡ୍କୁ ସ୍ୱିଚ୍ କରନ୍ତୁ</translation> @@ -4099,6 +4106,7 @@ <translation id="5841270259333717135">ଇଥରନେଟ୍ କନଫିଗର୍ କରନ୍ତୁ</translation> <translation id="5842497610951477805">ବ୍ଲୁଟୁଥ୍ ସକ୍ଷମ ଅଛି</translation> <translation id="5843706793424741864">ଫାରେନହାଇଟ୍</translation> +<translation id="584451707753263735">ଲାଇଭ୍ କ୍ୟାପ୍ସନ୍ ଦୃଶ୍ୟମାନ ହେଉଛି, ଫୋକସ୍ ସାଇକଲ୍ କରିବାକୁ F6 ଦବାନ୍ତୁ</translation> <translation id="5844574845205796324">ଏକ୍ସପ୍ଲୋର୍ କରିବାକୁ ନୂଆ ବିଷୟବସ୍ତୁର ପ୍ରସ୍ତାବ ଦିଅନ୍ତୁ</translation> <translation id="5846200638699387931">ରିଲେସନ୍ ସିଣ୍ଟାକ୍ସର ତ୍ରୁଟି: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">ଅପଡେଟ୍ ଓ ଆପଗୁଡ଼ିକ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ। ଜାରି ରଖି, ଏହି ଡିଭାଇସ୍ Google, ଆପଣଙ୍କ ମୋବାଇଲ୍ କମ୍ପାନୀ ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସର ନିର୍ମାତା ଠାରୁ ସମ୍ଭାବିତ ରୂପେ ସେଲୁଲାର୍ ଡାଟା ବ୍ୟବହାର କରି, ସ୍ୱଚାଳିତ ଭାବେ ଅପଡେଟ୍ ଏବଂ ଆପଗୁଡ଼ିକ ମଧ୍ୟ ଡାଉନଲୋଡ୍ କରି ଇନଷ୍ଟଲ୍ କରିପାରେ ବୋଲି ଆପଣ ଗ୍ରହଣ କରନ୍ତି। ଏହି ଆପଗୁଡ଼ିକ ମଧ୍ୟରୁ କିଛି ଆପ୍ ଇନ୍-ଆପ୍ କ୍ରୟଗୁଡ଼ିକ ଅଫର୍ କରିପାରନ୍ତି।</translation> @@ -5355,6 +5363,7 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> ବର୍ତ୍ତମାନ ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍ରେ ଦେଖାଯାଉଛି।</translation> <translation id="7340650977506865820">ଆପଣଙ୍କର ସ୍କ୍ରିନ୍କୁ ସାଇଟ୍ ସେୟାର୍ କରୁଛି</translation> <translation id="7341834142292923918">ଏହି ସାଇଟ୍ ପାଇଁ ଆକ୍ସେସ୍ ଆବଶ୍ୟକ କରେ</translation> +<translation id="7343372807593926528">ଦୟାକରି ମତାମତ ପଠାଇବା ପୂର୍ବରୁ ସମସ୍ୟାର ବର୍ଣ୍ଣନା କରନ୍ତୁ।</translation> <translation id="7345706641791090287">ଆପଣଙ୍କର ପାସ୍ୱର୍ଡ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation> <translation id="7346909386216857016">ଠିକ ଅଛି, ଏହା ବୁଝିଗଲି</translation> <translation id="7347452120014970266">ଏହା <ph name="ORIGIN_NAME" /> ଦ୍ୱାରା ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ ଡାଟା ଓ କୁକୀକୁ ଏବଂ ଏହାର ଇନଷ୍ଟଲ୍ କରାଯାଇଥିବା ଆପଗୁଡ଼ିକୁ ଖାଲି କରିଦେବ</translation> @@ -5771,6 +5780,7 @@ <translation id="7819857487979277519">PSK (WPA or RSN)</translation> <translation id="7819992334107904369">Chrome ସିଙ୍କ୍</translation> <translation id="782057141565633384">ଭିଡିଓ ଠିକଣା କ&ପି କରନ୍ତୁ</translation> +<translation id="7822187537422052256">ଆପଣ ଏହି ଠିକଣା କାଢ଼ିବାକୁ ଚାହୁଁଥିବା ନିଶ୍ଚିତ କି?</translation> <translation id="7824864914877854148">ତ୍ରୁଟି ହେତୁ ବ୍ୟାକ୍ଅପ୍ ସମ୍ପୂର୍ଣ୍ଣ କରାଯାଇପାରିଲା ନାହିଁ</translation> <translation id="7825666486843191125">ଆପଣଙ୍କ ସ୍କ୍ରିନ୍ ଅନଲକ୍ ଥିବା ସମୟରେ ଆପଣଙ୍କ ଆଖପାଖରେ ଥିବା ସମସ୍ତ ଯୋଗାଯୋଗ</translation> <translation id="782590969421016895">ସାମ୍ପ୍ରତିକ ପୃଷ୍ଠାଗୁଡ଼ିକ ବ୍ୟବହାର କରନ୍ତୁ</translation> @@ -6294,6 +6304,7 @@ <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' ପାଇଁ ସନ୍ଧାନ ଫଳାଫଳ</translation> <translation id="8419368276599091549">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" />କୁ ସ୍ୱାଗତ!</translation> <translation id="8420308167132684745">ଶବ୍ଦକୋଷ ଏଣ୍ଟ୍ରିଗୁଡ଼ିକୁ ସମ୍ପାଦନ କରନ୍ତୁ</translation> +<translation id="8421361468937925547">ଲାଇଭ୍ କ୍ୟାପ୍ସନ୍ (କେବଳ ଇଂରାଜୀ)</translation> <translation id="8422787418163030046">ଟ୍ରେ ଅନୁପଲବ୍ଧ ଅଛି</translation> <translation id="8425213833346101688">ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation> <translation id="8425492902634685834">ଟାସ୍କବାର୍ରେ ପିନ୍ କରନ୍ତୁ</translation> @@ -6322,6 +6333,7 @@ <translation id="8449036207308062757">ଷ୍ଟୋରେଜ୍ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="8452135315243592079">ଅନୁପଲବ୍ଧ ଥିବା SIM କାର୍ଡ</translation> <translation id="8455026683977728932">ADB ଇଲୁଷ୍ଟ୍ରେସନ୍ ସକ୍ଷମ କରିବାରେ ବିଫଳ ହୋଇଛି</translation> +<translation id="8456398879271637452">ଲାଇଭ୍ କ୍ୟାପ୍ସନ୍ ଦୃଶ୍ୟମାନ ହେଉଛି, ଫୋକସ୍ ସାଇକଲ୍ କରିବାକୁ Ctrl + Back କିମ୍ବା Ctrl + Forward ଦବାନ୍ତୁ</translation> <translation id="845702320058262034">ସଂଯୋଗ କରିପାରିବ ନାହିଁ। ଏହା ସୁନିଶ୍ଚିତ କରନ୍ତୁ ଯେ ଆପଣଙ୍କ ଫୋନ୍ର ବ୍ଲୁଟୁଥ୍ ଚାଲୁ ଅଛି।</translation> <translation id="8457451314607652708">ବୁକ୍ମାର୍କଗୁଡିକୁ ଇମ୍ପୋର୍ଟ କରନ୍ତୁ</translation> <translation id="8458627787104127436">ସମସ୍ତ (<ph name="URL_COUNT" />)ଟି URL ନୂଆ ୱିଣ୍ଡୋରେ ଖୋଲନ୍ତୁ</translation> @@ -6832,6 +6844,7 @@ <translation id="9027459031423301635">ନୂତନ &ଟାବ୍ରେ ଲିଙ୍କ୍ ଖୋଲନ୍ତୁ</translation> <translation id="9030515284705930323">ଆପଣଙ୍କର ସଂସ୍ଥା ଆପଣଙ୍କ ଆକାଉଣ୍ଟ ପାଇଁ Google Play ଷ୍ଟୋର୍ ସକ୍ଷମ କରିନାହାନ୍ତି। ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ବ୍ୟବସ୍ଥାପକଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269"><ph name="PLUGIN_NAME" /> ଆଉ ସମର୍ଥିତ ନୁହେଁ</translation> <translation id="9031549947500880805">Google Driveରେ ବ୍ୟାକଅପ୍ ନିଅନ୍ତୁ। ସହଜରେ ଆପଣଙ୍କ ଡାଟା ରିଷ୍ଟୋର୍ କରନ୍ତୁ କିମ୍ୱା ଯେ କୌଣସି ସମୟରେ ଡିଭାଇସ୍ ସ୍ୱିଚ୍ କରନ୍ତୁ। ଆପଣଙ୍କ ବ୍ୟାକଅପ୍ ଆପ୍ ଡାଟା ଅନ୍ତର୍ଭୁକ୍ତ କରେ।</translation> <translation id="9033765790910064284">ଯେ କୌଣସି ମତେ ଜାରି ରଖନ୍ତୁ</translation> <translation id="9033857511263905942">&ପେଷ୍ଟ କରନ୍ତୁ</translation> @@ -6840,6 +6853,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{ଆପଣଙ୍କର ଗୋଟିଏ ପ୍ରଚେଷ୍ଟା ବାକି ଅଛି।}other{ଆପଣଙ୍କର #ଟି ପ୍ରଚେଷ୍ଟା ବାକି ଅଛି।}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571"><ph name="ORIGIN" /> ପାଇଁ ପାସ୍ୱାର୍ଡକୁ ଅପ୍ଡେଟ୍ କରିବେ କି?</translation> +<translation id="9041049756004505730">ଲାଇଭ୍ କ୍ୟାପ୍ସନ୍ ଦୃଶ୍ୟମାନ ହେଉଛି, ଫୋକସ୍ ସାଇକଲ୍ କରିବାକୁ ⌘ + Option + ଅପ୍ କିମ୍ବା ଡାଉନ୍ ତୀର ଦବାନ୍ତୁ</translation> <translation id="9041692268811217999">ଆପଣଙ୍କର ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ୱାରା ଆପଣଙ୍କ ମେସିନ୍ରେ ଥିବା ସ୍ଥାନୀୟ ଫାଇଲ୍ଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ ଅକ୍ଷମ କରାଯାଇଛି</translation> <translation id="904224458472510106">ଏହି କାର୍ଯ୍ୟକୁ ପୂର୍ବବତ୍ କରାଯାଇପାରିବ ନାହିଁ</translation> <translation id="9042893549633094279">ଗୋପନୀୟତା ଏବଂ ସୁରକ୍ଷା</translation> @@ -6878,6 +6892,7 @@ <translation id="9088446193279799727">Linux କନଫିଗର୍ କରାଯାଇପାରିଲା ନାହିଁ। ଇଣ୍ଟର୍ନେଟକୁ ସଂଯୋଗ କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="9088917181875854783">ଦୟାକରି ସୁନିଶ୍ଚିତ କରନ୍ତୁ ଯେ "<ph name="DEVICE_NAME" />"ରେ ଏହି ପାସ୍କୀ ପ୍ରଦର୍ଶିତ ହୋଇଛି:</translation> <translation id="9089416786594320554">ଇନ୍ପୁଟ୍ ପଦ୍ଧତି</translation> +<translation id="909108997331068008"><ph name="EXISTING_USER" />ଙ୍କ ପ୍ରୋଫାଇଲ୍ ପୂର୍ବରୁ <ph name="NEW_USER" />ରେ ସାଇନ୍ ଇନ୍ ହୋଇଛି</translation> <translation id="9093429538970210897">ଅପଗ୍ରେଡ୍ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇ ନପାରିବା ସ୍ଥଳେ ଫାଇଲଗୁଡ଼ିକର ବ୍ୟାକ୍ ଅପ୍ ନେବା ପାଇଁ ସୁପାରିଶ କରାଯାଇଛି। ଅପଗ୍ରେଡ୍ କରିବା ଆରମ୍ଭ କଲେ Linux (ବିଟା) ବନ୍ଦ ହୋଇଯିବ। ଆଗକୁ ବଢ଼ିବା ପୂର୍ବରୁ ଦୟାକରି ଖୋଲା ଥିବା ଫାଇଲଗୁଡ଼ିକୁ ସେଭ୍ କରନ୍ତୁ।</translation> <translation id="9094033019050270033">ପାସ୍ୱର୍ଡ ଅପ୍ଡେଟ୍ କରନ୍ତୁ</translation> <translation id="9094038138851891550">ଉପଯୋଗକର୍ତ୍ତାନାମ ଅବୈଧ ଅଟେ</translation> @@ -7051,5 +7066,6 @@ <translation id="994289308992179865">&ଲୁପ୍</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">ସୁରକ୍ଷିତ ସଂଯୋଗ ସ୍ଥାପନ କରାଯାଉଛି...</translation> +<translation id="99731366405731005">ୱାଇ-ଫାଇ ସିଙ୍କ୍ ବ୍ୟବହାର କରିବାକୁ <ph name="LINK1_BEGIN" />Chrome ସିଙ୍କ୍<ph name="LINK1_END" /> ଚାଲୁ କରନ୍ତୁ। <ph name="LINK2_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK2_END" /></translation> <translation id="998747458861718449">ନି&ରୀକ୍ଷଣ କରନ୍ତୁ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 654ac80..debd93f7 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -925,6 +925,7 @@ <translation id="204914487372604757">Unda njia mkato</translation> <translation id="2050339315714019657">Wima</translation> <translation id="2053312383184521053">Data ya Wakati wa Hali Tulivu</translation> +<translation id="2054665754582400095">Maelezo ya wakati upo mtandaoni</translation> <translation id="2055585478631012616">Utaondolewa kwenye akaunti za tovuti hizi, ikiwemo vichupo ambavyo umefungua</translation> <translation id="205560151218727633">Nembo ya mratibu wa Google</translation> <translation id="2058456167109518507">Imetambua kifaa</translation> @@ -1211,6 +1212,7 @@ <translation id="2387052489799050037">Nenda kwenye Skrini ya Kwanza</translation> <translation id="2387458720915042159">Aina ya muunganisho wa seva mbadala</translation> <translation id="2390347491606624519">Imeshindwa kuunganisha kwenye seva mbadala, tafadhali ingia katika akaunti tena</translation> +<translation id="2390782873446084770">Usawazishaji Wi-Fi</translation> <translation id="2391082728065870591">Tuma Ripoti ya Maoni</translation> <translation id="2391419135980381625">Fonti wastani</translation> <translation id="2392163307141705938">Umefikisha kikomo cha muda uliowekwa na mzazi wako katika <ph name="IDS_SHORT_PRODUCT_NAME" />.</translation> @@ -1867,6 +1869,7 @@ <translation id="3157931365184549694">Rejesha</translation> <translation id="3158033540161634471">Weka mipangilio ya alama ya kidole</translation> <translation id="3159493096109238499">Kahawia Hafifu</translation> +<translation id="3159978855457658359">Badilisha jina la kifaa</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (inatumia maunzi)</translation> <translation id="3161522574479303604">Lugha zote</translation> <translation id="3162853326462195145">Akaunti ya shule</translation> @@ -3225,6 +3228,7 @@ <translation id="4761104368405085019">Tumia kipazasauti chako</translation> <translation id="4762718786438001384">Hifadhi ya diski ya kifaa ni ndogo sana</translation> <translation id="4763408175235639573">Vidakuzi vifuatavyo viliwekwa ulipofungua ukurasa huu</translation> +<translation id="4764368918650455114">Hakikisha kuwa vifaa vyote viwili vimefunguliwa, vinakaribiana na Bluetooth imewashwa. Iwapo unashiriki na kifaa cha Chromebook, hakikisha kwamba kipengele cha Uhamishaji wa Karibu kimewashwa (fungua eneo la hali kwa kuchagua saa, kisha uchague Uhamishaji wa Karibu). <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation> <translation id="4765582662863429759">Huruhusu programu ya Android Messages itume SMS kutoka simu yako kwenda Chromebook</translation> <translation id="476598255842811483">Hamna isipokuwa ukifungua kipengele cha Uhamishaji wa Karibu kwenye kifaa chako</translation> <translation id="4768332406694066911">Una vyeti kutoka kwenye mashirika haya vinavyokutambua</translation> @@ -3387,6 +3391,7 @@ <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation> <translation id="496185450405387901">Programu hii imesakinishwa na msimamizi wako.</translation> <translation id="4964455510556214366">Mpangilio</translation> +<translation id="496446150016900060">Kusawazisha mitandao ya Wi-Fi kwa kutumia simu yako</translation> <translation id="4965808351167763748">Una uhakika ungependa kuweka mipangilio kwenye kifaa hiki ili utumie Hangouts Meet?</translation> <translation id="496888482094675990">Programu ya Faili inatoa ufikiaji wa haraka kwenye faili ambazo umeweka kwenye Hifadhi ya Google, nafasi ya nje, au kifaa chako cha Chrome OS.</translation> <translation id="4971412780836297815">Fungua baada ya kukamilisha</translation> @@ -3693,6 +3698,7 @@ <translation id="5341980496415249280">Tafadhali subiri, inapakia...</translation> <translation id="5342091991439452114">Lazima PIN iwe na angalau tarakimu <ph name="MINIMUM" /></translation> <translation id="5344036115151554031">Inarejesha Linux</translation> +<translation id="5345916423802287046">Fungua programu unapoingia katika akaunti</translation> <translation id="5350293332385664455">Zima programu ya Mratibu wa Google</translation> <translation id="535123479159372765">Maandishi yamenakiliwa kutoka kwenye kifaa kingine</translation> <translation id="5352033265844765294">Uwekaji Saa</translation> @@ -4002,6 +4008,7 @@ <translation id="5704875434923668958">Inasawazisha kwenye</translation> <translation id="5705005699929844214">Onyesha chaguo za ufikivu kila wakati</translation> <translation id="5705882733397021510">Rudi Nyuma</translation> +<translation id="5707117624115653804">Weka mapendeleo ya ukubwa na muundo wa manukuu katika programu na tovuti zinazotumia mipangilio hii</translation> <translation id="5707185214361380026">Haijafaulu kupakia kiendelezi kutoka:</translation> <translation id="5708171344853220004">Jina la Microsoft Principal</translation> <translation id="5709557627224531708">Weka Chrome iwe kivinjari chako chaguomsingi</translation> @@ -4165,6 +4172,7 @@ <translation id="5904614460720589786">Imeshindwa kusakinisha <ph name="APP_NAME" /> kwa sababu ya tatizo la mipangilio. Tafadhali wasiliana na msimamizi wako. Msimbo wa hitilafu: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Inakaribia kukamilisha kusasishwa! Zima na uwashe kifaa chako ili ukamilishe kusasisha.</translation> <translation id="5906732635754427568">Data inayohusishwa na programu hii itaondolewa kwenye kifaa hiki.</translation> +<translation id="5908474332780919512">Fungua Programu Unapoingia Katika Akaunti</translation> <translation id="5908695239556627796">Kasi ya kusogeza kipanya</translation> <translation id="5908769186679515905">Zuia tovuti kutumia Flash</translation> <translation id="5910363049092958439">&Hifadhi Picha Kama...</translation> @@ -4705,6 +4713,7 @@ <translation id="6532527800157340614">Imeshindwa kuingia katika akaunti kwa sababu haikuleta data ya ufikiaji. Tafadhali kagua muunganisho wa mtandao kisha ujaribu tena.</translation> <translation id="6532663472409656417">Imejumuishwa kwenye Biashara</translation> <translation id="6535331821390304775">Ruhusu <ph name="ORIGIN" /> ifungue viungo vya aina hii kwenye programu inayohusiana kila wakati</translation> +<translation id="6537613839935722475">Jina linaweza kuwa na herufi, nambari na vistariungio. (-)</translation> <translation id="6538635548667167211">Mipangilio ya sasa ya matumizi ya data ni 'Data'</translation> <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Kumbuka:<ph name="END_BOLD" /> Washa tu kama unajua unachofanya au kama umeambiwa ufanye hivyo, kwani mkusanyiko wa data unaweza kupunguza utendaji.</translation> <translation id="6541638731489116978">Tovuti hii imezuiwa ili isifikie vitambuzi vya mwendo.</translation> @@ -4793,6 +4802,7 @@ <translation id="6650234781371031356">Nenosiri lako la <ph name="WEBSITE" /> limehifadhiwa kwenye kifaa hiki na kwenye Akaunti yako ya Google. Ungependa kufuta lipi?</translation> <translation id="665061930738760572">Fungua katika &Dirisha Jipya</translation> <translation id="6651237644330755633">Amini cheti hiki kwa ajili ya kutambua tovuti</translation> +<translation id="6651495917527016072">Sawazisha mitandao ya Wi-Fi kwa kutumia simu yako. <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation> <translation id="665355505818177700">Ujumuishaji wa Chrome <ph name="MS_AD_NAME" /> unatumika kwenye mifumo ya x86_64. Chromebook zinazotumia mfumo wa ARM au wa x86 hazitumii kipengele hiki.</translation> <translation id="6654509035557065241">Weka kuwa mtandao unaopendelea</translation> <translation id="6655190889273724601">Hali ya Wasanidi Programu</translation> @@ -5396,6 +5406,7 @@ <translation id="7375235221357833624">{0,plural, =1{Sasisha kifaa ndani ya saa moja}other{Sasisha kifaa ndani ya saa #}}</translation> <translation id="7376553024552204454">Angazia kiteuzi cha kipanya kinaposonga</translation> <translation id="7377451353532943397">Endelea kuzuia idhini ya kufikia kitambuzi</translation> +<translation id="7378611153938412599">Ni rahisi kukisia manenosiri dhaifu. Hakikisha kuwa unatunga manenosiri thabiti. <ph name="BEGIN_LINK" />Angalia vidokezo zaidi vya usalama.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Fungua Duka la Chrome kwenye Wavuti</translation> <translation id="7378812711085314936">Pata muunganisho wa data</translation> <translation id="7380622428988553498">Jina la kifaa lina herufi zisizo sahihi</translation> @@ -5922,6 +5933,7 @@ <translation id="7959074893852789871">Faili ina vyeti anuwai, badhii ya vingine ambavyo havikuletwa:</translation> <translation id="7961015016161918242">Katu</translation> <translation id="7963001036288347286">Kuongeza kasi ya padi ya kugusa</translation> +<translation id="7963608432878156675">Jina hili linaonekana kwenye vifaa vingine kwa ajili ya miunganisho ya Bluetooth na mtandao</translation> <translation id="7963826112438303517">Programu yako ya Mratibu hutumia rekodi hizi za sauti na maombi uliyotamka ili kuunda na kusasisha muundo wa sauti yako. Muundo huo unahifadhiwa tu katika vifaa ulikowasha kipengele cha Voice Match. Angalia au uweka upya shughuli za sauti katika Mipangilio ya Mratibu.</translation> <translation id="7966241909927244760">Nakili Anwani ya Picha</translation> <translation id="7966571622054096916">{COUNT,plural, =1{Kipengee kimoja katika orodha ya alamisho}other{Vipengee {COUNT} katika orodha ya alamisho}}</translation> @@ -6386,6 +6398,7 @@ <translation id="850875081535031620">Hakuna programu hasidi iliyopatikana</translation> <translation id="8509177919508253835">Badilisha funguo za usalama na uunde PIN</translation> <translation id="8509646642152301857">Upakuaji wa kamusi ya kukagua hijai umeshindwa.</translation> +<translation id="8512396579636492893">{COUNT,plural, =0{Hakuna manenosiri dhaifu yaliyopatikana}=1{Imepata nenosiri {COUNT} dhaifu}other{Imepata manenosiri {COUNT} dhaifu}}</translation> <translation id="8512476990829870887">Komesha Shughuli</translation> <translation id="851263357009351303">Ruhusu <ph name="HOST" /> ionyeshe picha kila wakati</translation> <translation id="8513108775083588393">Zungusha kiotomatiki</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index ddaa684..d185447a 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -928,6 +928,7 @@ <translation id="204914487372604757">షార్ట్కట్ను సృష్టించు</translation> <translation id="2050339315714019657">పోర్ట్రెయిట్</translation> <translation id="2053312383184521053">నిష్క్రియ స్థితి డేటా</translation> +<translation id="2054665754582400095">మీ ఉనికి</translation> <translation id="2055585478631012616">అలాగే మీరు తెరిచిన ట్యాబ్లతో సహా, ఆయా సైట్ల నుండి పూర్తిగా సైన్ అవుట్ చేయబడతారు</translation> <translation id="205560151218727633">Google సహాయకం లోగో</translation> <translation id="2058456167109518507">పరికరం కనుగొనబడింది</translation> @@ -1214,6 +1215,7 @@ <translation id="2387052489799050037">హోమ్కు వెళ్లండి</translation> <translation id="2387458720915042159">ప్రాక్సీ కనెక్షన్ రకం</translation> <translation id="2390347491606624519">ప్రాక్సీకి కనెక్ట్ చేయడం సాధ్యపడలేదు, దయచేసి మళ్లీ సైన్ ఇన్ చేయండి</translation> +<translation id="2390782873446084770">Wi-Fi సింక్</translation> <translation id="2391082728065870591">ఫీడ్బ్యాక్ రిపోర్ట్ను పంపు</translation> <translation id="2391419135980381625">ప్రామాణిక ఫాంట్</translation> <translation id="2392163307141705938"><ph name="IDS_SHORT_PRODUCT_NAME" /> కోసం మీ తల్లి/తండ్రి సెట్ చేసిన సమయ పరిమితిని మీరు చేరుకున్నారు.</translation> @@ -1870,6 +1872,7 @@ <translation id="3157931365184549694">పునరుద్ధరించు</translation> <translation id="3158033540161634471">మీ వేలిముద్రను సెటప్ చేయండి</translation> <translation id="3159493096109238499">లేత గోధుమరంగు</translation> +<translation id="3159978855457658359">పరికరం పేరును ఎడిట్ చేయండి</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (హార్డ్వేర్ మద్దతు కలిగినది)</translation> <translation id="3161522574479303604">అన్ని భాషలు</translation> <translation id="3162853326462195145">పాఠశాల ఖాతా</translation> @@ -3230,6 +3233,7 @@ <translation id="4761104368405085019">మీ మైక్రోఫోన్ను ఉపయోగించండి</translation> <translation id="4762718786438001384">పరికరంలో డిస్క్ స్థలం చాలా తక్కువగా ఉంది</translation> <translation id="4763408175235639573">మీరు ఈ పేజీని వీక్షించినప్పుడు కింది కుక్కీలు సెట్ చేయబడ్డాయి</translation> +<translation id="4764368918650455114">పరికరాలు రెండూ అన్లాక్ చేయబడి ఉన్నాయని, ఒకదానికొకటి దగ్గరగా ఉన్నాయని, బ్లూటూత్ ఆన్ చేసి ఉందని నిర్ధారించుకోండి. మీరు Chromebookతో షేర్ చేస్తుంటే, దానిలో సమీప షేరింగ్ ఫీచర్ ఆన్లో ఉందని నిర్ధారించుకోండి (సమయాన్ని ఎంచుకోవడం ద్వారా స్టేటస్ ప్రాంతాన్ని తెరిచి, ఆపై సమీప షేరింగ్ను ఎంచుకోండి). <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation> <translation id="4765582662863429759">మీ ఫోన్లో ఉన్న వచనాన్ని మీ Chromebookలో చూపడానికి Android సందేశాలుని అనుమతిస్తుంది</translation> <translation id="476598255842811483">మీ పరికరంలో మీరు సమీప షేరింగ్ను తెరిస్తే తప్ప ఎవ్వరికీ కనబడదు</translation> <translation id="4768332406694066911">మిమ్మల్ని గుర్తించే ఈ సంస్థల నుండి మీకు ప్రమాణపత్రాలు ఉన్నాయి</translation> @@ -3392,6 +3396,7 @@ <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation> <translation id="496185450405387901">మీ నిర్వాహకులు ఈ యాప్ను ఇన్స్టాల్ చేసారు.</translation> <translation id="4964455510556214366">అమరిక</translation> +<translation id="496446150016900060">మీ ఫోన్తో Wi-Fi నెట్వర్క్లను సింక్ చేయండి</translation> <translation id="4965808351167763748">Hangouts Meetను అమలు చేసేలా ఈ పరికరాన్ని ఖచ్చితంగా సెటప్ చేయాలని అనుకుంటున్నారా?</translation> <translation id="496888482094675990">మీరు Google డిస్క్, బాహ్య నిల్వ లేదా మీ Chrome OS పరికరంలో సేవ్ చేసిన ఫైల్లకు ఫైల్స్ యాప్, శీఘ్ర యాక్సెస్ను అందిస్తుంది.</translation> <translation id="4971412780836297815">పూర్తవగానే తెరువు</translation> @@ -3698,6 +3703,7 @@ <translation id="5341980496415249280">దయచేసి వేచి ఉండండి, ప్యాకింగ్ జరుగుతోంది...</translation> <translation id="5342091991439452114">PIN తప్పనిసరిగా కనీసం <ph name="MINIMUM" /> అంకెలు ఉండాలి</translation> <translation id="5344036115151554031">Linux రీస్టోర్ చేయబడుతోంది</translation> +<translation id="5345916423802287046">మీరు సైన్ ఇన్ చేసినప్పుడు యాప్ను ప్రారంభించండి</translation> <translation id="5350293332385664455">Google Assistantను ఆఫ్ చేయండి</translation> <translation id="535123479159372765">ఇతర పరికరం నుండి కాపీ చేసిన వచనం</translation> <translation id="5352033265844765294">టైమ్ స్టాంపింగ్</translation> @@ -4007,6 +4013,7 @@ <translation id="5704875434923668958">దీనికి సమకాలీకరిస్తోంది</translation> <translation id="5705005699929844214">ఎల్లప్పుడూ యాక్సెసిబిలిటీ ఆప్షన్లు చూపించు</translation> <translation id="5705882733397021510">వెనుకకు వెళ్లు</translation> +<translation id="5707117624115653804">ఈ సెట్టింగ్ను సపోర్ట్ చేసే యాప్లు, సైట్ల కోసం క్యాప్షన్ సైజ్, స్టయిల్ను అనుకూలంగా మార్చుకోండి</translation> <translation id="5707185214361380026">దీని నుండి ఎక్స్టెన్షన్ను లోడ్ చేయడంలో విఫలమైంది:</translation> <translation id="5708171344853220004">Microsoft ప్రధాన పేరు</translation> <translation id="5709557627224531708">Chromeని మీ డిఫాల్ట్ బ్రౌజర్గా సెట్ చేయండి</translation> @@ -4170,6 +4177,7 @@ <translation id="5904614460720589786">కాన్ఫిగరేషన్ సమస్య కారణంగా <ph name="APP_NAME" />ను సెటప్ చేయడం సాధ్యపడలేదు. దయచేసి మీ నిర్వాహకుడిని సంప్రదించండి. ఎర్రర్ కోడ్: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">దాదాపు తాజాగా ఉంది! అప్డేట్ను పూర్తి చేయడానికి మీ పరికరాన్ని పునఃప్రారంభించండి.</translation> <translation id="5906732635754427568">ఈ యాప్తో అనుబంధించబడిన డేటా ఈ పరికరం నుండి తీసివేయబడుతుంది.</translation> +<translation id="5908474332780919512">మీరు సైన్ ఇన్ చేసినప్పుడు యాప్ను ప్రారంభించండి</translation> <translation id="5908695239556627796">మౌస్ స్క్రోల్ వేగం</translation> <translation id="5908769186679515905">Flashని అమలు చేయనీయకుండా సైట్లను బ్లాక్ చేయి</translation> <translation id="5910363049092958439">చిత్రాన్ని ఇలా సే&వ్ చేయి...</translation> @@ -4710,6 +4718,7 @@ <translation id="6532527800157340614">మీ యాక్సెస్ టోకెన్ని పొందడం సాధ్యం కాలేదు కాబట్టి, సైన్ ఇన్ విఫలమైంది. దయచేసి మీ నెట్వర్క్ కనెక్షన్ను తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి.</translation> <translation id="6532663472409656417">ఎంటర్ప్రైజ్ నమోదు చేయబడింది</translation> <translation id="6535331821390304775">అనుబంధిత యాప్లో ఈ రకమైన లింక్లను తెరవడానికి <ph name="ORIGIN" />ను ఎల్లప్పుడూ అనుమతించు</translation> +<translation id="6537613839935722475">పేరులో అక్షరాలు, నంబర్లు, అడ్డు గీతలు (-) ఉపయోగించవచ్చు</translation> <translation id="6538635548667167211">ప్రస్తుతం డేటా వినియోగం డేటా ద్వారా జరిగేలా సెట్ చేయబడి ఉంది</translation> <translation id="654039047105555694"><ph name="BEGIN_BOLD" />గమనిక:<ph name="END_BOLD" /> డేటా సేకరణ వలన పనితీరు తగ్గవచ్చు, అందువల్ల మీరు చేస్తున్నది మీకు తెలిసినప్పుడు లేదా ఇలా చేయాలని మీకు చెప్పినప్పుడు మాత్రమే ప్రారంభించండి.</translation> <translation id="6541638731489116978">ఈ సైట్ మీ మోషన్ సెన్సార్లను యాక్సెస్ చేయనీయకుండా బ్లాక్ చేయబడింది.</translation> @@ -4798,6 +4807,7 @@ <translation id="6650234781371031356">మీ <ph name="WEBSITE" /> పాస్వర్డ్ ఈ పరికరంలో అలాగే మీ Google ఖాతాలో కూడా స్టోర్ చేయబడింది. మీరు దేన్ని తొలగించాలనుకొంటున్నారు?</translation> <translation id="665061930738760572">&కొత్త విండోలో తెరువు</translation> <translation id="6651237644330755633">వెబ్సైట్లను గుర్తించడానికి ఈ ప్రమాణపత్రాన్ని విశ్వసిస్తుంది</translation> +<translation id="6651495917527016072">మీ ఫోన్తో Wi-Fi నెట్వర్క్లను సింక్ చేయండి. <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> ఏకీకరణకు కేవలం x86_64 ప్లాట్ఫారమ్లలో మాత్రమే మద్దతు ఉంది. ఈ కార్యశీలత ARM లేదా x86 ప్లాట్ఫారమ్ కంటే ఉన్నత స్థాయిలో రూపొందించబడిన Chromebookలకు పని చేయదు.</translation> <translation id="6654509035557065241">ప్రాధాన్య నెట్వర్క్</translation> <translation id="6655190889273724601">డెవలపర్ మోడ్</translation> @@ -5401,6 +5411,7 @@ <translation id="7375235221357833624">{0,plural, =1{ఒక గంట లోపు పరికరాన్ని అప్డేట్ చేయండి}other{# గంటల లోపు పరికరాన్ని అప్డేట్ చేయండి}}</translation> <translation id="7376553024552204454">మౌస్ కర్సర్ జరుగుతున్నప్పుడు దానిని హైలైట్ చేయి</translation> <translation id="7377451353532943397">సెన్సార్ యాక్సెస్ను బ్లాక్ చేయడం కొనసాగించు</translation> +<translation id="7378611153938412599">బలహీనమైన పాస్వర్డ్లను ఊహించడం చాలా సులభం. మీరు శక్తివంతమైన పాస్వర్డ్లను క్రియేట్ చేస్తున్నారని నిర్ధారించుకోండి. <ph name="BEGIN_LINK" />మరిన్ని భద్రతా చిట్కాలను చూడండి.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome వెబ్ స్టోర్ను తెరువు</translation> <translation id="7378812711085314936">డేటా కనెక్షన్ను పొందండి</translation> <translation id="7380622428988553498">పరికరం పేరులో చెల్లని అక్షరాలు ఉన్నాయి</translation> @@ -5924,6 +5935,7 @@ <translation id="7959074893852789871">ఫైల్ దిగుమతి చెయ్యని కొన్ని బహుళ ప్రమాణపత్రాలను కలిగి ఉంది:</translation> <translation id="7961015016161918242">ఎప్పుడూ లేదు</translation> <translation id="7963001036288347286">టచ్ప్యాడ్ యాక్సిలరేషన్</translation> +<translation id="7963608432878156675">ఇతర పరికరాల బ్లూటూత్, నెట్వర్క్ కనెక్షన్లలో ఈ పేరు కనిపిస్తుంది</translation> <translation id="7963826112438303517">మీ వాయిస్ నమూనాను సృష్టించడానికి, అప్డేట్ చేయడానికి మీ అసిస్టెంట్ ఈ రికార్డింగ్లను, మీ ప్రసంగ అభ్యర్థనలను ఉపయోగిస్తుంది, ఈ వాయిస్ నమూనా మీరు Voice Match ఆన్ చేసిన పరికరాలలో మాత్రమే నిల్వ చేయబడుతుంది. అసిస్టెంట్ సెట్టింగ్లలో వాయిస్ కార్యకలాపం చూడండి లేదా దానికి తిరిగి శిక్షణను ఇవ్వండి.</translation> <translation id="7966241909927244760">చిత్రం చిరునామాను కా&పీ చేయండి</translation> <translation id="7966571622054096916">{COUNT,plural, =1{బుక్మార్క్ లిస్ట్లో 1 ఐటెమ్ ఉంది}other{బుక్మార్క్ లిస్ట్లో {COUNT} ఐటెమ్లు ఉన్నాయి}}</translation> @@ -6385,6 +6397,7 @@ <translation id="850875081535031620">హానికరమైన సాఫ్ట్వేర్ కనుగొనబడలేదు</translation> <translation id="8509177919508253835">సెక్యూరిటీ కీలు రీసెట్ చేసి, పిన్లను సృష్టించండి</translation> <translation id="8509646642152301857">స్పెల్ చెక్ తనిఖీ నిఘంటువును డౌన్లోడ్ చేయడం విఫలమైంది.</translation> +<translation id="8512396579636492893">{COUNT,plural, =0{బలహీనమైన పాస్వర్డ్లు ఏవీ కనుగొనబడలేదు}=1{{COUNT} బలహీనమైన పాస్వర్డ్ కనుగొనబడింది}other{{COUNT} బలహీనమైన పాస్వర్డ్లు కనుగొనబడ్డాయి}}</translation> <translation id="8512476990829870887">ప్రాసెస్ని ముగించు</translation> <translation id="851263357009351303">చిత్రాలను చూపించడానికి ఎల్లప్పుడూ <ph name="HOST" />ను అనుమతించు</translation> <translation id="8513108775083588393">ఆటో-రొటేట్</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index 6dfc72d..44d3ea5 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -928,6 +928,7 @@ <translation id="204914487372604757">สร้างทางลัด</translation> <translation id="2050339315714019657">แนวตั้ง</translation> <translation id="2053312383184521053">ข้อมูลของสถานะไม่มีการใช้งาน</translation> +<translation id="2054665754582400095">การใช้งาน</translation> <translation id="2055585478631012616">คุณจะออกจากระบบของเว็บไซต์เหล่านี้ รวมถึงในแท็บที่เปิดอยู่</translation> <translation id="205560151218727633">โลโก้ Google Assistant</translation> <translation id="2058456167109518507">อุปกรณ์ที่ตรวจพบ</translation> @@ -1214,6 +1215,7 @@ <translation id="2387052489799050037">ไปที่หน้าจอหลัก</translation> <translation id="2387458720915042159">ประเภทการเชื่อมต่อพร็อกซี</translation> <translation id="2390347491606624519">เชื่อมต่อพร็อกซีไม่สำเร็จ โปรดลงชื่อเข้าใช้อีกครั้ง</translation> +<translation id="2390782873446084770">การซิงค์ Wi-Fi</translation> <translation id="2391082728065870591">ส่งรายงานความคิดเห็น</translation> <translation id="2391419135980381625">แบบอักษรมาตรฐาน</translation> <translation id="2392163307141705938">คุณใช้งาน <ph name="IDS_SHORT_PRODUCT_NAME" /> ถึงขีดจำกัดเวลาที่ผู้ปกครองตั้งไว้แล้ว</translation> @@ -1870,6 +1872,7 @@ <translation id="3157931365184549694">คืนค่า</translation> <translation id="3158033540161634471">ตั้งค่าลายนิ้วมือ</translation> <translation id="3159493096109238499">สีเบจ</translation> +<translation id="3159978855457658359">แก้ไขชื่ออุปกรณ์</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (ใช้ฮาร์ดแวร์คีย์เข้ารหัสลับ)</translation> <translation id="3161522574479303604">ทุกภาษา</translation> <translation id="3162853326462195145">บัญชีโรงเรียน</translation> @@ -3230,6 +3233,7 @@ <translation id="4761104368405085019">ใช้ไมโครโฟนของคุณ</translation> <translation id="4762718786438001384">พื้นที่ดิสก์ของอุปกรณ์ใกล้จะเต็มแล้ว</translation> <translation id="4763408175235639573">มีการวางคุกกี้ต่อไปนี้เมื่อคุณดูหน้าเว็บนี้</translation> +<translation id="4764368918650455114">ตรวจสอบว่าอุปกรณ์ทั้ง 2 เครื่องปลดล็อกแล้ว อยู่ใกล้กัน และเปิดบลูทูธอยู่ หากจะแชร์กับ Chromebook ให้ตรวจสอบว่าเปิดการแชร์ใกล้เคียงแล้ว (เปิดพื้นที่แสดงสถานะโดยเลือกเวลา จากนั้นเลือกการแชร์ใกล้เคียง) <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation> <translation id="4765582662863429759">อนุญาตให้ Android Messages นำส่งข้อความจากโทรศัพท์ไปยัง Chromebook ของคุณ</translation> <translation id="476598255842811483">ไม่มี เว้นแต่คุณจะเปิดการแชร์ใกล้เคียงในอุปกรณ์</translation> <translation id="4768332406694066911">คุณมีใบรับรองจากองค์กรเหล่านี้ซึ่งระบุถึงตัวคุณ</translation> @@ -3392,6 +3396,7 @@ <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation> <translation id="496185450405387901">ผู้ดูแลระบบเป็นคนติดตั้งแอปนี้</translation> <translation id="4964455510556214366">การจัดเรียง</translation> +<translation id="496446150016900060">ซิงค์เครือข่าย Wi-Fi กับโทรศัพท์</translation> <translation id="4965808351167763748">คุณแน่ใจไหมว่าต้องการตั้งค่าอุปกรณ์นี้ให้เรียกใช้การประชุม Hangouts </translation> <translation id="496888482094675990">แอป Files มอบการเข้าถึงไฟล์ที่คุณบันทึกไว้ใน Google ไดรฟ์ พื้นที่เก็บข้อมูลภายนอก หรืออุปกรณ์ Chrome OS ของคุณอย่างรวดเร็ว</translation> <translation id="4971412780836297815">เปิดเมื่อเสร็จสิ้น</translation> @@ -3698,6 +3703,7 @@ <translation id="5341980496415249280">โปรดรอ กำลังบรรจุ...</translation> <translation id="5342091991439452114">PIN ต้องมีอย่างน้อย <ph name="MINIMUM" /> หลัก</translation> <translation id="5344036115151554031">กำลังคืนค่า Linux</translation> +<translation id="5345916423802287046">เริ่มต้นแอปเมื่อคุณลงชื่อเข้าใช้</translation> <translation id="5350293332385664455">ปิด Google Assistant</translation> <translation id="535123479159372765">ข้อความคัดลอกมาจากอุปกรณ์อื่น</translation> <translation id="5352033265844765294">การระบุเวลา</translation> @@ -4007,6 +4013,7 @@ <translation id="5704875434923668958">กำลังซิงค์กับ</translation> <translation id="5705005699929844214">แสดงตัวเลือกการช่วยเหลือพิเศษเสมอ</translation> <translation id="5705882733397021510">ย้อนกลับ</translation> +<translation id="5707117624115653804">ปรับแต่งขนาดและรูปแบบคำบรรยายภาพในแอปและเว็บไซต์ที่รองรับการตั้งค่านี้</translation> <translation id="5707185214361380026">ไม่สามารถโหลดส่วนขยายจาก:</translation> <translation id="5708171344853220004">ชื่อหลักของ Microsoft</translation> <translation id="5709557627224531708">ตั้ง Chrome เป็นเบราว์เซอร์เริ่มต้น</translation> @@ -4170,6 +4177,7 @@ <translation id="5904614460720589786">ตั้งค่า <ph name="APP_NAME" /> ไม่ได้เนื่องจากมีปัญหาเกี่ยวกับการกำหนดค่า โปรดติดต่อผู้ดูแลระบบ รหัสข้อผิดพลาด: <ph name="ERROR_CODE" /></translation> <translation id="5906655207909574370">การอัปเดตใกล้จะเสร็จเรียบร้อยแล้ว รีสตาร์ทอุปกรณ์เพื่อให้การอัปเดตเสร็จสิ้น</translation> <translation id="5906732635754427568">ระบบจะนำข้อมูลที่เชื่อมโยงกับแอปนี้ออกจากอุปกรณ์เครื่องนี้</translation> +<translation id="5908474332780919512">เริ่มต้นแอปเมื่อคุณลงชื่อเข้าใช้</translation> <translation id="5908695239556627796">ความเร็วในการเลื่อนเมาส์</translation> <translation id="5908769186679515905">บล็อกไม่ให้เว็บไซต์เรียกใช้ Flash</translation> <translation id="5910363049092958439">&บันทึกรูปภาพเป็น...</translation> @@ -4710,6 +4718,7 @@ <translation id="6532527800157340614">ลงชื่อเข้าใช้ไม่สำเร็จเนื่องจากระบบเรียกดูโทเค็นเพื่อการเข้าถึงไม่ได้ โปรดตรวจสอบการเชื่อมต่อเครือข่ายแล้วลองอีกครั้ง</translation> <translation id="6532663472409656417">องค์กรที่ลงทะเบียน</translation> <translation id="6535331821390304775">อนุญาตให้ <ph name="ORIGIN" /> เปิดลิงก์ประเภทนี้ในแอปที่เชื่อมโยงทุกครั้ง</translation> +<translation id="6537613839935722475">ชื่อมีตัวอักษร ตัวเลข และขีดกลาง (-) ได้</translation> <translation id="6538635548667167211">การตั้งค่าการใช้อินเทอร์เน็ตในปัจจุบันคือ "อินเทอร์เน็ตมือถือ"</translation> <translation id="654039047105555694"><ph name="BEGIN_BOLD" />หมายเหตุ:<ph name="END_BOLD" /> เปิดใช้งานเฉพาะเมื่อคุณทราบว่าคุณกำลังทำอะไรอยู่ หรือเมื่อคุณถูกร้องขอให้ทำเช่นนั้นเท่านั้น เนื่องจากคอลเล็กชันข้อมูลอาจลดประสิทธิภาพในการปฏิบัติงาน</translation> <translation id="6541638731489116978">เว็บไซต์นี้ถูกบล็อกไม่ให้เข้าถึงเซ็นเซอร์ตรวจจับความเคลื่อนไหว</translation> @@ -4798,6 +4807,7 @@ <translation id="6650234781371031356">รหัสผ่านสำหรับ <ph name="WEBSITE" /> จัดเก็บอยู่ในอุปกรณ์นี้และบัญชี Google คุณต้องการลบรหัสผ่านรายการใด</translation> <translation id="665061930738760572">เปิดใน&หน้าต่างใหม่</translation> <translation id="6651237644330755633">เชื่อถือใบรับรองนี้ในการระบุเว็บไซต์</translation> +<translation id="6651495917527016072">ซิงค์เครือข่าย Wi-Fi กับโทรศัพท์ <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation> <translation id="665355505818177700">รองรับการรวม Chrome <ph name="MS_AD_NAME" /> ในแพลตฟอร์ม x86_64 เท่านั้น Chromebook ที่สร้างในแพลตฟอร์ม ARM หรือ x86 ไม่รองรับฟังก์ชันนี้</translation> <translation id="6654509035557065241">ต้องการใช้เครือข่ายนี้</translation> <translation id="6655190889273724601">โหมดนักพัฒนาซอฟต์แวร์</translation> @@ -5401,6 +5411,7 @@ <translation id="7375235221357833624">{0,plural, =1{อัปเดตอุปกรณ์ภายใน 1 ชั่วโมง}other{อัปเดตอุปกรณ์ภายใน # ชั่วโมง}}</translation> <translation id="7376553024552204454">ไฮไลต์เคอร์เซอร์เมาส์เมื่อขยับ</translation> <translation id="7377451353532943397">บล็อกการเข้าถึงเซ็นเซอร์ต่อไป</translation> +<translation id="7378611153938412599">รหัสผ่านที่ไม่รัดกุมนั้นคาดเดาได้ง่าย ตรวจสอบว่าคุณกำลังตั้งรหัสผ่านที่รัดกุม <ph name="BEGIN_LINK" />ดูเคล็ดลับความปลอดภัยเพิ่มเติม<ph name="END_LINK" /></translation> <translation id="73786666777299047">เปิด Chrome เว็บสโตร์</translation> <translation id="7378812711085314936">ขอเชื่อมต่อข้อมูล</translation> <translation id="7380622428988553498">ชื่ออุปกรณ์มีอักขระที่ไม่ถูกต้อง</translation> @@ -5925,6 +5936,7 @@ <translation id="7959074893852789871">ไฟล์มีใบรับรองหลายใบ แต่มีบางรายการที่ไม่ได้นำเข้า:</translation> <translation id="7961015016161918242">ไม่ต้องเลย</translation> <translation id="7963001036288347286">การเร่งความเร็วของทัชแพด</translation> +<translation id="7963608432878156675">อุปกรณ์อื่นๆ จะเห็นชื่อนี้เมื่อมีการเชื่อมต่อบลูทูธและเครือข่าย</translation> <translation id="7963826112438303517">Assistant จะใช้ไฟล์เสียงและเสียงคำขอของคุณในการสร้างและอัปเดตรูปแบบเสียง ซึ่งจะจัดเก็บไว้ในอุปกรณ์ที่คุณเปิด Voice Match เท่านั้น ดูหรือฝึกกิจกรรมเสียงอีกครั้งในการตั้งค่า Assistant</translation> <translation id="7966241909927244760">คัด&ลอกที่อยู่รูปภาพ</translation> <translation id="7966571622054096916">{COUNT,plural, =1{1 รายการในรายการบุ๊กมาร์ก}other{{COUNT} รายการในรายการบุ๊กมาร์ก}}</translation> @@ -6389,6 +6401,7 @@ <translation id="850875081535031620">ไม่พบซอฟต์แวร์ที่เป็นอันตราย</translation> <translation id="8509177919508253835">รีเซ็ตคีย์ความปลอดภัยและสร้าง PIN</translation> <translation id="8509646642152301857">การดาวน์โหลดพจนานุกรมตรวจสอบการสะกดล้มเหลว</translation> +<translation id="8512396579636492893">{COUNT,plural, =0{ไม่พบรหัสผ่านที่ไม่รัดกุม}=1{พบรหัสผ่านที่ไม่รัดกุม {COUNT} รายการ}other{พบรหัสผ่านที่ไม่รัดกุม {COUNT} รายการ}}</translation> <translation id="8512476990829870887">สิ้นสุดกระบวนการ</translation> <translation id="851263357009351303">อนุญาตให้ <ph name="HOST" /> แสดงภาพเสมอ</translation> <translation id="8513108775083588393">หมุนอัตโนมัติ</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index d61f1baf..70a6654 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -871,6 +871,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" /> نے ADB ڈیبگنگ کو غیر فعال کر دیا ہے۔ یہ آپ کے <ph name="DEVICE_TYPE" /> کو 24 گھنٹوں میں ری سیٹ کر دے گا۔ کوئی بھی فائل کا بیک اپ لیں جسے آپ رکھنا چاہتے ہیں۔</translation> <translation id="1977965994116744507">اپنا <ph name="DEVICE_TYPE" /> غیر مقفل کرنے کیلئے اپنا فون قریب کریں۔</translation> <translation id="1978006917103730774">مستقبل میں سافٹ ویئر اور سیکیورٹی اپ ڈیٹس خودکار طور پر انسٹال ہو جائیں گی۔</translation> +<translation id="1978057560491495741">پتہ ہٹائیں</translation> <translation id="1979095679518582070">اس خصوصیت کو آف کرنے سے سسٹم اپ ڈیٹس اور سیکیورٹی جیسی لازمی سروسز کے لیے درکار معلومات بھیجنے کی آپ کے آلے کی اہلیت متاثر نہیں ہوتی ہے۔</translation> <translation id="1979280758666859181">آپ <ph name="PRODUCT_NAME" /> کے ایک پرانے ورژن کے ساتھ ایک چینل میں تبدیل ہو رہے ہیں۔ آپ کے آلہ پر فی الحال انسٹال کردہ ورژن سے اس چینل ورژن کے مماثل ہونے پر چینل کی تبدیلی لاگو ہوگی۔</translation> <translation id="197989455406964291">KDC مرموز کاری کی قسم کو سپورٹ نہیں کرتا ہے</translation> @@ -1072,6 +1073,7 @@ <translation id="2224444042887712269">یہ ترتیب <ph name="OWNER_EMAIL" /> سے متعلق ہے۔</translation> <translation id="2224551243087462610">فولڈر کے نام میں ترمیم کریں</translation> <translation id="2225864335125757863">اپنے اکاؤنٹ کو محفوظ رکھنے کے لیے ان پاس ورڈز کو فوری طور پر تبدیل کریں:</translation> +<translation id="2226204716217107988">دوسری پروفائل پر سوئچ کریں؟</translation> <translation id="2226449515541314767">اس سائٹ کو MIDI آلات پر مکمل کنٹرول حاصل کرنے سے مسدود کر دیا گیا ہے۔</translation> <translation id="2226907662744526012">PIN داخل کرنے کے بعد خودکار طور پر غیر مقفل کریں</translation> <translation id="222704500187107962">موجودہ پوشیدگی سیشن سے باہر نکل جانے کے بعد یہ استثناء خودکار طور پر حذف ہو جائے گا</translation> @@ -1141,6 +1143,7 @@ <translation id="2307462900900812319">نیٹ ورک کنفیگر کریں</translation> <translation id="230927227160767054">یہ صفحہ ایک سرور ہینڈلر انسٹال کرنا چاہتا ہے۔</translation> <translation id="2309620859903500144">اس سائٹ کو آپ کے موشن اور لائٹ سینسرز تک رسائی حاصل کرنے سے مسدود کر دیا گیا ہے۔</translation> +<translation id="2312219318583366810">صفحہ کا URL</translation> <translation id="2314165183524574721">موجودہ نظر آنے کی ترتیب پوشیدہ ہے</translation> <translation id="2314774579020744484">صفحات کا ترجمہ کرتے وقت استعمال کی جانے والی زبان</translation> <translation id="2315414688463285945">Linux فائلز کو کنفیگر کرنے میں خرابی پیش آ گئی۔ براہ کرم دوبارہ کوشش کریں۔</translation> @@ -2344,6 +2347,7 @@ <translation id="3713047097299026954">اس سیکیورٹی کلید میں کوئی بھی سائن ان ڈیٹا نہیں ہے</translation> <translation id="3714195043138862580">اس ڈیمو آلہ کو "غیر فراہم کردہ" کی حالت میں رکھ دیا گیا ہے۔</translation> <translation id="3714633008798122362">ویب کیلنڈر</translation> +<translation id="3715954932774762075">متعدد زبانوں میں دستیاب ایپس اور ویب سائٹس اس فہرست سے پہلی سپورٹ کی جانے والی زبان استعمال کریں گی۔ یہ ترجیحات آپ کے براؤزر کی ترتیبات کے ساتھ مطابقت پذیر ہیں۔ <ph name="BEGIN_LINK_LEARN_MORE" />مزید جانیں<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">ہوم صفحہ</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">آپ اور Google</translation> @@ -2504,6 +2508,7 @@ <translation id="3882165008614329320">کیمرے یا فائل سے لی گئی موجودہ ویڈیو</translation> <translation id="3886446263141354045">اس سائٹ تک رسائی حاصل کرنے کی آپ کی درخواست <ph name="NAME" /> کو بھیج دی گئی ہے</translation> <translation id="3888550877729210209"><ph name="LOCK_SCREEN_APP_NAME" /> کے ساتھ نوٹس لیے جا رہے ہیں</translation> +<translation id="3890064827463908288">Wi-Fi سِنک استعمال کرنے کے لئے Chrome Sync کو آن کریں</translation> <translation id="3892414795099177503">OpenVPN / L2TP شامل کریں…</translation> <translation id="3893536212201235195">اپنی ایکسیسبیلٹی کی ترتیبات پڑھیں اور تبدیل کریں</translation> <translation id="3893630138897523026">ChromeVox (صوتی تاثرات)</translation> @@ -3775,6 +3780,7 @@ <translation id="5449588825071916739">سبھی ٹیبز کا بُک مارک بنائیں</translation> <translation id="5449716055534515760">&ونڈو بند کردیں</translation> <translation id="5452974209916053028">موجودہ پوشیدگی سیشن: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />، <ph name="RECENT_PERMISSIONS_CHANGE_1" />، <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">کیپشن بلبلے کو %<ph name="POSITION_ON_SCREEN_FROM_LEFT" /> اوپر، %<ph name="POSITION_ON_SCREEN_FROM_TOP" /> نیچے کی جانب منتقل کیا گیا</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> کے ساتھ</translation> <translation id="5457113250005438886">غلط</translation> <translation id="5457459357461771897">اپنے کمپیوٹر سے تصاویر، موسیقی اور دیگر میڈیا پڑھیں اور حذف کریں</translation> @@ -3918,6 +3924,7 @@ <translation id="5602765853043467355">بُک مارکس، سرگزشت، پاس ورڈز وغیرہ اس آلہ سے صاف کريں</translation> <translation id="5605623530403479164">دیگر سرچ انجنز</translation> <translation id="5605758115928394442">اس بات کی تصدیق کرنے کیلئے کہ یہ آپ ہی ہیں، آپ کے فون پر ایک اطلاع بھیجی گئی۔</translation> +<translation id="560834977503641186">Wi-Fi سِنک، مزید جانیں</translation> <translation id="5608580678041221894">تراشنے کے علاقہ کو ایڈجسٹ یا منتقل کرنے کیلئے درج ذیل کلیدوں کو تھپتھپائیں</translation> <translation id="5609231933459083978">ایپلیکیشن غلط معلوم پڑتی ہے۔</translation> <translation id="5610038042047936818">کیمرے کی وضع پر سوئچ کریں</translation> @@ -4108,6 +4115,7 @@ <translation id="5841270259333717135">ایتھرنیٹ کو ترتیب دیں</translation> <translation id="5842497610951477805">بلوٹوتھ فعال</translation> <translation id="5843706793424741864">فارن ہائیٹ</translation> +<translation id="584451707753263735">لائیو کیپشن مرئی ہے، فوکس کو مدور کرنے کے لئے F6 دبائیں</translation> <translation id="5844574845205796324">دریافت کرنے کے لیے نیا مواد تجویز کریں</translation> <translation id="5846200638699387931">تعلق کے سِنٹیکس کی خرابی: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">اپ ڈیٹس اور ایپس انسٹال کریں جاری رکھ کر، آپ اتفاق کرتے ہیں کہ یہ آلہ ممکنہ طور پر سیلولر ڈیٹا استعمال کر کے Google، آپ کے کیریئر، اور آپ کے آلہ کے مینوفیکچرر سے اپ ڈیٹس اور ایپس خودکار طور پر ڈاؤن لوڈ اور انسٹال کر سکتا ہے۔ ان میں سے کچھ ایپس درون ایپ خریداریوں کی پیش کش کر سکتی ہیں۔</translation> @@ -5362,6 +5370,7 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> اب پوری سکرین ہے۔</translation> <translation id="7340650977506865820">سائٹ آپ کی اسکرین کا اشتراک کر رہی ہے</translation> <translation id="7341834142292923918">اس سائٹ تک رسائی درکار ہے</translation> +<translation id="7343372807593926528">براہ کرم تاثرات بھیجنے سے پہلے مسئلے کی توضیح کریں۔</translation> <translation id="7345706641791090287">اپنے پاس ورڈ کی توثیق کریں</translation> <translation id="7346909386216857016">ٹھیک ہے، سمجھ آ گئی</translation> <translation id="7347452120014970266">اس سے <ph name="ORIGIN_NAME" /> کا اسٹور کردہ تمام ڈیٹا اور کوکیز اور اس کی انسٹال کردہ ایپس صاف ہو جائیں گی</translation> @@ -5778,6 +5787,7 @@ <translation id="7819857487979277519">PSK (WPA یا RSN)</translation> <translation id="7819992334107904369">Chrome Sync</translation> <translation id="782057141565633384">ویڈیو پتہ کا&پی کریں</translation> +<translation id="7822187537422052256">کیا آپ واقعی اس پتے کو ہٹانا چاہتے ہیں؟</translation> <translation id="7824864914877854148">خرابی کی وجہ سے بیک اپ مکمل نہیں ہو سکا</translation> <translation id="7825666486843191125">آپ کی اسکرین کے غیر مقفل ہونے پر آپ کے قریب موجود تمام رابطے</translation> <translation id="782590969421016895">حالیہ صفحات استعمال کریں</translation> @@ -6304,6 +6314,7 @@ <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' کیلئے تلاش کے نتائج</translation> <translation id="8419368276599091549">اپنے <ph name="DEVICE_TYPE" /> میں خوش آمدید!</translation> <translation id="8420308167132684745">لغت کے اندراجات میں ترمیم کریں</translation> +<translation id="8421361468937925547">لائیو کیپشن (صرف انگریزی)</translation> <translation id="8422787418163030046">ٹرے موجود نہیں ہے</translation> <translation id="8425213833346101688">تبدیل کریں</translation> <translation id="8425492902634685834">ٹاسک بار میں پن کریں</translation> @@ -6332,6 +6343,7 @@ <translation id="8449036207308062757">اسٹوریج کا نظم کریں</translation> <translation id="8452135315243592079">غائب SIM کارڈ</translation> <translation id="8455026683977728932">ADB کا نمونہ فعال کرنے میں ناکام</translation> +<translation id="8456398879271637452">لائیو کیپشن مرئی ہے، فوکس کو مدور کرنے کے لئے Ctrl + Back یاCtrl + Forward دبائیں</translation> <translation id="845702320058262034">منسلک نہیں ہو سکتا۔ یقینی بنائیں کہ آپ کے فون کا بلوٹوتھ آن ہے۔</translation> <translation id="8457451314607652708">بُک مارکس درآمد کریں</translation> <translation id="8458627787104127436">سبھی (<ph name="URL_COUNT" />) کو نئی ونڈو میں کھولیں</translation> @@ -6842,6 +6854,7 @@ <translation id="9027459031423301635">لنک کو نئے &ٹیب میں کھولیں</translation> <translation id="9030515284705930323">آپ کی تنظیم نے آپ کے اکاؤنٹ کیلئے Google Play اسٹور کو فعال نہیں کیا ہے۔ مزید معلومات کیلئے اپنے منتظم سے رابطہ کریں۔</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269"><ph name="PLUGIN_NAME" /> مزید تعارون یافتہ نہیں ہے</translation> <translation id="9031549947500880805">Google Drive میں بیک اپ لیں۔ آسانی سے اپنا ڈیٹا بحال کریں یا کسی بھی وقت آلہ کو سوئچ کریں۔ آپ کے بیک اپ میں ایپ کا ڈیٹا شامل ہے۔</translation> <translation id="9033765790910064284">بہرصورت جاری رکھیں</translation> <translation id="9033857511263905942">&پیسٹ کریں</translation> @@ -6850,6 +6863,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{آپ کے پاس ایک کوشش باقی ہے۔}other{آپ کے پاس # کوششیں باقی ہیں۔}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571"><ph name="ORIGIN" /> کے لیے پاس ورڈ کو اپ ڈیٹ کریں؟</translation> +<translation id="9041049756004505730">لائیو کیپشن مرئی ہے، فوکس کو مدور کرنے کے لئے ⌘ + اختیار + اوپر تیر کا نشان یا نیچے تیر کا نشان دبائیں</translation> <translation id="9041692268811217999">آپ کے منتظم نے آپ کی مشین پر مقامی فائلوں تک رسائی کو غیر فعال کر دیا ہے</translation> <translation id="904224458472510106">اس عمل کو کالعدم نہیں کیا جا سکتا</translation> <translation id="9042893549633094279">رازداری اور سیکیورٹی</translation> @@ -6888,6 +6902,7 @@ <translation id="9088446193279799727">Linux کو کنفیگر نہیں کیا جا سکا۔ انٹرنیٹ سے منسلک ہوں اور دوبارہ کوشش کریں۔</translation> <translation id="9088917181875854783">براہ کرم توثیق کریں یہ پاس کلید "<ph name="DEVICE_NAME" />" پر دکھائی دیتا ہے:</translation> <translation id="9089416786594320554">اندراج کے طریقے</translation> +<translation id="909108997331068008"><ph name="EXISTING_USER" /> کی پروفائل پہلے سے ہی <ph name="NEW_USER" /> میں سائن ان ہے</translation> <translation id="9093429538970210897">اپ گریڈ مکمل نہ ہونے کی صورت میں فائلز کا بیک اپ لینے کی تجویز کی جاتی ہے۔ اپ گریڈ شروع ہونے کی وجہ سے Linux (بی ٹا) شٹ ڈاؤن ہو جائے گا۔ آگے بڑھنے سے پہلے براہ کرم کھلی ہوئی فائلز کو محفوظ کریں۔</translation> <translation id="9094033019050270033">پاس ورڈ اپ ڈیٹ کریں</translation> <translation id="9094038138851891550">صارف نام غلط ہے</translation> @@ -7061,5 +7076,6 @@ <translation id="994289308992179865">&لوپ</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">محفوظ کنکشن تشکیل دیا جا رہا ہے…</translation> +<translation id="99731366405731005">Wi-Fi سِنک استعمال کرنے کے لئے <ph name="LINK1_BEGIN" />Chrome Sync<ph name="LINK1_END" /> کو آن کریں۔ <ph name="LINK2_BEGIN" />مزید جانیں<ph name="LINK2_END" /></translation> <translation id="998747458861718449">م&عائنہ کریں</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index 6e62ce5..62fda3a5 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -926,6 +926,7 @@ <translation id="204914487372604757">Yorliq yaratish</translation> <translation id="2050339315714019657">Bo‘yiga</translation> <translation id="2053312383184521053">Harakatsiz holat ma’lumotlari</translation> +<translation id="2054665754582400095">Faolligingiz</translation> <translation id="2055585478631012616">Bu saytlardagi hisobingizdan avtomatik chiqarilasiz (shuningdek, ochiq varaqlardan ham)</translation> <translation id="205560151218727633">Google assistent logosi</translation> <translation id="2058456167109518507">Qurilma topildi</translation> @@ -1212,6 +1213,7 @@ <translation id="2387052489799050037">Boshiga</translation> <translation id="2387458720915042159">Proksi-server orqali ulanish turi</translation> <translation id="2390347491606624519">Proksi-serverga ulanilmadi, hisobingizga qaytadan kiring</translation> +<translation id="2390782873446084770">Wi-Fi sinxronizatsiyasi</translation> <translation id="2391082728065870591">Fikr va mulohaza hisobotini yuborish</translation> <translation id="2391419135980381625">Standard shrift</translation> <translation id="2392163307141705938">Ota-onangiz <ph name="IDS_SHORT_PRODUCT_NAME" /> uchun belgilagan foydalanish vaqti tugadi.</translation> @@ -1868,6 +1870,7 @@ <translation id="3157931365184549694">Qayta tiklash</translation> <translation id="3158033540161634471">Barmoq izingizni sozlang</translation> <translation id="3159493096109238499">Oq sargʻish</translation> +<translation id="3159978855457658359">Qurilma nomini tahrirlash</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (qurilmada o‘rnatilgan)</translation> <translation id="3161522574479303604">Barcha tillar</translation> <translation id="3162853326462195145">Maktab hisobi</translation> @@ -3228,6 +3231,7 @@ <translation id="4761104368405085019">Mikrofoningizni ishlatish</translation> <translation id="4762718786438001384">Qurilma diskida bo‘sh joy deyarli qolmadi</translation> <translation id="4763408175235639573">Bu sahifaga tashrif buyurish vaqtida kompyuteringizga quyidagi cookie fayllari saqlandi:</translation> +<translation id="4764368918650455114">Ikkala qurilma ham ochiq, orasidagi masofa yaqin va Bluetooth yoniq ekanini tekshiring. Agar Chromebook qurilmasiga yuborsangiz, unda Yaqin-atrofga yuborish (holat qatorida vaqt va Yaqin-atrofga yuborishni tanlang) funksiyasi yoniqligini tekshiring. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation> <translation id="4765582662863429759">Android Xabarlar ilovasi matnlarni telefoningizdan Chromebook qurilmasiga retranslatsiya qilish imkonini beradi</translation> <translation id="476598255842811483">Yaqin-atrofga yuborish ochilmaguncha hech kim</translation> <translation id="4768332406694066911">Sizda haqiqiyligingizni tasdiqlovchi quyidagi tashkilotlar sertifikatlari mavjud</translation> @@ -3390,6 +3394,7 @@ <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation> <translation id="496185450405387901">Bu ilova administrator tomonidan oʻrnatilgan.</translation> <translation id="4964455510556214366">Tartiblash</translation> +<translation id="496446150016900060">Wi-Fi tarmoqlarni telefon orqali sinxronlang</translation> <translation id="4965808351167763748">Hangouts Meet ishlashi uchun bu qurilmani sozlashni xohlaysizmi?</translation> <translation id="496888482094675990">“Fayllar” ilovasi yordamida Google disk, Chrome OS qurilmalari yoki tashqi xotira qurilmasidagi xujjatlarni tezda ochish mumkin.</translation> <translation id="4971412780836297815">Tugaganidan keyin ochish</translation> @@ -3696,6 +3701,7 @@ <translation id="5341980496415249280">Arxivlanmoqda...</translation> <translation id="5342091991439452114">PIN kod kamida <ph name="MINIMUM" /> ta raqamdan iborat bo‘lishi lozim</translation> <translation id="5344036115151554031">Linux tiklanmoqda</translation> +<translation id="5345916423802287046">Ilova tizim bilan birga ishga tushsin</translation> <translation id="5350293332385664455">Google Assistentni faolsizlantirish</translation> <translation id="535123479159372765">Matn boshqa qurilmadan nusxalangan</translation> <translation id="5352033265844765294">Vaqt shtampi</translation> @@ -4005,6 +4011,7 @@ <translation id="5704875434923668958">Sinxronlanmoqda</translation> <translation id="5705005699929844214">Doimo maxsus imkoniyatlar chiqsin</translation> <translation id="5705882733397021510">Orqaga</translation> +<translation id="5707117624115653804">Bu sozlama ishlaydigan ilova va saytlar uchun taglavhalar hajmi va uslubini sozlang</translation> <translation id="5707185214361380026">Kengaytmani bu yerdan yuklab bo‘lmadi:</translation> <translation id="5708171344853220004">Microsoft qatnashchisining ismi</translation> <translation id="5709557627224531708">Chromeni standart brauzer etib tayinlang</translation> @@ -4168,6 +4175,7 @@ <translation id="5904614460720589786">Sozlashda muammo yuz bergani uchun <ph name="APP_NAME" /> sozlanmadi Administratorga murojaat qiling. Xatolik kodi: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Yangilanish deyarli yakunlandi. Qurilmani qayta ishga tushiring.</translation> <translation id="5906732635754427568">Bu ilovaga aloqador ma’lumotlar ushbu qurilmadan o‘chiriladi.</translation> +<translation id="5908474332780919512">Ilova tizim bilan birga ishga tushsin</translation> <translation id="5908695239556627796">Sichqonchada varaqlash tezligi</translation> <translation id="5908769186679515905">Saytlarga Flash elementlarini ishga tushirish taqiqlansin</translation> <translation id="5910363049092958439">&Rasmni saqlab olish...</translation> @@ -4708,6 +4716,7 @@ <translation id="6532527800157340614">Hisobga kirishda xatolik yuz berdi: ruxsat tokeni berilmadi. Tarmoq sozlamalarini tekshiring va qaytadan urining.</translation> <translation id="6532663472409656417">Korporativ domenda qayd qilingan</translation> <translation id="6535331821390304775">Bu turdagi havolalar har doim <ph name="ORIGIN" /> ilovasida ochilsin</translation> +<translation id="6537613839935722475">Nomda harflar, raqamlar va tirelar (-) ishlatish mumkin</translation> <translation id="6538635548667167211">Hozir faqat mobil internet orqali trafik sarflanishi sozlangan</translation> <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Eslatma:<ph name="END_BOLD" /> Ushbu funksiya faqat zarurligida yoqilsin, chunki ma’lumotlarni yig‘ish jarayoni unumdorlikni pasaytirishi mumkin.</translation> <translation id="6541638731489116978">Bu sayt uchun harakat sensorlaridan foydalanish taqiqlandi</translation> @@ -4796,6 +4805,7 @@ <translation id="6650234781371031356"><ph name="WEBSITE" /> uchun parolingiz shu qurilma va Google hisobingizga saqlandi. Qaysi biri olib tashlansin?</translation> <translation id="665061930738760572">&Yangi oynada ochish</translation> <translation id="6651237644330755633">Saytlarni identifikatsiya qilishda ushbu sertifikat ishonchli deb hisoblansin</translation> +<translation id="6651495917527016072">Wi-Fi tarmoqlarni telefon orqali sinxronlang. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation> <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" /> faqatgina x86_64 platformalar bilan integratsiyalangan. Chromebooklar ARM yoki x86 platformasi asosida tuzilgan. Ularda bu funksiya ishlamaydi.</translation> <translation id="6654509035557065241">Afzal tarmoqni tanlash</translation> <translation id="6655190889273724601">Dasturchi rejimi</translation> @@ -5399,6 +5409,7 @@ <translation id="7375235221357833624">{0,plural, =1{Qurilmani bir soat ichida oʻchirib yoqish kerak}other{Qurilmani # soat ichida oʻchirib yoqish kerak}}</translation> <translation id="7376553024552204454">Sichqoncha siljiganda ajratib ko‘rsatilsin</translation> <translation id="7377451353532943397">Sensor doim bloklansin</translation> +<translation id="7378611153938412599">Kuchsiz parollar oson topiladi. Kuchli parol yarating. <ph name="BEGIN_LINK" />Xavfsizlikka oid boshqa maslahatlar bilan tanishing.<ph name="END_LINK" /></translation> <translation id="73786666777299047">Chrome internet-do‘konida ochish</translation> <translation id="7378812711085314936">Mobil internetga ulanish</translation> <translation id="7380622428988553498">Qurilma nomida yaroqsiz belgilar mavjud</translation> @@ -5922,6 +5933,7 @@ <translation id="7959074893852789871">Faylda import qilinmagan bir necha sertifikatlar mavjud:</translation> <translation id="7961015016161918242">Hech qachon</translation> <translation id="7963001036288347286">Sensorli panelni tezlatish</translation> +<translation id="7963608432878156675">Nomi Bluetooth va boshqa tarmoqdagi qurilmalarga koʻrinadi</translation> <translation id="7963826112438303517">Assistent bu ovoz yozuvlaridan ovozingiz modelini yaratish va yangilash uchun foydalanadi. Namunalar Voice Match funksiyasi yoqilgan qurilmalarda saqlanadi. Assistent sozlamalari orqali ochish yoki qaytadan sozlash.</translation> <translation id="7966241909927244760">Tasvirning URL manzilini nusxalash</translation> <translation id="7966571622054096916">{COUNT,plural, =1{Bukmarklardagi 1 ta element}other{Bukmarklardagi {COUNT} ta element}}</translation> @@ -6385,6 +6397,7 @@ <translation id="850875081535031620">Birorta ham zararli dastur topilmadi</translation> <translation id="8509177919508253835">Elektron kalitlarni asliga qaytarish va PIN kodlar yaratish</translation> <translation id="8509646642152301857">Imlo lug‘atini yuklab olish amalga oshmadi.</translation> +<translation id="8512396579636492893">{COUNT,plural, =0{Kuchsiz parol topilmadi}=1{{COUNT} ta kuchsiz parol topildi}other{{COUNT} ta kuchsiz parol topildi}}</translation> <translation id="8512476990829870887">Jarayonni yakunlash</translation> <translation id="851263357009351303"><ph name="HOST" /> rasmlarni doim ko‘rsatsin</translation> <translation id="8513108775083588393">Avto-burilish</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 11ebcd8..c60cb5fd 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -870,6 +870,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" /> đã tắt tùy chọn gỡ lỗi ADB. Thao tác này sẽ đặt lại <ph name="DEVICE_TYPE" /> của bạn sau 24 giờ nữa. Hãy sao lưu mọi tệp bạn muốn giữ lại.</translation> <translation id="1977965994116744507">Mang điện thoại tới gần hơn để mở khóa <ph name="DEVICE_TYPE" /> của bạn.</translation> <translation id="1978006917103730774">Các bản cập nhật bảo mật và phần mềm trong tương lai sẽ tự động cài đặt.</translation> +<translation id="1978057560491495741">Xóa địa chỉ</translation> <translation id="1979095679518582070">Việc tắt tính năng này sẽ không ảnh hưởng đến khả năng thiết bị gửi thông tin cần thiết cho các dịch vụ thiết yếu như bảo mật và cập nhật hệ thống.</translation> <translation id="1979280758666859181">Bạn đang thay đổi sang kênh có phiên bản <ph name="PRODUCT_NAME" /> cũ hơn. Sẽ áp dụng thay đổi kênh khi phiên bản kênh khớp với phiên bản hiện được cài đặt trên thiết bị của bạn.</translation> <translation id="197989455406964291">KDC không hỗ trợ loại mã hóa</translation> @@ -1071,6 +1072,7 @@ <translation id="2224444042887712269">Cài đặt này thuộc về <ph name="OWNER_EMAIL" />.</translation> <translation id="2224551243087462610">Chỉnh sửa tên thư mục</translation> <translation id="2225864335125757863">Thay đổi ngay các mật khẩu sau để bảo vệ tài khoản của bạn:</translation> +<translation id="2226204716217107988">Chuyển sang một hồ sơ khác?</translation> <translation id="2226449515541314767">Trang web này đã bị chặn quyền kiểm soát hoàn toàn thiết bị MIDI.</translation> <translation id="2226907662744526012">Tự động mở khóa sau khi nhập mã PIN</translation> <translation id="222704500187107962">Hệ thống sẽ tự động xóa ngoại lệ này sau khi bạn thoát khỏi phiên Ẩn danh hiện tại</translation> @@ -1140,6 +1142,7 @@ <translation id="2307462900900812319">Định cấu hình mạng</translation> <translation id="230927227160767054">Trang này muốn cài đặt trình xử lý dịch vụ.</translation> <translation id="2309620859903500144">Trang web này đã bị chặn sử dụng cảm biến chuyển động hoặc ánh sáng của thiết bị.</translation> +<translation id="2312219318583366810">URL trang</translation> <translation id="2314165183524574721">Tùy chọn hiển thị hiện tại là ẩn</translation> <translation id="2314774579020744484">Ngôn ngữ được dùng khi dịch trang</translation> <translation id="2315414688463285945">Lỗi khi định cấu hình tệp Linux. Vui lòng thử lại.</translation> @@ -2343,6 +2346,7 @@ <translation id="3713047097299026954">Khóa bảo mật này không có bất kỳ dữ liệu đăng nhập nào</translation> <translation id="3714195043138862580">Thiết bị giới thiệu này đã được đặt sang trạng thái hủy cấp phép.</translation> <translation id="3714633008798122362">lịch trên web</translation> +<translation id="3715954932774762075">Các ứng dụng và trang web có nhiều phiên bản ngôn ngữ sẽ dùng ngôn ngữ đầu tiên được hỗ trợ trong danh sách này. Những tùy chọn này được đồng bộ hóa với các tùy chọn cài đặt của trình duyệt. <ph name="BEGIN_LINK_LEARN_MORE" />Tìm hiểu thêm<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">Trang chủ</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">Bạn và Google</translation> @@ -2503,6 +2507,7 @@ <translation id="3882165008614329320">Video hiện có từ camera hoặc tệp</translation> <translation id="3886446263141354045">Yêu cầu truy cập trang web này của bạn đã được gửi tới <ph name="NAME" /></translation> <translation id="3888550877729210209">Ghi chú bằng <ph name="LOCK_SCREEN_APP_NAME" /></translation> +<translation id="3890064827463908288">Bật Chrome Sync để dùng tính năng Đồng bộ hóa Wi-Fi</translation> <translation id="3892414795099177503">Thêm OpenVPN / L2TP...</translation> <translation id="3893536212201235195">Đọc và thay đổi cài đặt khả năng truy cập của bạn</translation> <translation id="3893630138897523026">ChromeVox (phản hồi bằng giọng nói)</translation> @@ -3774,6 +3779,7 @@ <translation id="5449588825071916739">Đánh dấu trang tất cả các thẻ</translation> <translation id="5449716055534515760">Đóng cửa &sổ</translation> <translation id="5452974209916053028">Phiên truy cập ẩn danh hiện tại: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />, <ph name="RECENT_PERMISSIONS_CHANGE_1" />, <ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">Đã chuyển bong bóng chú thích thành <ph name="POSITION_ON_SCREEN_FROM_LEFT" />% ngang, <ph name="POSITION_ON_SCREEN_FROM_TOP" />% dọc</translation> <translation id="5454166040603940656">với <ph name="PROVIDER" /></translation> <translation id="5457113250005438886">Không hợp lệ</translation> <translation id="5457459357461771897">Đọc và xóa ảnh, nhạc và các phương tiện khác khỏi máy tính của bạn</translation> @@ -3917,6 +3923,7 @@ <translation id="5602765853043467355">Xóa dấu trang, lịch sử, mật khẩu và nhiều nội dung khác từ thiết bị này</translation> <translation id="5605623530403479164">Công cụ tìm kiếm khác</translation> <translation id="5605758115928394442">Chúng tôi đã gửi một thông báo đến điện thoại của bạn để xác nhận đó là bạn.</translation> +<translation id="560834977503641186">Đồng bộ hóa Wi-Fi, Tìm hiểu thêm</translation> <translation id="5608580678041221894">Nhấn các phím sau để điều chỉnh hoặc di chuyển vùng cắt</translation> <translation id="5609231933459083978">Ứng dụng này có vẻ không hợp lệ.</translation> <translation id="5610038042047936818">Chuyển sang chế độ máy ảnh</translation> @@ -4107,6 +4114,7 @@ <translation id="5841270259333717135">Định cấu hình Ethernet</translation> <translation id="5842497610951477805">Bật Bluetooth</translation> <translation id="5843706793424741864">Độ F</translation> +<translation id="584451707753263735">Bong bóng Phụ đề trực tiếp đang hiển thị, hãy nhấn phím F6 để chuyển tiêu điểm</translation> <translation id="5844574845205796324">Đề xuất nội dung mới để khám phá</translation> <translation id="5846200638699387931">Lỗi cú pháp về mối quan hệ: <ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">Cài đặt các bản cập nhật và ứng dụng. Bằng việc tiếp tục, bạn đồng ý rằng thiết bị này cũng có thể tự động tải xuống và cài đặt các bản cập nhật cũng như ứng dụng từ Google, nhà mạng và nhà sản xuất thiết bị, có thể bằng cách sử dụng dữ liệu di động. Một vài ứng dụng có thể cung cấp tùy chọn mua hàng trong ứng dụng.</translation> @@ -5361,6 +5369,7 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> hiện ở chế độ toàn màn hình.</translation> <translation id="7340650977506865820">Trang web đang chia sẻ màn hình của bạn</translation> <translation id="7341834142292923918">Muốn truy cập vào trang web này</translation> +<translation id="7343372807593926528">Vui lòng mô tả sự cố trước khi gửi ý kiến phản hồi.</translation> <translation id="7345706641791090287">Xác nhận mật khẩu của bạn</translation> <translation id="7346909386216857016">Ok</translation> <translation id="7347452120014970266">Thao tác này sẽ xóa toàn bộ dữ liệu và cookie lưu trữ trong <ph name="ORIGIN_NAME" /> cũng như các ứng dụng đã cài đặt thuộc nguồn này</translation> @@ -5777,6 +5786,7 @@ <translation id="7819857487979277519">PSK (WPA hoặc RSN)</translation> <translation id="7819992334107904369">Đồng bộ hóa Chrome</translation> <translation id="782057141565633384">S&ao chép địa chỉ video</translation> +<translation id="7822187537422052256">Bạn có chắc chắn muốn xóa địa chỉ này không?</translation> <translation id="7824864914877854148">Không thể hoàn tất quá trình sao lưu do lỗi</translation> <translation id="7825666486843191125">Tất cả những người liên hệ ở gần bạn khi màn hình của bạn đang mở khóa</translation> <translation id="782590969421016895">Sử dụng trang hiện tại</translation> @@ -6303,6 +6313,7 @@ <translation id="8419098111404128271">Kết quả tìm kiếm cho '<ph name="SEARCH_TEXT" />'</translation> <translation id="8419368276599091549">Chào mừng bạn đến với <ph name="DEVICE_TYPE" />!</translation> <translation id="8420308167132684745">Chỉnh sửa các mục trong từ điển</translation> +<translation id="8421361468937925547">Phụ đề trực tiếp (Chỉ hỗ trợ tiếng Anh)</translation> <translation id="8422787418163030046">Thiếu khay</translation> <translation id="8425213833346101688">Thay đổi</translation> <translation id="8425492902634685834">Ghim lên thanh tác vụ</translation> @@ -6331,6 +6342,7 @@ <translation id="8449036207308062757">Quản lý bộ nhớ</translation> <translation id="8452135315243592079">Thiếu thẻ SIM</translation> <translation id="8455026683977728932">Không bật được hình minh họa ADB</translation> +<translation id="8456398879271637452">Bong bóng Phụ đề trực tiếp đang hiển thị, hãy nhấn tổ hợp phím Ctrl + Lùi hoặc Ctrl + Tiến để chuyển tiêu điểm</translation> <translation id="845702320058262034">Không thể kết nối. Hãy đảm bảo bạn đã bật Bluetooth trên điện thoại.</translation> <translation id="8457451314607652708">Nhập dấu trang</translation> <translation id="8458627787104127436">Mở tất cả (<ph name="URL_COUNT" />) trong cửa sổ mới</translation> @@ -6841,6 +6853,7 @@ <translation id="9027459031423301635">Mở Liên kết trong &Tab Mới</translation> <translation id="9030515284705930323">Tổ chức chưa bật Cửa hàng Google Play cho tài khoản của bạn. Hãy liên hệ với quản trị viên để biết thêm thông tin.</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269"><ph name="PLUGIN_NAME" /> không được hỗ trợ nữa</translation> <translation id="9031549947500880805">Sao lưu vào Google Drive. Dễ dàng khôi phục dữ liệu hoặc chuyển đổi thiết bị bất cứ lúc nào. Nội dung sao lưu của bạn bao gồm các dữ liệu ứng dụng.</translation> <translation id="9033765790910064284">Vẫn tiếp tục</translation> <translation id="9033857511263905942">&Dán</translation> @@ -6849,6 +6862,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{Bạn còn một lần thử.}other{Bạn còn # lần thử.}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571">Bạn có muốn cập nhật mật khẩu cho <ph name="ORIGIN" /> không?</translation> +<translation id="9041049756004505730">Bong bóng Phụ đề trực tiếp đang hiển thị, hãy nhấn tổ hợp phím ⌘ + Option + Mũi tên lên hoặc Mũi tên xuống để chuyển tiêu điểm</translation> <translation id="9041692268811217999">Quản trị viên đã vô hiệu hóa quyền truy cập vào tệp cục bộ trên máy của bạn</translation> <translation id="904224458472510106">Bạn không thể hủy thao tác này</translation> <translation id="9042893549633094279">Quyền riêng tư và bảo mật</translation> @@ -6887,6 +6901,7 @@ <translation id="9088446193279799727">Không thể định cấu hình Linux. Hãy kết nối Internet rồi thử lại.</translation> <translation id="9088917181875854783">Vui lòng xác nhận mã xác nhận này được hiển thị trên "<ph name="DEVICE_NAME" />":</translation> <translation id="9089416786594320554">Phương thức nhập</translation> +<translation id="909108997331068008">Bạn đã đăng nhập vào <ph name="NEW_USER" /> bằng hồ sơ của <ph name="EXISTING_USER" /></translation> <translation id="9093429538970210897">Bạn nên sao lưu tệp để phòng trường hợp quá trình nâng cấp không hoàn tất được. Khi bắt đầu nâng cấp, Linux (Bản thử nghiệm) sẽ tắt. Vui lòng lưu các tệp đang mở trước khi tiếp tục.</translation> <translation id="9094033019050270033">Cập nhật mật khẩu</translation> <translation id="9094038138851891550">Tên người dùng không hợp lệ</translation> @@ -7060,5 +7075,6 @@ <translation id="994289308992179865">&Vòng lặp</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">Thiết lập kết nối an toàn...</translation> +<translation id="99731366405731005">Bật <ph name="LINK1_BEGIN" />Chrome Sync<ph name="LINK1_END" /> để dùng tính năng Đồng bộ hóa Wi-Fi. <ph name="LINK2_BEGIN" />Tìm hiểu thêm<ph name="LINK2_END" /></translation> <translation id="998747458861718449">K&iểm tra</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index 421857a..4825cf2 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -867,6 +867,7 @@ <translation id="1976307821760494606"><ph name="DOMAIN" /> 已停用 ADB 调试。这将在 24 小时后重置您的 <ph name="DEVICE_TYPE" />。请备份您想保留的所有文件。</translation> <translation id="1977965994116744507">需将您的手机靠近您的 <ph name="DEVICE_TYPE" />,才能为其解锁。</translation> <translation id="1978006917103730774">后续的软件更新和安全更新将会自动安装。</translation> +<translation id="1978057560491495741">移除地址</translation> <translation id="1979095679518582070">关闭这项功能,设备仍然可以发送基本服务(例如系统更新和安全服务)所需的信息。</translation> <translation id="1979280758666859181">您正将版本更改为较旧版的 <ph name="PRODUCT_NAME" />。该版本的版本号必须与您设备上目前所安装版本的版本号相符,版本变更才会生效。</translation> <translation id="197989455406964291">KDC 不支持加密类型</translation> @@ -1068,6 +1069,7 @@ <translation id="2224444042887712269">此设置属于<ph name="OWNER_EMAIL" />。</translation> <translation id="2224551243087462610">修改文件夹名</translation> <translation id="2225864335125757863">为确保您的帐号安全无虞,请立即更改这些密码:</translation> +<translation id="2226204716217107988">切换到另一份个人资料?</translation> <translation id="2226449515541314767">已禁止该网站完全控制 MIDI 设备。</translation> <translation id="2226907662744526012">一旦用户输入 PIN 码便自动解锁</translation> <translation id="222704500187107962">待您退出当前的无痕式会话后,此例外情况将被自动移除</translation> @@ -1137,6 +1139,7 @@ <translation id="2307462900900812319">配置网络</translation> <translation id="230927227160767054">此页面想要安装一个服务处理程序。</translation> <translation id="2309620859903500144">此网站已被禁止使用您的动态传感器或光传感器。</translation> +<translation id="2312219318583366810">网页网址</translation> <translation id="2314165183524574721">当前的公开范围设置是“已隐藏”</translation> <translation id="2314774579020744484">翻译页面时使用的语言</translation> <translation id="2315414688463285945">配置 Linux 文件时出错。请重试。</translation> @@ -2339,6 +2342,7 @@ <translation id="3713047097299026954">此安全密钥不含任何登录数据</translation> <translation id="3714195043138862580">此演示设备目前处于“已取消配置”状态。</translation> <translation id="3714633008798122362">网络日历</translation> +<translation id="3715954932774762075">支持多种语言的应用和网站将会使用此列表中第一种受支持的语言。这些偏好设置会与您的浏览器设置同步。<ph name="BEGIN_LINK_LEARN_MORE" />了解详情<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="3719826155360621982">首页</translation> <translation id="372062398998492895">CUPS</translation> <translation id="3721119614952978349">您与 Google</translation> @@ -2499,6 +2503,7 @@ <translation id="3882165008614329320">来自摄像头或文件的现有视频</translation> <translation id="3886446263141354045">系统已将您想访问此网站的请求发送给<ph name="NAME" /></translation> <translation id="3888550877729210209">使用“<ph name="LOCK_SCREEN_APP_NAME" />”创建记事</translation> +<translation id="3890064827463908288">您需要开启 Chrome 同步才能使用 Wi-Fi 同步</translation> <translation id="3892414795099177503">添加 OpenVPN / L2TP…</translation> <translation id="3893536212201235195">读取和更改您的无障碍设置</translation> <translation id="3893630138897523026">ChromeVox(语音反馈)</translation> @@ -3769,6 +3774,7 @@ <translation id="5449588825071916739">为所有标签页添加书签</translation> <translation id="5449716055534515760">关闭窗口(&D)</translation> <translation id="5452974209916053028">当前的无痕式会话:<ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START" />、<ph name="RECENT_PERMISSIONS_CHANGE_1" />、<ph name="RECENT_PERMISSIONS_CHANGE_2" /></translation> +<translation id="5454005855577728171">“实时字幕”气泡沿水平方向移动了 <ph name="POSITION_ON_SCREEN_FROM_LEFT" />%,沿垂直方向移动了 <ph name="POSITION_ON_SCREEN_FROM_TOP" />%</translation> <translation id="5454166040603940656">提供方:<ph name="PROVIDER" /></translation> <translation id="5457113250005438886">无效</translation> <translation id="5457459357461771897">读取和删除您计算机上的照片、音乐和其他媒体</translation> @@ -3912,6 +3918,7 @@ <translation id="5602765853043467355">清除此设备上的书签、历史记录、密码等信息</translation> <translation id="5605623530403479164">其他搜索引擎</translation> <translation id="5605758115928394442">系统向您的手机发送了一条通知,以确认您的身份。</translation> +<translation id="560834977503641186">Wi-Fi 同步,了解详情</translation> <translation id="5608580678041221894">按以下键可调整或移动剪裁区域</translation> <translation id="5609231933459083978">该应用似乎无效。</translation> <translation id="5610038042047936818">切换到相机模式</translation> @@ -4102,6 +4109,7 @@ <translation id="5841270259333717135">配置以太网</translation> <translation id="5842497610951477805">蓝牙开关</translation> <translation id="5843706793424741864">华氏度</translation> +<translation id="584451707753263735">能看到“实时字幕”气泡了,按 F6 可循环切换焦点</translation> <translation id="5844574845205796324">建议新内容以供探索</translation> <translation id="5846200638699387931">相关语法错误:<ph name="ERROR_LINE" /></translation> <translation id="5846807460505171493">安装更新和应用。继续操作即表示您同意:此设备也可自动下载和安装来自 Google、您的运营商和设备制造商的更新和应用(此过程可能会使用移动数据网络)。部分应用可能会提供应用内购商品。</translation> @@ -5356,6 +5364,7 @@ <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> 现处于全屏模式。</translation> <translation id="7340650977506865820">该网站正在共享您的屏幕</translation> <translation id="7341834142292923918">想要访问此网站</translation> +<translation id="7343372807593926528">请先阐明问题,然后再发送反馈。</translation> <translation id="7345706641791090287">确认您的密码</translation> <translation id="7346909386216857016">知道了</translation> <translation id="7347452120014970266">此操作会清除 <ph name="ORIGIN_NAME" /> 及其安装的应用存储的所有数据和 Cookie</translation> @@ -5772,6 +5781,7 @@ <translation id="7819857487979277519">PSK(WPA 或 RSN)</translation> <translation id="7819992334107904369">Chrome 同步</translation> <translation id="782057141565633384">复制视频地址(&O)</translation> +<translation id="7822187537422052256">确定要移除此地址吗?</translation> <translation id="7824864914877854148">发生错误,因此无法完成备份</translation> <translation id="7825666486843191125">当您的屏幕处于解锁状态时位于您附近的所有联系人</translation> <translation id="782590969421016895">使用当前网页</translation> @@ -6297,6 +6307,7 @@ <translation id="8419098111404128271">与“<ph name="SEARCH_TEXT" />”相符的搜索结果</translation> <translation id="8419368276599091549">欢迎使用您的 <ph name="DEVICE_TYPE" />!</translation> <translation id="8420308167132684745">修改字典条目</translation> +<translation id="8421361468937925547">实时字幕(仅支持英文)</translation> <translation id="8422787418163030046">缺少送纸盘</translation> <translation id="8425213833346101688">更改</translation> <translation id="8425492902634685834">固定在任务栏上</translation> @@ -6325,6 +6336,7 @@ <translation id="8449036207308062757">管理存储空间</translation> <translation id="8452135315243592079">缺少 SIM 卡</translation> <translation id="8455026683977728932">未能启用 ADB 图示</translation> +<translation id="8456398879271637452">能看到“实时字幕”气泡了,按 Ctrl + 后退键或 Ctrl + 前进键可循环切换焦点</translation> <translation id="845702320058262034">无法连接。请确保您手机的蓝牙已开启。</translation> <translation id="8457451314607652708">导入书签</translation> <translation id="8458627787104127436">在新窗口中打开全部(<ph name="URL_COUNT" /> 个)网址</translation> @@ -6835,6 +6847,7 @@ <translation id="9027459031423301635">在新标签页中打开链接(&T)</translation> <translation id="9030515284705930323">贵单位还没有为您的帐号启用 Google Play 商店。如需更多信息,请与管理员联系。</translation> <translation id="9030785788945687215">Gmail</translation> +<translation id="9030855135435061269"><ph name="PLUGIN_NAME" /> 已不再受支持</translation> <translation id="9031549947500880805">备份到 Google 云端硬盘。您随时可以轻松地恢复数据或更换设备。您的备份内容包含应用数据。</translation> <translation id="9033765790910064284">仍然继续</translation> <translation id="9033857511263905942">粘贴(&P)</translation> @@ -6843,6 +6856,7 @@ <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{您还剩 1 次尝试机会。}other{您还剩 # 次尝试机会。}}</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9040661932550800571">要更新 <ph name="ORIGIN" /> 的密码吗?</translation> +<translation id="9041049756004505730">能看到“实时字幕”气泡了,按 ⌘ + Option + 向上/向下箭头键可循环切换焦点</translation> <translation id="9041692268811217999">您的管理员已禁止访问您计算机上的本地文件</translation> <translation id="904224458472510106">此操作无法撤消</translation> <translation id="9042893549633094279">隐私设置和安全性</translation> @@ -6881,6 +6895,7 @@ <translation id="9088446193279799727">无法配置 Linux。请连接到互联网,然后重试。</translation> <translation id="9088917181875854783">请确认“<ph name="DEVICE_NAME" />”上显示有此密钥:</translation> <translation id="9089416786594320554">输入法</translation> +<translation id="909108997331068008"><ph name="EXISTING_USER" />的个人资料已登录 <ph name="NEW_USER" /></translation> <translation id="9093429538970210897">建议您备份文件,以防无法完成升级。启动升级会导致 Linux(Beta 版)关闭。请先保存打开的文件,然后再继续操作。</translation> <translation id="9094033019050270033">更新密码</translation> <translation id="9094038138851891550">用户名无效</translation> @@ -7054,5 +7069,6 @@ <translation id="994289308992179865">循环(&L)</translation> <translation id="995782501881226248">YouTube</translation> <translation id="996250603853062861">正在建立安全连接...</translation> +<translation id="99731366405731005">您需要开启 <ph name="LINK1_BEGIN" />Chrome 同步<ph name="LINK1_END" />才能使用 Wi-Fi 同步。<ph name="LINK2_BEGIN" />了解详情<ph name="LINK2_END" /></translation> <translation id="998747458861718449">检查(&N)</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb index 5e0716d..68e1daf 100644 --- a/chrome/app/resources/google_chrome_strings_en-GB.xtb +++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -79,6 +79,7 @@ <translation id="2871893339301912279">You're signed in to Chrome!</translation> <translation id="2885378588091291677">Task Manager</translation> <translation id="2888126860611144412">About Chrome</translation> +<translation id="2926676257163822632">Weak passwords are easy to guess. Let Chrome <ph name="BEGIN_LINK" />create and remember strong passwords for you<ph name="END_LINK" />.</translation> <translation id="2929907241665500097">Chrome didn't update. Something went wrong. <ph name="BEGIN_LINK" />Fix Chrome update problems and failed updates.<ph name="END_LINK" /></translation> <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> – Network sign-in – Chrome</translation> <translation id="3037838751736561277">Google Chrome is in background mode.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb index 7af3a56e..976349b 100644 --- a/chrome/app/resources/google_chrome_strings_gu.xtb +++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -8,6 +8,7 @@ કેટલીક સુવિધાઓ ઉપલબ્ધ હોઈ શકે છે અને પસંદગીઓ પરના ફેરફારોને સાચવવામાં આવશે નહીં.</translation> <translation id="1088300314857992706"><ph name="USER_EMAIL_ADDRESS" />, પહેલાં Chrome નો ઉપયોગ કરી રહ્યાં હતાં</translation> +<translation id="1088654056000736875">Chrome તમારા કમ્પ્યુટરમાંથી હાનિકારક સૉફ્ટવેર કાઢી નાખી રહ્યું છે...</translation> <translation id="1097330777386562916">જ્યારે તમે Chromeમાંથી બહાર નીકળો ત્યારે કુકી અને સાઇટનો ડેટા સાફ કરો</translation> <translation id="110877069173485804">આ તમારું Chrome છે</translation> <translation id="1125124144982679672">કોણ Chromeનો ઉપયોગ કરે છે?</translation> @@ -18,6 +19,7 @@ <translation id="1355000804395496115">ઑફિસ માટેનું અને વ્યક્તિગત બ્રાઉઝિંગ અલગ પાડવા અથવા આ ડિવાઇસનો ઉપયોગ કરતા વિવિધ લોકો માટે, Chromeમાં ભિન્ન પ્રોફાઇલનો ઉપયોગ કરો</translation> <translation id="137466361146087520">Google Chrome બીટા</translation> <translation id="1399397803214730675">આ કમ્પ્યુટર પર પહેલેથી જ Google Chromeનું વધુ તાજેતરનું વર્ઝન છે. જો સૉફ્ટવેર કામ ન કરતું હોય, તો કૃપા કરીને Google Chromeને અનઇન્સ્ટૉલ કરો અને ફરી પ્રયાસ કરો.</translation> +<translation id="140541193409212341">Chrome કોઈ હાનિકારક સૉફ્ટવેર માટે તમારું કમ્પ્યુટર ચેક કરી રહ્યું હતું ત્યારે કોઈ ભૂલ આવી</translation> <translation id="1434626383986940139">Chrome કેનેરી ઍપ્લિકેશનો</translation> <translation id="1513277449617685876">વ્યક્તિગત અને <ph name="NEW_USER" /> બ્રાઉઝિંગને અલગ પાડવા માટે, Chromeમાં નવી પ્રોફાઇલ બનાવો</translation> <translation id="1553358976309200471">Chrome અપડેટ કરો</translation> @@ -59,6 +61,7 @@ <translation id="2429317896000329049">Google Chrome તમારા ડેટાને સમન્વયિત કરી શક્યું નથી કારણ કે તમારા ડોમેન માટે સમન્વયન ઉપલબ્ધ નથી.</translation> <translation id="2467438592969358367">Google Chrome તમારા પાસવર્ડની નિકાસ કરવા માગે છે. આને મંજૂરી આપવા માટે તમારો Windows પાસવર્ડ ટાઇપ કરો.</translation> <translation id="2485422356828889247">અનઇન્સ્ટૉલ કરો</translation> +<translation id="252502352004572774">Chrome હાનિકારક સૉફ્ટવેર માટે તમારું કમ્પ્યુટર ચેક કરી રહ્યું છે...</translation> <translation id="2534507159460261402">Google Pay (Chrome પર કૉપિ કરેલ છે)</translation> <translation id="2580411288591421699">હાલમાં ચાલી રહ્યું છે તે જ Google Chrome વર્ઝનને ઇન્સ્ટૉલ કરી શકાતું નથી. કૃપા કરીને Google Chrome બંધ કરો અને ફરીથી પ્રયાસ કરો.</translation> <translation id="2586406160782125153">આ, તમારા બ્રાઉઝિંગ ડેટાને આ ડિવાઇસમાંથી ડિલીટ કરશે. પછીથી તમારો ડેટા ફરીથી મેળવવા માટે, Chromeમાં <ph name="USER_EMAIL" /> તરીકે સાઇન ઇન કરો.</translation> @@ -113,10 +116,12 @@ <translation id="4050175100176540509">નવીનતમ વર્ઝનમાં મહત્ત્વપૂર્ણ સુરક્ષા સુધારણાઓ અને નવી સુવિધાઓ ઉપલબ્ધ છે.</translation> <translation id="4053720452172726777">Google Chrome ને કસ્ટમાઇઝ કરો અને તેનું નિયંત્રણ કરો</translation> <translation id="4110895483821904099">તમારી નવી Chrome પ્રોફાઇલ સેટઅપ કરો</translation> +<translation id="4127976662406264741">{NUM_MINS,plural, =1{Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: 1 મિનિટ પહેલાં.}one{Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_MINS} મિનિટ પહેલાં.}other{Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_MINS} મિનિટ પહેલાં.}}</translation> <translation id="4143243756087420366">Chromeમાંનું નામ અને ફોટો</translation> <translation id="4147555960264124640">તમે મેનેજ કરેલા એકાઉન્ટ સાથે સાઇન ઇન કરી રહ્યાં છો અને તમારી Google Chrome પ્રોફાઇલ પર એનું એડમિન નિયંત્રણ આપી રહ્યાં છો. તમારો Chrome ડેટા, જેમ કે તમારી ઍપ, બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને બીજા સેટિંગ, કાયમ માટે <ph name="USER_NAME" />થી બંધાયેલ રહેશે. તમે Google એકાઉન્ટ ડૅશબોર્ડથી આ ડેટાને કાઢી શકશો, પરંતુ તમે આ ડેટાને બીજા એકાઉન્ટ સાથે સાંકળી શકશો નહિ. <ph name="LEARN_MORE" /></translation> <translation id="4149882025268051530">ઇન્સ્ટૉલર આર્કાઇવને અનકોમ્પ્રેસ કરવામાં નિષ્ફળ. કૃપા કરીને Google Chrome ફરીથી ડાઉનલોડ કરો.</translation> <translation id="4191857738314598978">{0,plural, =1{એક દિવસની અંદર Chromeને ફરીથી લૉન્ચ કરો}one{# દિવસની અંદર Chromeને ફરીથી લૉન્ચ કરો}other{# દિવસની અંદર Chromeને ફરીથી લૉન્ચ કરો}}</translation> +<translation id="4205362703535890467">Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: ગઈકાલે.</translation> <translation id="4205939740494406371">Chrome તમારા પાસવર્ડ ચેક કરી શકતું નથી. 24 કલાક પછી ફરી પ્રયાસ કરજો અથવા <ph name="BEGIN_LINK" />તમારા Google એકાઉન્ટમાં પાસવર્ડ ચેક કરો<ph name="END_LINK" />.</translation> <translation id="424864128008805179">Chromeમાંથી સાઇન આઉટ કરીએ?</translation> <translation id="4251615635259297716">તમારા Chrome ડેટાને આ એકાઉન્ટ સાથે લિંક કરીએ?</translation> @@ -145,6 +150,7 @@ <translation id="4754614261631455953">Google Chrome કૅનેરી (mDNS-In)</translation> <translation id="4771048833395599659">આ ફાઇલ જોખમી હોઈ શકે છે, તેથી Chrome એ તેને અવરોધિત કરેલ છે.</translation> <translation id="479167709087336770">આ પણ Google શોધમાં જે જોડણી તપાસનારનો ઉપયોગ થાય છે તેનો જ ઉપયોગ કરે છે. તમે બ્રાઉઝરમાં ટાઇપ કરો છો તે ટેક્સ્ટ Googleને મોકલવામાં આવે છે. તમે સેટિંગમાં આ વર્તણૂકને હંમેશાં બદલી શકો છો.</translation> +<translation id="4831688036548685548">Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: એક પળ પહેલાં.</translation> <translation id="4891791193823137474">Google Chrome ને પૃષ્ટભૂમિમાં ચાલવા દો</translation> <translation id="4895437082222824641">નવા Chrome &ટૅબમાં લિંક ખોલો</translation> <translation id="4953650215774548573">Google Chrome ને તમારા ડિફોલ્ટ બ્રાઉઝર તરીકે સેટ કરો</translation> @@ -160,6 +166,7 @@ <translation id="532046782124376502">ચેતવણી: Google Chrome તમારો બ્રાઉઝિંગ ઇતિહાસ રેકોર્ડ કરવાથી એક્સ્ટેંશનને અટકાવી શકતું નથી. છુપા મોડમાં આ એક્સ્ટેંશનને બંધ કરવા માટે, આ વિકલ્પની પસંદગીને નાપસંદ કરો.</translation> <translation id="5386244825306882791">જ્યારે તમે Chrome શરૂ કરો અથવા ઑમ્નિબૉક્સ પરથી શોધ કરો ત્યારે કયું પૃષ્ઠ બતાવવામાં આવે તે તેનું પણ નિયંત્રણ કરે છે.</translation> <translation id="5394833366792865639">Chrome ટૅબ શેર કરો</translation> +<translation id="5409605318138185493">{NUM_DAYS,plural, =1{Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: 1 દિવસ પહેલાં.}one{Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_DAYS} દિવસ પહેલાં.}other{Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_DAYS} દિવસ પહેલાં.}}</translation> <translation id="5430073640787465221">તમારી પસંદગીઓ ફાઇલ દૂષિત અથવા અમાન્ય છે. Google Chrome તમારી સેટિંગ્સને પુનઃપ્રાપ્ત કરવામાં અક્ષમ છે.</translation> @@ -198,6 +205,7 @@ <translation id="6750954913813541382">જોડણીની ભૂલો સુધારવા માટે, તમે બ્રાઉઝરમાં ટાઇપ કરો છો તે ટેક્સ્ટ Chrome દ્વારા Googleને મોકલવામાં આવે છે</translation> <translation id="677276454032249905">છતાં પણ Chromeમાંથી બહાર નિકળવું છે?</translation> <translation id="683440813066116847">mDNS ટ્રાફિકને મંજૂરી આપવા માટે Google Chrome કૅનેરી માટે ઇનબાઉન્ડ નિયમ.</translation> +<translation id="6861451385429799394"><ph name="BEGIN_LINK" />તમારા વ્યવસ્થાપક<ph name="END_LINK" /> દ્વારા Chromeની હાનિકારક સૉફ્ટવેર ચેક કરવાની સુવિધા બંધ કરવામાં આવી છે</translation> <translation id="6885412569789873916">Chrome બીટા ઍપ્લિકેશનો</translation> <translation id="6943584222992551122">આ વ્યક્તિનો બ્રાઉઝિંગ ડેટા આ ડિવાઇસમાંથી ડિલીટ કરવામાં આવશે. આ ડેટા પાછો મેળવવા માટે, Chromeમાં <ph name="USER_EMAIL" /> તરીકે સાઇન ઇન કરો.</translation> <translation id="6967962315388095737">mDNS ટ્રાફિકને મંજૂરી આપવા માટે Google Chrome બીટા માટે ઇનબાઉન્ડ નિયમ.</translation> @@ -269,6 +277,7 @@ <translation id="8834965163890861871">Google Chrome પાસવર્ડમાં ફેરફાર કરવાનો પ્રયાસ કરે છે. આની મંજૂરી આપવા માટે તમારો Windows પાસવર્ડ લખો.</translation> <translation id="884296878221830158">જ્યારે તમે Chrome શરૂ કરો અથવા હોમ બટન ક્લિક કરો ત્યારે કયું પૃષ્ઠ બતાવવામાં આવે તે તેનું પણ નિયંત્રણ કરે છે.</translation> <translation id="8862326446509486874">તમારી પાસે સિસ્ટમ-સ્તરનાં ઇન્સ્ટોલ માટે ઉચિત અધિકારો નથી. એડમિન તરીકે ઇન્સ્ટૉલરને ફરીથી ચલાવવનો પ્રયાસ કરો.</translation> +<translation id="8907906903932240086">Chrome હાનિકારક સૉફ્ટવેર માટે તમારું કમ્પ્યુટર ચેક કરી શકે છે</translation> <translation id="8914504000324227558">Chrome ફરીથી લોંચ કરો</translation> <translation id="8922193594870374009"><ph name="ORIGIN" />માંથી તમારા Android ફોન પર નંબર મોકલવા માટે, બન્ને ડિવાઇસ પર Chromeમાં સાઇન ઇન કરો.</translation> <translation id="8999208279178790196">{0,plural, =0{એક Chrome અપડેટ ઉપલબ્ધ છે}=1{એક Chrome અપડેટ ઉપલબ્ધ છે}one{Chrome અપડેટ # દિવસ માટે ઉપલબ્ધ છે}other{Chrome અપડેટ # દિવસ માટે ઉપલબ્ધ છે}}</translation> @@ -276,6 +285,7 @@ <translation id="9067395829937117663">Google Chrome માટે Windows 7 અથવા તે પછીનું સંસ્કરણ આવશ્યક છે.</translation> <translation id="911206726377975832">તમારો બ્રાઉઝિંગ ડેટા પણ ડિલીટ કરી દઈએ?</translation> <translation id="9138603949443464873">તમારા ફેરફારો લાગુ કરવા માટે, Chromeને ફરી લૉન્ચ કરો</translation> +<translation id="9155112650704618965">{NUM_HOURS,plural, =1{Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: 1 કલાક પહેલાં.}one{Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_HOURS} કલાક પહેલાં.}other{Chromeને તમારા કમ્પ્યુટરમાં જાણીતું હાનિકારક સૉફ્ટવેર મળ્યું નથી. છેલ્લે ચેક કર્યું: {NUM_HOURS} કલાક પહેલાં.}}</translation> <translation id="919706545465235479">સમન્વયન પ્રારંભ કરવા માટે Chrome અપડેટ કરો</translation> <translation id="989369509083708165">Google Chrome તમારું ડિફૉલ્ટ બ્રાઉઝર છે</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/app/resources/google_chrome_strings_iw.xtb b/chrome/app/resources/google_chrome_strings_iw.xtb index 11015c1..96a08a9 100644 --- a/chrome/app/resources/google_chrome_strings_iw.xtb +++ b/chrome/app/resources/google_chrome_strings_iw.xtb
@@ -87,7 +87,7 @@ <translation id="3149510190863420837">אפליקציות Chrome</translation> <translation id="3360895254066713204">Chrome Helper</translation> <translation id="3379938682270551431">{0,plural, =0{Chrome יופעל מחדש עכשיו}=1{Chrome יופעל מחדש בעוד שנייה}two{Chrome יופעל מחדש בעוד # שניות}many{Chrome יופעל מחדש בעוד # שניות}other{Chrome יופעל מחדש בעוד # שניות}}</translation> -<translation id="3395323229510056640">קבל עזרה בנושא מערכת ההפעלה של Chrome</translation> +<translation id="3395323229510056640">עזרה בנושא Chrome OS</translation> <translation id="3396977131400919238">במהלך ההתקנה ארעה שגיאה של מערכת ההפעלה. הורד שוב את Google Chrome.</translation> <translation id="3398288718845740432">הסתרה בתפריט Chrome</translation> <translation id="3434246496373299699">Chrome יכול לבדוק את הסיסמאות כשנכנסים באמצעות חשבון Google</translation> @@ -115,7 +115,7 @@ <translation id="4127976662406264741">{NUM_MINS,plural, =1{Chrome לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני דקה אחת.}two{Chrome לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני {NUM_MINS} דקות.}many{Chrome לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני {NUM_MINS} דקות.}other{Chrome לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני {NUM_MINS} דקות.}}</translation> <translation id="4143243756087420366">שם ותמונה ב-Chrome</translation> <translation id="4147555960264124640">בחרת להיכנס לחשבון מנוהל, ויינתן למנהל המערכת שלו שליטה על הפרופיל שלך ב-Chrome. הנתונים שלך ב-Chrome, כגון אפליקציות, סימניות, היסטוריה, סיסמאות והגדרות אחרות ייקשרו באופן קבוע ל-<ph name="USER_NAME" />. ניתן למחוק את הנתונים האלה באמצעות מרכז השליטה של חשבונות Google, אבל לא ניתן יהיה לשייך את הנתונים האלה לחשבון אחר. <ph name="LEARN_MORE" /></translation> -<translation id="4149882025268051530">המתקין נכשל בביצוע דחיסה לארכיון. הורד שוב את Google Chrome.</translation> +<translation id="4149882025268051530">המתקין נכשל בביצוע דחיסה לארכיון. יש להוריד שוב את Google Chrome.</translation> <translation id="4191857738314598978">{0,plural, =1{צריך להפעיל מחדש את Chrome תוך יום אחד}two{צריך להפעיל מחדש את Chrome תוך # ימים}many{צריך להפעיל מחדש את Chrome תוך # ימים}other{צריך להפעיל מחדש את Chrome תוך # ימים}}</translation> <translation id="4205362703535890467">Chrome לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: אתמול.</translation> <translation id="4205939740494406371">Chrome לא יכול לבדוק את הסיסמאות שלך. יש לנסות שוב בעוד 24 שעות או <ph name="BEGIN_LINK" />לבדוק את הסיסמאות בחשבון Google<ph name="END_LINK" />.</translation> @@ -158,7 +158,7 @@ <translation id="5193136243808726294">מערכת ההפעלה של Google Chrome אינה יכולה לפתוח את הדף הזה.</translation> <translation id="5251420635869119124">אורחים יכולים להשתמש ב-Chrome בלי להשאיר דבר מאחור.</translation> <translation id="532046782124376502">אזהרה: Google Chrome לא יכול למנוע מתוספים לתעד את היסטוריית הגלישה שלך. כדי להשבית את התוסף הזה במצב גלישה בסתר, יש לבטל את האפשרות הזו.</translation> -<translation id="5386244825306882791">הגדרה זו גם קובעת איזה דף מוצג כשאתה מפעיל את Chrome או מבצע חיפוש מסרגל הכתובות.</translation> +<translation id="5386244825306882791">הגדרה זו גם קובעת איזה דף מוצג כשמפעילים את Chrome או כשמבצעים חיפוש מסרגל הכתובות.</translation> <translation id="5394833366792865639">שיתוף כרטיסיית Chrome</translation> <translation id="5409605318138185493">{NUM_DAYS,plural, =1{Chrome לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני יום אחד.}two{Chrome לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני יומיים ({NUM_DAYS}).}many{Chrome לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני {NUM_DAYS} ימים.}other{Chrome לא גילה תוכנות מזיקות ידועות במחשב שלך. בדיקה אחרונה: לפני {NUM_DAYS} ימים.}}</translation> <translation id="5430073640787465221">קובץ ההעדפות שלך פגום או לא חוקי. Google Chrome לא יכול לשחזר את ההגדרות שלך.</translation> @@ -227,7 +227,7 @@ <translation id="7641148173327520642">לפי הגדרת מנהל המערכת, Google Chrome יפתח את <ph name="ALTERNATIVE_BROWSER_NAME" /> כדי לגשת אל <ph name="TARGET_URL_HOSTNAME" />.</translation> <translation id="7651907282515937834">לוגו של Chrome Enterprise</translation> <translation id="7747138024166251722">המתקין לא הצליח ליצור ספריה זמנית. בדוק את המקום הפנוי בדיסק ואת האישור להתקנת תוכנה.</translation> -<translation id="7761834446675418963">לחץ על השם שלך כדי לפתוח את Chrome ולהתחיל לגלוש.</translation> +<translation id="7761834446675418963">אפשר ללחוץ על השם שלך כדי לפתוח את Chrome ולהתחיל לגלוש.</translation> <translation id="7777080907402804672">אם אין לתמונה תיאור מועיל, Chrome ינסה לספק לך תיאור. כדי ליצור תיאורים, התמונות נשלחות אל Google. אפשר להשבית את האפשרות הזו בכל זמן דרך ההגדרות.</translation> <translation id="7781002470561365167">גרסה חדשה של Google Chrome זמינה כעת.</translation> <translation id="7787950393032327779">נראה שהפרופיל נמצא בשימוש על ידי תהליך אחר של Google Chrome (<ph name="PROCESS_ID" />) במחשב אחר (<ph name="HOST_NAME" />). Chrome נעל את הפרופיל כדי שלא ייפגם. אם אתה משוכנע שאף תהליך אחר אינו משתמש בפרופיל זה, תוכל לבטל את נעילת הפרופיל ולהפעיל את Chrome מחדש.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ka.xtb b/chrome/app/resources/google_chrome_strings_ka.xtb index 7e56b44..f629b62f 100644 --- a/chrome/app/resources/google_chrome_strings_ka.xtb +++ b/chrome/app/resources/google_chrome_strings_ka.xtb
@@ -79,6 +79,7 @@ <translation id="2871893339301912279">თქვენ შესული ხართ Chrome-ში!</translation> <translation id="2885378588091291677">ამოცანების მმართველი</translation> <translation id="2888126860611144412">Chrome-ის შესახებ</translation> +<translation id="2926676257163822632">სუსტი პაროლები ადვილი გამოსაცნობია, ამიტომ მიეცით საშუალება Chrome-ს, <ph name="BEGIN_LINK" />თქვენთვის შექმნას და დაიმახსოვროს ძლიერი პაროლები<ph name="END_LINK" />.</translation> <translation id="2929907241665500097">Chrome-ის განახლება ვერ მოხერხდა შეფერხების გამო. <ph name="BEGIN_LINK" />შეასწორეთ Chrome-ის განახლებასთან დაკავშირებული პრობლემები და განუხორციელებელი განახლებები.<ph name="END_LINK" /></translation> <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> — ქსელში შესვლა — Chrome</translation> <translation id="3037838751736561277">Google Chrome ფონურ რეჟიმშია.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb index 5431532..fd0baaa 100644 --- a/chrome/app/resources/google_chrome_strings_ml.xtb +++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -79,6 +79,7 @@ <translation id="2871893339301912279">നിങ്ങൾ Chrome-ൽ സൈൻ ഇൻ ചെയ്തു!</translation> <translation id="2885378588091291677">ടാസ്ക് മാനേജര്</translation> <translation id="2888126860611144412">Chrome-നെ കുറിച്ച്</translation> +<translation id="2926676257163822632">ദുർബലമായ പാസ്വേഡുകൾ ഊഹിക്കാൻ എളുപ്പമാണ്. <ph name="BEGIN_LINK" />നിങ്ങൾക്കായി ശക്തമായ പാസ്വേഡുകൾ സൃഷ്ടിക്കാനും ഓർമ്മിക്കാനും<ph name="END_LINK" /> Chrome-നെ അനുവദിക്കുക.</translation> <translation id="2929907241665500097">Chrome അപ്ഡേറ്റ് ചെയ്തില്ല, എന്തോ കുഴപ്പമുണ്ടായി. <ph name="BEGIN_LINK" />Chrome അപ്ഡേറ്റ് സംബന്ധിച്ച പ്രശ്നങ്ങളും പരാജയപ്പെട്ട അപ്ഡേറ്റുകളും പരിഹരിക്കുക.<ph name="END_LINK" /></translation> <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - നെറ്റ്വർക്ക് സൈൻ ഇൻ - Chrome</translation> <translation id="3037838751736561277">Google Chrome ഒരു പശ്ചാത്തല മോഡിലാണ്.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mn.xtb b/chrome/app/resources/google_chrome_strings_mn.xtb index a875623..2d55ee6 100644 --- a/chrome/app/resources/google_chrome_strings_mn.xtb +++ b/chrome/app/resources/google_chrome_strings_mn.xtb
@@ -79,6 +79,7 @@ <translation id="2871893339301912279">Та Chrome-д нэвтэрсэн байна!</translation> <translation id="2885378588091291677">Асуудлын менежер</translation> <translation id="2888126860611144412">Chrome-н тухай</translation> +<translation id="2926676257163822632">Сул нууц үгийг таахад хялбар байдаг. Chrome-д <ph name="BEGIN_LINK" />танд зориулан сайн нууц үг үүсгэж, санах<ph name="END_LINK" /> боломж олгоорой.</translation> <translation id="2929907241665500097">Chrome-г шинэчлээгүй, ямар нэг алдаа гарлаа. <ph name="BEGIN_LINK" />Chrome-г шинэчлэхтэй холбоотой асуудлууд болон амжилтгүй болсон шинэчлэлтүүдийг засна уу.<ph name="END_LINK" /></translation> <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Сүлжээнд нэвтрэх - Chrome</translation> <translation id="3037838751736561277">Google Chrome нь суурь горимд байна.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb index 5237db8..1580f03 100644 --- a/chrome/app/resources/google_chrome_strings_nl.xtb +++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -79,6 +79,7 @@ <translation id="2871893339301912279">Je bent ingelogd bij Chrome.</translation> <translation id="2885378588091291677">Taakbeheer</translation> <translation id="2888126860611144412">Over Chrome</translation> +<translation id="2926676257163822632">Zwakke wachtwoorden zijn makkelijk te raden. Laat Chrome <ph name="BEGIN_LINK" />sterke wachtwoorden voor je instellen en onthouden<ph name="END_LINK" />.</translation> <translation id="2929907241665500097">Chrome is niet geüpdatet. Er is een fout opgetreden. <ph name="BEGIN_LINK" />Updateproblemen en mislukte updates voor Chrome verhelpen<ph name="END_LINK" /></translation> <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Inloggen bij netwerk - Chrome</translation> <translation id="3037838751736561277">Google Chrome bevindt zich in de achtergrondmodus.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb index edd40a16..1bf8ba06 100644 --- a/chrome/app/resources/google_chrome_strings_sw.xtb +++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -79,6 +79,7 @@ <translation id="2871893339301912279">Umeingia kwenye Chrome!</translation> <translation id="2885378588091291677">Kidhibiti cha Shughuli</translation> <translation id="2888126860611144412">Kuhusu Chrome</translation> +<translation id="2926676257163822632">Ni rahisi kukisia manenosiri dhaifu. Iruhusu Chrome <ph name="BEGIN_LINK" />itunge na ikumbuke manenosiri thabiti kwa niaba yako<ph name="END_LINK" />.</translation> <translation id="2929907241665500097">Chrome haijasasishwa, hitilafu fulani imetokea. <ph name="BEGIN_LINK" />Rekebisha matatizo ya sasisho la Chrome na masasisho ambayo hayakuwekwa.<ph name="END_LINK" /></translation> <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Kuingia katika Akaunti ya Mtandao - Chrome</translation> <translation id="3037838751736561277">Google Chrome iko katika hali ya chini chini.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb index aa74e4440..6feab3bbe 100644 --- a/chrome/app/resources/google_chrome_strings_te.xtb +++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -75,6 +75,7 @@ <translation id="2871893339301912279">మీరు Chromeకు సైన్ ఇన్ చేసారు!</translation> <translation id="2885378588091291677">విధి సంచాలకులు</translation> <translation id="2888126860611144412">Chrome పరిచయం</translation> +<translation id="2926676257163822632">బలహీనమైన పాస్వర్డ్లను ఊహించడం చాలా సులభం. <ph name="BEGIN_LINK" />మీ కోసం శక్తివంతమైన పాస్వర్డ్లను క్రియేట్ చేయడం, గుర్తుంచుకోవడం<ph name="END_LINK" /> చేయడానికి Chromeను అనుమతించండి.</translation> <translation id="2929907241665500097">Chrome అప్డేట్ అవ్వలేదు, ఏదో తప్పు జరిగింది. <ph name="BEGIN_LINK" />Chrome అప్డేట్ సమస్యలు, విఫలమైన అప్డేట్లను పరిష్కరించండి.<ph name="END_LINK" /></translation> <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - నెట్వర్క్ సైన్ ఇన్ - Chrome</translation> <translation id="3037838751736561277">Google Chrome నేపథ్య మోడ్లో ఉంది.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_th.xtb b/chrome/app/resources/google_chrome_strings_th.xtb index f8c1166..4b90913 100644 --- a/chrome/app/resources/google_chrome_strings_th.xtb +++ b/chrome/app/resources/google_chrome_strings_th.xtb
@@ -75,6 +75,7 @@ <translation id="2871893339301912279">คุณได้ลงชื่อเข้าใช้ Chrome แล้ว!</translation> <translation id="2885378588091291677">ตัวจัดการงาน</translation> <translation id="2888126860611144412">เกี่ยวกับ Chrome</translation> +<translation id="2926676257163822632">รหัสผ่านที่ไม่รัดกุมนั้นคาดเดาได้ง่าย ให้ Chrome <ph name="BEGIN_LINK" />สร้างและจดจำรหัสผ่านที่รัดกุมให้คุณ<ph name="END_LINK" /></translation> <translation id="2929907241665500097">Chrome ไม่ได้อัปเดตเนื่องจากเกิดข้อผิดพลาด <ph name="BEGIN_LINK" />โปรดแก้ปัญหาการอัปเดต Chrome และการอัปเดตที่ไม่สำเร็จ<ph name="END_LINK" /></translation> <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - หน้าลงชื่อเข้าใช้ของเครือข่าย - Chrome</translation> <translation id="3037838751736561277">Google Chrome กำลังอยู่ในโหมดทำงานในพื้นหลัง</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uz.xtb b/chrome/app/resources/google_chrome_strings_uz.xtb index d1c2501..874f72e 100644 --- a/chrome/app/resources/google_chrome_strings_uz.xtb +++ b/chrome/app/resources/google_chrome_strings_uz.xtb
@@ -76,6 +76,7 @@ <translation id="2871893339301912279">Chrome brauzeriga xush kelibsiz!</translation> <translation id="2885378588091291677">Vazifalar boshqaruvi</translation> <translation id="2888126860611144412">Chrome haqida</translation> +<translation id="2926676257163822632">Kuchsiz parollar oson topiladi. Chrome <ph name="BEGIN_LINK" />siz uchun ishonchli parol yaratsin va eslab qolsin<ph name="END_LINK" />.</translation> <translation id="2929907241665500097">Notanish xatolik tufayli Chrome yangilanmadi. <ph name="BEGIN_LINK" />Chromedagi yangilanish muammolari va xatoliklarni tuzatish.<ph name="END_LINK" /></translation> <translation id="2969728957078202736"><ph name="PAGE_TITLE" /> - Tarmoqqa kirish - Chrome</translation> <translation id="3037838751736561277">Google Chrome orqa fon rejimida ishlamoqda.</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index e4a28ea..8e4d8b96 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -35,6 +35,7 @@ import("//third_party/protobuf/proto_library.gni") import("//third_party/webrtc/webrtc.gni") import("//third_party/widevine/cdm/widevine.gni") +import("//tools/grit/grit_rule.gni") import("//ui/base/ui_features.gni") # //build/config/android/rules.gni imports //tools/grit/grit_rule.gni, which @@ -42,8 +43,6 @@ if (is_android) { import("//build/config/android/rules.gni") import("//chrome/android/features/dev_ui/dev_ui_module.gni") -} else { - import("//tools/grit/grit_rule.gni") } if (is_win) { @@ -1716,16 +1715,10 @@ "storage/appcache_feature_prefs.h", "storage/durable_storage_permission_context.cc", "storage/durable_storage_permission_context.h", - "subresource_filter/ads_intervention_manager.cc", - "subresource_filter/ads_intervention_manager.h", "subresource_filter/chrome_subresource_filter_client.cc", "subresource_filter/chrome_subresource_filter_client.h", - "subresource_filter/subresource_filter_content_settings_manager.cc", - "subresource_filter/subresource_filter_content_settings_manager.h", "subresource_filter/subresource_filter_history_observer.cc", "subresource_filter/subresource_filter_history_observer.h", - "subresource_filter/subresource_filter_profile_context.cc", - "subresource_filter/subresource_filter_profile_context.h", "subresource_filter/subresource_filter_profile_context_factory.cc", "subresource_filter/subresource_filter_profile_context_factory.h", "subresource_redirect/https_image_compression_bypass_decider.cc",
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.cc b/chrome/browser/android/autofill_assistant/ui_controller_android.cc index 0dd7492..b2b05a64 100644 --- a/chrome/browser/android/autofill_assistant/ui_controller_android.cc +++ b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
@@ -68,9 +68,6 @@ namespace autofill_assistant { namespace { - -static const char* const kCancelChipIdentifier = "CANCEL_CHIP_ID"; - std::vector<float> ToFloatVector(const std::vector<RectF>& areas) { std::vector<float> flattened; for (const auto& rect : areas) { @@ -763,24 +760,18 @@ break; case HIGHLIGHTED_ACTION: - // Here and below, we set the identifier to the empty string so that we - // can hide all the chips except for the cancel chip when the keyboard - // is showing. - // TODO(b/149543425): Find a better way to do this. jchip = Java_AutofillAssistantUiController_createHighlightedActionButton( env, java_object_, chip.icon, base::android::ConvertUTF8ToJavaString(env, chip.text), i, - !action.enabled(), chip.sticky, - base::android::ConvertUTF8ToJavaString(env, "")); + !action.enabled(), chip.sticky, chip.visible); break; case NORMAL_ACTION: jchip = Java_AutofillAssistantUiController_createActionButton( env, java_object_, chip.icon, base::android::ConvertUTF8ToJavaString(env, chip.text), i, - !action.enabled(), chip.sticky, - base::android::ConvertUTF8ToJavaString(env, "")); + !action.enabled(), chip.sticky, chip.visible); break; case CANCEL_ACTION: @@ -789,8 +780,7 @@ jchip = Java_AutofillAssistantUiController_createCancelButton( env, java_object_, chip.icon, base::android::ConvertUTF8ToJavaString(env, chip.text), i, - !action.enabled(), chip.sticky, - base::android::ConvertUTF8ToJavaString(env, kCancelChipIdentifier)); + !action.enabled(), chip.sticky, chip.visible); has_close_or_cancel = true; break; @@ -798,8 +788,7 @@ jchip = Java_AutofillAssistantUiController_createActionButton( env, java_object_, chip.icon, base::android::ConvertUTF8ToJavaString(env, chip.text), i, - !action.enabled(), chip.sticky, - base::android::ConvertUTF8ToJavaString(env, "")); + !action.enabled(), chip.sticky, chip.visible); has_close_or_cancel = true; break; @@ -808,8 +797,7 @@ Java_AutofillAssistantUiController_createHighlightedActionButton( env, java_object_, chip.icon, base::android::ConvertUTF8ToJavaString(env, chip.text), i, - !action.enabled(), chip.sticky, - base::android::ConvertUTF8ToJavaString(env, "")); + !action.enabled(), chip.sticky, chip.visible); has_close_or_cancel = true; break; } @@ -828,14 +816,12 @@ jcancel_chip = Java_AutofillAssistantUiController_createCloseButton( env, java_object_, ICON_CLEAR, base::android::ConvertUTF8ToJavaString(env, ""), - /* disabled= */ false, /* sticky= */ true, - base::android::ConvertUTF8ToJavaString(env, "")); + /* disabled= */ false, /* sticky= */ true, /* visible=*/true); } else if (ui_delegate_->GetState() != AutofillAssistantState::INACTIVE) { jcancel_chip = Java_AutofillAssistantUiController_createCancelButton( env, java_object_, ICON_CLEAR, base::android::ConvertUTF8ToJavaString(env, ""), -1, - /* disabled= */ false, /* sticky= */ true, - base::android::ConvertUTF8ToJavaString(env, kCancelChipIdentifier)); + /* disabled= */ false, /* sticky= */ true, /* visible=*/true); } if (jcancel_chip) { Java_AutofillAssistantUiController_appendChipToList(env, jchips, @@ -889,13 +875,8 @@ JNIEnv* env, const base::android::JavaParamRef<jobject>& jcaller, jboolean visible) { - // Hide all chips except cancel while the keyboard is shown, to prevent users - // from accidentally tapping chips while using the keyboard. - // TODO(b/149543425): Find a better way to do this. - Java_AutofillAssistantUiController_setAllChipsVisibleExcept( - env, java_object_, - base::android::ConvertUTF8ToJavaString(env, kCancelChipIdentifier), - !visible); + if (ui_delegate_) + ui_delegate_->OnKeyboardVisibilityChanged(visible); } bool UiControllerAndroid::OnBackButtonClicked() {
diff --git a/chrome/browser/autofill/manual_filling_controller_impl.cc b/chrome/browser/autofill/manual_filling_controller_impl.cc index ede9356..e653c95 100644 --- a/chrome/browser/autofill/manual_filling_controller_impl.cc +++ b/chrome/browser/autofill/manual_filling_controller_impl.cc
@@ -20,6 +20,7 @@ #include "components/autofill/core/common/autofill_util.h" #include "components/keyed_service/core/service_access_type.h" #include "components/password_manager/core/browser/credential_cache.h" +#include "components/password_manager/core/common/password_manager_features.h" #include "content/public/browser/web_contents.h" using autofill::AccessoryAction; @@ -243,7 +244,9 @@ autofill::features::kAutofillManualFallbackAndroid)) { return focused_field_type_ == FocusedFieldType::kFillablePasswordField || (focused_field_type_ == FocusedFieldType::kFillableUsernameField && - available_sources_.contains(FillingSource::PASSWORD_FALLBACKS)); + (base::FeatureList::IsEnabled( + password_manager::features::kFillingPasswordsFromAnyOrigin) || + available_sources_.contains(FillingSource::PASSWORD_FALLBACKS))); } switch (focused_field_type_) { // Always show on password fields to provide management and generation. @@ -253,7 +256,9 @@ // If there are suggestions, show on usual form fields. case FocusedFieldType::kFillableUsernameField: case FocusedFieldType::kFillableNonSearchField: - return !available_sources_.empty(); + return !available_sources_.empty() || + base::FeatureList::IsEnabled( + password_manager::features::kFillingPasswordsFromAnyOrigin); // Even if there are suggestions, don't show on search fields and textareas. case FocusedFieldType::kFillableSearchField:
diff --git a/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc b/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc index bc58398..547c1d2 100644 --- a/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc +++ b/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc
@@ -179,6 +179,19 @@ controller()->RefreshSuggestions(populate_sheet(AccessoryTabType::PASSWORDS)); } +TEST_F(ManualFillingControllerTest, + AlwaysShowsAccessoryForUsernameFieldsIfFillingAcrossOriginEnabled) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitAndEnableFeature( + password_manager::features::kFillingPasswordsFromAnyOrigin); + + EXPECT_CALL(*view(), ShowWhenKeyboardIsVisible()); + FocusFieldAndClearExpectations(FocusedFieldType::kFillableUsernameField); + + EXPECT_CALL(*view(), Hide()).Times(0); + controller()->RefreshSuggestions(empty_passwords_sheet()); +} + TEST_F(ManualFillingControllerTest, DoesntShowFallbacksOutsideUsernameInV1) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures(
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index c8273ee..1278b58 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -1662,8 +1662,12 @@ "login/saml/in_session_password_sync_manager_factory.h", "login/saml/password_expiry_notification.cc", "login/saml/password_expiry_notification.h", + "login/saml/password_sync_token_checkers_collection.cc", + "login/saml/password_sync_token_checkers_collection.h", "login/saml/password_sync_token_fetcher.cc", "login/saml/password_sync_token_fetcher.h", + "login/saml/password_sync_token_login_checker.cc", + "login/saml/password_sync_token_login_checker.h", "login/saml/password_sync_token_verifier.cc", "login/saml/password_sync_token_verifier.h", "login/saml/password_sync_token_verifier_factory.cc", @@ -1775,6 +1779,10 @@ "login/screens/wrong_hwid_screen.h", "login/security_token_pin_dialog_host_ash_impl.cc", "login/security_token_pin_dialog_host_ash_impl.h", + "login/security_token_session_controller.cc", + "login/security_token_session_controller.h", + "login/security_token_session_controller_factory.cc", + "login/security_token_session_controller_factory.h", "login/session/chrome_session_manager.cc", "login/session/chrome_session_manager.h", "login/session/user_session_initializer.cc", @@ -3477,6 +3485,7 @@ "login/saml/mock_lock_handler.cc", "login/saml/mock_lock_handler.h", "login/saml/password_expiry_notification_unittest.cc", + "login/saml/password_sync_token_login_checker_unittest.cc", "login/saml/password_sync_token_verifier_unittest.cc", "login/saml/saml_offline_signin_limiter_unittest.cc", "login/screens/encryption_migration_screen_unittest.cc",
diff --git a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc index f815120a..3692fb68 100644 --- a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc +++ b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc
@@ -23,12 +23,7 @@ #include "build/build_config.h" #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" -#include "chrome/browser/chromeos/login/screens/sync_consent_screen.h" -#include "chrome/browser/chromeos/login/test/device_state_mixin.h" -#include "chrome/browser/chromeos/login/test/login_manager_mixin.h" #include "chrome/browser/chromeos/login/test/oobe_base_test.h" -#include "chrome/browser/chromeos/profiles/profile_helper.h" -#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h" #include "chrome/browser/ui/browser.h" @@ -38,7 +33,6 @@ #include "chrome/common/extensions/extension_constants.h" #include "chrome/test/base/interactive_test_utils.h" #include "chrome/test/base/ui_test_utils.h" -#include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_switches.h" #include "components/user_manager/user_names.h" #include "content/public/browser/browser_task_traits.h" @@ -942,7 +936,13 @@ DISALLOW_COPY_AND_ASSIGN(OobeSpokenFeedbackTest); }; -IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, SpokenFeedbackInOobe) { +#if defined(MEMORY_SANITIZER) +// Times out under MSan: https://crbug.com/1071693 +#define MAYBE_SpokenFeedbackInOobe DISABLED_SpokenFeedbackInOobe +#else +#define MAYBE_SpokenFeedbackInOobe SpokenFeedbackInOobe +#endif +IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, MAYBE_SpokenFeedbackInOobe) { ui_controls::EnableUIControls(); ASSERT_FALSE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled()); AccessibilityManager::Get()->EnableSpokenFeedback(true); @@ -960,45 +960,4 @@ sm_.Replay(); } -class SigninToUserProfileSwitchTest : public OobeSpokenFeedbackTest { - public: - // OobeSpokenFeedbackTest: - void SetUpCommandLine(base::CommandLine* command_line) override { - OobeSpokenFeedbackTest::SetUpCommandLine(command_line); - // Force the help app to launch in the background. - command_line->AppendSwitch(switches::kForceFirstRunUI); - } - - protected: - LoginManagerMixin login_manager_{&mixin_host_}; - DeviceStateMixin device_state_{ - &mixin_host_, DeviceStateMixin::State::OOBE_COMPLETED_UNOWNED}; -}; - -// Verifies that spoken feedback correctly handles profile switch (signin -> -// user) and announces the sync consent screen correctly. -IN_PROC_BROWSER_TEST_F(SigninToUserProfileSwitchTest, LoginAsNewUser) { - // Force sync screen. - auto reset = SyncConsentScreen::ForceBrandedBuildForTesting(true); - AccessibilityManager::Get()->EnableSpokenFeedback(true); - sm_.ExpectSpeechPattern("*"); - - sm_.Call([this]() { - ASSERT_EQ(chromeos::AccessibilityManager::Get()->profile(), - ProfileHelper::GetSigninProfile()); - login_manager_.LoginAsNewRegularUser(); - }); - - std::string button_title = - features::IsSplitSettingsSyncEnabled() ? "Got it" : "Accept and continue"; - sm_.ExpectSpeech(button_title); - - // Check that profile switched to the active user. - sm_.Call([]() { - ASSERT_EQ(chromeos::AccessibilityManager::Get()->profile(), - ProfileManager::GetActiveUserProfile()); - }); - sm_.Replay(); -} - } // namespace chromeos
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc index 6ea9a5a..f0e7ee4 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
@@ -727,8 +727,7 @@ return RespondNow(Error("Device not found")); } - if (!device_disk->on_removable_device() || device_disk->on_boot_device() || - device_disk->is_read_only()) { + if (device_disk->is_read_only()) { return RespondNow(Error("Invalid device")); }
diff --git a/chrome/browser/chromeos/login/app_mode/auto_launched_kiosk_browsertest.cc b/chrome/browser/chromeos/login/app_mode/auto_launched_kiosk_browsertest.cc index 776ef1a..bddb325d 100644 --- a/chrome/browser/chromeos/login/app_mode/auto_launched_kiosk_browsertest.cc +++ b/chrome/browser/chromeos/login/app_mode/auto_launched_kiosk_browsertest.cc
@@ -75,8 +75,8 @@ "adinpkdaebaiabdlinlbjmenialdhibc"; // Secondary kiosk app that runs tests for chrome.management API. -// The app is loaded alongside |kTestManagementApiKioskApp|. The tests are run -// in the response to a message sent from |kTestManagementApiKioskApp|. +// The app is loaded alongside `kTestManagementApiKioskApp`. The tests are run +// in the response to a message sent from `kTestManagementApiKioskApp`. // The app's CRX is located under: // chrome/test/data/chromeos/app_mode/webstore/downloads/ // kajpgkhinciaiihghpdamekpjpldgpfi.crx
diff --git a/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc b/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc index 05ac6cb..a94ef08 100644 --- a/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc +++ b/chrome/browser/chromeos/login/app_mode/kiosk_browsertest.cc
@@ -775,7 +775,7 @@ } // Waits for window width to change. Listens to a 'size_change' message sent - // from DOM automation to |message_queue|. + // from DOM automation to `message_queue`. // The message is expected to be in JSON format: // {'name': <msg_name>, 'data': <extra_msg_data>}. // This will wait until a message with a different width is seen. It will @@ -1385,7 +1385,7 @@ const GURL page2_sub("https://page2.com/sub"); const GURL page3("https://page3.com/"); - // Replace the settings allowlist with |settings_pages|. + // Replace the settings allowlist with `settings_pages`. ScopedSettingsPages pages(&settings_pages); AppSession* app_session = KioskAppManager::Get()->app_session(); @@ -2614,7 +2614,7 @@ const char kPrivateStoreUpdate[] = "/private_store_update"; net::EmbeddedTestServer private_server; - // |private_server| serves crx from test data dir. + // `private_server` serves crx from test data dir. base::FilePath test_data_dir; base::PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir); private_server.ServeFilesFromDirectory(test_data_dir);
diff --git a/chrome/browser/chromeos/login/app_mode/kiosk_launch_controller.cc b/chrome/browser/chromeos/login/app_mode/kiosk_launch_controller.cc index c3528b7..1747344 100644 --- a/chrome/browser/chromeos/login/app_mode/kiosk_launch_controller.cc +++ b/chrome/browser/chromeos/login/app_mode/kiosk_launch_controller.cc
@@ -172,7 +172,7 @@ // Reset virtual keyboard to use IME engines in app profile early. ChromeKeyboardControllerClient::Get()->RebuildKeyboardIfEnabled(); - // Do not set update |app_launcher_| if has been set. + // Do not set update `app_launcher_` if has been set. if (!app_launcher_) { switch (kiosk_app_id_.type) { case KioskAppType::ARC_APP: @@ -186,7 +186,7 @@ profile_, *kiosk_app_id_.app_id, this); break; case KioskAppType::WEB_APP: - // Make keyboard config sync with the |VirtualKeyboardFeatures| policy. + // Make keyboard config sync with the `VirtualKeyboardFeatures` policy. ChromeKeyboardControllerClient::Get()->SetKeyboardConfigFromPref(true); app_launcher_ = std::make_unique<WebKioskAppLauncher>( profile, this, *kiosk_app_id_.account_id);
diff --git a/chrome/browser/chromeos/login/app_mode/kiosk_launch_controller_browsertest.cc b/chrome/browser/chromeos/login/app_mode/kiosk_launch_controller_browsertest.cc index 5c591301..5e790762 100644 --- a/chrome/browser/chromeos/login/app_mode/kiosk_launch_controller_browsertest.cc +++ b/chrome/browser/chromeos/login/app_mode/kiosk_launch_controller_browsertest.cc
@@ -99,7 +99,7 @@ std::unique_ptr<base::AutoReset<bool>> disable_wait_timer_and_login_operations_for_testing_; std::unique_ptr<FakeAppLaunchSplashScreenHandler> view_; - MockWebKioskAppLauncher* app_launcher_; // owned by |controller_|. + MockWebKioskAppLauncher* app_launcher_; // owned by `controller_`. std::unique_ptr<KioskLaunchController> controller_; KioskAppId kiosk_app_id_; };
diff --git a/chrome/browser/chromeos/login/app_mode/web_kiosk_browsertest.cc b/chrome/browser/chromeos/login/app_mode/web_kiosk_browsertest.cc index e1f2ddb..239c5c4 100644 --- a/chrome/browser/chromeos/login/app_mode/web_kiosk_browsertest.cc +++ b/chrome/browser/chromeos/login/app_mode/web_kiosk_browsertest.cc
@@ -138,7 +138,7 @@ const keyboard::KeyboardConfig config = ash::KeyboardController::Get()->GetKeyboardConfig(); - // |auto_capitalize| is not controlled by the policy + // `auto_capitalize` is not controlled by the policy // 'VirtualKeyboardFeatures', and its default value remains true. EXPECT_TRUE(config.auto_capitalize);
diff --git a/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc b/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc index c3ca287b..199ac992 100644 --- a/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc +++ b/chrome/browser/chromeos/login/arc_terms_of_service_browsertest.cc
@@ -302,7 +302,7 @@ return BuildHttpResponse(content); } - // Returns a successful |BasicHttpResponse| with |content|. + // Returns a successful `BasicHttpResponse` with `content`. std::unique_ptr<BasicHttpResponse> BuildHttpResponse( const std::string& content) { std::unique_ptr<BasicHttpResponse> http_response = @@ -533,9 +533,9 @@ } // Common routine that enables/disables checkboxes based on test parameters. - // When |accept| is true, advances to next screen by clicking on the "Accept" + // When `accept` is true, advances to next screen by clicking on the "Accept" // button. - // |play_consent|, |backup_and_restore_consent| and |location_service_consent| + // `play_consent`, `backup_and_restore_consent` and `location_service_consent` // are the expected consents recordings. void AdvanceNextScreenWithExpectations( bool accept,
diff --git a/chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.cc b/chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.cc index 172cf0a..9d9b103 100644 --- a/chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.cc +++ b/chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.cc
@@ -36,7 +36,7 @@ void ChromeCryptohomeAuthenticator::CheckSafeModeOwnership( const UserContext& context, IsOwnerCallback callback) { - // |IsOwnerForSafeModeAsync| expects logged in state to be + // `IsOwnerForSafeModeAsync` expects logged in state to be // LOGGED_IN_SAFE_MODE. if (LoginState::IsInitialized()) { LoginState::Get()->SetLoggedInState(LoginState::LOGGED_IN_SAFE_MODE,
diff --git a/chrome/browser/chromeos/login/auth/chrome_login_performer.h b/chrome/browser/chromeos/login/auth/chrome_login_performer.h index d1c31e7..1c4fb9d9 100644 --- a/chrome/browser/chromeos/login/auth/chrome_login_performer.h +++ b/chrome/browser/chromeos/login/auth/chrome_login_performer.h
@@ -45,8 +45,8 @@ protected: bool RunTrustedCheck(base::OnceClosure callback) override; - // Runs |callback| unconditionally, but DidRunTrustedCheck() will only be run - // itself sometimes, so ownership of |callback| should not be held in the + // Runs `callback` unconditionally, but DidRunTrustedCheck() will only be run + // itself sometimes, so ownership of `callback` should not be held in the // Callback pointing to DidRunTrustedCheck. void DidRunTrustedCheck(base::OnceClosure* callback);
diff --git a/chrome/browser/chromeos/login/auth/cryptohome_authenticator_unittest.cc b/chrome/browser/chromeos/login/auth/cryptohome_authenticator_unittest.cc index e82046fd..39bfa49 100644 --- a/chrome/browser/chromeos/login/auth/cryptohome_authenticator_unittest.cc +++ b/chrome/browser/chromeos/login/auth/cryptohome_authenticator_unittest.cc
@@ -218,7 +218,7 @@ FROM_HERE, base::BindOnce(std::move(callback), reply)); } - // Calls RemoveEx method. |callback| is called after the method call + // Calls RemoveEx method. `callback` is called after the method call // succeeds. void RemoveEx(const cryptohome::AccountIdentifier& account, DBusMethodCallback<cryptohome::BaseReply> callback) override {
diff --git a/chrome/browser/chromeos/login/challenge_response_auth_keys_loader.cc b/chrome/browser/chromeos/login/challenge_response_auth_keys_loader.cc index 7399c91..0b9797f 100644 --- a/chrome/browser/chromeos/login/challenge_response_auth_keys_loader.cc +++ b/chrome/browser/chromeos/login/challenge_response_auth_keys_loader.cc
@@ -145,8 +145,8 @@ public extensions::ExtensionHostObserver, public extensions::ExtensionRegistryObserver { public: - // Waits until all extensions in |extension_ids| are ready and invokes - // |callback| afterwards. + // Waits until all extensions in `extension_ids` are ready and invokes + // `callback` afterwards. static void WaitUntilExtensionsReady( const base::flat_set<std::string>& extension_ids, base::TimeDelta maximum_waiting_time, @@ -246,21 +246,21 @@ std::move(callback).Run(); } - // Waits until all extensions in |extension_ids| are ready and invokes - // |callback| afterwards. + // Waits until all extensions in `extension_ids` are ready and invokes + // `callback` afterwards. void StartWaiting(const base::flat_set<std::string>& extension_ids, base::OnceClosure callback) { extensions_ready_callback_ = std::move(callback); - // Do not wait longer than |maximum_waiting_time_|. + // Do not wait longer than `maximum_waiting_time_`. stop_waiting_timer_.Start( FROM_HERE, maximum_waiting_time_, this, &ExtensionLoadObserver::TriggerExtensionsReadyCallback); base::flat_set<std::string> login_screen_policy_extension_ids = GetLoginScreenPolicyExtensionIds(); - // Get all ids that are both in |extension_ids| and - // |login_screen_policy_extension_ids|. + // Get all ids that are both in `extension_ids` and + // `login_screen_policy_extension_ids`. std::vector<std::string> extension_ids_to_wait_for; for (const std::string& extension_id : extension_ids) { if (login_screen_policy_extension_ids.contains(extension_id)) { @@ -284,7 +284,7 @@ /*is_update=*/false); } } - // OnExtensionInstalled() can cause |this| to be destroyed, so it needs to + // OnExtensionInstalled() can cause `this` to be destroyed, so it needs to // be the last call of the method. } @@ -323,7 +323,7 @@ } } - // Triggers the callback. |this| may be destroyed after this function. + // Triggers the callback. `this` may be destroyed after this function. void TriggerExtensionsReadyCallback() { if (extensions_ready_callback_) { std::move(extensions_ready_callback_).Run();
diff --git a/chrome/browser/chromeos/login/challenge_response_auth_keys_loader.h b/chrome/browser/chromeos/login/challenge_response_auth_keys_loader.h index ed47525..f55a126 100644 --- a/chrome/browser/chromeos/login/challenge_response_auth_keys_loader.h +++ b/chrome/browser/chromeos/login/challenge_response_auth_keys_loader.h
@@ -49,9 +49,9 @@ // cryptographic keys that can be used to authenticate the given user. If // there should be force-installed extensions that provide a certificate for // the given user, waits until these are installed and loaded (default: up to - // 5 seconds, configured by |maximum_extension_load_waiting_time_|). + // 5 seconds, configured by `maximum_extension_load_waiting_time_`). // - // The callback is run with an empty |challenge_response_keys| in the cases + // The callback is run with an empty `challenge_response_keys` in the cases // when the user's profile doesn't support challenge-response authentication // or when there is no suitable cryptographic key available. void LoadAvailableKeys(const AccountId& account_id,
diff --git a/chrome/browser/chromeos/login/challenge_response_auth_keys_loader_browsertest.cc b/chrome/browser/chromeos/login/challenge_response_auth_keys_loader_browsertest.cc index 402bf14..0553bd89 100644 --- a/chrome/browser/chromeos/login/challenge_response_auth_keys_loader_browsertest.cc +++ b/chrome/browser/chromeos/login/challenge_response_auth_keys_loader_browsertest.cc
@@ -165,7 +165,7 @@ std::unique_ptr<ChallengeResponseAuthKeysLoader> challenge_response_auth_keys_loader_; - // Whether |challenge_response_auth_keys_loader_| should be destroyed after + // Whether `challenge_response_auth_keys_loader_` should be destroyed after // the browser shutdown, not before it. bool should_delete_loader_after_shutdown_ = false;
diff --git a/chrome/browser/chromeos/login/chrome_restart_request.cc b/chrome/browser/chromeos/login/chrome_restart_request.cc index 82e8411..27233eab 100644 --- a/chrome/browser/chromeos/login/chrome_restart_request.cc +++ b/chrome/browser/chromeos/login/chrome_restart_request.cc
@@ -69,10 +69,10 @@ // Increase logging level for Guest mode to avoid INFO messages in logs. const char kGuestModeLoggingLevel[] = "1"; -// Derives the new command line from |base_command_line| by doing the following: +// Derives the new command line from `base_command_line` by doing the following: // - Forward a given switches list to new command; // - Set start url if given; -// - Append/override switches using |new_switches|; +// - Append/override switches using `new_switches`; void DeriveCommandLine(const GURL& start_url, const base::CommandLine& base_command_line, const base::DictionaryValue& new_switches, @@ -229,7 +229,7 @@ } } -// Adds allowlisted features to |out_command_line| if they are enabled in the +// Adds allowlisted features to `out_command_line` if they are enabled in the // current session. void DeriveEnabledFeatures(base::CommandLine* out_command_line) { static const base::Feature* kForwardEnabledFeatures[] = {
diff --git a/chrome/browser/chromeos/login/chrome_restart_request.h b/chrome/browser/chromeos/login/chrome_restart_request.h index 576b5fa..e07ffc6 100644 --- a/chrome/browser/chromeos/login/chrome_restart_request.h +++ b/chrome/browser/chromeos/login/chrome_restart_request.h
@@ -15,7 +15,7 @@ namespace chromeos { -// Determines the |command_line| to be used for the OTR process. +// Determines the `command_line` to be used for the OTR process. void GetOffTheRecordCommandLine(const GURL& start_url, bool is_oobe_completed, const base::CommandLine& base_command_line,
diff --git a/chrome/browser/chromeos/login/configuration_based_oobe_browsertest.cc b/chrome/browser/chromeos/login/configuration_based_oobe_browsertest.cc index b0027b29..6f310ff 100644 --- a/chrome/browser/chromeos/login/configuration_based_oobe_browsertest.cc +++ b/chrome/browser/chromeos/login/configuration_based_oobe_browsertest.cc
@@ -102,8 +102,8 @@ OobeBaseTest::SetUpCommandLine(command_line); } - // Stores a name of the configuration data file to |file|. - // Returns true iff |file| exists. + // Stores a name of the configuration data file to `file`. + // Returns true iff `file` exists. bool GetTestFileName(const std::string& suffix, base::FilePath* file) { const ::testing::TestInfo* const test_info = ::testing::UnitTest::GetInstance()->current_test_info();
diff --git a/chrome/browser/chromeos/login/configuration_keys.h b/chrome/browser/chromeos/login/configuration_keys.h index b546ccd..2a9f7d87 100644 --- a/chrome/browser/chromeos/login/configuration_keys.h +++ b/chrome/browser/chromeos/login/configuration_keys.h
@@ -53,8 +53,8 @@ // fields). bool ValidateConfiguration(const base::Value& configuration); -// Copies only fields handled by particular |side| from |configuration| to -// |filtered_result|. +// Copies only fields handled by particular `side` from `configuration` to +// `filtered_result`. void FilterConfiguration(const base::Value& configuration, ConfigurationHandlerSide side, base::Value& filtered_result);
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_extensions_external_loader.h b/chrome/browser/chromeos/login/demo_mode/demo_extensions_external_loader.h index dd7a489b..03cdd08 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_extensions_external_loader.h +++ b/chrome/browser/chromeos/login/demo_mode/demo_extensions_external_loader.h
@@ -42,7 +42,7 @@ explicit DemoExtensionsExternalLoader(const base::FilePath& cache_dir); - // Loads the app with |app_id| and installs it from the update url or cache. + // Loads the app with `app_id` and installs it from the update url or cache. void LoadApp(const std::string& app_id); // extensions::ExternalLoader: @@ -61,14 +61,14 @@ void StartLoadingFromOfflineDemoResources(); // Called when the external extensions prefs are read from the disk. - // |prefs| - demo extensions prefs. + // `prefs` - demo extensions prefs. void DemoExternalExtensionsPrefsLoaded(base::Optional<base::Value> prefs); std::unique_ptr<ExternalCache> external_cache_; const base::FilePath cache_dir_; - // The list of app ids that should be cached by |external_cache_|. + // The list of app ids that should be cached by `external_cache_`. std::vector<std::string> app_ids_; base::WeakPtrFactory<DemoExtensionsExternalLoader> weak_ptr_factory_{this};
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.cc b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.cc index bbaf04c8..1dd550a 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.cc +++ b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover.cc
@@ -55,10 +55,10 @@ "[[:alpha:]]{2}-retailmode.com"; // An extra legacy demo retail mode domain that does not match -// |kLegacyDemoRetailModeDomainRegex|. +// `kLegacyDemoRetailModeDomainRegex`. constexpr char kExtraLegacyDemoRetailModeDomain[] = "us2-retailmode.com"; -// Deletes directory at |path| from the device. +// Deletes directory at `path` from the device. DemoModeResourcesRemover::RemovalResult RemoveDirectory( const base::FilePath& path) { if (!base::DirectoryExists(path) || base::IsDirectoryEmpty(path)) @@ -70,7 +70,7 @@ return DemoModeResourcesRemover::RemovalResult::kSuccess; } -// Tests whether the session with user |user| is part of legacy demo mode - +// Tests whether the session with user `user` is part of legacy demo mode - // a public session in a legacy demo retail mode domain. // Note that DemoSession::IsDeviceInDemoMode will return false for these // sessions.
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover_unittest.cc b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover_unittest.cc index f0f25f8..b892f03b 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover_unittest.cc +++ b/chrome/browser/chromeos/login/demo_mode/demo_mode_resources_remover_unittest.cc
@@ -37,7 +37,7 @@ "demo_mode_resources_remover.accumulated_device_usage_s"; // Used as a callback to DemoModeResourcesRemover::AttemptRemoval - it records -// the result of the attempt to |result_out|. +// the result of the attempt to `result_out`. void RecordRemovalResult( base::Optional<DemoModeResourcesRemover::RemovalResult>* result_out, DemoModeResourcesRemover::RemovalResult result) {
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_resources.h b/chrome/browser/chromeos/login/demo_mode/demo_resources.h index bcdeed03..9f950f9 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_resources.h +++ b/chrome/browser/chromeos/login/demo_mode/demo_resources.h
@@ -52,17 +52,17 @@ base::FilePath GetExternalExtensionsPrefsPath() const; // Ensures that the load of demo session resources is requested. - // |load_callback| will be run once the resources finish loading. + // `load_callback` will be run once the resources finish loading. void EnsureLoaded(base::OnceClosure load_callback); // Fakes the demo mode resources CrOS component having been requested and - // mounted at the given path (or not mounted if |path| is empty). + // mounted at the given path (or not mounted if `path` is empty). void SetCrOSComponentLoadedForTesting( const base::FilePath& path, component_updater::CrOSComponentManager::Error); // Fakes the offline demo mode resources image having been requested and - // mounted at the given path (or not mounted if |path| is empty). + // mounted at the given path (or not mounted if `path` is empty). void SetPreinstalledOfflineResourcesLoadedForTesting( const base::FilePath& path); @@ -79,7 +79,7 @@ private: // Called after attempting to load the installed demo mode resources CrOS // component has finished. - // On success, |path| is expected to contain the path as which the component + // On success, `path` is expected to contain the path as which the component // is loaded. void InstalledComponentLoaded( component_updater::CrOSComponentManager::Error error, @@ -89,7 +89,7 @@ void LoadPreinstalledOfflineResources(); // Callback for the component or image loader request to load demo resources. - // |mount_path| is the path at which the resources were loaded. + // `mount_path` is the path at which the resources were loaded. void OnDemoResourcesLoaded(base::Optional<base::FilePath> mounted_path); // Which config to load resources for: online or offline.
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_session.h b/chrome/browser/chromeos/login/demo_mode/demo_session.h index 868782c..4360219 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_session.h +++ b/chrome/browser/chromeos/login/demo_mode/demo_session.h
@@ -121,15 +121,15 @@ // Returns the id of the screensaver app based on the board name. static std::string GetScreensaverAppId(); - // Returns whether the app with |app_id| should be displayed in app launcher + // Returns whether the app with `app_id` should be displayed in app launcher // in demo mode. Returns true for all apps in non-demo mode. static bool ShouldDisplayInAppLauncher(const std::string& app_id); // Returns the list of countries that Demo Mode supports. Each country is // denoted by: - // |value|: The ISO country code. - // |title|: The display name of the country in the current locale. - // |selected|: Whether the country is currently selected. + // `value`: The ISO country code. + // `title`: The display name of the country in the current locale. + // `selected`: Whether the country is currently selected. static base::Value GetCountryList(); static void RegisterLocalStatePrefs(PrefRegistrySimple* registry); @@ -138,7 +138,7 @@ static void RecordAppLaunchSourceIfInDemoMode(AppLaunchSource source); // Ensures that the load of offline demo session resources is requested. - // |load_callback| will be run once the offline resource load finishes. + // `load_callback` will be run once the offline resource load finishes. void EnsureOfflineResourcesLoaded(base::OnceClosure load_callback); // Returns true if the Chrome app or ARC++ package, which is normally pinned @@ -146,7 +146,7 @@ // in Demo Mode and offline. bool ShouldIgnorePinPolicy(const std::string& app_id_or_package); - // Sets |extensions_external_loader_| and starts installing the screensaver. + // Sets `extensions_external_loader_` and starts installing the screensaver. void SetExtensionsExternalLoader( scoped_refptr<DemoExtensionsExternalLoader> extensions_external_loader); @@ -181,7 +181,7 @@ // success. void LoadAndLaunchHighlightsApp(); - // Installs the CRX file from an update URL. Observes |ExtensionRegistry| to + // Installs the CRX file from an update URL. Observes `ExtensionRegistry` to // launch the app upon installation. void InstallAppFromUpdateUrl(const std::string& id);
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc b/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc index c79e71c..7bff879 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc +++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc
@@ -85,7 +85,7 @@ // Dialogs that are a part of Demo Mode setup screens. enum class DemoSetupDialog { kNetwork, kEula, kArcTos, kProgress, kError }; -// Returns the tag of the given |button| type. +// Returns the tag of the given `button` type. std::string ButtonToTag(OobeButton button) { switch (button) { case OobeButton::kBack: @@ -99,7 +99,7 @@ } } -// Returns js id of the given |dialog|. +// Returns js id of the given `dialog`. std::string DialogToStringId(DemoSetupDialog dialog) { switch (dialog) { case DemoSetupDialog::kNetwork: @@ -117,8 +117,8 @@ } } -// Returns query to access the content of the given OOBE |screen| or empty -// string if the |screen| is not a part of Demo Mode setup flow. +// Returns query to access the content of the given OOBE `screen` or empty +// string if the `screen` is not a part of Demo Mode setup flow. std::string ScreenToContentQuery(OobeScreenId screen) { if (screen == DemoPreferencesScreenView::kScreenId) return "$('demo-preferences')"; @@ -204,7 +204,7 @@ return test::OobeJS().GetBool(query); } - // Returns whether a custom item with |custom_item_name| is shown as a first + // Returns whether a custom item with `custom_item_name` is shown as a first // element on the network list. bool IsCustomNetworkListElementShown(const std::string& custom_item_name) { const std::string element_selector = base::StrCat( @@ -218,8 +218,8 @@ } // Returns whether error message is shown on demo setup error screen and - // contains text consisting of strings identified by |error_message_id| and - // |recovery_message_id|. + // contains text consisting of strings identified by `error_message_id` and + // `recovery_message_id`. bool IsErrorMessageShown(int error_message_id, int recovery_message_id) { const std::string element_selector = base::StrCat({ScreenToContentQuery(DemoSetupScreenView::kScreenId), @@ -248,7 +248,7 @@ MultiTapOobeContainer(kInvokeDemoModeGestureTapsCount); } - // Simulates multi-tap gesture that consists of |tapCount| clicks on the OOBE + // Simulates multi-tap gesture that consists of `tapCount` clicks on the OOBE // outer-container. void MultiTapOobeContainer(int tapsCount) { const std::string query = base::StrCat( @@ -265,7 +265,7 @@ test::ExecuteOobeJS("document.querySelector('.cr-dialog-cancel').click();"); } - // Simulates |button| click on a specified OOBE |screen|. Can be used for + // Simulates `button` click on a specified OOBE `screen`. Can be used for // screens that consists of one oobe-dialog element. void ClickOobeButton(OobeScreenId screen, OobeButton button, @@ -273,8 +273,8 @@ ClickOobeButtonWithSelector(screen, ButtonToTag(button), execution); } - // Simulates click on a button with |button_selector| on specified OOBE - // |screen|. Can be used for screens that consists of one oobe-dialog element. + // Simulates click on a button with `button_selector` on specified OOBE + // `screen`. Can be used for screens that consists of one oobe-dialog element. void ClickOobeButtonWithSelector(OobeScreenId screen, const std::string& button_selector, JSExecution execution) { @@ -293,7 +293,7 @@ } } - // Simulates |button| click on a |dialog| of the specified OOBE |screen|. + // Simulates `button` click on a `dialog` of the specified OOBE `screen`. // Can be used for screens that consists of multiple oobe-dialog elements. void ClickScreenDialogButton(OobeScreenId screen, DemoSetupDialog dialog, @@ -303,8 +303,8 @@ execution); } - // Simulates click on a button with |button_selector| on a |dialog| of the - // specified OOBE |screen|. Can be used for screens that consist of multiple + // Simulates click on a button with `button_selector` on a `dialog` of the + // specified OOBE `screen`. Can be used for screens that consist of multiple // oobe-dialog elements. void ClickScreenDialogButtonWithSelector(OobeScreenId screen, DemoSetupDialog dialog, @@ -325,7 +325,7 @@ } } - // Simulates click on the network list item. |element| should specify + // Simulates click on the network list item. `element` should specify // the aria-label of the desired network-list-item. void ClickNetworkListElement(const std::string& name) { const std::string element =
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc index b2004906..910b1d5 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc +++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.cc
@@ -469,7 +469,7 @@ if (policy::EnrollmentRequisitionManager::GetDeviceRequisition() == kDemoRequisition) { policy::EnrollmentRequisitionManager::SetDeviceRequisition(std::string()); - // If device requisition is |kDemoRequisition|, it means the sub + // If device requisition is `kDemoRequisition`, it means the sub // organization was also set by the demo setup controller, so remove it as // well. policy::EnrollmentRequisitionManager::SetSubOrganization(std::string()); @@ -702,7 +702,7 @@ void DemoSetupController::OnDeviceEnrolled() { DCHECK_NE(demo_config_, DemoSession::DemoModeConfig::kNone); - // |enroll_start_time_| is only set for online enrollment. + // `enroll_start_time_` is only set for online enrollment. if (!enroll_start_time_.is_null()) { base::TimeDelta enroll_duration = base::TimeTicks::Now() - enroll_start_time_; @@ -852,7 +852,7 @@ void DemoSetupController::Reset() { DCHECK_NE(demo_config_, DemoSession::DemoModeConfig::kNone); - // |demo_config_| is not reset here, because it is needed for retrying setup. + // `demo_config_` is not reset here, because it is needed for retrying setup. enrollment_helper_.reset(); if (device_local_account_policy_store_) { device_local_account_policy_store_->RemoveObserver(this);
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h index e47d8642..c9ff19b 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h +++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller.h
@@ -203,11 +203,11 @@ bool IsOfflineEnrollment() const; // Initiates enrollment that sets up the device in the demo mode domain. The - // |enrollment_type_| determines whether online or offline setup will be + // `enrollment_type_` determines whether online or offline setup will be // performed and it should be set with set_enrollment_type() before calling - // Enroll(). |on_setup_success| will be called when enrollment finishes - // successfully. |on_setup_error| will be called when enrollment finishes with - // an error. |set_current_setup_step| will be called when an enrollment step + // Enroll(). `on_setup_success` will be called when enrollment finishes + // successfully. `on_setup_error` will be called when enrollment finishes with + // an error. `set_current_setup_step` will be called when an enrollment step // completes. void Enroll(OnSetupSuccess on_setup_success, OnSetupError on_setup_error,
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller_unittest.cc b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller_unittest.cc index 1257bbae..b4a8c706 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_setup_controller_unittest.cc +++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_controller_unittest.cc
@@ -68,7 +68,7 @@ // Wait until the setup result arrives (either OnSetupError or OnSetupSuccess // is called), returns true when the success result matches with - // |success_expected| and setup step matches |setup_step_expected|. + // `success_expected` and setup step matches `setup_step_expected`. bool WaitResult(bool success_expected, DemoSetupController::DemoSetupStep setup_step_expected) { // Run() stops immediately if Quit is already called.
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_test_utils.h b/chrome/browser/chromeos/login/demo_mode/demo_setup_test_utils.h index 18a63088..ad3d011 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_setup_test_utils.h +++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_test_utils.h
@@ -34,11 +34,11 @@ void SetupMockDemoModeNoEnrollmentHelper(); // Helper method that mocks EnterpriseEnrollmentHelper for online Demo Mode -// setup. It simulates specified Demo Mode enrollment |result|. +// setup. It simulates specified Demo Mode enrollment `result`. void SetupMockDemoModeOnlineEnrollmentHelper(DemoModeSetupResult result); // Helper method that mocks EnterpriseEnrollmentHelper for offline Demo Mode -// setup. It simulates specified Demo Mode enrollment |result|. +// setup. It simulates specified Demo Mode enrollment `result`. void SetupMockDemoModeOfflineEnrollmentHelper(DemoModeSetupResult result); // Creates fake offline policy directory to be used in tests.
diff --git a/chrome/browser/chromeos/login/easy_unlock/chrome_proximity_auth_client.h b/chrome/browser/chromeos/login/easy_unlock/chrome_proximity_auth_client.h index 9f6b255..f1eedde 100644 --- a/chrome/browser/chromeos/login/easy_unlock/chrome_proximity_auth_client.h +++ b/chrome/browser/chromeos/login/easy_unlock/chrome_proximity_auth_client.h
@@ -13,7 +13,7 @@ namespace chromeos { // A Chrome-specific implementation of the ProximityAuthClient interface. -// There is one |ChromeProximityAuthClient| per |Profile|. +// There is one `ChromeProximityAuthClient` per `Profile`. class ChromeProximityAuthClient : public proximity_auth::ProximityAuthClient { public: explicit ChromeProximityAuthClient(Profile* profile);
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt.cc index e4940bea..bb93dbc 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt.cc
@@ -17,8 +17,8 @@ namespace { -// Decrypts the secret that should be used to login from |wrapped_secret| using -// raw AES key |raw_key|. +// Decrypts the secret that should be used to login from `wrapped_secret` using +// raw AES key `raw_key`. // In a case of error, an empty string is returned. std::string UnwrapSecret(const std::string& wrapped_secret, const std::string& raw_key) {
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt.h index ac60454..fdac7df8 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt.h
@@ -14,11 +14,11 @@ namespace chromeos { // Class responsible for handling easy unlock auth attempts (both for unlocking -// the screen and logging in). The auth protocol is started by calling |Start|, +// the screen and logging in). The auth protocol is started by calling `Start`, // which notifies the easy unlock app about auth attempt. When the auth result -// is available, |FinalizeUnlock| or |FinalizeSignin| should be called, +// is available, `FinalizeUnlock` or `FinalizeSignin` should be called, // depending on auth type. -// To cancel the in progress auth attempt, delete the |EasyUnlockAuthAttempt| +// To cancel the in progress auth attempt, delete the `EasyUnlockAuthAttempt` // object. class EasyUnlockAuthAttempt { public: @@ -32,13 +32,13 @@ // to easy unlock app. Returns whether the event was successfully dispatched. bool Start(); - // Finalizes an unlock attempt. It unlocks the screen if |success| is true. - // If |this| has TYPE_SIGNIN type, calling this method will cause signin + // Finalizes an unlock attempt. It unlocks the screen if `success` is true. + // If `this` has TYPE_SIGNIN type, calling this method will cause signin // failure equivalent to cancelling the attempt. void FinalizeUnlock(const AccountId& account_id, bool success); // Finalizes signin attempt. It tries to log in using the secret derived from - // |wrapped_secret| decrypted by |session_key|. If the decryption fails, it + // `wrapped_secret` decrypted by `session_key`. If the decryption fails, it // fails the signin attempt. // If called on an object with TYPE_UNLOCK type, it will cause unlock failure // equivalent to cancelling the request.
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt_unittest.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt_unittest.cc index 875c28d..35aca08 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt_unittest.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_auth_attempt_unittest.cc
@@ -72,12 +72,12 @@ void set_state(AuthState value) { state_ = value; } AuthState state() const { return state_; } - // Sets the secret that is expected to be sent to |AttemptEasySignin| + // Sets the secret that is expected to be sent to `AttemptEasySignin` void set_expected_secret(const std::string& value) { expected_secret_ = value; } - // Not using |SetAuthType| to make sure it's not called during tests. + // Not using `SetAuthType` to make sure it's not called during tests. void set_auth_type(proximity_auth::mojom::AuthType value) { auth_type_ = value; }
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_challenge_wrapper.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_challenge_wrapper.h index 8066caa..974b07a 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_challenge_wrapper.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_challenge_wrapper.h
@@ -22,11 +22,11 @@ class EasyUnlockChallengeWrapper { public: // Creates the instance: - // |challenge|: The raw challenge to wrap. - // |channel_binding_data|: Data unique to the current secure channel such that + // `challenge`: The raw challenge to wrap. + // `channel_binding_data`: Data unique to the current secure channel such that // we can bind with a TPM signature. - // |account_id|: The id of the user who owns both devices. - // |key_manager|: Responsible for signing some piece of data with the TPM. + // `account_id`: The id of the user who owns both devices. + // `key_manager`: Responsible for signing some piece of data with the TPM. // Not owned and should outlive this instance. EasyUnlockChallengeWrapper(const std::string& challenge, const std::string& channel_binding_data, @@ -34,14 +34,14 @@ EasyUnlockTpmKeyManager* key_manager); virtual ~EasyUnlockChallengeWrapper(); - // Wraps the challenge and invokes |callback| with the |wrapped_challenge| + // Wraps the challenge and invokes `callback` with the `wrapped_challenge` // that will be send directly to the remote device. typedef base::Callback<void(const std::string& wrapped_challenge)> WrappedChallengeCallback; void WrapChallenge(const WrappedChallengeCallback& callback); protected: - // Signs |data_to_sign| with the TPM. |callback| will be invoked upon + // Signs `data_to_sign` with the TPM. `callback` will be invoked upon // completion. Exposed for testing. virtual void SignUsingTpmKey( const std::string& data_to_sign,
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_get_keys_operation.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_get_keys_operation.cc index b35d5b48..51ef375 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_get_keys_operation.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_get_keys_operation.cc
@@ -70,13 +70,13 @@ // Other error codes are treated as failures. if (return_code == cryptohome::MOUNT_ERROR_NONE || return_code == cryptohome::MOUNT_ERROR_KEY_FAILURE) { - // Prior to the introduction of the |unlock_key| field, only one + // Prior to the introduction of the `unlock_key` field, only one // EasyUnlockDeviceKeyData was peristed, and implicitly assumed to be the // unlock key. Now, multiple EasyUnlockDeviceKeyData objects are // persisted, and this deserializing logic cannot assume that a given // object is the unlock key. To handle the case of migrating from the old // paradigm of a single persisted EasyUnlockDeviceKeyData, the - // |unlock_key| field is defaulted to true if only a single device entry + // `unlock_key` field is defaulted to true if only a single device entry // exists, in order to correctly mark that old entry as the unlock key. if (devices_.size() == 1) devices_[0].unlock_key = true; @@ -129,7 +129,7 @@ else NOTREACHED(); } else if (entry.name == kEasyUnlockKeyMetaNameUnlockKey) { - // ProviderData only has the std::string |bytes| and int64_t |number| + // ProviderData only has the std::string `bytes` and int64_t `number` // fields for persistence -- the number field is used to store this // boolean. The boolean was stored as either a 1 or 0 in as an int64_t. // Cast it back to bool here.
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_get_keys_operation.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_get_keys_operation.h index da345f96..eda69e2 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_get_keys_operation.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_get_keys_operation.h
@@ -36,10 +36,10 @@ // Called once when the cryptohome service is available. void OnCryptohomeAvailable(bool available); - // Asynchronously requests data for |key_index_| from cryptohome. + // Asynchronously requests data for `key_index_` from cryptohome. void GetKeyData(); - // Callback for GetKeyData(). Updates |devices_|, increments |key_index_|, and + // Callback for GetKeyData(). Updates `devices_`, increments `key_index_`, and // calls GetKeyData() again. void OnGetKeyData(base::Optional<cryptohome::BaseReply> reply);
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.cc index 34080d0..22a52cb 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.cc
@@ -135,9 +135,9 @@ if (!dict.GetBoolean(key_names::kKeyUnlockKey, &unlock_key)) { // If GetBoolean() fails, that means we're reading a Dictionary from // user prefs which did not include the bool when it was stored. That means - // it's an older Dictionary that didn't include this |unlock_key| field -- + // it's an older Dictionary that didn't include this `unlock_key` field -- // only one device was persisted, and it was implicitly assumed to be the - // unlock key -- thus |unlock_key| should default to being true. + // unlock key -- thus `unlock_key` should default to being true. unlock_key = true; } data->unlock_key = unlock_key;
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h index 514c555..6e3193e 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h
@@ -41,14 +41,14 @@ ~EasyUnlockKeyManager(); // Clears existing Easy unlock keys and creates new ones for the given - // |remote_devices| and the given |user_context|. |user_context| must have + // `remote_devices` and the given `user_context`. `user_context` must have // secret to allow keys to be created. void RefreshKeys(const UserContext& user_context, const base::ListValue& remote_devices, const RefreshKeysCallback& callback); // Retrieves the remote device data from cryptohome keys for the given - // |user_context|. + // `user_context`. void GetDeviceDataList(const UserContext& user_context, const GetDeviceDataListCallback& callback); @@ -80,8 +80,8 @@ private: // Runs the next operation if there is one. We first run all the operations in - // the |write_operation_queue_| and then run all the operations in the - // |read_operation_queue_|. + // the `write_operation_queue_` and then run all the operations in the + // `read_operation_queue_`. void RunNextOperation(); // Called when the TPM key is ready to be used for creating Easy Unlock key
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler.cc index edf7a314..43b29ca 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler.cc
@@ -97,7 +97,7 @@ state == ScreenlockState::PHONE_LOCKED_AND_RSSI_TOO_LOW); } -// Returns true iff the |state| corresponds to a locked remote device. +// Returns true iff the `state` corresponds to a locked remote device. bool IsLockedState(ScreenlockState state) { return (state == ScreenlockState::PHONE_LOCKED || state == ScreenlockState::PHONE_LOCKED_AND_RSSI_TOO_LOW); @@ -145,7 +145,7 @@ state_ = new_state; // If lock screen is not active or it forces offline password, just cache the - // current state. The screenlock state will get refreshed in |ScreenDidLock|. + // current state. The screenlock state will get refreshed in `ScreenDidLock`. if (!screenlock_bridge_->IsLocked()) return;
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler.h index adaafd05..95d2d81 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler.h
@@ -38,12 +38,12 @@ // Settings. }; - // |account_id|: The account id of the user associated with the profile to + // `account_id`: The account id of the user associated with the profile to // which this class is attached. - // |initial_hardlock_state|: The initial hardlock state. - // |screenlock_bridge|: The screenlock bridge used to update the screen lock + // `initial_hardlock_state`: The initial hardlock state. + // `screenlock_bridge`: The screenlock bridge used to update the screen lock // state. - // |pref_manager|: Used primarily to track if the "Signin with Smart Lock is + // `pref_manager`: Used primarily to track if the "Signin with Smart Lock is // disabled" message has been shown before. EasyUnlockScreenlockStateHandler( const AccountId& account_id, @@ -60,7 +60,7 @@ // auth failure). bool InStateValidOnRemoteAuthFailure() const; - // Changes internal state to |new_state| and updates the user's screenlock + // Changes internal state to `new_state` and updates the user's screenlock // accordingly. void ChangeState(proximity_auth::ScreenlockState new_state);
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler_unittest.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler_unittest.cc index 7e1f2fef..d18a3e23 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler_unittest.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_screenlock_state_handler_unittest.cc
@@ -76,7 +76,7 @@ DISALLOW_COPY_AND_ASSIGN(FakeProximityAuthPrefManager); }; -// Checks if |input| string has any unreplaced placeholders. +// Checks if `input` string has any unreplaced placeholders. bool StringHasPlaceholders(const base::string16& input) { std::vector<size_t> offsets; std::vector<base::string16> subst; @@ -219,7 +219,7 @@ } private: - // Does some sanity checks on the last icon set by |ShowUserPodCustomIcon|. + // Does some sanity checks on the last icon set by `ShowUserPodCustomIcon`. // It will cause a test failure if the icon is not valid. void ValidateCustomIcon() { ASSERT_TRUE(last_custom_icon_.get()); @@ -234,16 +234,16 @@ } } - // The fake account id used in test. All methods called on |this| should be + // The fake account id used in test. All methods called on `this` should be // associated with this user. const AccountId account_id_; - // The last icon set using |SetUserPodCustomIcon|. Call to - // |HideUserPodcustomIcon| resets it. + // The last icon set using `SetUserPodCustomIcon`. Call to + // `HideUserPodcustomIcon` resets it. std::unique_ptr<base::DictionaryValue> last_custom_icon_; size_t show_icon_count_; - // Auth type and value set using |SetAuthType|. + // Auth type and value set using `SetAuthType`. proximity_auth::mojom::AuthType auth_type_; base::string16 auth_value_; @@ -279,7 +279,7 @@ // The state handler that is being tested. std::unique_ptr<EasyUnlockScreenlockStateHandler> state_handler_; - // The user associated with |state_handler_|. + // The user associated with `state_handler_`. const AccountId account_id_ = AccountId::FromUserEmail("test_user@gmail.com"); std::unique_ptr<FakeProximityAuthPrefManager> fake_pref_manager_;
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc index ace11ad9..d433ffa 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
@@ -105,7 +105,7 @@ base::TimeDelta::FromSeconds(5)); service_->OnSuspendDone(); service_->UpdateAppState(); - // Note that |this| may get deleted after |UpdateAppState| is called. + // Note that `this` may get deleted after `UpdateAppState` is called. } void ResetWakingUp() {
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h index 9ffbaf5..c34fb192 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.h
@@ -126,8 +126,8 @@ EasyUnlockScreenlockStateHandler::HardlockState GetHardlockState() const; // Gets the persisted hardlock state. Return true if there is persisted - // hardlock state and the value would be set to |state|. Otherwise, - // returns false and |state| is unchanged. + // hardlock state and the value would be set to `state`. Otherwise, + // returns false and `state` is unchanged. bool GetPersistedHardlockState( EasyUnlockScreenlockStateHandler::HardlockState* state) const; @@ -168,7 +168,7 @@ // Does a service type specific initialization. virtual void InitializeInternal() = 0; - // Does a service type specific shutdown. Called from |Shutdown|. + // Does a service type specific shutdown. Called from `Shutdown`. virtual void ShutdownInternal() = 0; // Service type specific tests for whether the service is allowed. Returns @@ -195,7 +195,7 @@ // Resets the screenlock state set by this service. void ResetScreenlockState(); - // Updates |screenlock_state_handler_|'s hardlocked state. + // Updates `screenlock_state_handler_`'s hardlocked state. void SetScreenlockHardlockedState( EasyUnlockScreenlockStateHandler::HardlockState state); @@ -219,7 +219,7 @@ GetSmartUnlockPasswordAuthEvent() const; // Called by subclasses when remote devices allowed to unlock the screen - // are loaded for |account_id|. + // are loaded for `account_id`. void SetProximityAuthDevices( const AccountId& account_id, const multidevice::RemoteDeviceRefList& remote_devices, @@ -240,8 +240,8 @@ // signins/unlocks from password-based unlocks for metrics. bool will_authenticate_using_easy_unlock_ = false; - // Gets |screenlock_state_handler_|. Returns NULL if Easy Unlock is not - // allowed. Otherwise, if |screenlock_state_handler_| is not set, an instance + // Gets `screenlock_state_handler_`. Returns NULL if Easy Unlock is not + // allowed. Otherwise, if `screenlock_state_handler_` is not set, an instance // is created. Do not cache the returned value, as it may go away if Easy // Unlock gets disabled. EasyUnlockScreenlockStateHandler* GetScreenlockStateHandler(); @@ -266,7 +266,7 @@ ChromeProximityAuthClient proximity_auth_client_; - // Created lazily in |GetScreenlockStateHandler|. + // Created lazily in `GetScreenlockStateHandler`. std::unique_ptr<EasyUnlockScreenlockStateHandler> screenlock_state_handler_; // The handler for the current auth attempt. Set iff an auth attempt is in @@ -274,7 +274,7 @@ std::unique_ptr<EasyUnlockAuthAttempt> auth_attempt_; // Handles connecting, authenticating, and updating the UI on the lock/sign-in - // screen. After a |RemoteDeviceRef| instance is provided, this object will + // screen. After a `RemoteDeviceRef` instance is provided, this object will // handle the rest. std::unique_ptr<proximity_auth::ProximityAuthSystem> proximity_auth_system_;
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc index 8e0225cb..cc774f8 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc
@@ -106,13 +106,13 @@ EasyUnlockServiceRegular::~EasyUnlockServiceRegular() = default; -// TODO(jhawkins): This method with |has_unlock_keys| == true is the only signal +// TODO(jhawkins): This method with `has_unlock_keys` == true is the only signal // that SmartLock setup has completed successfully. Make this signal more // explicit. void EasyUnlockServiceRegular::LoadRemoteDevices() { if (!device_sync_client_->is_ready()) { // OnEnrollmentFinished() or OnNewDevicesSynced() will call back on this - // method once |device_sync_client_| is ready. + // method once `device_sync_client_` is ready. PA_LOG(VERBOSE) << "DeviceSyncClient is not ready yet, delaying " "UseLoadedRemoteDevices()."; return; @@ -134,7 +134,7 @@ // IsEnabled(). pref_manager_->SetIsEasyUnlockEnabled(has_unlock_keys); if (has_unlock_keys) { - // If |has_unlock_keys| is true, then the user must have successfully + // If `has_unlock_keys` is true, then the user must have successfully // completed setup. Track that the IsEasyUnlockEnabled pref is actively set // by the user, as opposed to passively being set to disabled (the default // state). @@ -178,7 +178,7 @@ SetProximityAuthDevices(GetAccountId(), remote_devices, device_sync_client_->GetLocalDeviceMetadata()); - // We need to store a copy of |local_and_remote_devices| in the TPM, so it can + // We need to store a copy of `local_and_remote_devices` in the TPM, so it can // be retrieved on the sign-in screen when a user session has not been started // yet. This expects a final size of 2 (the one remote device, and the local // device). @@ -329,7 +329,7 @@ base::Bind(&EasyUnlockServiceRegular::CheckCryptohomeKeysAndMaybeHardlock, weak_ptr_factory_.GetWeakPtr())); - // If |device_sync_client_| is not ready yet, wait for it to call back on + // If `device_sync_client_` is not ready yet, wait for it to call back on // OnReady(). if (device_sync_client_->is_ready()) OnReady();
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular_unittest.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular_unittest.cc index 61ecef6..fd49ebf 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular_unittest.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular_unittest.cc
@@ -161,7 +161,7 @@ TestingBrowserProcess::GetGlobal()->SetLocalState(nullptr); } - // Most tests will want to pass |should_initialize_all_dependencies| == true, + // Most tests will want to pass `should_initialize_all_dependencies` == true, // but may pass false if they wish to tweak the dependencies' state themselves // before initializing the service. void InitializeService(bool should_initialize_all_dependencies) { @@ -287,7 +287,7 @@ // Only MockUserManager allows for stubbing // IsCurrentUserNonCryptohomeDataEphemeral() to return false so we use one - // here in place of |fake_chrome_user_manager_|. Injecting it into a local + // here in place of `fake_chrome_user_manager_`. Injecting it into a local // ScopedUserManager sets it up as the global UserManager instance. auto mock_user_manager = std::make_unique<testing::NiceMock<MockUserManager>>();
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.cc index 0137cfe..4eb7a9e 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.cc
@@ -49,7 +49,7 @@ uint32_t kInitialCryptohomeBackoffIntervalMs = 200u; // Calculates the backoff interval that should be used next. -// |backoff| The last backoff interval used. +// `backoff` The last backoff interval used. uint32_t GetNextBackoffInterval(uint32_t backoff) { if (backoff == 0u) return kInitialCryptohomeBackoffIntervalMs; @@ -61,12 +61,12 @@ uint32_t backoff_ms, const EasyUnlockKeyManager::GetDeviceDataListCallback& callback); -// Callback passed to |LoadDataForUser()|. -// If |LoadDataForUser| function succeeded, it invokes |callback| with the +// Callback passed to `LoadDataForUser()`. +// If `LoadDataForUser` function succeeded, it invokes `callback` with the // results. -// If |LoadDataForUser| failed and further retries are allowed, schedules new -// |LoadDataForUser| call with some backoff. If no further retires are allowed, -// it invokes |callback| with the |LoadDataForUser| results. +// If `LoadDataForUser` failed and further retries are allowed, schedules new +// `LoadDataForUser` call with some backoff. If no further retires are allowed, +// it invokes `callback` with the `LoadDataForUser` results. void RetryDataLoadOnError( const AccountId& account_id, uint32_t backoff_ms, @@ -500,7 +500,7 @@ PA_LOG(WARNING) << "No BeaconSeeds were loaded."; } - // Values such as the |instance_id| and |name| of the device are not + // Values such as the `instance_id` and `name` of the device are not // provided in the device dictionary that is persisted to the TPM during the // user session. However, in this particular scenario, we do not need these // values to safely construct and use the RemoteDevice objects.
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.h index 61ed6038..2317947 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.h
@@ -43,12 +43,12 @@ secure_channel::SecureChannelClient* secure_channel_client); ~EasyUnlockServiceSignin() override; - // Wraps the challenge for the remote device identified by |account_id| and + // Wraps the challenge for the remote device identified by `account_id` and // the - // |device_public_key|. The |channel_binding_data| is signed by the TPM + // `device_public_key`. The `channel_binding_data` is signed by the TPM // included in the wrapped challenge. - // |callback| will be invoked when wrapping is complete. If the user data is - // not loaded yet, then |callback| will be invoked with an empty string. + // `callback` will be invoked when wrapping is complete. If the user data is + // not loaded yet, then `callback` will be invoked with an empty string. void WrapChallengeForUserAndDevice( const AccountId& account_id, const std::string& device_public_key, @@ -78,7 +78,7 @@ EasyUnlockDeviceKeyDataList devices; // The list of remote device dictionaries understood by Easy unlock app. - // This will be returned by |GetRemoteDevices| method. + // This will be returned by `GetRemoteDevices` method. base::ListValue remote_devices_value; private:
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc index a13189a..b28a65c5 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.cc
@@ -36,7 +36,7 @@ // The modulus length for RSA keys used by easy sign-in. const int kKeyModulusLength = 2048; -// Relays |GetSystemSlotOnIOThread| callback to |response_task_runner|. +// Relays `GetSystemSlotOnIOThread` callback to `response_task_runner`. void RunCallbackOnTaskRunner( const scoped_refptr<base::SingleThreadTaskRunner>& response_task_runner, const base::Callback<void(crypto::ScopedPK11Slot)>& callback, @@ -46,7 +46,7 @@ } // Gets TPM system slot. Must be called on IO thread. -// The callback wil be relayed to |response_task_runner|. +// The callback wil be relayed to `response_task_runner`. void GetSystemSlotOnIOThread( const scoped_refptr<base::SingleThreadTaskRunner>& response_task_runner, const base::Callback<void(crypto::ScopedPK11Slot)>& callback) { @@ -59,8 +59,8 @@ callback_on_origin_thread.Run(std::move(system_slot)); } -// Relays |EnsureUserTpmInitializedOnIOThread| callback to -// |response_task_runner|, ignoring |slot|. +// Relays `EnsureUserTpmInitializedOnIOThread` callback to +// `response_task_runner`, ignoring `slot`. void RunCallbackWithoutSlotOnTaskRunner( const scoped_refptr<base::SingleThreadTaskRunner>& response_task_runner, const base::Closure& callback, @@ -82,8 +82,8 @@ callback_on_origin_thread.Run(std::move(private_slot)); } -// Checks if a private RSA key associated with |public_key| can be found in -// |slot|. |slot| must be non-null. +// Checks if a private RSA key associated with `public_key` can be found in +// `slot`. `slot` must be non-null. // Must be called on a worker thread. crypto::ScopedSECKEYPrivateKey GetPrivateKeyOnWorkerThread( PK11SlotInfo* slot, @@ -102,8 +102,8 @@ return rsa_key; } -// Signs |data| using a private key associated with |public_key| and stored in -// |slot|. Once the data is signed, callback is run on |response_task_runner|. +// Signs `data` using a private key associated with `public_key` and stored in +// `slot`. Once the data is signed, callback is run on `response_task_runner`. // In case of an error, the callback will be passed an empty string. void SignDataOnWorkerThread( crypto::ScopedPK11Slot slot, @@ -137,11 +137,11 @@ base::BindOnce(callback, signature)); } -// Creates a RSA key pair in |slot|. When done, it runs |callback| with the -// created public key on |response_task_runner|. -// If |public_key| is not empty, a key pair will be created only if the private -// key associated with |public_key| does not exist in |slot|. Otherwise the -// callback will be run with |public_key|. +// Creates a RSA key pair in `slot`. When done, it runs `callback` with the +// created public key on `response_task_runner`. +// If `public_key` is not empty, a key pair will be created only if the private +// key associated with `public_key` does not exist in `slot`. Otherwise the +// callback will be run with `public_key`. void CreateTpmKeyPairOnWorkerThread( crypto::ScopedPK11Slot slot, const std::string& public_key, @@ -329,9 +329,9 @@ CHECK(system_slot); create_tpm_key_state_ = CREATE_TPM_KEY_GOT_SYSTEM_SLOT; - // If there are any delayed tasks posted using |StartGetSystemSlotTimeoutMs|, + // If there are any delayed tasks posted using `StartGetSystemSlotTimeoutMs`, // this will cancel them. - // Note that this would cancel other pending |CreateKeyInSystemSlot| tasks, + // Note that this would cancel other pending `CreateKeyInSystemSlot` tasks, // but there should be at most one such task at a time. get_tpm_slot_weak_ptr_factory_.InvalidateWeakPtrs(); @@ -363,12 +363,12 @@ } void EasyUnlockTpmKeyManager::OnTpmKeyCreated(const std::string& public_key) { - // |OnTpmKeyCreated| is called by a timeout task posted by - // |StartGetSystemSlotTimeoutMs|. Invalidating the factory will have - // an effect of canceling any pending |GetSystemSlotOnIOThread| callbacks, + // `OnTpmKeyCreated` is called by a timeout task posted by + // `StartGetSystemSlotTimeoutMs`. Invalidating the factory will have + // an effect of canceling any pending `GetSystemSlotOnIOThread` callbacks, // as well as other pending timeouts. - // Note that in the case |OnTpmKeyCreated| was called as a result of - // |CreateKeyInSystemSlot|, this should have no effect as no weak ptrs from + // Note that in the case `OnTpmKeyCreated` was called as a result of + // `CreateKeyInSystemSlot`, this should have no effect as no weak ptrs from // this factory should be in use in this case. get_tpm_slot_weak_ptr_factory_.InvalidateWeakPtrs();
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.h index edd4db42..7d0df54 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager.h
@@ -32,11 +32,11 @@ // Clears local state for user. Should be called when a user is removed. static void ResetLocalStateForUser(const AccountId& account_id); - // |account_id|: Id for the user associated with the service. Empty for + // `account_id`: Id for the user associated with the service. Empty for // sign-in service. - // |username_hash|: Username hash for the user associated with the service. + // `username_hash`: Username hash for the user associated with the service. // Empty for sign-in service. - // |local_state|: The local state prefs. + // `local_state`: The local state prefs. EasyUnlockTpmKeyManager(const AccountId& account_id, const std::string& username_hash, PrefService* local_state); @@ -44,33 +44,33 @@ // Checks if the RSA public key is set in the local state. If not, creates // one. If the key presence can be confirmed, immediately returns true and - // |callback| never gets called, otherwise returns false (callback is called + // `callback` never gets called, otherwise returns false (callback is called // when the key presence is confirmed). // Must not be called for signin profile. - // |check_private_key|: If public RSA key is set in the local state, whether + // `check_private_key`: If public RSA key is set in the local state, whether // the method should confirm that the private key is present in the system // slot. If the private key cannot be found, a new key pair will be // created for the user. // Note: Checking TPM for the private key is more expensive than only - // checking local state, so setting this to |false| should be preferable. + // checking local state, so setting this to `false` should be preferable. // Generally, if public key is set in local state, the private key should // be present in the system TPM slot. This is used to make sure that easy // signin does not remain permanently broken if something goes wrong. - // |callback|: If the method cannot return immediately, called when the key + // `callback`: If the method cannot return immediately, called when the key // pair presence is confirmed (or a key pair for the user is created). bool PrepareTpmKey(bool check_private_key, const base::Closure& callback); - // If called, posts a delayed task that cancels |PrepareTpmKey| and all other - // started timeouts in case getting system slot takes more than |timeout_ms|. - // In the case getting system slot times out, |PrepareTpmKey| callback will + // If called, posts a delayed task that cancels `PrepareTpmKey` and all other + // started timeouts in case getting system slot takes more than `timeout_ms`. + // In the case getting system slot times out, `PrepareTpmKey` callback will // be called with an empty public key. - // Must be called after |PrepareTpmKey| to have the intended effect. + // Must be called after `PrepareTpmKey` to have the intended effect. bool StartGetSystemSlotTimeoutMs(size_t timeout_ms); // Gets the public RSA key for user. The key is retrieved from local state. std::string GetPublicTpmKey(const AccountId& account_id); - // Signs |data| using private RSA key associated with |user_id| stored in TPM + // Signs `data` using private RSA key associated with `user_id` stored in TPM // system slot. void SignUsingTpmKey( const AccountId& account_id, @@ -95,25 +95,25 @@ // Called when TPM system slot is initialized and ready to be used. // It creates RSA key pair for the user in the system slot. - // When the key pair is created, |OnTpmKeyCreated| will be called with the + // When the key pair is created, `OnTpmKeyCreated` will be called with the // created public key. - // The key will not be created if |public_key| is non-empty and the associated - // private key can be found in the slot. Instead |OnTpmKeyCreated| will be - // called with |public_key|. + // The key will not be created if `public_key` is non-empty and the associated + // private key can be found in the slot. Instead `OnTpmKeyCreated` will be + // called with `public_key`. void CreateKeyInSystemSlot(const std::string& public_key, crypto::ScopedPK11Slot system_slot); // Called when user TPM token initialization is done. After this happens, - // |this| may proceed with creating a user-specific TPM key for easy sign-in. + // `this` may proceed with creating a user-specific TPM key for easy sign-in. // Note that this is done solely to ensure user TPM initialization, which is // done on IO thread, is not blocked by creating TPM keys in system slot. void OnUserTPMInitialized(const std::string& public_key); // Called when TPM system slot is initialized and ready to be used. // It schedules data signing operation on a worker thread. The data is signed - // by a private key stored in |system_slot| and identified by |public_key| - // (a private key that is part of the same RSA key pair as |public_key|). - // Once data is signed |callback| is called with the signed data. + // by a private key stored in `system_slot` and identified by `public_key` + // (a private key that is part of the same RSA key pair as `public_key`). + // Once data is signed `callback` is called with the signed data. void SignDataWithSystemSlot( const std::string& public_key, const std::string& data, @@ -122,11 +122,11 @@ // Called when a RSA key pair is created for a user in TPM system slot. // It saves the pulic key in the local state and runs queued up - // |PrepareTpmKey| callbacks. + // `PrepareTpmKey` callbacks. void OnTpmKeyCreated(const std::string& public_key); - // Called when data signing requested in |SignUsingTpmKey| is done. - // It runs |callback| with the created |signature|. On error the callback will + // Called when data signing requested in `SignUsingTpmKey` is done. + // It runs `callback` with the created `signature`. On error the callback will // be run with an empty string. void OnDataSigned(const base::Callback<void(const std::string&)>& callback, const std::string& signature); @@ -137,11 +137,11 @@ PrefService* local_state_; // The current TPM key creation state. If key creation is in progress, - // callbacks for further |PrepareTpmKey| will be queued up and run when the + // callbacks for further `PrepareTpmKey` will be queued up and run when the // key is created. All queued callbacks will be run with the same key value. CreateTpmKeyState create_tpm_key_state_; - // Queued up |PrepareTpmKey| callbacks. + // Queued up `PrepareTpmKey` callbacks. std::vector<base::Closure> prepare_tpm_key_callbacks_; base::WeakPtrFactory<EasyUnlockTpmKeyManager> get_tpm_slot_weak_ptr_factory_{
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager_unittest.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager_unittest.cc index d5a7a04..04622106 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager_unittest.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_tpm_key_manager_unittest.cc
@@ -179,13 +179,13 @@ ADD_FAILURE() << "Not reached"; } -// Used to track how may |EasyUnlockTpmKeyManager::PrepareTpmKey| callbacks -// have been called. It increases |*count| by 1. +// Used to track how may `EasyUnlockTpmKeyManager::PrepareTpmKey` callbacks +// have been called. It increases `*count` by 1. void IncreaseCount(int* count) { ++(*count); } -// Sets |*result| to |value| and runs |callback|. +// Sets `*result` to `value` and runs `callback`. // Used as a callback to EasyUnlockTpmKeyManager::SignUsingTpmKey in tests. void RecordStringAndRunClosure(std::string* result, const base::Closure& callback, @@ -291,7 +291,7 @@ // Imports a private RSA key to the test system slot. // It returns whether the key has been imported. In order for the method to // succeed, the test system slot must have been set up - // (using |SetUpTestSystemSlot|). + // (using `SetUpTestSystemSlot`). bool ImportPrivateKey(const unsigned char* key, int key_size) { if (!test_system_slot_ || !test_system_slot_->slot()) { LOG(ERROR) << "System slot not initialized."; @@ -351,7 +351,7 @@ TestingProfileManager profile_manager_; // The testing profiles that own EasyUnlockTPMKeyManager services. - // Owned by |profile_manager_|. + // Owned by `profile_manager_`. TestingProfile* user_profile_; TestingProfile* signin_profile_;
diff --git a/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen.cc b/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen.cc index 5b8d6b3..e8b4b73 100644 --- a/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen.cc +++ b/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen.cc
@@ -270,7 +270,7 @@ auto_enrollment_progress_subscription_.reset(); connect_request_subscription_.reset(); - // Running exit callback can cause |this| destruction, so let other methods + // Running exit callback can cause `this` destruction, so let other methods // finish their work before. base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(&AutoEnrollmentCheckScreen::RunExitCallback,
diff --git a/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen.h b/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen.h index 15cdced..8e16534 100644 --- a/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen.h +++ b/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen.h
@@ -65,8 +65,8 @@ void ShowImpl() override; void HideImpl() override; - // Runs |exit_callback_| - used to prevent |exit_callback_| from running after - // |this| has been destroyed (by wrapping it with a callback bound to a weak + // Runs `exit_callback_` - used to prevent `exit_callback_` from running after + // `this` has been destroyed (by wrapping it with a callback bound to a weak // ptr). void RunExitCallback() { exit_callback_.Run(); } @@ -77,12 +77,12 @@ // Handles a state update, updating the UI and saving the state. void UpdateState(); - // Configures the UI to reflect |new_captive_portal_status|. Returns true if + // Configures the UI to reflect `new_captive_portal_status`. Returns true if // and only if a UI change has been made. bool UpdateCaptivePortalStatus( NetworkPortalDetector::CaptivePortalStatus new_captive_portal_status); - // Configures the UI to reflect |new_auto_enrollment_state|. Returns true if + // Configures the UI to reflect `new_auto_enrollment_state`. Returns true if // and only if a UI change has been made. bool UpdateAutoEnrollmentState( policy::AutoEnrollmentState new_auto_enrollment_state); @@ -94,7 +94,7 @@ // error screen gets hidden. void OnErrorScreenHidden(); - // Asynchronously signals completion. The owner might destroy |this| in + // Asynchronously signals completion. The owner might destroy `this` in // response, so no code should be run after the completion of a message loop // task, in which this function was called. void SignalCompletion();
diff --git a/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.cc b/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.cc index 9e0f8bca..b6820ab 100644 --- a/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.cc +++ b/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.cc
@@ -53,9 +53,9 @@ constexpr int kInitialEnrollmentModulusPowerLimit = 6; // If the modulus requested by the server is higher or equal to -// |1<<kInitialEnrollmentModulusPowerOutdatedServer|, assume that the server +// `1<<kInitialEnrollmentModulusPowerOutdatedServer`, assume that the server // does not know initial enrollment yet. -// This is currently set to |14|, the server was requesting |16| for FRE on +// This is currently set to `14`, the server was requesting `16` for FRE on // 2018-05-25. // TODO(pmarko): Remove this mechanism when the server version supporting // Initial Enrollment has been in production for a while @@ -65,14 +65,14 @@ const int kMaxRequestStateKeysTries = 10; // Maximum time to wait for the auto-enrollment check to reach a decision. -// Note that this encompasses all steps |AutoEnrollmentController| performs in +// Note that this encompasses all steps `AutoEnrollmentController` performs in // order to determine if the device should be auto-enrolled. -// If |kSafeguardTimeout| after |Start()| has been called, -// |AutoEnrollmentController::state()| is still AUTO_ENROLLMENT_STATE_PENDING, +// If `kSafeguardTimeout` after `Start()` has been called, +// `AutoEnrollmentController::state()` is still AUTO_ENROLLMENT_STATE_PENDING, // the AutoEnrollmentController will switch to // AUTO_ENROLLMENT_STATE_NO_ENROLLMENT or AUTO_ENROLLMENT_STATE_CONNECTION_ERROR -// (see |AutoEnrollmentController::Timeout|). Note that this timeout should not -// be too short, because one of the steps |AutoEnrollmentController| performs - +// (see `AutoEnrollmentController::Timeout`). Note that this timeout should not +// be too short, because one of the steps `AutoEnrollmentController` performs - // downloading identifier hash buckets - can be non-negligible, especially on 2G // connections. constexpr base::TimeDelta kSafeguardTimeout = base::TimeDelta::FromSeconds(90); @@ -103,7 +103,7 @@ kMaxValue = kNotRequiredInEmbargoPeriodWithoutSystemClockSync }; -// Returns the int value of the |switch_name| argument, clamped to the [0, 62] +// Returns the int value of the `switch_name` argument, clamped to the [0, 62] // interval. Returns 0 if the argument doesn't exist or isn't an int value. int GetSanitizedArg(const std::string& switch_name) { base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); @@ -182,7 +182,7 @@ return is_chrome_branded; } -// Schedules immediate initialization of the |DeviceManagementService| and +// Schedules immediate initialization of the `DeviceManagementService` and // returns it. policy::DeviceManagementService* InitializeAndGetDeviceManagementService() { policy::BrowserPolicyConnectorChromeOS* connector = @@ -208,9 +208,9 @@ } // Waits for the system clock to be synchronized. If it already is - // synchronized, |callback| will be called immediately. Otherwise, |callback| + // synchronized, `callback` will be called immediately. Otherwise, `callback` // will be called when the system clock has been synchronized, or after - // |kSystemClockSyncWaitTimeout|. + // `kSystemClockSyncWaitTimeout`. void WaitForSystemClockSync(SystemClockSyncCallback callback) { if (state_ == SystemClockSyncState::kSyncFailed || state_ == SystemClockSyncState::kSynchronized) { @@ -261,7 +261,7 @@ SetStateAndRunCallbacks(SystemClockSyncState::kSyncFailed); } - // Runs all callbacks in |system_clock_sync_callbacks_| and clears the vector. + // Runs all callbacks in `system_clock_sync_callbacks_` and clears the vector. void SetStateAndRunCallbacks(SystemClockSyncState state) { state_ = state; timeout_timer_.AbandonAndStop(); @@ -297,11 +297,11 @@ namespace { // Records the "Enterprise.InitialEnrollmentRequirement" histogram value. -// Do not pass |*WithoutSystemClockSync| enum values as |value|. -// If |value| is one of the values that are only generated at specific system +// Do not pass `*WithoutSystemClockSync` enum values as `value`. +// If `value` is one of the values that are only generated at specific system // clock values (that is, related to the factory ping embargo period), -// |system_clock_sync_state| is used to determine if the reported value should -// be |value| or the corresponding |*WithoutSystemClockSync| value. +// `system_clock_sync_state` is used to determine if the reported value should +// be `value` or the corresponding `*WithoutSystemClockSync` value. void RecordInitialEnrollmentRequirement( InitialEnrollmentRequirementHistogramValue value, AutoEnrollmentController::SystemClockSyncState system_clock_sync_state) { @@ -476,7 +476,7 @@ request_state_keys_tries_ = 0; // The system clock sync state is not known yet, and this - // |AutoEnrollmentController| could wait for it if requested. + // `AutoEnrollmentController` could wait for it if requested. system_clock_sync_state_ = SystemClockSyncState::kCanWaitForSync; StartWithSystemClockSyncState(); } @@ -488,12 +488,12 @@ if (auto_enrollment_check_type_ == AutoEnrollmentCheckType::kNone) { if (may_request_system_clock_sync && system_clock_sync_wait_requested_) { // Set state before waiting for the system clock sync, because - // |WaitForSystemClockSync| may invoke its callback synchronously if the + // `WaitForSystemClockSync` may invoke its callback synchronously if the // system clock sync status is already known. UpdateState(policy::AUTO_ENROLLMENT_STATE_PENDING); - // Use |client_start_weak_factory_| so the callback is not invoked if - // |Timeout| has been called in the meantime (after |kSafeguardTimeout|). + // Use `client_start_weak_factory_` so the callback is not invoked if + // `Timeout` has been called in the meantime (after `kSafeguardTimeout`). system_clock_sync_waiter_->WaitForSystemClockSync( base::BindOnce(&AutoEnrollmentController::OnSystemClockSyncResult, client_start_weak_factory_.GetWeakPtr())); @@ -712,7 +712,7 @@ break; case AutoEnrollmentCheckType::kNone: // The ownership check is only triggered if - // |auto_enrollment_check_type_| indicates that an auto-enrollment + // `auto_enrollment_check_type_` indicates that an auto-enrollment // check should be done. NOTREACHED(); break; @@ -791,7 +791,7 @@ InitializeAndGetDeviceManagementService(); // Initial Enrollment does not transfer any data in the initial exchange, and - // supports uploading up to |kInitialEnrollmentModulusPowerLimit| bits of the + // supports uploading up to `kInitialEnrollmentModulusPowerLimit` bits of the // identifier hash. const int power_initial = 0; const int power_limit = kInitialEnrollmentModulusPowerLimit; @@ -804,7 +804,7 @@ provider->GetMachineStatistic(system::kRlzBrandCodeKey, &rlz_brand_code); // The Initial State Determination should not be started if the serial number // or brand code are missing. This is ensured in - // |GetInitialStateDeterminationRequirement|. + // `GetInitialStateDeterminationRequirement`. CHECK(!serial_number.empty() && rlz_brand_code_found && !rlz_brand_code.empty()); @@ -946,12 +946,12 @@ // Reset state. if (client_) { - // Cancelling the |client_| allows it to determine whether + // Cancelling the `client_` allows it to determine whether // its protocol finished before login was complete. client_.release()->CancelAndDeleteSoon(); } - // Make sure to nuke pending |client_| start sequences. + // Make sure to nuke pending `client_` start sequences. client_start_weak_factory_.InvalidateWeakPtrs(); }
diff --git a/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h b/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h index 1fc5059..f4f8c4c8 100644 --- a/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h +++ b/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h
@@ -82,7 +82,7 @@ // State of the system clock. enum class SystemClockSyncState { - // This |AutoEnrollmentController| has not tried to wait for the system + // This `AutoEnrollmentController` has not tried to wait for the system // clock sync state yet. kCanWaitForSync, // Currently waiting for the system clock to become synchronized. @@ -121,7 +121,7 @@ static FRERequirement GetFRERequirement(); // Returns the type of auto-enrollment check performed by this client. This - // will be |AutoEnrollmentCheckType::kNone| before |Start()| has been called. + // will be `AutoEnrollmentCheckType::kNone` before `Start()` has been called. AutoEnrollmentCheckType auto_enrollment_check_type() const { return auto_enrollment_check_type_; } @@ -142,10 +142,10 @@ policy::AutoEnrollmentState state() const { return state_; } - // Sets the factory that will be used to create the |AutoEnrollmentClient|. + // Sets the factory that will be used to create the `AutoEnrollmentClient`. // Ownership is not transferred when calling this - the caller must ensure - // that the |Factory| pointed to by |auto_enrollment_client_factory| remains - // valid while this |AutoEnrollmentController| is using it. + // that the `Factory` pointed to by `auto_enrollment_client_factory` remains + // valid while this `AutoEnrollmentController` is using it. // To use the default factory again, call with nullptr. void SetAutoEnrollmentClientFactoryForTesting( policy::AutoEnrollmentClient::Factory* auto_enrollment_client_factory); @@ -160,15 +160,15 @@ void StartWithSystemClockSyncState(); // Returns whether the initial state determination is required. - // May set |system_clock_sync_wait_requested_| to true if initial state + // May set `system_clock_sync_wait_requested_` to true if initial state // determination is skipped due to the embargo period and the system clock // has not been synchronized yet. InitialStateDeterminationRequirement GetInitialStateDeterminationRequirement(); // Determines the type of auto-enrollment check that should be done. Sets - // |auto_enrollment_check_type_| and |fre_requirement_|. - // May set |system_clock_sync_wait_requested_| to true if Initial Enrollment + // `auto_enrollment_check_type_` and `fre_requirement_`. + // May set `system_clock_sync_wait_requested_` to true if Initial Enrollment // is skipped due to the embargo period and the system clock has not been // synchronized yet. void DetermineAutoEnrollmentCheckType(); @@ -200,7 +200,7 @@ // Starts the auto-enrollment client for initial enrollment. void StartClientForInitialEnrollment(); - // Sets |state_| and notifies |progress_callbacks_|. + // Sets `state_` and notifies `progress_callbacks_`. void UpdateState(policy::AutoEnrollmentState state); // Clears everything that needs to be cleared at OOBE if @@ -216,10 +216,10 @@ void StartCleanupForcedReEnrollment(); // Makes a D-Bus call to cryptohome to remove the firmware management - // parameters (FWMP) from TPM. Stops the |safeguard_timer_| and notifies the - // |progress_callbacks_| in case cryptohome does not become available and the + // parameters (FWMP) from TPM. Stops the `safeguard_timer_` and notifies the + // `progress_callbacks_` in case cryptohome does not become available and the // timer is still running. - // |service_is_ready| indicates if the cryptohome D-Bus service is ready. + // `service_is_ready` indicates if the cryptohome D-Bus service is ready. void StartRemoveFirmwareManagementParameters(bool service_is_ready); // Callback for RemoveFirmwareManagementParameters(). If an error is received @@ -230,15 +230,15 @@ base::Optional<cryptohome::BaseReply> reply); // Makes a D-Bus call to session_manager to set block_devmode=0 and - // check_enrollment=0 in RW_VPD. Stops the |safeguard_timer_| and notifies the - // |progress_callbacks_| in case session manager does not become available + // check_enrollment=0 in RW_VPD. Stops the `safeguard_timer_` and notifies the + // `progress_callbacks_` in case session manager does not become available // and the timer is still running. - // |service_is_ready| indicates if the session manager D-Bus service is ready. + // `service_is_ready` indicates if the session manager D-Bus service is ready. void StartClearForcedReEnrollmentVpd(bool service_is_ready); // Callback for ClearForcedReEnrollmentVpd(). If an error is received // here, it is logged only, without changing the flow after that. - // This also notifies the |progress_callbacks_| since the forced re-enrollment + // This also notifies the `progress_callbacks_` since the forced re-enrollment // cleanup is finished at this point. void OnForcedReEnrollmentVpdCleared(bool reply); @@ -246,11 +246,11 @@ void Timeout(); // Returns the factory that should be used to construct a new - // |AutoEnrollmentClient|. + // `AutoEnrollmentClient`. policy::AutoEnrollmentClient::Factory* GetAutoEnrollmentClientFactory(); - // Unowned pointer. If not nullptr, this will be used to create the |client_|. - // It can be set using |SetAutoEnrollmentClientFactoryForTesting|. + // Unowned pointer. If not nullptr, this will be used to create the `client_`. + // It can be set using `SetAutoEnrollmentClientFactoryForTesting`. policy::AutoEnrollmentClient::Factory* testing_auto_enrollment_client_factory_ = nullptr; @@ -273,7 +273,7 @@ FRERequirement fre_requirement_ = FRERequirement::kRequired; // Which type of auto-enrollment check is being performed by this - // |AutoEnrollmentClient|. + // `AutoEnrollmentClient`. AutoEnrollmentCheckType auto_enrollment_check_type_ = AutoEnrollmentCheckType::kNone; @@ -281,15 +281,15 @@ std::unique_ptr<SystemClockSyncWaiter> system_clock_sync_waiter_; // Current system clock sync state. This is only modified in - // |OnSystemClockSyncResult| after |system_clock_sync_wait_requested_| has + // `OnSystemClockSyncResult` after `system_clock_sync_wait_requested_` has // been set to true. SystemClockSyncState system_clock_sync_state_ = SystemClockSyncState::kCanWaitForSync; - // If this is set to true, |StartWithSystemClockSyncState| should be re-run + // If this is set to true, `StartWithSystemClockSyncState` should be re-run // when the system clock sync state is known. - // This is only triggered once in the lifetime of |AutoEnrollmentController|, - // it's never set back to |false|. + // This is only triggered once in the lifetime of `AutoEnrollmentController`, + // it's never set back to `false`. bool system_clock_sync_wait_requested_ = false; // Keeps track of number of tries to request state keys.
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc b/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc index 5468b6b..ca812ec 100644 --- a/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc +++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc
@@ -327,7 +327,7 @@ authpolicy_login_helper_->CancelRequestsAndRestart(); // The callback passed to ClearAuth is called either immediately or gets - // wrapped in a callback bound to a weak pointer from |weak_factory_| - in + // wrapped in a callback bound to a weak pointer from `weak_factory_` - in // either case, passing exit_callback_ directly should be safe. ClearAuth(base::BindRepeating( exit_callback_, config_.is_forced() ? Result::BACK : Result::COMPLETED)); @@ -336,7 +336,7 @@ void EnrollmentScreen::OnConfirmationClosed() { VLOG(1) << "Confirmation closed."; // The callback passed to ClearAuth is called either immediately or gets - // wrapped in a callback bound to a weak pointer from |weak_factory_| - in + // wrapped in a callback bound to a weak pointer from `weak_factory_` - in // either case, passing exit_callback_ directly should be safe. ClearAuth(base::BindRepeating(exit_callback_, Result::COMPLETED));
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen.h b/chrome/browser/chromeos/login/enrollment/enrollment_screen.h index 3de41c7..307f584b 100644 --- a/chrome/browser/chromeos/login/enrollment/enrollment_screen.h +++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen.h
@@ -131,8 +131,8 @@ // Creates an enrollment helper if needed. void CreateEnrollmentHelper(); - // Clears auth in |enrollment_helper_|. Deletes |enrollment_helper_| and runs - // |callback| on completion. See the comment for + // Clears auth in `enrollment_helper_`. Deletes `enrollment_helper_` and runs + // `callback` on completion. See the comment for // EnterpriseEnrollmentHelper::ClearAuth for details. void ClearAuth(const base::Closure& callback); @@ -144,7 +144,7 @@ void ShowEnrollmentStatusOnSuccess(); // Logs an UMA event in one of the "Enrollment.*" histograms, depending on - // |enrollment_mode_|. + // `enrollment_mode_`. void UMA(policy::MetricEnrollment sample); // Do attestation based enrollment.
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc b/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc index 477b94b..1959272 100644 --- a/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc +++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc
@@ -68,7 +68,7 @@ std::unique_ptr<EnrollmentScreen> enrollment_screen_; std::unique_ptr<WizardContext> wizard_context_; - // The last result reported by |enrollment_screen_|. + // The last result reported by `enrollment_screen_`. base::Optional<EnrollmentScreen::Result> last_screen_result_; policy::EnrollmentConfig enrollment_config_;
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h b/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h index 1aea14e..d4e64711 100644 --- a/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h +++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h
@@ -89,7 +89,7 @@ // Show non-authentication error. virtual void ShowOtherError(EnterpriseEnrollmentHelper::OtherError error) = 0; - // Update the UI to report the |status| of the enrollment procedure. + // Update the UI to report the `status` of the enrollment procedure. virtual void ShowEnrollmentStatus(policy::EnrollmentStatus status) = 0; };
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_uma.h b/chrome/browser/chromeos/login/enrollment/enrollment_uma.h index dbdb785..8c7b470 100644 --- a/chrome/browser/chromeos/login/enrollment/enrollment_uma.h +++ b/chrome/browser/chromeos/login/enrollment/enrollment_uma.h
@@ -10,8 +10,8 @@ namespace chromeos { -// Logs an UMA |event| in "Enrollment.*" histogram. Histogram is chosen -// depending on |mode|. +// Logs an UMA `event` in "Enrollment.*" histogram. Histogram is chosen +// depending on `mode`. void EnrollmentUMA(policy::MetricEnrollment sample, policy::EnrollmentConfig::Mode mode);
diff --git a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h index ba8fe0c7..d9304b7d 100644 --- a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h +++ b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper.h
@@ -60,10 +60,10 @@ virtual void OnDeviceEnrolled() = 0; // Called when device attribute update permission granted, - // |granted| indicates whether permission granted or not. + // `granted` indicates whether permission granted or not. virtual void OnDeviceAttributeUpdatePermission(bool granted) = 0; - // Called when device attribute upload finishes. |success| indicates + // Called when device attribute upload finishes. `success` indicates // whether it is successful or not. virtual void OnDeviceAttributeUploadCompleted(bool success) = 0; @@ -80,26 +80,26 @@ const std::string& enrolling_user_domain); // Sets up a mock object that would be returned by next Create call. - // This call passes ownership of |mock|. + // This call passes ownership of `mock`. static void SetEnrollmentHelperMock( std::unique_ptr<EnterpriseEnrollmentHelper> mock); virtual ~EnterpriseEnrollmentHelper(); - // Starts enterprise enrollment using |auth_code|. First tries to exchange the + // Starts enterprise enrollment using `auth_code`. First tries to exchange the // auth code to authentication token, then tries to enroll the device with the // received token. // EnrollUsingAuthCode can be called only once during this object's lifetime, // and only if none of the EnrollUsing* methods was called before. virtual void EnrollUsingAuthCode(const std::string& auth_code) = 0; - // Starts enterprise enrollment using |token|. + // Starts enterprise enrollment using `token`. // This flow is used when enrollment is controlled by the paired device. // EnrollUsingToken can be called only once during this object's lifetime, and // only if none of the EnrollUsing* was called before. virtual void EnrollUsingToken(const std::string& token) = 0; - // Starts enterprise enrollment using enrollment |token| for authentication. + // Starts enterprise enrollment using enrollment `token` for authentication. // This flow is used in OOBE configuration flow. // EnrollUsingWorkflowToken can be called only once during this object's // lifetime, and only if none of the EnrollUsing* was called before. @@ -127,8 +127,8 @@ // using stored during enrollment oauth token. virtual void GetDeviceAttributeUpdatePermission() = 0; - // Uploads device attributes on DM server. |asset_id| - Asset Identifier - // and |location| - Assigned Location, these attributes were typed by + // Uploads device attributes on DM server. `asset_id` - Asset Identifier + // and `location` - Assigned Location, these attributes were typed by // current user on the device attribute prompt screen after successful // enrollment. virtual void UpdateDeviceAttributes(const std::string& asset_id, @@ -137,7 +137,7 @@ // Clears authentication data from the profile (if EnrollUsingProfile was // used) and revokes fetched tokens. // Does not revoke the additional token if enrollment finished successfully. - // Calls |callback| on completion. + // Calls `callback` on completion. virtual void ClearAuth(base::OnceClosure callback) = 0; protected: @@ -150,8 +150,8 @@ const policy::EnrollmentConfig& enrollment_config, const std::string& enrolling_user_domain) = 0; - // This method is used in Create method. |status_consumer| must outlive - // |this|. + // This method is used in Create method. `status_consumer` must outlive + // `this`. void set_status_consumer(EnrollmentStatusConsumer* status_consumer); EnrollmentStatusConsumer* status_consumer() const { return status_consumer_; }
diff --git a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.h b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.h index 0f0f3419..d489888 100644 --- a/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.h +++ b/chrome/browser/chromeos/login/enrollment/enterprise_enrollment_helper_impl.h
@@ -70,7 +70,7 @@ FRIEND_TEST_ALL_PREFIXES(EnterpriseEnrollmentTest, TestAttributePromptPageGetsLoaded); - // Attempt enrollment using |auth_data| for authentication. + // Attempt enrollment using `auth_data` for authentication. void DoEnroll(std::unique_ptr<policy::DMAuth> auth_data); // Handles completion of the OAuth2 token fetch attempt. @@ -90,11 +90,11 @@ void ReportEnrollmentStatus(policy::EnrollmentStatus status); // Logs an UMA event in the kMetricEnrollment or the kMetricEnrollmentRecovery - // histogram, depending on |enrollment_mode_|. + // histogram, depending on `enrollment_mode_`. void UMA(policy::MetricEnrollment sample); // Called by ProfileHelper when a signin profile clearance has finished. - // |callback| is a callback, that was passed to ClearAuth() before. + // `callback` is a callback, that was passed to ClearAuth() before. void OnSigninProfileCleared(base::OnceClosure callback); // Called when CloudPolicyClient exists, so device account can be initialized.
diff --git a/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc b/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc index 6a9982d7..946e318 100644 --- a/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc +++ b/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc
@@ -259,7 +259,7 @@ test::OobeJS().ExpectEQ(js_element + ".disabled", is_disabled); } - // Checks pattern attribute on the machine name input field. If |config_value| + // Checks pattern attribute on the machine name input field. If `config_value` // is nullptr the attribute should be undefined. void CheckPatternAttribute(const base::Value* config_value) { if (config_value) { @@ -277,7 +277,7 @@ } } - // Goes through |configuration| which is JSON (see + // Goes through `configuration` which is JSON (see // kAdDomainJoinUnlockedConfig). Selects each of them and checks that all the // input fields are set correctly. Also checks if there is a "Custom" option // which does not set any fields.
diff --git a/chrome/browser/chromeos/login/enterprise_user_session_metrics.cc b/chrome/browser/chromeos/login/enterprise_user_session_metrics.cc index 6eb5df4..4cf01a3 100644 --- a/chrome/browser/chromeos/login/enterprise_user_session_metrics.cc +++ b/chrome/browser/chromeos/login/enterprise_user_session_metrics.cc
@@ -28,8 +28,8 @@ ->IsEnterpriseManaged(); } -// Returns the duration in minutes, capped at |max_duration| and rounded down to -// the nearest |bucket_size| minutes. +// Returns the duration in minutes, capped at `max_duration` and rounded down to +// the nearest `bucket_size` minutes. int GetMinutesToReport(base::TimeDelta duration, int bucket_size, base::TimeDelta max_duration) {
diff --git a/chrome/browser/chromeos/login/enterprise_user_session_metrics.h b/chrome/browser/chromeos/login/enterprise_user_session_metrics.h index 84adf2ba..34cdf2dd 100644 --- a/chrome/browser/chromeos/login/enterprise_user_session_metrics.h +++ b/chrome/browser/chromeos/login/enterprise_user_session_metrics.h
@@ -39,7 +39,7 @@ void RecordSignInEvent(SignInEventType sign_in_event_type); // Records a sign-in event by UserContext for an enrolled device. -// |is_auto_login| indicates whether the sign-in is a policy configured +// `is_auto_login` indicates whether the sign-in is a policy configured // automatic login or a manual login in response to user action. void RecordSignInEvent(const UserContext& user_context, bool is_auto_login);
diff --git a/chrome/browser/chromeos/login/eula_browsertest.cc b/chrome/browser/chromeos/login/eula_browsertest.cc index 07f6dfa5..397309c6 100644 --- a/chrome/browser/chromeos/login/eula_browsertest.cc +++ b/chrome/browser/chromeos/login/eula_browsertest.cc
@@ -91,7 +91,7 @@ }; // Helper invoked by GuestViewManager::ForEachGuest to collect WebContents of -// Webview named as |web_view_name,|. +// Webview named as `web_view_name`. bool AddNamedWebContentsToSet(std::set<content::WebContents*>* frame_set, const std::string& web_view_name, content::WebContents* web_contents) { @@ -153,7 +153,7 @@ consented); } - // Calls |GoogleUpdateSettings::SetCollectStatsConsent| asynchronously on its + // Calls `GoogleUpdateSettings::SetCollectStatsConsent` asynchronously on its // task runner. Blocks until task is executed. void SetGoogleCollectStatsConsent(bool consented) { base::RunLoop runloop; @@ -163,13 +163,13 @@ runloop.Run(); } - // Calls |GoogleUpdateSettings::GetCollectStatsConsent| asynchronously on its + // Calls `GoogleUpdateSettings::GetCollectStatsConsent` asynchronously on its // task runner. Blocks until task is executed and returns the result. bool GetGoogleCollectStatsConsent() { bool consented = false; // Callback runs after GetCollectStatsConsent is executed. Sets the local - // variable |consented| to the result of GetCollectStatsConsent. + // variable `consented` to the result of GetCollectStatsConsent. auto on_get_collect_stats_consent_callback = [](base::OnceClosure quit_closure, bool* consented_out, bool consented_result) {
diff --git a/chrome/browser/chromeos/login/existing_user_controller.cc b/chrome/browser/chromeos/login/existing_user_controller.cc index c44eee2f..9164dde 100644 --- a/chrome/browser/chromeos/login/existing_user_controller.cc +++ b/chrome/browser/chromeos/login/existing_user_controller.cc
@@ -276,8 +276,8 @@ } // Decides which EcryptfsMigrationAction should be used based on policy fetch -// result, policy payload and user type. |policy_payload| is only dereferenced -// if |policy_fetch_result| is PolicyFetchResult::SUCCESS. +// result, policy payload and user type. `policy_payload` is only dereferenced +// if `policy_fetch_result` is PolicyFetchResult::SUCCESS. apu::EcryptfsMigrationAction GetEcryptfsMigrationAction( PolicyFetchResult policy_fetch_result, enterprise_management::CloudPolicySettings* policy_payload) { @@ -366,7 +366,7 @@ return auto_login_account_id; } -// Returns account ID if a corresponding to |auto_login_account_id| device local +// Returns account ID if a corresponding to `auto_login_account_id` device local // account exists, otherwise returns invalid account ID. AccountId GetPublicSessionAutoLoginAccountId( const std::vector<policy::DeviceLocalAccount>& device_local_accounts, @@ -395,7 +395,7 @@ if (local_state) { pref_change_registrar_.Init(local_state); - // base::Unretained is safe here because |this| outlives the registrar. + // base::Unretained is safe here because `this` outlives the registrar. pref_change_registrar_.Add( prefs::kManagedGuestSessionAutoLaunchNotificationReduced, base::BindRepeating(&AutoLaunchNotificationDelegate:: @@ -551,6 +551,7 @@ } bool show_users_on_signin; user_manager::UserList filtered_users; + user_manager::UserList saml_users_for_password_sync; cros_settings_->GetBoolean(kAccountsPrefShowUserNamesOnSignIn, &show_users_on_signin); @@ -573,13 +574,28 @@ const bool meets_show_users_requirements = show_users_on_signin || user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT; - if (meets_supervised_requirements && meets_allowlist_requirements && - meets_show_users_requirements) { - filtered_users.push_back(user); + if (meets_supervised_requirements && meets_allowlist_requirements) { + if (meets_show_users_requirements) { + filtered_users.push_back(user); + } + if (user->using_saml()) { + saml_users_for_password_sync.push_back(user); + } } } ForceOnlineFlagChanged(filtered_users); + // ExistingUserController owns PasswordSyncTokenLoginCheckers only if user + // pods are hidden. + if (!show_users_on_signin && !saml_users_for_password_sync.empty()) { + sync_token_checkers_ = + std::make_unique<PasswordSyncTokenCheckersCollection>(); + sync_token_checkers_->StartPasswordSyncCheckers( + saml_users_for_password_sync, + /*observer*/ nullptr); + } else { + sync_token_checkers_.reset(); + } // If no user pods are visible, fallback to single new user pod which will // have guest session link. bool show_guest = user_manager->IsGuestSessionAllowed(); @@ -591,7 +607,7 @@ GetLoginDisplayHost()->OnPreferencesChanged(); } -// Check SAML offline time limits for |users| and schedules next +// Check SAML offline time limits for `users` and schedules next // check if needed and returns true if any of user's force online // sign-in flag is changed. bool ExistingUserController::ForceOnlineFlagChanged( @@ -660,7 +676,7 @@ // Possibly the user has authenticated against a proxy server and we might // need the credentials for enrollment and other system requests from the - // main |g_browser_process| request context (see bug + // main `g_browser_process` request context (see bug // http://crosbug.com/24861). So we transfer any credentials to the global // request context here. // The issue we have here is that the NOTIFICATION_AUTH_SUPPLIED is sent @@ -775,7 +791,7 @@ } // If plain text password is available, computes its salt, hash, and length, - // and saves them in |user_context|. They will be saved to prefs when user + // and saves them in `user_context`. They will be saved to prefs when user // profile is ready. UserContext new_user_context = user_context; if (user_context.GetKey()->GetKeyType() == Key::KEY_TYPE_PASSWORD_PLAIN) { @@ -1075,7 +1091,7 @@ StopAutoLoginTimer(); - // Truth table of |has_auth_cookies|: + // Truth table of `has_auth_cookies`: // Regular SAML // /ServiceLogin T T // /ChromeOsEmbeddedSetup F T @@ -1203,7 +1219,7 @@ user_manager::known_user::SetIsEnterpriseManaged(user_context.GetAccountId(), is_enterprise_managed); - // Inform |auth_status_consumers_| about successful login. + // Inform `auth_status_consumers_` about successful login. // TODO(nkostylev): Pass UserContext back crbug.com/424550 for (auto& auth_status_consumer : auth_status_consumers_) auth_status_consumer.OnAuthSuccess(user_context); @@ -1522,7 +1538,7 @@ if (locale.empty()) { // When performing auto-login, no locale is chosen by the user. Check // whether a list of recommended locales was set by policy. If so, use its - // first entry. Otherwise, |locale| will remain blank, indicating that the + // first entry. Otherwise, `locale` will remain blank, indicating that the // public session should use the current UI locale. const policy::PolicyMap::Entry* entry = g_browser_process->platform_part() @@ -1543,20 +1559,20 @@ if (!locale.empty() && new_user_context.GetPublicSessionInputMethod().empty()) { - // When |locale| is set, a suitable keyboard layout should be chosen. In + // When `locale` is set, a suitable keyboard layout should be chosen. In // most cases, this will already be the case because the UI shows a list of - // keyboard layouts suitable for the |locale| and ensures that one of them - // us selected. However, it is still possible that |locale| is set but no + // keyboard layouts suitable for the `locale` and ensures that one of them + // us selected. However, it is still possible that `locale` is set but no // keyboard layout was chosen: // * The list of keyboard layouts is updated asynchronously. If the user // enters the public session before the list of keyboard layouts for the - // |locale| has been retrieved, the UI will indicate that no keyboard + // `locale` has been retrieved, the UI will indicate that no keyboard // layout was chosen. - // * During auto-login, the |locale| is set in this method and a suitable + // * During auto-login, the `locale` is set in this method and a suitable // keyboard layout must be chosen next. // // The list of suitable keyboard layouts is constructed asynchronously. Once - // it has been retrieved, |SetPublicSessionKeyboardLayoutAndLogin| will + // it has been retrieved, `SetPublicSessionKeyboardLayoutAndLogin` will // select the first layout from the list and continue login. VLOG(2) << "Requesting keyboard layouts for public session"; GetKeyboardLayoutsForLocale( @@ -1818,7 +1834,7 @@ // Stop the auto-login timer. StopAutoLoginTimer(); - // Wait for the |cros_settings_| to become either trusted or permanently + // Wait for the `cros_settings_` to become either trusted or permanently // untrusted. const CrosSettingsProvider::TrustedStatus status = cros_settings_->PrepareTrustedValues(base::BindOnce( @@ -1828,13 +1844,13 @@ return; if (status == CrosSettingsProvider::PERMANENTLY_UNTRUSTED) { - // If the |cros_settings_| are permanently untrusted, show an error message + // If the `cros_settings_` are permanently untrusted, show an error message // and refuse to log in. GetLoginDisplay()->ShowError(IDS_LOGIN_ERROR_OWNER_KEY_LOST, 1, HelpAppLauncher::HELP_CANT_ACCESS_ACCOUNT); // Re-enable clicking on other windows and the status area. Do not start the - // auto-login timer though. Without trusted |cros_settings_|, no auto-login + // auto-login timer though. Without trusted `cros_settings_`, no auto-login // can succeed. GetLoginDisplay()->SetUIEnabled(true); return;
diff --git a/chrome/browser/chromeos/login/existing_user_controller.h b/chrome/browser/chromeos/login/existing_user_controller.h index 0ebc67d..55f823a 100644 --- a/chrome/browser/chromeos/login/existing_user_controller.h +++ b/chrome/browser/chromeos/login/existing_user_controller.h
@@ -23,6 +23,7 @@ #include "base/timer/timer.h" #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" #include "chrome/browser/chromeos/app_mode/kiosk_app_types.h" +#include "chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.h" #include "chrome/browser/chromeos/login/screens/encryption_migration_mode.h" #include "chrome/browser/chromeos/login/session/user_session_manager.h" #include "chrome/browser/chromeos/login/ui/login_display.h" @@ -95,7 +96,7 @@ // Cancels current password changed flow. void CancelPasswordChangedFlow(); - // Decrypt cryptohome using user provided |old_password| and migrate to new + // Decrypt cryptohome using user provided `old_password` and migrate to new // password. void MigrateUserData(const std::string& old_password); @@ -188,8 +189,8 @@ // Returns corresponding native window. gfx::NativeWindow GetNativeWindow() const; - // Show error message. |error_id| error message ID in resources. - // If |details| string is not empty, it specify additional error text + // Show error message. `error_id` error message ID in resources. + // If `details` string is not empty, it specify additional error text // provided by authenticator, it is not localized. void ShowError(int error_id, const std::string& details); @@ -225,16 +226,16 @@ // Shows "password changed" dialog. void ShowPasswordChangedDialog(const UserContext& user_context); - // Creates |login_performer_| if necessary and calls login() on it. + // Creates `login_performer_` if necessary and calls login() on it. void PerformLogin(const UserContext& user_context, LoginPerformer::AuthorizationMode auth_mode); - // Calls login() on previously-used |login_performer_|. + // Calls login() on previously-used `login_performer_`. void ContinuePerformLogin(LoginPerformer::AuthorizationMode auth_mode, const UserContext& user_context); // Removes the constraint that user home mount requires ext4 encryption from - // |user_context|, then calls login() on previously-used |login_performer|. + // `user_context`, then calls login() on previously-used `login_performer`. void ContinuePerformLoginWithoutMigration( LoginPerformer::AuthorizationMode auth_mode, const UserContext& user_context); @@ -242,7 +243,7 @@ // Asks the user to enter their password again. void RestartLogin(const UserContext& user_context); - // Updates the |login_display_| attached to this controller. + // Updates the `login_display_` attached to this controller. void UpdateLoginDisplay(const user_manager::UserList& users); // Check if login screen will need to be refreshed when saml online login @@ -279,16 +280,16 @@ void PerformPreLoginActions(const UserContext& user_context); // Performs set of actions when login has been completed or has been - // cancelled. If |start_auto_login_timer| is true than + // cancelled. If `start_auto_login_timer` is true than // auto-login timer is started. void PerformLoginFinishedActions(bool start_auto_login_timer); - // Invokes |continuation| after verifying that cryptohome service is + // Invokes `continuation` after verifying that cryptohome service is // available. void ContinueLoginWhenCryptohomeAvailable(base::OnceClosure continuation, bool service_is_available); - // Invokes |continuation| after verifying that the device is not disabled. + // Invokes `continuation` after verifying that the device is not disabled. void ContinueLoginIfDeviceNotDisabled(const base::Closure& continuation); // Signs in as a new user. This is a continuation of CompleteLogin() that gets @@ -300,7 +301,7 @@ void DoLogin(const UserContext& user_context, const SigninSpecifics& specifics); - // Callback invoked when |oauth2_token_initializer_| has finished. + // Callback invoked when `oauth2_token_initializer_` has finished. void OnOAuth2TokensFetched(bool success, const UserContext& user_context); // Called on completition of a pre-signin policy fetch, which is performed to @@ -315,7 +316,7 @@ void WipePerformed(const UserContext& user_context, base::Optional<cryptohome::BaseReply> reply); - // Triggers online login for the given |account_id|. + // Triggers online login for the given `account_id`. void ForceOnlineLoginForAccountId(const AccountId& account_id); // Clear the recorded displayed email, displayed name, given name so it won't @@ -365,14 +366,14 @@ // Used for notifications during the login process. content::NotificationRegistrar registrar_; - // The displayed email for the next login attempt set by |SetDisplayEmail|. + // The displayed email for the next login attempt set by `SetDisplayEmail`. std::string display_email_; // The displayed name for the next login attempt set by - // |SetDisplayAndGivenName|. + // `SetDisplayAndGivenName`. base::string16 display_name_; - // The given name for the next login attempt set by |SetDisplayAndGivenName|. + // The given name for the next login attempt set by `SetDisplayAndGivenName`. base::string16 given_name_; // Whether login attempt is running. @@ -383,7 +384,7 @@ bool password_changed_ = false; // Set in OnLoginSuccess. Before that use LoginPerformer::auth_mode(). - // Initialized with |kExternal| as more restricted mode. + // Initialized with `kExternal` as more restricted mode. LoginPerformer::AuthorizationMode auth_mode_ = LoginPerformer::AuthorizationMode::kExternal; @@ -398,6 +399,10 @@ // online user authentication. std::unique_ptr<base::OneShotTimer> screen_refresh_timer_; + // Collection of verifiers that check validity of password sync token for SAML + // users. + std::unique_ptr<PasswordSyncTokenCheckersCollection> sync_token_checkers_; + std::unique_ptr<login::NetworkStateHelper> network_state_helper_; std::unique_ptr<CrosSettings::ObserverSubscription>
diff --git a/chrome/browser/chromeos/login/existing_user_controller_auto_login_unittest.cc b/chrome/browser/chromeos/login/existing_user_controller_auto_login_unittest.cc index cc8fc23..de88219c 100644 --- a/chrome/browser/chromeos/login/existing_user_controller_auto_login_unittest.cc +++ b/chrome/browser/chromeos/login/existing_user_controller_auto_login_unittest.cc
@@ -151,8 +151,8 @@ user_manager::ScopedUserManager scoped_user_manager_; std::unique_ptr<ArcKioskAppManager> arc_kiosk_app_manager_; - // |existing_user_controller_| must be destroyed before - // |device_settings_test_helper_|. + // `existing_user_controller_` must be destroyed before + // `device_settings_test_helper_`. std::unique_ptr<ExistingUserController> existing_user_controller_; };
diff --git a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc index 933606a..5aac750 100644 --- a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc +++ b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
@@ -115,7 +115,7 @@ const int kAutoLoginShortDelay = 1; const int kAutoLoginLongDelay = 10000; -// Wait for cros settings to become permanently untrusted and run |callback|. +// Wait for cros settings to become permanently untrusted and run `callback`. void WaitForPermanentlyUntrustedStatusAndRun(const base::Closure& callback) { while (true) { const CrosSettingsProvider::TrustedStatus status = @@ -194,7 +194,7 @@ void TearDownOnMainThread() override { DevicePolicyCrosBrowserTest::InProcessBrowserTest::TearDownOnMainThread(); - // |existing_user_controller_| has data members that are CrosSettings + // `existing_user_controller_` has data members that are CrosSettings // observers. They need to be destructed before CrosSettings. existing_user_controller_.reset();
diff --git a/chrome/browser/chromeos/login/existing_user_controller_forced_online_auth_unittest.cc b/chrome/browser/chromeos/login/existing_user_controller_forced_online_auth_unittest.cc index 170bdab..1fbde36 100644 --- a/chrome/browser/chromeos/login/existing_user_controller_forced_online_auth_unittest.cc +++ b/chrome/browser/chromeos/login/existing_user_controller_forced_online_auth_unittest.cc
@@ -12,6 +12,9 @@ #include "base/values.h" #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h" #include "chrome/browser/chromeos/login/existing_user_controller.h" +#include "chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.h" +#include "chrome/browser/chromeos/login/saml/password_sync_token_fetcher.h" +#include "chrome/browser/chromeos/login/saml/password_sync_token_login_checker.h" #include "chrome/browser/chromeos/login/ui/mock_login_display.h" #include "chrome/browser/chromeos/login/ui/mock_login_display_host.h" #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" @@ -39,6 +42,9 @@ const char kSecondSAMLUserId[] = "67891"; const char kSecondSAMLUserEmail[] = "alice@corp.example.com"; +const char kSamlToken1[] = "saml-token-1"; +const char kSamlToken2[] = "saml-token-2"; + constexpr base::TimeDelta kSamlOnlineShortDelay = base::TimeDelta::FromSeconds(10); constexpr base::TimeDelta kSamlOnlineLongDelay = @@ -77,6 +83,7 @@ mock_user_manager_ = new MockUserManager(); scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( std::make_unique<FakeUserManagerWithLocalState>(mock_user_manager_)); + settings_helper_.ReplaceDeviceSettingsProviderWithStub(); existing_user_controller_ = std::make_unique<ExistingUserController>(); ON_CALL(*mock_login_display_host_, GetLoginDisplay()) @@ -101,6 +108,24 @@ MockUserManager* mock_user_manager() { return mock_user_manager_; } + int password_sync_token_checkers_size() { + if (!existing_user_controller()->sync_token_checkers_) + return 0; + return existing_user_controller() + ->sync_token_checkers_->sync_token_checkers_.size(); + } + + PasswordSyncTokenLoginChecker* get_password_sync_token_checker( + std::string token) { + return existing_user_controller() + ->sync_token_checkers_->sync_token_checkers_[token] + .get(); + } + + void set_hide_user_names_on_signin() { + settings_helper_.SetBoolean(kAccountsPrefShowUserNamesOnSignIn, false); + } + const AccountId saml_login_account1_id_ = AccountId::FromUserEmailGaiaId(kFirstSAMLUserEmail, kFirstSAMLUserId); @@ -197,4 +222,70 @@ EXPECT_TRUE(is_force_online_flag_set()); } +// Tests creation of password sync token checker for 2 SAML users. Only one of +// them has local copy of password sync token. +TEST_F(ExistingUserControllerForcedOnlineAuthTest, + SyncTokenCheckersCreationWithOneToken) { + user_manager::known_user::SetPasswordSyncToken(saml_login_account1_id_, + kSamlToken1); + set_hide_user_names_on_signin(); + mock_user_manager()->AddPublicAccountWithSAML(saml_login_account1_id_); + mock_user_manager()->AddPublicAccountWithSAML(saml_login_account2_id_); + existing_user_controller()->Init(mock_user_manager()->GetUsers()); + EXPECT_EQ(password_sync_token_checkers_size(), 1); + get_password_sync_token_checker(kSamlToken1)->OnTokenVerified(true); + task_environment_.FastForwardBy(kSamlOnlineShortDelay); + EXPECT_TRUE(get_password_sync_token_checker(kSamlToken1)->IsCheckPending()); +} + +// Tests creation of password sync token checker for 2 SAML users with password +// sync tokens. +TEST_F(ExistingUserControllerForcedOnlineAuthTest, + SyncTokenCheckersCreationWithTwoTokens) { + user_manager::known_user::SetPasswordSyncToken(saml_login_account1_id_, + kSamlToken1); + user_manager::known_user::SetPasswordSyncToken(saml_login_account2_id_, + kSamlToken2); + set_hide_user_names_on_signin(); + mock_user_manager()->AddPublicAccountWithSAML(saml_login_account1_id_); + mock_user_manager()->AddPublicAccountWithSAML(saml_login_account2_id_); + existing_user_controller()->Init(mock_user_manager()->GetUsers()); + EXPECT_EQ(password_sync_token_checkers_size(), 2); + get_password_sync_token_checker(kSamlToken1) + ->OnApiCallFailed(PasswordSyncTokenFetcher::ErrorType::kServerError); + task_environment_.FastForwardBy(kSamlOnlineShortDelay); + EXPECT_TRUE(get_password_sync_token_checker(kSamlToken1)->IsCheckPending()); +} + +// Tests sync token checkers removal in case of failed token validation. +TEST_F(ExistingUserControllerForcedOnlineAuthTest, + SyncTokenCheckersInvalidPasswordForTwoUsers) { + user_manager::known_user::SetPasswordSyncToken(saml_login_account1_id_, + kSamlToken1); + user_manager::known_user::SetPasswordSyncToken(saml_login_account2_id_, + kSamlToken2); + set_hide_user_names_on_signin(); + mock_user_manager()->AddPublicAccountWithSAML(saml_login_account1_id_); + mock_user_manager()->AddPublicAccountWithSAML(saml_login_account2_id_); + existing_user_controller()->Init(mock_user_manager()->GetUsers()); + EXPECT_EQ(password_sync_token_checkers_size(), 2); + get_password_sync_token_checker(kSamlToken1)->OnTokenVerified(false); + get_password_sync_token_checker(kSamlToken2)->OnTokenVerified(false); + EXPECT_EQ(password_sync_token_checkers_size(), 0); +} + +// Sync token checkers are not owned by ExistingUserController if user pods are +// visible. +TEST_F(ExistingUserControllerForcedOnlineAuthTest, + NoSyncTokenCheckersWhenPodsVisible) { + user_manager::known_user::SetPasswordSyncToken(saml_login_account1_id_, + kSamlToken1); + user_manager::known_user::SetPasswordSyncToken(saml_login_account2_id_, + kSamlToken2); + mock_user_manager()->AddPublicAccountWithSAML(saml_login_account1_id_); + mock_user_manager()->AddPublicAccountWithSAML(saml_login_account2_id_); + existing_user_controller()->Init(mock_user_manager()->GetUsers()); + EXPECT_EQ(password_sync_token_checkers_size(), 0); +} + } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/help_app_launcher.h b/chrome/browser/chromeos/login/help_app_launcher.h index 40c2d1c..daff85db 100644 --- a/chrome/browser/chromeos/login/help_app_launcher.h +++ b/chrome/browser/chromeos/login/help_app_launcher.h
@@ -47,7 +47,7 @@ HELP_ADB_SIDELOADING = 9770692, }; - // The dialog is shown as a child of |parent_window|. If |parent_window| is + // The dialog is shown as a child of `parent_window`. If `parent_window` is // null then the dialog is placed in the modal dialog container on the primary // display. explicit HelpAppLauncher(gfx::NativeWindow parent_window);
diff --git a/chrome/browser/chromeos/login/helper.h b/chrome/browser/chromeos/login/helper.h index fa569be..4cdf4b8e 100644 --- a/chrome/browser/chromeos/login/helper.h +++ b/chrome/browser/chromeos/login/helper.h
@@ -40,13 +40,13 @@ // Returns bounds of the screen to use for login wizard. // The rect is centered within the default monitor and sized accordingly if -// |size| is not empty. Otherwise the whole monitor is occupied. +// `size` is not empty. Otherwise the whole monitor is occupied. gfx::Rect CalculateScreenBounds(const gfx::Size& size); // Returns the size of user image required for proper display under current DPI. int GetCurrentUserImageSize(); -// Define the constants in |login| namespace to avoid potential +// Define the constants in `login` namespace to avoid potential // conflict with other chromeos components. namespace login {
diff --git a/chrome/browser/chromeos/login/lock/screen_locker.cc b/chrome/browser/chromeos/login/lock/screen_locker.cc index f14e2cf..251d5e8e 100644 --- a/chrome/browser/chromeos/login/lock/screen_locker.cc +++ b/chrome/browser/chromeos/login/lock/screen_locker.cc
@@ -82,7 +82,7 @@ namespace { -// Returns true if fingerprint authentication is available for |user|. +// Returns true if fingerprint authentication is available for `user`. bool IsFingerprintAvailableForUser(const user_manager::User* user) { quick_unlock::QuickUnlockStorage* quick_unlock_storage = quick_unlock::QuickUnlockFactory::GetForUser(user); @@ -582,7 +582,7 @@ delete g_screen_lock_observer; g_screen_lock_observer = nullptr; - // Delete |screen_locker_| if it is being shown. + // Delete `screen_locker_` if it is being shown. ScheduleDeletion(); }
diff --git a/chrome/browser/chromeos/login/lock/screen_locker.h b/chrome/browser/chromeos/login/lock/screen_locker.h index 5715213..6279a2e 100644 --- a/chrome/browser/chromeos/login/lock/screen_locker.h +++ b/chrome/browser/chromeos/login/lock/screen_locker.h
@@ -90,20 +90,20 @@ // unlock the device. void OnPasswordAuthSuccess(const UserContext& user_context); - // Disables authentication for the user with |account_id|. Notifies lock + // Disables authentication for the user with `account_id`. Notifies lock // screen UI. void EnableAuthForUser(const AccountId& account_id); - // Enables authentication for the user with |account_id|. Notifies lock screen - // UI. |auth_disabled_data| is used to display information in the UI. + // Enables authentication for the user with `account_id`. Notifies lock screen + // UI. `auth_disabled_data` is used to display information in the UI. void DisableAuthForUser(const AccountId& account_id, const ash::AuthDisabledData& auth_disabled_data); - // Authenticates the user with given |user_context|. + // Authenticates the user with given `user_context`. void Authenticate(const UserContext& user_context, AuthenticateCallback callback); - // Authenticates the user with given |account_id| using the challenge-response + // Authenticates the user with given `account_id` using the challenge-response // authentication against a security token. void AuthenticateWithChallengeResponse(const AccountId& account_id, AuthenticateCallback callback); @@ -117,8 +117,8 @@ // (Re)enable input field. void EnableInput(); - // Disables all UI needed and shows error bubble with |message|. - // If |sign_out_only| is true then all other input except "Sign Out" + // Disables all UI needed and shows error bubble with `message`. + // If `sign_out_only` is true then all other input except "Sign Out" // button is blocked. void ShowErrorMessage(int error_msg_id, HelpAppLauncher::HelpTopic help_topic_id, @@ -131,7 +131,7 @@ const user_manager::UserList& users() const { return users_; } // Returns the users to show on the lock screen UI. Will be a subset of - // |users()|. + // `users()`. user_manager::UserList GetUsersToShow() const; // Allow a AuthStatusConsumer to listen for @@ -156,7 +156,7 @@ void RefreshPinAndFingerprintTimeout(); // Saves sync password hash and salt to user profile prefs based on - // |user_context|. + // `user_context`. void SaveSyncPasswordHash(const UserContext& user_context); // Ruturns true if authentication is enabled on the lock screen for the given @@ -219,18 +219,18 @@ // Called when screen locker is safe to delete. static void ScheduleDeletion(); - // Returns true if |account_id| is found among logged in users. + // Returns true if `account_id` is found among logged in users. bool IsUserLoggedIn(const AccountId& account_id) const; // Looks up user in unlock user list. const user_manager::User* FindUnlockUser(const AccountId& account_id); - // Callback to be invoked for ash start lock request. |locked| is true when + // Callback to be invoked for ash start lock request. `locked` is true when // ash is fully locked and post lock animation finishes. Otherwise, the start // lock request is failed. void OnStartLockCallback(bool locked); - // Callback to be invoked when the |challenge_response_auth_keys_loader_| + // Callback to be invoked when the `challenge_response_auth_keys_loader_` // completes building the currently available challenge-response keys. Used // only during the challenge-response unlock. void OnChallengeResponseKeysPrepared( @@ -258,7 +258,7 @@ user_manager::UserList users_; // Set of users that have authentication disabled on lock screen. Has to be - // subset of |users_|. + // subset of `users_`. std::set<AccountId> users_with_disabled_auth_; // Used to authenticate the user to unlock.
diff --git a/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc b/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc index 2cee00f..d224ace 100644 --- a/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc +++ b/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc
@@ -191,7 +191,7 @@ base::RunLoop().RunUntilIdle(); } -// Tests that |GetUsersToShow()| returns an empty list when the user is a +// Tests that `GetUsersToShow()` returns an empty list when the user is a // Managed Guest Session. TEST_F(ScreenLockerUnitTest, GetUsersToShow) { CreateSessionForUser(/*is_public_account=*/true);
diff --git a/chrome/browser/chromeos/login/lock_screen_utils.h b/chrome/browser/chromeos/login/lock_screen_utils.h index ba175c0..7c58b933 100644 --- a/chrome/browser/chromeos/login/lock_screen_utils.h +++ b/chrome/browser/chromeos/login/lock_screen_utils.h
@@ -33,7 +33,7 @@ // Remove any policy limitations on allowed IMEs. void StopEnforcingPolicyInputMethods(); -// Update the keyboard settings for |account_id|. +// Update the keyboard settings for `account_id`. void SetKeyboardSettings(const AccountId& account_id); // Covert a ListValue of locale info to a list of ash struct LocaleItem.
diff --git a/chrome/browser/chromeos/login/login_auth_recorder.h b/chrome/browser/chromeos/login/login_auth_recorder.h index cb75d9b..427458a5 100644 --- a/chrome/browser/chromeos/login/login_auth_recorder.h +++ b/chrome/browser/chromeos/login/login_auth_recorder.h
@@ -52,11 +52,11 @@ LoginAuthRecorder(); ~LoginAuthRecorder() override; - // Called when user attempts authentication using AuthMethod |type|. + // Called when user attempts authentication using AuthMethod `type`. void RecordAuthMethod(AuthMethod type); // Called after a fingerprint attempt to record the auth result. - // |num_attempts|: Only valid when auth success to record number of attempts. + // `num_attempts`: Only valid when auth success to record number of attempts. void RecordFingerprintAuthSuccess(bool success, const base::Optional<int>& num_attempts);
diff --git a/chrome/browser/chromeos/login/login_client_cert_usage_observer.h b/chrome/browser/chromeos/login/login_client_cert_usage_observer.h index f6383e8..329a01c 100644 --- a/chrome/browser/chromeos/login/login_client_cert_usage_observer.h +++ b/chrome/browser/chromeos/login/login_client_cert_usage_observer.h
@@ -27,9 +27,9 @@ // Returns whether at least one certificate was used. bool ClientCertsWereUsed() const; // Returns whether exactly one unique certificate was used, and, if so, - // writes this certificate to |cert| and appends the signature algorithms - // supported by its provider into |signature_algorithms|. - // The certificate was signed by the extension |extension_id|. + // writes this certificate to `cert` and appends the signature algorithms + // supported by its provider into `signature_algorithms`. + // The certificate was signed by the extension `extension_id`. bool GetOnlyUsedClientCert( scoped_refptr<net::X509Certificate>* cert, std::vector<ChallengeResponseKey::SignatureAlgorithm>* @@ -46,7 +46,7 @@ int used_cert_count_ = 0; // One of the client certificates that was used on the login screen. scoped_refptr<net::X509Certificate> used_cert_; - // The extension that signed |used_cert_|. + // The extension that signed `used_cert_`. std::string used_extension_id_; DISALLOW_COPY_AND_ASSIGN(LoginClientCertUsageObserver);
diff --git a/chrome/browser/chromeos/login/login_manager_test.h b/chrome/browser/chromeos/login/login_manager_test.h index 0d95643..ef7910ec 100644 --- a/chrome/browser/chromeos/login/login_manager_test.h +++ b/chrome/browser/chromeos/login/login_manager_test.h
@@ -29,7 +29,7 @@ void SetUpCommandLine(base::CommandLine* command_line) override; void SetUpOnMainThread() override; - // Could be used to registers the user with the given |account_id| on the + // Could be used to registers the user with the given `account_id` on the // device. This method should be called in PRE_* test. Use only if necessary, // prefer LoginManagerMixin instead. void RegisterUser(const AccountId& account_id); @@ -41,20 +41,20 @@ // Set expected credentials for next login attempt. void SetExpectedCredentials(const UserContext& user_context); - // Tries to login with the credentials in |user_context|. The return value + // Tries to login with the credentials in `user_context`. The return value // indicates whether the login attempt succeeded. bool TryToLogin(const UserContext& user_context); - // Tries to add the user identified and authenticated by |user_context| to the + // Tries to add the user identified and authenticated by `user_context` to the // session. The return value indicates whether the attempt succeeded. This // method does the same as TryToLogin() but doesn't verify that the new user // has become the active user. bool AddUserToSession(const UserContext& user_context); - // Log in user with |user_id|. User should be registered using RegisterUser(). + // Log in user with `user_id`. User should be registered using RegisterUser(). void LoginUser(const AccountId& account_id); - // Add user with |user_id| to session. + // Add user with `user_id` to session. void AddUser(const AccountId& user_id); void set_should_launch_browser(bool launch) {
diff --git a/chrome/browser/chromeos/login/login_screen_extensions_lifetime_manager.cc b/chrome/browser/chromeos/login/login_screen_extensions_lifetime_manager.cc index bbb5f2d9..ab3a195 100644 --- a/chrome/browser/chromeos/login/login_screen_extensions_lifetime_manager.cc +++ b/chrome/browser/chromeos/login/login_screen_extensions_lifetime_manager.cc
@@ -67,7 +67,7 @@ extensions::ExtensionService* const extension_service = extensions::ExtensionSystem::Get(signin_profile)->extension_service(); // This reapplies the policy. For the extensions that were previously disabled - // due to |DISABLE_BLOCKED_BY_POLICY|, this unsets this disable reason and + // due to `DISABLE_BLOCKED_BY_POLICY`, this unsets this disable reason and // reenables the extension. extension_service->CheckManagementPolicy();
diff --git a/chrome/browser/chromeos/login/login_screen_extensions_storage_cleaner.cc b/chrome/browser/chromeos/login/login_screen_extensions_storage_cleaner.cc index b881266..88241193 100644 --- a/chrome/browser/chromeos/login/login_screen_extensions_storage_cleaner.cc +++ b/chrome/browser/chromeos/login/login_screen_extensions_storage_cleaner.cc
@@ -48,7 +48,7 @@ prefs_->FindPreference(extensions::pref_names::kLoginScreenExtensions); if (pref && pref->IsManaged() && pref->GetType() == base::Value::Type::DICTIONARY) { - // Each |item| contains a pair of extension ID and update URL. + // Each `item` contains a pair of extension ID and update URL. for (const auto& item : pref->GetValue()->DictItems()) installed_extension_ids.push_back(item.first); }
diff --git a/chrome/browser/chromeos/login/oobe_browsertest.cc b/chrome/browser/chromeos/login/oobe_browsertest.cc index 20824505..9af48c96 100644 --- a/chrome/browser/chromeos/login/oobe_browsertest.cc +++ b/chrome/browser/chromeos/login/oobe_browsertest.cc
@@ -79,7 +79,7 @@ IN_PROC_BROWSER_TEST_F(OobeTest, NewUser) { WaitForGaiaPageLoad(); - // Make the MountEx cryptohome call fail iff the |create| field is missing, + // Make the MountEx cryptohome call fail iff the `create` field is missing, // which simulates the real cryptohomed's behavior for the new user mount. FakeCryptohomeClient::Get()->set_mount_create_required(true); LoginDisplayHost::default_host()
diff --git a/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc b/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc index 6f11306..f7eb55e 100644 --- a/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc +++ b/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
@@ -467,7 +467,7 @@ ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver); }; -// Observes an |aura::Window| to see if the window was visible at some point in +// Observes an `aura::Window` to see if the window was visible at some point in // time. class NativeWindowVisibilityObserver : public aura::WindowObserver { public: @@ -496,9 +496,9 @@ DISALLOW_COPY_AND_ASSIGN(NativeWindowVisibilityObserver); }; -// Sets the |NativeWindowVisibilityObserver| to observe the -// |LoginDisplayHost|'s |NativeWindow|. This needs to be done in -// |PostProfileInit()| as the |default_host| will not be initialized before +// Sets the `NativeWindowVisibilityObserver` to observe the +// `LoginDisplayHost`'s `NativeWindow`. This needs to be done in +// `PostProfileInit()` as the `default_host` will not be initialized before // this. class NativeWindowVisibilityBrowserMainExtraParts : public ChromeBrowserMainExtraParts {
diff --git a/chrome/browser/chromeos/login/oobe_localization_browsertest.cc b/chrome/browser/chromeos/login/oobe_localization_browsertest.cc index 48831db..531ee0db 100644 --- a/chrome/browser/chromeos/login/oobe_localization_browsertest.cc +++ b/chrome/browser/chromeos/login/oobe_localization_browsertest.cc
@@ -191,14 +191,14 @@ public: OobeLocalizationTest(); - // Verifies that the comma-separated |values| corresponds with the first - // values in |select_id|, optionally checking for an options group label after + // Verifies that the comma-separated `values` corresponds with the first + // values in `select_id`, optionally checking for an options group label after // the first set of options. void VerifyInitialOptions(const char* select_id, const char* values, bool check_separator); - // Verifies that |value| exists in |select_id|. + // Verifies that `value` exists in `select_id`. void VerifyOptionExists(const char* select_id, const char* value); // Dumps OOBE select control (language or keyboard) to string.
diff --git a/chrome/browser/chromeos/login/profile_auth_data.cc b/chrome/browser/chromeos/login/profile_auth_data.cc index fcbafe72..e4b32b16 100644 --- a/chrome/browser/chromeos/login/profile_auth_data.cc +++ b/chrome/browser/chromeos/login/profile_auth_data.cc
@@ -33,21 +33,21 @@ cache_key, completion_callback); } -// Starts tranferring |from_partition|'s http auth cache's proxy entries into -// |to_partition|. +// Starts tranferring `from_partition`'s http auth cache's proxy entries into +// `to_partition`. void TransferHttpAuthCacheProxyEntries( base::RepeatingClosure completion_callback, content::StoragePartition* from_partition, content::StoragePartition* to_partition) { - // |to_partition| will outlive the call to |completion_callback|. + // `to_partition` will outlive the call to `completion_callback`. // See ProfileAuthData::Transfer. from_partition->GetNetworkContext()->SaveHttpAuthCacheProxyEntries( base::BindOnce(&OnTargetHttpAuthCacheProxyEntriesSaved, completion_callback, base::Unretained(to_partition))); } -// Given a |cookie| set during login, returns true if the cookie may have been -// set by GAIA. The main criterion is the |cookie|'s domain. If the domain +// Given a `cookie` set during login, returns true if the cookie may have been +// set by GAIA. The main criterion is the `cookie`'s domain. If the domain // is *google.<TLD> or *youtube.<TLD>, the cookie is considered to have been set // by GAIA as well. bool IsGAIACookie(const net::CanonicalCookie& cookie) { @@ -67,8 +67,8 @@ completion_callback.Run(); } -// Imports |cookies| into |to_partition|'s cookie jar. |cookie.IsCanonical()| -// must be true for all cookies in |cookies|. +// Imports `cookies` into `to_partition`'s cookie jar. `cookie.IsCanonical()` +// must be true for all cookies in `cookies`. void ImportCookies(base::RepeatingClosure completion_callback, content::StoragePartition* to_partition, const net::CookieList& cookies) { @@ -97,8 +97,8 @@ } } -// Callback that receives the contents of |from_partition|'s cookie jar. -// Transfers the necessary cookies to |to_partition|'s cookie jar. +// Callback that receives the contents of `from_partition`'s cookie jar. +// Transfers the necessary cookies to `to_partition`'s cookie jar. void OnCookiesToTransferRetrieved(base::RepeatingClosure completion_callback, content::StoragePartition* to_partition, bool first_login, @@ -117,7 +117,7 @@ } } -// Callback that receives the content of |to_partition|'s cookie jar. Checks +// Callback that receives the content of `to_partition`'s cookie jar. Checks // whether this is the user's first login, based on the state of the cookie // jar, and starts retrieval of the data that should be transfered. void OnTargetCookieJarContentsRetrieved( @@ -133,11 +133,11 @@ bool first_login = target_cookies.empty(); if (first_login) { // On first login, transfer all auth cookies if - // |transfer_auth_cookies_on_first_login| is true. + // `transfer_auth_cookies_on_first_login` is true. transfer_auth_cookies = transfer_auth_cookies_on_first_login; } else { // On subsequent login, transfer auth cookies set by the SAML IdP if - // |transfer_saml_auth_cookies_on_subsequent_login| is true. + // `transfer_saml_auth_cookies_on_subsequent_login` is true. transfer_auth_cookies = transfer_saml_auth_cookies_on_subsequent_login; } @@ -146,7 +146,7 @@ return; } - // Retrieve the contents of |from_partition|'s cookie jar. When the retrieval + // Retrieve the contents of `from_partition`'s cookie jar. When the retrieval // finishes, OnCookiesToTransferRetrieved will be called with the result. network::mojom::CookieManager* from_manager = from_partition->GetCookieManagerForBrowserProcess(); @@ -155,8 +155,8 @@ base::Unretained(to_partition), first_login)); } -// Starts the process of transferring cookies from |from_partition| to -// |to_partition|. +// Starts the process of transferring cookies from `from_partition` to +// `to_partition`. void TransferCookies(base::RepeatingClosure completion_callback, content::StoragePartition* from_partition, content::StoragePartition* to_partition, @@ -164,7 +164,7 @@ bool transfer_saml_auth_cookies_on_subsequent_login) { if (transfer_auth_cookies_on_first_login || transfer_saml_auth_cookies_on_subsequent_login) { - // Retrieve the contents of |to_partition_|'s cookie jar. + // Retrieve the contents of `to_partition_`'s cookie jar. network::mojom::CookieManager* to_manager = to_partition->GetCookieManagerForBrowserProcess(); to_manager->GetAllCookies(base::BindOnce( @@ -187,12 +187,12 @@ base::OnceClosure completion_callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - // The BarrierClosure will call |completion_callback| after the 2 async + // The BarrierClosure will call `completion_callback` after the 2 async // transfers have finished. base::RepeatingClosure task_completion_callback = base::BarrierClosure(2, std::move(completion_callback)); - // Transfer the proxy auth cache entries from |from_context| to |to_context|. + // Transfer the proxy auth cache entries from `from_context` to `to_context`. // If the user was required to authenticate with a proxy during login, this // authentication information will be transferred into the user's session. TransferHttpAuthCacheProxyEntries(task_completion_callback, from_partition,
diff --git a/chrome/browser/chromeos/login/profile_auth_data.h b/chrome/browser/chromeos/login/profile_auth_data.h index ef1aa45..702a9899 100644 --- a/chrome/browser/chromeos/login/profile_auth_data.h +++ b/chrome/browser/chromeos/login/profile_auth_data.h
@@ -18,19 +18,19 @@ // used for authentication to the user's actual BrowserContext. class ProfileAuthData { public: - // Transfers authentication-related data from |from_partition| to - // |to_partition| and invokes |completion_callback| on the UI thread when the + // Transfers authentication-related data from `from_partition` to + // `to_partition` and invokes `completion_callback` on the UI thread when the // operation has completed. The following data is transferred: // * The proxy authentication state. // * All authentication cookies, if - // |transfer_auth_cookies_on_first_login| is true and - // |to_partition|'s cookie jar is empty. If the cookie jar is not empty, the - // authentication states in |from_partition| and |to_partition| should be + // `transfer_auth_cookies_on_first_login` is true and + // `to_partition`'s cookie jar is empty. If the cookie jar is not empty, the + // authentication states in `from_partition` and `to_partition` should be // merged using /MergeSession instead. // * The authentication cookies set by a SAML IdP, if - // |transfer_saml_auth_cookies_on_subsequent_login| is true and - // |to_partition|'s cookie jar is not empty. - // |from_partition| and |to_partition| must live until |completion_callback| + // `transfer_saml_auth_cookies_on_subsequent_login` is true and + // `to_partition`'s cookie jar is not empty. + // `from_partition` and `to_partition` must live until `completion_callback` // is called. static void Transfer(content::StoragePartition* from_partition, content::StoragePartition* to_partition,
diff --git a/chrome/browser/chromeos/login/profile_auth_data_unittest.cc b/chrome/browser/chromeos/login/profile_auth_data_unittest.cc index e7f310a..11d228a 100644 --- a/chrome/browser/chromeos/login/profile_auth_data_unittest.cc +++ b/chrome/browser/chromeos/login/profile_auth_data_unittest.cc
@@ -218,7 +218,7 @@ std::string()); network::mojom::CookieManager* cookies = GetCookies(browser_context); - // Ensure |cookies| is fully initialized. + // Ensure `cookies` is fully initialized. base::RunLoop run_loop; cookies->GetAllCookies(base::BindLambdaForTesting( [&](const net::CookieList& cookies) { run_loop.Quit(); }));
diff --git a/chrome/browser/chromeos/login/quick_unlock/auth_token.h b/chrome/browser/chromeos/login/quick_unlock/auth_token.h index 074f09e..ed94f96 100644 --- a/chrome/browser/chromeos/login/quick_unlock/auth_token.h +++ b/chrome/browser/chromeos/login/quick_unlock/auth_token.h
@@ -36,7 +36,7 @@ // instance has not changed. Returns nullopt if Reset() was called. base::Optional<std::string> Identifier() const; - // Time since token was created or |base::nullopt| if Reset() was called. + // Time since token was created or `base::nullopt` if Reset() was called. base::Optional<base::TimeDelta> GetAge() const; // The UserContext returned here can be null if Reset() was called.
diff --git a/chrome/browser/chromeos/login/quick_unlock/fingerprint_storage_unittest.cc b/chrome/browser/chromeos/login/quick_unlock/fingerprint_storage_unittest.cc index ed56cb6..782d342 100644 --- a/chrome/browser/chromeos/login/quick_unlock/fingerprint_storage_unittest.cc +++ b/chrome/browser/chromeos/login/quick_unlock/fingerprint_storage_unittest.cc
@@ -43,7 +43,7 @@ // Provides test-only FingerprintStorage APIs. class FingerprintStorageTestApi { public: - // Does *not* take ownership over |fingerprint_storage|. + // Does *not* take ownership over `fingerprint_storage`. explicit FingerprintStorageTestApi( quick_unlock::FingerprintStorage* fingerprint_storage) : fingerprint_storage_(fingerprint_storage) {}
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_backend.cc b/chrome/browser/chromeos/login/quick_unlock/pin_backend.cc index de5c1195..e037b612 100644 --- a/chrome/browser/chromeos/login/quick_unlock/pin_backend.cc +++ b/chrome/browser/chromeos/login/quick_unlock/pin_backend.cc
@@ -184,7 +184,7 @@ DCHECK(storage); if (cryptohome_backend_) { - // If |user_context| is null, then the token timed out. + // If `user_context` is null, then the token timed out. const UserContext* user_context = storage->GetUserContext(token); if (!user_context) { PostResponse(std::move(did_set), false); @@ -255,7 +255,7 @@ UpdatePinAutosubmitOnRemove(account_id); if (cryptohome_backend_) { - // If |user_context| is null, then the token timed out. + // If `user_context` is null, then the token timed out. const UserContext* user_context = storage->GetUserContext(token); if (!user_context) { PostResponse(std::move(did_remove), false);
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_backend.h b/chrome/browser/chromeos/login/quick_unlock/pin_backend.h index 0790bab..8e9ae14 100644 --- a/chrome/browser/chromeos/login/quick_unlock/pin_backend.h +++ b/chrome/browser/chromeos/login/quick_unlock/pin_backend.h
@@ -33,7 +33,7 @@ // Computes a new salt. static std::string ComputeSalt(); - // Computes the secret for a given |pin| and |salt|. + // Computes the secret for a given `pin` and `salt`. static std::string ComputeSecret(const std::string& pin, const std::string& salt, Key::KeyType key_type); @@ -111,7 +111,7 @@ // Called when we know if the cryptohome supports PIN. void OnIsCryptohomeBackendSupported(bool is_supported); - // Called when a migration attempt has completed. If |success| is true the PIN + // Called when a migration attempt has completed. If `success` is true the PIN // should be cleared from prefs. void OnPinMigrationAttemptComplete(Profile* profile, bool success); @@ -124,7 +124,7 @@ bool success); // Called after checking the user's PIN when enabling auto submit. - // If the authentication was |success|ful, the |pin_length| will be + // If the authentication was `success`ful, the `pin_length` will be // exposed in local state. void OnPinAutosubmitCheckComplete(const AccountId& account_id, size_t pin_length,
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_storage_cryptohome.cc b/chrome/browser/chromeos/login/quick_unlock/pin_storage_cryptohome.cc index 230d169..85325b9 100644 --- a/chrome/browser/chromeos/login/quick_unlock/pin_storage_cryptohome.cc +++ b/chrome/browser/chromeos/login/quick_unlock/pin_storage_cryptohome.cc
@@ -49,7 +49,7 @@ } // Checks to see if there is a KeyDefinition instance with the pin label. If -// |require_unlocked| is true, the key must not be locked. +// `require_unlocked` is true, the key must not be locked. void CheckCryptohomePinKey(PinStorageCryptohome::BoolCallback callback, bool require_unlocked, base::Optional<cryptohome::BaseReply> reply) { @@ -91,7 +91,7 @@ // Called when cryptohomed status is available. If cryptohomed is not available // this will rerun the status check (CheckForCryptohomedService) up to N times. -// |attempt| is the current attempt number. +// `attempt` is the current attempt number. void OnCryptohomedServiceAvailable(int attempt, PinStorageCryptohome::BoolCallback result, bool is_available) { @@ -188,7 +188,7 @@ key.Transform(Key::KEY_TYPE_SALTED_SHA256_TOP_HALF, system_salt_); // If the caller provided a salt then this is a migration from prefs-based - // PIN, in which case |pin| is already hashed. + // PIN, in which case `pin` is already hashed. std::string secret; std::string salt; if (pin_salt) {
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_storage_cryptohome.h b/chrome/browser/chromeos/login/quick_unlock/pin_storage_cryptohome.h index b12c8f7..97f4386 100644 --- a/chrome/browser/chromeos/login/quick_unlock/pin_storage_cryptohome.h +++ b/chrome/browser/chromeos/login/quick_unlock/pin_storage_cryptohome.h
@@ -27,7 +27,7 @@ // Check to see if the cryptohome implementation can store PINs. static void IsSupported(BoolCallback result); - // Transforms |key| for usage in PIN. Returns nullopt if the key could not be + // Transforms `key` for usage in PIN. Returns nullopt if the key could not be // transformed. static base::Optional<Key> TransformKey(const AccountId& account_id, const Key& key); @@ -37,8 +37,8 @@ void IsPinSetInCryptohome(const AccountId& account_id, BoolCallback result) const; - // Sets a new PIN. If |pin_salt| is empty, |pin| will be hashed and should be - // plain-text. If |pin_salt| contains a value, |pin| will not be hashed. + // Sets a new PIN. If `pin_salt` is empty, `pin` will be hashed and should be + // plain-text. If `pin_salt` contains a value, `pin` will not be hashed. void SetPin(const UserContext& user_context, const std::string& pin, const base::Optional<std::string>& pin_salt,
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc b/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc index 43d6d3d0..5fb11d4f5 100644 --- a/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc +++ b/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc
@@ -44,7 +44,7 @@ // Provides test-only PinStoragePrefs APIs. class PinStoragePrefsTestApi { public: - // Does *not* take ownership over |pin_storage|. + // Does *not* take ownership over `pin_storage`. explicit PinStoragePrefsTestApi(quick_unlock::PinStoragePrefs* pin_storage) : pin_storage_(pin_storage) {}
diff --git a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_factory.h b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_factory.h index 5ec885c..f2916d23 100644 --- a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_factory.h +++ b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_factory.h
@@ -25,16 +25,16 @@ // the associated QuickUnlockStorage. class QuickUnlockFactory : public BrowserContextKeyedServiceFactory { public: - // Returns the QuickUnlockStorage instance for |profile|. + // Returns the QuickUnlockStorage instance for `profile`. static QuickUnlockStorage* GetForProfile(Profile* profile); - // Helper method that finds the QuickUnlockStorage instance for |user|. This - // returns GetForProfile with the profile associated with |user|. + // Helper method that finds the QuickUnlockStorage instance for `user`. This + // returns GetForProfile with the profile associated with `user`. static QuickUnlockStorage* GetForUser(const user_manager::User* user); // Helper method that returns the QuickUnlockStorage instance for - // |account_id|. This returns GetForProfile with the profile associated with - // |account_id|. + // `account_id`. This returns GetForProfile with the profile associated with + // `account_id`. static QuickUnlockStorage* GetForAccountId(const AccountId& account_id); static QuickUnlockFactory* GetInstance();
diff --git a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h index cf662b39..07504f0b 100644 --- a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h +++ b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h
@@ -73,7 +73,7 @@ // not been created. May return nullptr. AuthToken* GetAuthToken(); - // Fetch the user context if |auth_token| is valid. May return null. + // Fetch the user context if `auth_token` is valid. May return null. const UserContext* GetUserContext(const std::string& auth_token); FingerprintStorage* fingerprint_storage() {
diff --git a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage_unittest.cc b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage_unittest.cc index 4a55adb4..d500f15 100644 --- a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage_unittest.cc +++ b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage_unittest.cc
@@ -64,11 +64,11 @@ // Provides test-only QuickUnlockStorage APIs. class QuickUnlockStorageTestApi { public: - // Does *not* take ownership over |quick_unlock_storage|. + // Does *not* take ownership over `quick_unlock_storage`. explicit QuickUnlockStorageTestApi(QuickUnlockStorage* quick_unlock_storage) : quick_unlock_storage_(quick_unlock_storage) {} - // Reduces the amount of strong auth time available by |time_delta|. + // Reduces the amount of strong auth time available by `time_delta`. void ReduceRemainingStrongAuthTimeBy(const base::TimeDelta& time_delta) { quick_unlock_storage_->last_strong_auth_ -= time_delta; }
diff --git a/chrome/browser/chromeos/login/reauth_stats.h b/chrome/browser/chromeos/login/reauth_stats.h index 512e25d7..917f0b6b 100644 --- a/chrome/browser/chromeos/login/reauth_stats.h +++ b/chrome/browser/chromeos/login/reauth_stats.h
@@ -49,6 +49,9 @@ // User cancelled the password change prompt when prompted by Chrome OS. PASSWORD_UPDATE_SKIPPED = 8, + // SAML password sync token validation failed. + SAML_PASSWORD_SYNC_TOKEN_VALIDATION_FAILED = 9, + // Must be the last value in this list. NUM_REAUTH_FLOW_REASONS, };
diff --git a/chrome/browser/chromeos/login/saml/in_session_password_change_manager.cc b/chrome/browser/chromeos/login/saml/in_session_password_change_manager.cc index 39f7ff7e..2591739 100644 --- a/chrome/browser/chromeos/login/saml/in_session_password_change_manager.cc +++ b/chrome/browser/chromeos/login/saml/in_session_password_change_manager.cc
@@ -119,7 +119,7 @@ // A time delta with length zero. const base::TimeDelta kZeroTime = base::TimeDelta(); -// When the password will expire in |kUrgentWarningDays| or less, the +// When the password will expire in `kUrgentWarningDays` or less, the // UrgentPasswordExpiryNotification will be used - which is larger and actually // a dialog (not a true notification) - instead of the normal notification. const int kUrgentWarningDays = 3; @@ -193,7 +193,7 @@ urgent_warning_days_(kUrgentWarningDays) { DCHECK(primary_user_); - // Add |this| as a SessionActivationObserver to see when the screen is locked. + // Add `this` as a SessionActivationObserver to see when the screen is locked. auto* session_controller = ash::SessionController::Get(); if (session_controller) { session_controller->AddSessionActivationObserverForAccountId( @@ -202,7 +202,7 @@ } InSessionPasswordChangeManager::~InSessionPasswordChangeManager() { - // Remove |this| as a SessionActivationObserver. + // Remove `this` as a SessionActivationObserver. auto* session_controller = ash::SessionController::Get(); if (session_controller) { session_controller->RemoveSessionActivationObserverForAccountId(
diff --git a/chrome/browser/chromeos/login/saml/in_session_password_change_manager.h b/chrome/browser/chromeos/login/saml/in_session_password_change_manager.h index fba89ab..a23111c2 100644 --- a/chrome/browser/chromeos/login/saml/in_session_password_change_manager.h +++ b/chrome/browser/chromeos/login/saml/in_session_password_change_manager.h
@@ -39,7 +39,7 @@ // Delegates to InSessionPasswordChangeManager::MaybeShowExpiryNotification. void Recheck(); - // Calls Recheck after the given |delay|. + // Calls Recheck after the given `delay`. void RecheckAfter(base::TimeDelta delay); // Cancels any pending calls to Recheck that are scheduled.. @@ -114,7 +114,7 @@ // future, posts a task to check again in the distant future. void MaybeShowExpiryNotification(); - // Shows a password expiry notification. If |time_until_expiry| is zero or + // Shows a password expiry notification. If `time_until_expiry` is zero or // negative then the password has already expired. void ShowStandardExpiryNotification(base::TimeDelta time_until_expiry); @@ -139,7 +139,7 @@ // the user's SAML IdP change-password page: void StartInSessionPasswordChange(); - // Handle a SAML password change. |old_password| and |new_password| can be + // Handle a SAML password change. `old_password` and `new_password` can be // empty if scraping failed, in which case the user will be prompted to enter // them again. If they are scraped, this calls ChangePassword immediately, void OnSamlPasswordChanged(const std::string& scraped_old_password,
diff --git a/chrome/browser/chromeos/login/saml/password_expiry_notification.h b/chrome/browser/chromeos/login/saml/password_expiry_notification.h index 374a501c..3277cf0f 100644 --- a/chrome/browser/chromeos/login/saml/password_expiry_notification.h +++ b/chrome/browser/chromeos/login/saml/password_expiry_notification.h
@@ -16,10 +16,10 @@ class PasswordExpiryNotification { public: // Shows a password expiry notification. The password has expired if - // |time_until_expiry| is zero or negative. + // `time_until_expiry` is zero or negative. static void Show(Profile* profile, base::TimeDelta time_until_expiry); - // Returns localized title text appropriate for |time_until_expiry|, eg: + // Returns localized title text appropriate for `time_until_expiry`, eg: // "Password expires in 7 days". static base::string16 GetTitleText(base::TimeDelta time_until_expiry);
diff --git a/chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.cc b/chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.cc new file mode 100644 index 0000000..6cdbb3d --- /dev/null +++ b/chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.cc
@@ -0,0 +1,62 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.h" + +#include "components/user_manager/known_user.h" +#include "components/user_manager/user_manager.h" + +namespace chromeos { + +const net::BackoffEntry::Policy + PasswordSyncTokenCheckersCollection::kFetchTokenRetryBackoffPolicy = { + 0, // Number of initial errors to ignore. + 10 * 1000, // Initial request delay in ms. + 2.0, // Factor by which the waiting time will be multiplied. + 0.1, // Fuzzing percentage. + 60 * 60 * 1000, // Maximum request delay in ms. + -1, // Never discard the entry. + true, // Use initial delay in the first retry. +}; + +PasswordSyncTokenCheckersCollection::PasswordSyncTokenCheckersCollection() + : sync_token_retry_backoff_(&kFetchTokenRetryBackoffPolicy) {} + +PasswordSyncTokenCheckersCollection::~PasswordSyncTokenCheckersCollection() = + default; + +void PasswordSyncTokenCheckersCollection::StartPasswordSyncCheckers( + const user_manager::UserList& users, + PasswordSyncTokenLoginChecker::Observer* observer) { + for (auto* user : users) { + // Online login already enforced for the user - no further checks are + // required. + if (!user->using_saml() || user->force_online_signin()) + continue; + + const std::string sync_token = + user_manager::known_user::GetPasswordSyncToken(user->GetAccountId()); + if (!sync_token.empty() && + !base::Contains(sync_token_checkers_, sync_token)) { + sync_token_checkers_.insert( + {sync_token, + std::make_unique<PasswordSyncTokenLoginChecker>( + user->GetAccountId(), sync_token, &sync_token_retry_backoff_)}); + if (observer) + sync_token_checkers_[sync_token]->AddObserver(observer); + sync_token_checkers_[sync_token]->AddObserver(this); + sync_token_checkers_[sync_token]->CheckForPasswordNotInSync(); + } + } +} + +void PasswordSyncTokenCheckersCollection::OnInvalidSyncToken( + const AccountId& account_id) { + const std::string sync_token = + user_manager::known_user::GetPasswordSyncToken(account_id); + if (base::Contains(sync_token_checkers_, sync_token)) + sync_token_checkers_.erase(sync_token); +} + +} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.h b/chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.h new file mode 100644 index 0000000..096c381 --- /dev/null +++ b/chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.h
@@ -0,0 +1,54 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SAML_PASSWORD_SYNC_TOKEN_CHECKERS_COLLECTION_H_ +#define CHROME_BROWSER_CHROMEOS_LOGIN_SAML_PASSWORD_SYNC_TOKEN_CHECKERS_COLLECTION_H_ + +#include <map> +#include <memory> +#include <string> + +#include "chrome/browser/chromeos/login/saml/password_sync_token_login_checker.h" +#include "components/user_manager/user.h" +#include "net/base/backoff_entry.h" + +namespace chromeos { + +// Helper class to handle PasswordSyncTokenLoginChecker objects for all users +// on the login screen. +class PasswordSyncTokenCheckersCollection + : PasswordSyncTokenLoginChecker::Observer { + public: + // Backoff policy for token fetch retry attempts in case token fetch failed or + // returned invalid data. + static const net::BackoffEntry::Policy kFetchTokenRetryBackoffPolicy; + + PasswordSyncTokenCheckersCollection(); + ~PasswordSyncTokenCheckersCollection() override; + + PasswordSyncTokenCheckersCollection( + const PasswordSyncTokenCheckersCollection&) = delete; + PasswordSyncTokenCheckersCollection& operator=( + const PasswordSyncTokenCheckersCollection&) = delete; + + void StartPasswordSyncCheckers( + const user_manager::UserList& users, + PasswordSyncTokenLoginChecker::Observer* observer); + + // PasswordSyncTokenLoginChecker::Observer + void OnInvalidSyncToken(const AccountId& account_id) override; + + private: + friend class PasswordSyncTokenLoginCheckerTest; + friend class ExistingUserControllerForcedOnlineAuthTest; + + std::unordered_map<std::string, + std::unique_ptr<PasswordSyncTokenLoginChecker>> + sync_token_checkers_; + net::BackoffEntry sync_token_retry_backoff_; +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SAML_PASSWORD_SYNC_TOKEN_CHECKERS_COLLECTION_H_
diff --git a/chrome/browser/chromeos/login/saml/password_sync_token_fetcher.cc b/chrome/browser/chromeos/login/saml/password_sync_token_fetcher.cc index 6835cc6..bb173cd 100644 --- a/chrome/browser/chromeos/login/saml/password_sync_token_fetcher.cc +++ b/chrome/browser/chromeos/login/saml/password_sync_token_fetcher.cc
@@ -98,7 +98,6 @@ profile_(profile), consumer_(consumer), request_type_(RequestType::kNone) { - DCHECK(profile_); DCHECK(consumer_); } @@ -124,6 +123,7 @@ } void PasswordSyncTokenFetcher::StartAccessTokenFetch() { + DCHECK(profile_); signin::IdentityManager* identity_manager = IdentityManagerFactory::GetForProfile(profile_); DCHECK(identity_manager);
diff --git a/chrome/browser/chromeos/login/saml/password_sync_token_fetcher.h b/chrome/browser/chromeos/login/saml/password_sync_token_fetcher.h index c5186b9..2a2f5c6 100644 --- a/chrome/browser/chromeos/login/saml/password_sync_token_fetcher.h +++ b/chrome/browser/chromeos/login/saml/password_sync_token_fetcher.h
@@ -83,7 +83,7 @@ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; Profile* const profile_; - // |consumer_| to call back when this request completes. + // `consumer_` to call back when this request completes. Consumer* const consumer_; std::unique_ptr<network::SimpleURLLoader> simple_url_loader_;
diff --git a/chrome/browser/chromeos/login/saml/password_sync_token_login_checker.cc b/chrome/browser/chromeos/login/saml/password_sync_token_login_checker.cc new file mode 100644 index 0000000..767074e4 --- /dev/null +++ b/chrome/browser/chromeos/login/saml/password_sync_token_login_checker.cc
@@ -0,0 +1,116 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/login/saml/password_sync_token_login_checker.h" + +#include "base/task/post_task.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/chromeos/login/existing_user_controller.h" +#include "chrome/browser/net/system_network_context_manager.h" +#include "components/user_manager/known_user.h" +#include "components/user_manager/user_manager.h" +#include "content/public/browser/storage_partition.h" + +namespace chromeos { + +namespace { +const base::TimeDelta kPollingInterval = base::TimeDelta::FromMinutes(5); +} + +PasswordSyncTokenLoginChecker::PasswordSyncTokenLoginChecker( + const AccountId& account_id, + const std::string& sync_token, + net::BackoffEntry* retry_backoff) + : account_id_(account_id), + sync_token_(sync_token), + retry_backoff_(retry_backoff) { + DCHECK(!sync_token_.empty()); +} + +PasswordSyncTokenLoginChecker::~PasswordSyncTokenLoginChecker() = default; + +void PasswordSyncTokenLoginChecker::RecheckAfter(base::TimeDelta delay) { + CancelPendingChecks(); + recheck_timer_.Start( + FROM_HERE, delay, + base::BindOnce(&PasswordSyncTokenLoginChecker::CheckForPasswordNotInSync, + weak_ptr_factory_.GetWeakPtr())); +} + +void PasswordSyncTokenLoginChecker::CheckForPasswordNotInSync() { + DCHECK(!password_sync_token_fetcher_); + SystemNetworkContextManager* network_context_manager = + g_browser_process->system_network_context_manager(); + if (!network_context_manager) + return; + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory = + network_context_manager->GetSharedURLLoaderFactory(); + if (!url_loader_factory.get()) + return; + + password_sync_token_fetcher_ = std::make_unique<PasswordSyncTokenFetcher>( + url_loader_factory, /*primary_profile_ = */ nullptr, this); + password_sync_token_fetcher_->StartTokenVerify(sync_token_); +} + +void PasswordSyncTokenLoginChecker::CancelPendingChecks() { + // We should not have any active request at this point. DCHECK makes sure it + // is really the case for the dev build. In a release build InvalidateWeakPtrs + // helps to recover by cancelling potential existing requests. + DCHECK(!IsCheckPending()); + weak_ptr_factory_.InvalidateWeakPtrs(); +} + +bool PasswordSyncTokenLoginChecker::IsCheckPending() { + return recheck_timer_.IsRunning(); +} + +void PasswordSyncTokenLoginChecker::OnTokenCreated( + const std::string& sync_token) { + /* ignored */ +} + +void PasswordSyncTokenLoginChecker::OnTokenFetched( + const std::string& sync_token) { + /* ignored */ +} + +void PasswordSyncTokenLoginChecker::OnTokenVerified(bool is_valid) { + retry_backoff_->InformOfRequest(true); + password_sync_token_fetcher_.reset(); + if (is_valid) { + // Schedule next token check after base interval. + RecheckAfter(kPollingInterval); + return; + } + + // Set force_online flag and refresh the login screen. + user_manager::UserManager::Get()->SaveForceOnlineSignin(account_id_, true); + NotifyObservers(); +} + +void PasswordSyncTokenLoginChecker::OnApiCallFailed( + PasswordSyncTokenFetcher::ErrorType error_type) { + retry_backoff_->InformOfRequest(false); + password_sync_token_fetcher_.reset(); + // Schedule next token check with interval calculated with exponential + // backoff. + RecheckAfter(retry_backoff_->GetTimeUntilRelease()); +} + +void PasswordSyncTokenLoginChecker::AddObserver(Observer* observer) { + observer_list_.AddObserver(observer); +} + +void PasswordSyncTokenLoginChecker::RemoveObserver(Observer* observer) { + observer_list_.RemoveObserver(observer); +} + +void PasswordSyncTokenLoginChecker::NotifyObservers() { + for (auto& observer : observer_list_) { + observer.OnInvalidSyncToken(account_id_); + } +} + +} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/saml/password_sync_token_login_checker.h b/chrome/browser/chromeos/login/saml/password_sync_token_login_checker.h new file mode 100644 index 0000000..e4bd73b --- /dev/null +++ b/chrome/browser/chromeos/login/saml/password_sync_token_login_checker.h
@@ -0,0 +1,80 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SAML_PASSWORD_SYNC_TOKEN_LOGIN_CHECKER_H_ +#define CHROME_BROWSER_CHROMEOS_LOGIN_SAML_PASSWORD_SYNC_TOKEN_LOGIN_CHECKER_H_ + +#include <memory> +#include <string> + +#include "base/memory/weak_ptr.h" +#include "base/observer_list.h" +#include "base/time/time.h" +#include "base/timer/timer.h" +#include "chrome/browser/chromeos/login/saml/password_sync_token_fetcher.h" +#include "components/account_id/account_id.h" +#include "net/base/backoff_entry.h" + +namespace chromeos { + +// Verifies local copy of the password sync token by executing API call. If +// token is invalid calls InSessionPasswordSyncManager to request online re-auth +// that will sync the password and update the token. +class PasswordSyncTokenLoginChecker + : public PasswordSyncTokenFetcher::Consumer { + public: + // Observers of PasswordSyncTokenLoginChecker are notified of invalid sync + // token. + class Observer : public base::CheckedObserver { + public: + virtual void OnInvalidSyncToken(const AccountId& account_id) = 0; + }; + + explicit PasswordSyncTokenLoginChecker(const AccountId& account_id, + const std::string& sync_token, + net::BackoffEntry* retry_backoff); + ~PasswordSyncTokenLoginChecker() override; + + PasswordSyncTokenLoginChecker(const PasswordSyncTokenLoginChecker&) = delete; + PasswordSyncTokenLoginChecker& operator=( + const PasswordSyncTokenLoginChecker&) = delete; + + // Execute verification API call. + void CheckForPasswordNotInSync(); + + // Cancel all pending check requests. + void CancelPendingChecks(); + + // Returns true if pending check exists for account_id_. + bool IsCheckPending(); + + // PasswordSyncTokenFetcher::Consumer + void OnTokenCreated(const std::string& sync_token) override; + void OnTokenFetched(const std::string& sync_token) override; + void OnTokenVerified(bool is_valid) override; + void OnApiCallFailed(PasswordSyncTokenFetcher::ErrorType error_type) override; + + void AddObserver(Observer* observer); + void RemoveObserver(Observer* observer); + + private: + friend class PasswordSyncTokenLoginCheckerTest; + + // Recheck after given |delay|. + void RecheckAfter(base::TimeDelta delay); + void NotifyObservers(); + + base::ObserverList<Observer> observer_list_; + std::unique_ptr<PasswordSyncTokenFetcher> password_sync_token_fetcher_; + const AccountId account_id_; + const std::string sync_token_; + net::BackoffEntry* retry_backoff_ = nullptr; + base::OneShotTimer recheck_timer_; + + base::WeakPtrFactory<PasswordSyncTokenLoginChecker> weak_ptr_factory_{this}; +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SAML_PASSWORD_SYNC_TOKEN_LOGIN_CHECKER_H_
diff --git a/chrome/browser/chromeos/login/saml/password_sync_token_login_checker_unittest.cc b/chrome/browser/chromeos/login/saml/password_sync_token_login_checker_unittest.cc new file mode 100644 index 0000000..e04273f --- /dev/null +++ b/chrome/browser/chromeos/login/saml/password_sync_token_login_checker_unittest.cc
@@ -0,0 +1,114 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/login/saml/password_sync_token_login_checker.h" + +#include "base/time/default_clock.h" +#include "chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.h" +#include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" +#include "chrome/test/base/testing_browser_process.h" +#include "components/user_manager/scoped_user_manager.h" +#include "components/user_manager/user_names.h" +#include "content/public/test/browser_task_environment.h" +#include "testing/gmock/include/gmock/gmock.h" + +namespace chromeos { + +namespace { + +const char kSAMLUserId[] = "12345"; +const char kSAMLUserEmail[] = "alice@corp.example.com"; + +const char kSyncToken[] = "sync-token-1"; + +constexpr base::TimeDelta kSamlTokenDelay = base::TimeDelta::FromSeconds(60); + +class FakeUserManagerWithLocalState : public chromeos::FakeChromeUserManager { + public: + FakeUserManagerWithLocalState() + : test_local_state_(std::make_unique<TestingPrefServiceSimple>()) { + RegisterPrefs(test_local_state_->registry()); + } + ~FakeUserManagerWithLocalState() override = default; + + PrefService* GetLocalState() const override { + return test_local_state_.get(); + } + + private: + std::unique_ptr<TestingPrefServiceSimple> test_local_state_; +}; + +} // namespace + +class PasswordSyncTokenLoginCheckerTest : public testing::Test { + protected: + PasswordSyncTokenLoginCheckerTest(); + + void CreatePasswordSyncTokenLoginChecker(); + void DestroyPasswordSyncTokenLoginChecker(); + void OnTokenVerified(bool is_verified); + + const AccountId saml_login_account_id_ = + AccountId::FromUserEmailGaiaId(kSAMLUserEmail, kSAMLUserId); + + content::BrowserTaskEnvironment test_environment_{ + base::test::TaskEnvironment::MainThreadType::UI, + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; + + std::unique_ptr<net::BackoffEntry> sync_token_retry_backoff_; + FakeChromeUserManager* user_manager_ = nullptr; + std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_; + std::unique_ptr<PasswordSyncTokenLoginChecker> checker_; +}; + +PasswordSyncTokenLoginCheckerTest::PasswordSyncTokenLoginCheckerTest() { + std::unique_ptr<FakeChromeUserManager> fake_user_manager = + std::make_unique<FakeUserManagerWithLocalState>(); + scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( + std::move(fake_user_manager)); + + sync_token_retry_backoff_ = std::make_unique<net::BackoffEntry>( + &PasswordSyncTokenCheckersCollection::kFetchTokenRetryBackoffPolicy); + user_manager_ = + static_cast<FakeChromeUserManager*>(user_manager::UserManager::Get()); + user_manager_->AddUser(saml_login_account_id_); + user_manager_->SwitchActiveUser(saml_login_account_id_); +} + +void PasswordSyncTokenLoginCheckerTest::CreatePasswordSyncTokenLoginChecker() { + DestroyPasswordSyncTokenLoginChecker(); + checker_ = std::make_unique<PasswordSyncTokenLoginChecker>( + saml_login_account_id_, kSyncToken, sync_token_retry_backoff_.get()); +} + +void PasswordSyncTokenLoginCheckerTest::DestroyPasswordSyncTokenLoginChecker() { + checker_.reset(); +} + +void PasswordSyncTokenLoginCheckerTest::OnTokenVerified(bool is_verified) { + checker_->OnTokenVerified(is_verified); +} + +TEST_F(PasswordSyncTokenLoginCheckerTest, SyncTokenValid) { + CreatePasswordSyncTokenLoginChecker(); + checker_->CheckForPasswordNotInSync(); + OnTokenVerified(true); + EXPECT_FALSE( + user_manager_->FindUser(saml_login_account_id_)->force_online_signin()); + test_environment_.FastForwardBy(kSamlTokenDelay); + EXPECT_TRUE(checker_->IsCheckPending()); +} + +TEST_F(PasswordSyncTokenLoginCheckerTest, SyncTokenInvalid) { + CreatePasswordSyncTokenLoginChecker(); + checker_->CheckForPasswordNotInSync(); + OnTokenVerified(false); + EXPECT_TRUE( + user_manager_->FindUser(saml_login_account_id_)->force_online_signin()); + test_environment_.FastForwardBy(kSamlTokenDelay); + EXPECT_FALSE(checker_->IsCheckPending()); +} + +} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/saml/password_sync_token_verifier.h b/chrome/browser/chromeos/login/saml/password_sync_token_verifier.h index 3dda9d82..b308aa9 100644 --- a/chrome/browser/chromeos/login/saml/password_sync_token_verifier.h +++ b/chrome/browser/chromeos/login/saml/password_sync_token_verifier.h
@@ -57,7 +57,7 @@ void OnApiCallFailed(PasswordSyncTokenFetcher::ErrorType error_type) override; private: - // Recheck after given |delay|. + // Recheck after given `delay`. void RecheckAfter(base::TimeDelta delay); // Init sync token. void CreateTokenAsync();
diff --git a/chrome/browser/chromeos/login/saml/saml_browsertest.cc b/chrome/browser/chromeos/login/saml/saml_browsertest.cc index 17255c5..e8fc44b8 100644 --- a/chrome/browser/chromeos/login/saml/saml_browsertest.cc +++ b/chrome/browser/chromeos/login/saml/saml_browsertest.cc
@@ -267,7 +267,7 @@ kLoginCheckDeviceAnswer }; - // Returns the RequestType that corresponds to |url|, or RequestType::Unknown + // Returns the RequestType that corresponds to `url`, or RequestType::Unknown // if this is not a request for the FakeSamlIdp. RequestType ParseRequestTypeFromRequestPath(const GURL& request_url) const; @@ -371,7 +371,7 @@ std::unique_ptr<net::test_server::HttpResponse> FakeSamlIdp::HandleRequest( const net::test_server::HttpRequest& request) { // The scheme and host of the URL is actually not important but required to - // get a valid GURL in order to parse |request.relative_url|. + // get a valid GURL in order to parse `request.relative_url`. GURL request_url = GURL("http://localhost").Resolve(request.relative_url); const RequestType request_type = ParseRequestTypeFromRequestPath(request_url); @@ -787,7 +787,7 @@ auth_needed_waiter.Wait(); ASSERT_FALSE(login_prompt_observer.handlers().empty()); LoginHandler* handler = *login_prompt_observer.handlers().begin(); - // Note that the actual credentials don't matter because |fake_saml_idp()| + // Note that the actual credentials don't matter because `fake_saml_idp()` // doesn't check those (only that something has been provided). handler->SetAuth(base::UTF8ToUTF16("user"), base::UTF8ToUTF16("pwd")); @@ -1025,9 +1025,9 @@ StartSamlAndWaitForIdpPageLoad( saml_test_users::kSecondUserCorpExampleComEmail); - // Authenticate as the first user via SAML (the |Email| provided here is + // Authenticate as the first user via SAML (the `Email` provided here is // irrelevant - the authenticated user's e-mail address that FakeGAIA reports - // was set via |SetFakeMergeSessionParams|). + // was set via `SetFakeMergeSessionParams`). SigninFrameJS().TypeIntoPath("fake_user", {"Email"}); SigninFrameJS().TypeIntoPath("fake_password", {"Password"}); @@ -1095,12 +1095,12 @@ // notice shown to the user is updated. This guards against regressions of // http://crbug.com/447818. IN_PROC_BROWSER_TEST_F(SamlTest, NoticeUpdatedOnRedirect) { - // Start another https server at |kAdditionalIdPHost|. + // Start another https server at `kAdditionalIdPHost`. HTTPSForwarder saml_https_forwarder_2; ASSERT_TRUE(saml_https_forwarder_2.Initialize( kAdditionalIdPHost, embedded_test_server()->base_url())); - // Make the login flow redirect to |kAdditionalIdPHost|. + // Make the login flow redirect to `kAdditionalIdPHost`. fake_saml_idp()->SetLoginHTMLTemplate("saml_login_instant_meta_refresh.html"); fake_saml_idp()->SetRefreshURL( saml_https_forwarder_2.GetURLForSSLHost("simple.html")); @@ -1108,7 +1108,7 @@ saml_test_users::kFirstUserCorpExampleComEmail); // Wait until the notice shown to the user is updated to contain - // |kAdditionalIdPHost|. + // `kAdditionalIdPHost`. std::string js = "var sendIfHostFound = function() {" " var found = $SamlNoticeMessagePath.textContent.indexOf('$Host') > -1;"
diff --git a/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.cc b/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.cc index a7f4e48..b97b39b 100644 --- a/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.cc +++ b/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.cc
@@ -87,7 +87,7 @@ session_manager->AddObserver(this); } - // Arm the |offline_signin_limit_timer_| if a limit is in force. + // Arm the `offline_signin_limit_timer_` if a limit is in force. UpdateLimit(); } @@ -126,7 +126,7 @@ } void SAMLOfflineSigninLimiter::UpdateLimit() { - // Stop the |offline_signin_limit_timer_|. + // Stop the `offline_signin_limit_timer_`. offline_signin_limit_timer_->Stop(); PrefService* prefs = pref_change_registrar_.prefs(); @@ -160,7 +160,7 @@ return; } - // Arm |offline_signin_limit_timer_| so that it sets the flag enforcing online + // Arm `offline_signin_limit_timer_` so that it sets the flag enforcing online // login when the limit expires. offline_signin_limit_timer_->Start( FROM_HERE, offline_signin_time_limit - time_since_last_gaia_signin, this,
diff --git a/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h b/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h index 5ef1301..c9c4a5d 100644 --- a/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h +++ b/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h
@@ -32,7 +32,7 @@ public base::PowerObserver, public session_manager::SessionManagerObserver { public: - // Called when the user successfully authenticates. |auth_flow| indicates + // Called when the user successfully authenticates. `auth_flow` indicates // the type of authentication flow that the user went through. void SignedIn(UserContext::AuthFlow auth_flow); @@ -52,13 +52,13 @@ friend class SAMLOfflineSigninLimiterFactory; friend class SAMLOfflineSigninLimiterTest; - // |profile| and |clock| must remain valid until Shutdown() is called. If - // |clock| is NULL, the shared base::DefaultClock instance will be used. + // `profile` and `clock` must remain valid until Shutdown() is called. If + // `clock` is NULL, the shared base::DefaultClock instance will be used. SAMLOfflineSigninLimiter(Profile* profile, base::Clock* clock); ~SAMLOfflineSigninLimiter() override; // Recalculates the amount of time remaining until online login should be - // forced and sets the |offline_signin_limit_timer_| accordingly. If the limit + // forced and sets the `offline_signin_limit_timer_` accordingly. If the limit // has expired already, sets the flag enforcing online login immediately. void UpdateLimit();
diff --git a/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter_factory.h b/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter_factory.h index f18e74f..ccb8c411 100644 --- a/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter_factory.h +++ b/chrome/browser/chromeos/login/saml/saml_offline_signin_limiter_factory.h
@@ -29,8 +29,8 @@ static SAMLOfflineSigninLimiter* GetForProfile(Profile* profile); - // |clock| will be passed to all SAMLOfflineSigninLimiters. Ensure that their - // Shutdown() methods have been called before destroying |clock|. + // `clock` will be passed to all SAMLOfflineSigninLimiters. Ensure that their + // Shutdown() methods have been called before destroying `clock`. static void SetClockForTesting(base::Clock* clock); private:
diff --git a/chrome/browser/chromeos/login/saml/test_client_cert_saml_idp_mixin.cc b/chrome/browser/chromeos/login/saml/test_client_cert_saml_idp_mixin.cc index 40bff3c..006ae8e 100644 --- a/chrome/browser/chromeos/login/saml/test_client_cert_saml_idp_mixin.cc +++ b/chrome/browser/chromeos/login/saml/test_client_cert_saml_idp_mixin.cc
@@ -25,7 +25,7 @@ constexpr char kSamlRelayStateUrlParam[] = "RelayState"; // URL path of the first SAML page. The FakeGaia will redirect the browser to -// this page when the sign-in for |kUserEmail| is started. This page will +// this page when the sign-in for `kUserEmail` is started. This page will // redirect to the second SAML page (see below). constexpr char kSamlPageUrlPath[] = "saml-page"; // URL path of the second SAML page. This page is configured to authenticate the @@ -47,7 +47,7 @@ base::BindRepeating(&TestClientCertSamlIdpMixin::HandleSamlServerRequest, base::Unretained(this))); - // Set up |saml_with_client_certs_server_| to request a client certificate. + // Set up `saml_with_client_certs_server_` to request a client certificate. net::SSLServerConfig ssl_config; ssl_config.client_cert_type = net::SSLServerConfig::ClientCertType::REQUIRE_CLIENT_CERT;
diff --git a/chrome/browser/chromeos/login/saml/test_client_cert_saml_idp_mixin.h b/chrome/browser/chromeos/login/saml/test_client_cert_saml_idp_mixin.h index d2fc662..66b2ff79 100644 --- a/chrome/browser/chromeos/login/saml/test_client_cert_saml_idp_mixin.h +++ b/chrome/browser/chromeos/login/saml/test_client_cert_saml_idp_mixin.h
@@ -27,7 +27,7 @@ class TestClientCertSamlIdpMixin final : public InProcessBrowserTestMixin { public: - // |client_cert_authorities| is the list of DER-encoded X.509 + // `client_cert_authorities` is the list of DER-encoded X.509 // DistinguishedName of certificate authorities that should be requested by // the SAML server during the client authentication. TestClientCertSamlIdpMixin( @@ -47,10 +47,10 @@ void SetUpOnMainThread() override; private: - // Handles requests to |saml_server_|. + // Handles requests to `saml_server_`. std::unique_ptr<net::test_server::HttpResponse> HandleSamlServerRequest( const net::test_server::HttpRequest& request); - // Handles requests to |saml_with_client_certs_server_|. + // Handles requests to `saml_with_client_certs_server_`. std::unique_ptr<net::test_server::HttpResponse> HandleSamlWithClientCertsServerRequest( const net::test_server::HttpRequest& request);
diff --git a/chrome/browser/chromeos/login/screens/assistant_optin_flow_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/assistant_optin_flow_screen_browsertest.cc index a091e9f..cd8ad2b 100644 --- a/chrome/browser/chromeos/login/screens/assistant_optin_flow_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/assistant_optin_flow_screen_browsertest.cc
@@ -404,7 +404,7 @@ ".setDoneActionDelayForTesting(0)"); } - // Waits for the button specified by IDs in |button_path| to become enabled, + // Waits for the button specified by IDs in `button_path` to become enabled, // and then taps it. void TapWhenEnabled(std::initializer_list<base::StringPiece> button_path) { test::OobeJS().CreateEnabledWaiter(true, button_path)->Wait();
diff --git a/chrome/browser/chromeos/login/screens/base_screen.h b/chrome/browser/chromeos/login/screens/base_screen.h index f9c34b8..8a8183a 100644 --- a/chrome/browser/chromeos/login/screens/base_screen.h +++ b/chrome/browser/chromeos/login/screens/base_screen.h
@@ -45,7 +45,7 @@ // Forwards user action if screen is shown. void HandleUserAction(const std::string& action_id); - // Returns |true| if |action| was handled by the screen. + // Returns `true` if `action` was handled by the screen. virtual bool HandleAccelerator(ash::LoginAcceleratorAction action); // Returns the identifier of the screen. @@ -60,7 +60,7 @@ virtual void ShowImpl() = 0; virtual void HideImpl() = 0; - // Called when user action event with |event_id| + // Called when user action event with `event_id` // happened. Notification about this event comes from the JS // counterpart. Not called if the screen is hidden virtual void OnUserAction(const std::string& action_id);
diff --git a/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.cc b/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.cc index a2ac7a3..0f910db 100644 --- a/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.cc +++ b/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.cc
@@ -105,9 +105,9 @@ return; } - // When no display name is set by policy, the |User|, owned by |UserManager|, - // decides what display name to use. However, the order in which |UserManager| - // and |this| are informed of the display name change is undefined. Post a + // When no display name is set by policy, the `User`, owned by `UserManager`, + // decides what display name to use. However, the order in which `UserManager` + // and `this` are informed of the display name change is undefined. Post a // task that will update the UI after the UserManager is guaranteed to have // been informed of the change. base::ThreadTaskRunnerHandle::Get()->PostTask(
diff --git a/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.h b/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.h index 551115c..9e508862 100644 --- a/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.h +++ b/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.h
@@ -51,11 +51,11 @@ policy::DeviceLocalAccountPolicyBroker* broker); // Notify the UI that the display name for a public session has changed, - // taking the display name from the |User| owned by |UserManager|. + // taking the display name from the `User` owned by `UserManager`. void SetPublicSessionDisplayName(const AccountId& account_id); // Send an updated list of locales for a public session to the UI, consisting - // of the |recommended_locales| followed by all other available locales. + // of the `recommended_locales` followed by all other available locales. void SetPublicSessionLocales( const AccountId& account_id, const std::vector<std::string>& recommended_locales);
diff --git a/chrome/browser/chromeos/login/screens/demo_preferences_screen.cc b/chrome/browser/chromeos/login/screens/demo_preferences_screen.cc index 43f367d8..d1fe8ad 100644 --- a/chrome/browser/chromeos/login/screens/demo_preferences_screen.cc +++ b/chrome/browser/chromeos/login/screens/demo_preferences_screen.cc
@@ -26,7 +26,7 @@ return WelcomeScreen::Get(wizard_controller->screen_manager()); } -// Sets locale and input method. If |locale| or |input_method| is empty then +// Sets locale and input method. If `locale` or `input_method` is empty then // they will not be changed. void SetApplicationLocaleAndInputMethod(const std::string& locale, const std::string& input_method) {
diff --git a/chrome/browser/chromeos/login/screens/error_screen.h b/chrome/browser/chromeos/login/screens/error_screen.h index 12eedd3..db97d11 100644 --- a/chrome/browser/chromeos/login/screens/error_screen.h +++ b/chrome/browser/chromeos/login/screens/error_screen.h
@@ -77,7 +77,7 @@ virtual void SetUIState(NetworkError::UIState ui_state); // Sets current error screen content according to current UI state, - // |error_state|, and |network|. + // `error_state`, and `network`. virtual void SetErrorState(NetworkError::ErrorState error_state, const std::string& network);
diff --git a/chrome/browser/chromeos/login/screens/eula_screen.h b/chrome/browser/chromeos/login/screens/eula_screen.h index b0a7dfa..2c5bb2a 100644 --- a/chrome/browser/chromeos/login/screens/eula_screen.h +++ b/chrome/browser/chromeos/login/screens/eula_screen.h
@@ -22,7 +22,7 @@ // to users. // // TODO(b/168852740): Clean up the password-related logic with the removal of -// |TpmGetPassword| D-Bus method. +// `TpmGetPassword` D-Bus method. class EulaScreen : public BaseScreen, public TpmPasswordFetcherDelegate { public: enum class Result {
diff --git a/chrome/browser/chromeos/login/screens/gesture_navigation_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/gesture_navigation_screen_browsertest.cc index 9737b31..ab4411b5 100644 --- a/chrome/browser/chromeos/login/screens/gesture_navigation_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/gesture_navigation_screen_browsertest.cc
@@ -74,10 +74,10 @@ GestureNavigationScreenView::kScreenId); } - // Checks that |dialog_page| is shown, while also checking that all other oobe + // Checks that `dialog_page` is shown, while also checking that all other oobe // dialogs on the gesture navigation screen are hidden. void CheckPageIsShown(std::string dialog_page) { - // |oobe_dialogs| is a list of all pages within the gesture navigation + // `oobe_dialogs` is a list of all pages within the gesture navigation // screen. const std::vector<std::string> oobe_dialogs = { "gestureIntro", "gestureHome", "gestureOverview", "gestureBack"};
diff --git a/chrome/browser/chromeos/login/screens/hid_detection_screen.h b/chrome/browser/chromeos/login/screens/hid_detection_screen.h index 68ebd35..714ced4 100644 --- a/chrome/browser/chromeos/login/screens/hid_detection_screen.h +++ b/chrome/browser/chromeos/login/screens/hid_detection_screen.h
@@ -57,7 +57,7 @@ // This method is called when the view is being destroyed. void OnViewDestroyed(HIDDetectionView* view); - // Checks if this screen should be displayed. |on_check_done| should be + // Checks if this screen should be displayed. `on_check_done` should be // invoked with the result; true if the screen should be displayed, false // otherwise. void CheckIsScreenRequired(const base::Callback<void(bool)>& on_check_done); @@ -198,8 +198,8 @@ void BTConnected(device::BluetoothDeviceType device_type); // Called by device::BluetoothDevice in response to a failure to - // connect to the device with bluetooth address |address| due to an error - // encoded in |error_code|. + // connect to the device with bluetooth address `address` due to an error + // encoded in `error_code`. void BTConnectError(const std::string& address, device::BluetoothDeviceType device_type, device::BluetoothDevice::ConnectErrorCode error_code); @@ -237,7 +237,7 @@ DeviceMap devices_; // The current device discovery session. Only one active discovery session is - // kept at a time and the instance that |discovery_session_| points to gets + // kept at a time and the instance that `discovery_session_` points to gets // replaced by a new one when a new discovery session is initiated. std::unique_ptr<device::BluetoothDiscoverySession> discovery_session_;
diff --git a/chrome/browser/chromeos/login/screens/hid_detection_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/hid_detection_screen_browsertest.cc index 2d7037f..c2154a35 100644 --- a/chrome/browser/chromeos/login/screens/hid_detection_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/hid_detection_screen_browsertest.cc
@@ -184,8 +184,8 @@ OobeScreenWaiter(HIDDetectionView::kScreenId).Wait(); EXPECT_TRUE(adapter()->IsPowered()); - // Add a pair of USB mouse/keyboard so that |pointing_device_type_| - // and |keyboard_type_| are + // Add a pair of USB mouse/keyboard so that `pointing_device_type_` + // and `keyboard_type_` are // device::mojom::InputDeviceType::TYPE_USB. AddDeviceToService(DeviceType::kMouse, device::mojom::InputDeviceType::TYPE_USB);
diff --git a/chrome/browser/chromeos/login/screens/multidevice_setup_screen.h b/chrome/browser/chromeos/login/screens/multidevice_setup_screen.h index 2a2a7eb5..dba6b02 100644 --- a/chrome/browser/chromeos/login/screens/multidevice_setup_screen.h +++ b/chrome/browser/chromeos/login/screens/multidevice_setup_screen.h
@@ -68,7 +68,7 @@ kMaxValue = kDeclined }; - // Inits |setup_client_| if it was not initialized before. + // Inits `setup_client_` if it was not initialized before. void TryInitSetupClient(); static void RecordMultiDeviceSetupOOBEUserChoiceHistogram(
diff --git a/chrome/browser/chromeos/login/screens/network_screen.h b/chrome/browser/chromeos/login/screens/network_screen.h index ecc44a5..f6644082 100644 --- a/chrome/browser/chromeos/login/screens/network_screen.h +++ b/chrome/browser/chromeos/login/screens/network_screen.h
@@ -41,8 +41,8 @@ // Returns instance of NetworkScreen. static NetworkScreen* Get(ScreenManager* manager); - // Called when |view| has been destroyed. If this instance is destroyed before - // the |view| it should call view->Unbind(). + // Called when `view` has been destroyed. If this instance is destroyed before + // the `view` it should call view->Unbind(). void OnViewDestroyed(NetworkScreenView* view); void set_exit_callback_for_testing(const ScreenExitCallback& exit_callback) { @@ -89,7 +89,7 @@ // Notifies wizard on successful connection. void NotifyOnConnection(); - // Called by |connection_timer_| when connection to the network timed out. + // Called by `connection_timer_` when connection to the network timed out. void OnConnectionTimeout(); // Updates UI based on current network status.
diff --git a/chrome/browser/chromeos/login/screens/packaged_license_screen.h b/chrome/browser/chromeos/login/screens/packaged_license_screen.h index d405a56..b7edd1a 100644 --- a/chrome/browser/chromeos/login/screens/packaged_license_screen.h +++ b/chrome/browser/chromeos/login/screens/packaged_license_screen.h
@@ -24,7 +24,7 @@ DONT_ENROLL, // Show enterprise enrollment screen ENROLL, - // No information about license in the |enrollment_config_| + // No information about license in the `enrollment_config_` NOT_APPLICABLE };
diff --git a/chrome/browser/chromeos/login/screens/recommend_apps/fake_recommend_apps_fetcher_delegate.h b/chrome/browser/chromeos/login/screens/recommend_apps/fake_recommend_apps_fetcher_delegate.h index 2099681f..0eb39d3 100644 --- a/chrome/browser/chromeos/login/screens/recommend_apps/fake_recommend_apps_fetcher_delegate.h +++ b/chrome/browser/chromeos/login/screens/recommend_apps/fake_recommend_apps_fetcher_delegate.h
@@ -45,7 +45,7 @@ void OnParseResponseError() override; private: - // Records a result value - |loaded_apps_|, if any, should be set before + // Records a result value - `loaded_apps_`, if any, should be set before // calling this. void SetResult(Result result);
diff --git a/chrome/browser/chromeos/login/screens/reset_screen.cc b/chrome/browser/chromeos/login/screens/reset_screen.cc index 4dbd39f2..be3744e 100644 --- a/chrome/browser/chromeos/login/screens/reset_screen.cc +++ b/chrome/browser/chromeos/login/screens/reset_screen.cc
@@ -88,7 +88,7 @@ } // Checks if powerwash is allowed based on update modes and passes the result -// to |callback|. +// to `callback`. void OnUpdateModesAvailable( base::OnceCallback<void(bool, base::Optional<tpm_firmware_update::Mode>)> callback,
diff --git a/chrome/browser/chromeos/login/screens/reset_screen.h b/chrome/browser/chromeos/login/screens/reset_screen.h index 91b6b2e..d667402 100644 --- a/chrome/browser/chromeos/login/screens/reset_screen.h +++ b/chrome/browser/chromeos/login/screens/reset_screen.h
@@ -59,9 +59,9 @@ static void SetTpmFirmwareUpdateCheckerForTesting( TpmFirmwareUpdateAvailabilityChecker* checker); - // Checks if powerwash is allowed and passes the result to |callback|. In case + // Checks if powerwash is allowed and passes the result to `callback`. In case // TPM firmware update has to be installed, the mode of update will be passed - // as second parameter to |callback|. + // as second parameter to `callback`. static void CheckIfPowerwashAllowed( base::OnceCallback<void(bool, base::Optional<tpm_firmware_update::Mode>)> callback);
diff --git a/chrome/browser/chromeos/login/screens/sync_consent_screen.h b/chrome/browser/chromeos/login/screens/sync_consent_screen.h index 30b285a0..a486e91 100644 --- a/chrome/browser/chromeos/login/screens/sync_consent_screen.h +++ b/chrome/browser/chromeos/login/screens/sync_consent_screen.h
@@ -79,7 +79,7 @@ const ScreenExitCallback& exit_callback); ~SyncConsentScreen() override; - // Inits |user_|, its |profile_| and |behavior_| before using the screen. + // Inits `user_`, its `profile_` and `behavior_` before using the screen. void Init(); // syncer::SyncServiceObserver: @@ -129,7 +129,7 @@ } private: - // Marks the dialog complete and runs |exit_callback_|. + // Marks the dialog complete and runs `exit_callback_`. void Finish(Result result); // BaseScreen: @@ -140,7 +140,7 @@ // Returns new SyncScreenBehavior value. SyncScreenBehavior GetSyncScreenBehavior() const; - // Calculates updated |behavior_| and performs required update actions. + // Calculates updated `behavior_` and performs required update actions. void UpdateScreen(); // Records user Sync consent.
diff --git a/chrome/browser/chromeos/login/screens/terms_of_service_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/terms_of_service_screen_browsertest.cc index 6970c565..3bbca75 100644 --- a/chrome/browser/chromeos/login/screens/terms_of_service_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/terms_of_service_screen_browsertest.cc
@@ -164,7 +164,7 @@ return BuildHttpResponse(text); } - // Returns a successful |BasicHttpResponse| with |content|. + // Returns a successful `BasicHttpResponse` with `content`. std::unique_ptr<BasicHttpResponse> BuildHttpResponse( const std::string& content) { std::unique_ptr<BasicHttpResponse> http_response =
diff --git a/chrome/browser/chromeos/login/screens/update_required_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/update_required_screen_browsertest.cc index 68b1a98..86d36da 100644 --- a/chrome/browser/chromeos/login/screens/update_required_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/update_required_screen_browsertest.cc
@@ -169,7 +169,7 @@ UpdateRequiredScreen* update_required_screen_; // Error screen - owned by OobeUI. ErrorScreen* error_screen_ = nullptr; - // Version updater - owned by |update_required_screen_|. + // Version updater - owned by `update_required_screen_`. VersionUpdater* version_updater_ = nullptr; // For testing captive portal NetworkPortalDetectorMixin network_portal_detector_{&mixin_host_};
diff --git a/chrome/browser/chromeos/login/screens/update_required_screen_unittest.cc b/chrome/browser/chromeos/login/screens/update_required_screen_unittest.cc index 8801e6b..f5dffb86 100644 --- a/chrome/browser/chromeos/login/screens/update_required_screen_unittest.cc +++ b/chrome/browser/chromeos/login/screens/update_required_screen_unittest.cc
@@ -52,7 +52,7 @@ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( switches::kEnterpriseEnableZeroTouchEnrollment, "hands-off"); - // Initialize objects needed by |UpdateRequiredScreen|. + // Initialize objects needed by `UpdateRequiredScreen`. wizard_context_ = std::make_unique<WizardContext>(); fake_view_ = std::make_unique<FakeUpdateRequiredScreenHandler>(); fake_update_engine_client_ = new FakeUpdateEngineClient(); @@ -65,7 +65,7 @@ mock_network_portal_detector_); mock_error_screen_.reset(new MockErrorScreen(mock_error_view_.get())); - // Ensure proper behavior of |UpdateRequiredScreen|'s supporting objects. + // Ensure proper behavior of `UpdateRequiredScreen`'s supporting objects. EXPECT_CALL(*mock_network_portal_detector_, IsEnabled()) .Times(AnyNumber()) .WillRepeatedly(Return(false)); @@ -96,18 +96,18 @@ } protected: - // A pointer to the |UpdateRequiredScreen| used in this test. + // A pointer to the `UpdateRequiredScreen` used in this test. std::unique_ptr<UpdateRequiredScreen> update_required_screen_; - // Accessory objects needed by |UpdateRequiredScreen|. + // Accessory objects needed by `UpdateRequiredScreen`. TestLoginScreen test_login_screen_; std::unique_ptr<FakeUpdateRequiredScreenHandler> fake_view_; std::unique_ptr<MockErrorScreenView> mock_error_view_; std::unique_ptr<MockErrorScreen> mock_error_screen_; std::unique_ptr<WizardContext> wizard_context_; - // Will be deleted in |network_portal_detector::Shutdown()|. + // Will be deleted in `network_portal_detector::Shutdown()`. MockNetworkPortalDetector* mock_network_portal_detector_; - // Will be deleted in |DBusThreadManager::Shutdown()|. + // Will be deleted in `DBusThreadManager::Shutdown()`. FakeUpdateEngineClient* fake_update_engine_client_; // Initializes NetworkStateHandler std::unique_ptr<chromeos::NetworkStateTestHelper> network_state_test_helper_; @@ -117,7 +117,7 @@ content::BrowserTaskEnvironment task_environment_; ScopedTestingLocalState local_state_; ScopedTestingCrosSettings scoped_testing_cros_settings_; - // This is used for |GetEnterpriseDisplayDomain|. + // This is used for `GetEnterpriseDisplayDomain`. ScopedStubInstallAttributes test_install_attributes_; DISALLOW_COPY_AND_ASSIGN(UpdateRequiredScreenUnitTest); @@ -129,7 +129,7 @@ } // namespace TEST_F(UpdateRequiredScreenUnitTest, HandlesNoUpdate) { - // DUT reaches |UpdateRequiredScreen|. + // DUT reaches `UpdateRequiredScreen`. update_required_screen_->Show(wizard_context_.get()); EXPECT_EQ(fake_view_->ui_state(), UpdateRequiredView::UPDATE_REQUIRED_MESSAGE); @@ -146,7 +146,7 @@ } TEST_F(UpdateRequiredScreenUnitTest, HandlesUpdateExists) { - // DUT reaches |UpdateRequiredScreen|. + // DUT reaches `UpdateRequiredScreen`. update_required_screen_->Show(wizard_context_.get()); EXPECT_EQ(fake_view_->ui_state(), UpdateRequiredView::UPDATE_REQUIRED_MESSAGE); @@ -174,7 +174,7 @@ } TEST_F(UpdateRequiredScreenUnitTest, HandlesCellularPermissionNeeded) { - // DUT reaches |UpdateRequiredScreen|. + // DUT reaches `UpdateRequiredScreen`. update_required_screen_->Show(wizard_context_.get()); EXPECT_EQ(fake_view_->ui_state(), UpdateRequiredView::UPDATE_REQUIRED_MESSAGE);
diff --git a/chrome/browser/chromeos/login/screens/update_screen.h b/chrome/browser/chromeos/login/screens/update_screen.h index c24522fc..b178904 100644 --- a/chrome/browser/chromeos/login/screens/update_screen.h +++ b/chrome/browser/chromeos/login/screens/update_screen.h
@@ -34,7 +34,7 @@ // // The screen will request an update availability check from the update engine, // and track the update engine progress. When the UpdateScreen finishes, it will -// run the |exit_callback| with the screen result. +// run the `exit_callback` with the screen result. // // If the update engine reports no updates are found, or the available // update is not critical, UpdateScreen will report UPDATE_NOT_REQUIRED result. @@ -146,7 +146,7 @@ // The user requested an attempt to connect to the network should be made. void OnConnectRequested(); - // Callback passed to |error_screen_| when it's shown. Called when the error + // Callback passed to `error_screen_` when it's shown. Called when the error // screen gets hidden. void OnErrorScreenHidden();
diff --git a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc index 56b61a13..9bf04d7 100644 --- a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc
@@ -163,7 +163,7 @@ NetworkPortalDetectorMixin network_portal_detector_{&mixin_host_}; UpdateScreen* update_screen_ = nullptr; - // Version updater - owned by |update_screen_|. + // Version updater - owned by `update_screen_`. VersionUpdater* version_updater_ = nullptr; // Error screen - owned by OobeUI. ErrorScreen* error_screen_ = nullptr;
diff --git a/chrome/browser/chromeos/login/screens/user_selection_screen.cc b/chrome/browser/chromeos/login/screens/user_selection_screen.cc index ee2a0381..19f794ac 100644 --- a/chrome/browser/chromeos/login/screens/user_selection_screen.cc +++ b/chrome/browser/chromeos/login/screens/user_selection_screen.cc
@@ -105,7 +105,7 @@ const int kPasswordClearTimeoutSec = 60; // Returns true if we have enterprise domain information. -// |out_manager|: Output value of the manager of the device's domain. Can be +// `out_manager`: Output value of the manager of the device's domain. Can be // either a domain (foo.com) or an email address (user@foo.com) bool GetDeviceManager(std::string* out_manager) { policy::BrowserPolicyConnectorChromeOS* policy_connector = @@ -119,10 +119,10 @@ // Get locales information of public account user. // Returns a list of available locales. -// |public_session_recommended_locales|: This can be nullptr if we don't have +// `public_session_recommended_locales`: This can be nullptr if we don't have // recommended locales. -// |out_selected_locale|: Output value of the initially selected locale. -// |out_multiple_locales|: Output value indicates whether we have multiple +// `out_selected_locale`: Output value of the initially selected locale. +// `out_multiple_locales`: Output value indicates whether we have multiple // recommended locales. std::unique_ptr<base::ListValue> GetPublicSessionLocales( const std::vector<std::string>* public_session_recommended_locales, @@ -161,13 +161,13 @@ GetPublicSessionLocales(public_session_recommended_locales, &selected_locale, &has_multiple_locales); - // Set |kKeyInitialLocales| to the list of available locales. + // Set `kKeyInitialLocales` to the list of available locales. user_dict->Set(kKeyInitialLocales, std::move(available_locales)); - // Set |kKeyInitialLocale| to the initially selected locale. + // Set `kKeyInitialLocale` to the initially selected locale. user_dict->SetString(kKeyInitialLocale, selected_locale); - // Set |kKeyInitialMultipleRecommendedLocales| to indicate whether the list + // Set `kKeyInitialMultipleRecommendedLocales` to indicate whether the list // of recommended locales contains at least two entries. This is used to // decide whether the public session pod expands to its basic form (for zero // or one recommended locales) or the advanced form (two or more recommended @@ -475,7 +475,7 @@ device::mojom::WakeLockReason::kOther, kWakeLockReason, wake_lock_.BindNewPipeAndPassReceiver()); } - // The |wake_lock_| is released once TpmLockedChecker is destroyed. + // The `wake_lock_` is released once TpmLockedChecker is destroyed. // It happens after successful login. wake_lock_->RequestWakeLock(); } @@ -689,7 +689,7 @@ handler_ = handler; if (handler_) { - // Forcibly refresh all of the user images, as the |handler_| instance may + // Forcibly refresh all of the user images, as the `handler_` instance may // have been reused. for (user_manager::User* user : users_) handler_->OnUserImageChanged(*user); @@ -709,6 +709,14 @@ if (!ime_state_.get()) ime_state_ = input_method::InputMethodManager::Get()->GetActiveIMEState(); + if (users.size() > 0) { + sync_token_checkers_ = + std::make_unique<PasswordSyncTokenCheckersCollection>(); + sync_token_checkers_->StartPasswordSyncCheckers(users, this); + } else { + sync_token_checkers_.reset(); + } + if (tpm_locked_checker_) return; @@ -976,6 +984,13 @@ HandleFocusPod(focused_pod); } +void UserSelectionScreen::OnInvalidSyncToken(const AccountId& account_id) { + RecordReauthReason(account_id, + ReauthReason::SAML_PASSWORD_SYNC_TOKEN_VALIDATION_FAILED); + SetAuthType(account_id, proximity_auth::mojom::AuthType::ONLINE_SIGN_IN, + base::string16()); +} + void UserSelectionScreen::ShowImpl() {} void UserSelectionScreen::HideImpl() {}
diff --git a/chrome/browser/chromeos/login/screens/user_selection_screen.h b/chrome/browser/chromeos/login/screens/user_selection_screen.h index 74fd96d8..1a2a231 100644 --- a/chrome/browser/chromeos/login/screens/user_selection_screen.h +++ b/chrome/browser/chromeos/login/screens/user_selection_screen.h
@@ -5,7 +5,6 @@ #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_USER_SELECTION_SCREEN_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_USER_SELECTION_SCREEN_H_ -#include <map> #include <memory> #include <string> #include <vector> @@ -17,6 +16,7 @@ #include "base/time/time.h" #include "base/timer/timer.h" #include "base/values.h" +#include "chrome/browser/chromeos/login/saml/password_sync_token_checkers_collection.h" #include "chrome/browser/chromeos/login/screens/base_screen.h" #include "chrome/browser/chromeos/login/signin/token_handle_util.h" #include "chrome/browser/chromeos/login/ui/login_display.h" @@ -44,7 +44,8 @@ : public ui::UserActivityObserver, public proximity_auth::ScreenlockBridge::LockHandler, public BaseScreen, - public session_manager::SessionManagerObserver { + public session_manager::SessionManagerObserver, + public PasswordSyncTokenLoginChecker::Observer { public: explicit UserSelectionScreen(const std::string& display_type); ~UserSelectionScreen() override; @@ -107,7 +108,10 @@ // session_manager::SessionManagerObserver void OnSessionStateChanged() override; - // Fills |user_dict| with information about |user|. + // PasswordSyncTokenLoginChecker::Observer + void OnInvalidSyncToken(const AccountId& account_id) override; + + // Fills `user_dict` with information about `user`. static void FillUserDictionary( const user_manager::User* user, bool is_owner, @@ -116,7 +120,7 @@ const std::vector<std::string>* public_session_recommended_locales, base::DictionaryValue* user_dict); - // Fills |user_dict| with |user| multi-profile related preferences. + // Fills `user_dict` with `user` multi-profile related preferences. static void FillMultiProfileUserPrefs(const user_manager::User* user, base::DictionaryValue* user_dict, bool is_signin_to_add); @@ -124,7 +128,7 @@ // Determines if user auth status requires online sign in. static bool ShouldForceOnlineSignIn(const user_manager::User* user); - // Builds a |UserAvatar| instance which contains the current image for |user|. + // Builds a `UserAvatar` instance which contains the current image for `user`. static ash::UserAvatar BuildAshUserAvatarForUser( const user_manager::User& user); @@ -200,6 +204,10 @@ std::unique_ptr<CrosSettings::ObserverSubscription> allowed_input_methods_subscription_; + // Collection of verifiers that check validity of password sync token for SAML + // users corresponding to visible pods. + std::unique_ptr<PasswordSyncTokenCheckersCollection> sync_token_checkers_; + base::WeakPtrFactory<UserSelectionScreen> weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(UserSelectionScreen);
diff --git a/chrome/browser/chromeos/login/screens/welcome_screen.h b/chrome/browser/chromeos/login/screens/welcome_screen.h index ad516af..90630b1 100644 --- a/chrome/browser/chromeos/login/screens/welcome_screen.h +++ b/chrome/browser/chromeos/login/screens/welcome_screen.h
@@ -73,8 +73,8 @@ static WelcomeScreen* Get(ScreenManager* manager); static std::string GetResultString(Result result); - // Called when |view| has been destroyed. If this instance is destroyed before - // the |view| it should call view->Unbind(). + // Called when `view` has been destroyed. If this instance is destroyed before + // the `view` it should call view->Unbind(). void OnViewDestroyed(WelcomeView* view); const std::string& language_list_locale() const { @@ -84,9 +84,9 @@ void UpdateLanguageList(); - // Set locale and input method. If |locale| is empty or doesn't change, set - // the |input_method| directly. If |input_method| is empty or ineligible, we - // don't change the current |input_method|. + // Set locale and input method. If `locale` is empty or doesn't change, set + // the `input_method` directly. If `input_method` is empty or ineligible, we + // don't change the current `input_method`. void SetApplicationLocaleAndInputMethod(const std::string& locale, const std::string& input_method); std::string GetApplicationLocale();
diff --git a/chrome/browser/chromeos/login/security_token_session_controller.cc b/chrome/browser/chromeos/login/security_token_session_controller.cc new file mode 100644 index 0000000..c521ebf8 --- /dev/null +++ b/chrome/browser/chromeos/login/security_token_session_controller.cc
@@ -0,0 +1,90 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/login/security_token_session_controller.h" + +#include "base/bind.h" +#include "chrome/common/pref_names.h" +#include "components/prefs/pref_change_registrar.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/pref_service.h" + +namespace chromeos { +namespace login { + +namespace { + +// Possible values of prefs::kSecurityTokenSessionBehavior. This needs to match +// the values of the SecurityTokenSessionBehavior policy defined in +// policy_templates.json. +constexpr char kIgnorePrefValue[] = "IGNORE"; +constexpr char kLogoutPrefValue[] = "LOGOUT"; +constexpr char kLockPrefValue[] = "LOCK"; + +SecurityTokenSessionController::Behavior ParseBehaviorPrefValue( + const std::string& behavior) { + if (behavior == kIgnorePrefValue) + return SecurityTokenSessionController::Behavior::kIgnore; + if (behavior == kLogoutPrefValue) + return SecurityTokenSessionController::Behavior::kLogout; + if (behavior == kLockPrefValue) + return SecurityTokenSessionController::Behavior::kLock; + + return SecurityTokenSessionController::Behavior::kIgnore; +} + +} // namespace + +SecurityTokenSessionController::SecurityTokenSessionController( + PrefService* pref_service) + : pref_service_(pref_service) { + UpdateNotificationPref(); + UpdateBehaviorPref(); + pref_change_registrar_.Init(pref_service_); + base::RepeatingClosure behavior_pref_changed_callback = + base::BindRepeating(&SecurityTokenSessionController::UpdateBehaviorPref, + base::Unretained(this)); + base::RepeatingClosure notification_pref_changed_callback = + base::BindRepeating( + &SecurityTokenSessionController::UpdateNotificationPref, + base::Unretained(this)); + pref_change_registrar_.Add(prefs::kSecurityTokenSessionBehavior, + behavior_pref_changed_callback); + pref_change_registrar_.Add(prefs::kSecurityTokenSessionNotificationSeconds, + notification_pref_changed_callback); +} + +SecurityTokenSessionController::~SecurityTokenSessionController() = default; + +void SecurityTokenSessionController::Shutdown() { + pref_change_registrar_.RemoveAll(); +} + +// static +void SecurityTokenSessionController::RegisterPrefs( + PrefRegistrySimple* registry) { + registry->RegisterStringPref(prefs::kSecurityTokenSessionBehavior, + kIgnorePrefValue); + registry->RegisterIntegerPref(prefs::kSecurityTokenSessionNotificationSeconds, + 0); +} + +void SecurityTokenSessionController::UpdateBehaviorPref() { + behavior_ = GetBehaviorFromPref(); +} + +void SecurityTokenSessionController::UpdateNotificationPref() { + notification_seconds_ = + base::TimeDelta::FromSeconds(pref_service_->GetInteger( + prefs::kSecurityTokenSessionNotificationSeconds)); +} + +SecurityTokenSessionController::Behavior +SecurityTokenSessionController::GetBehaviorFromPref() const { + return ParseBehaviorPrefValue( + pref_service_->GetString(prefs::kSecurityTokenSessionBehavior)); +} + +} // namespace login +} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/security_token_session_controller.h b/chrome/browser/chromeos/login/security_token_session_controller.h new file mode 100644 index 0000000..2139364 --- /dev/null +++ b/chrome/browser/chromeos/login/security_token_session_controller.h
@@ -0,0 +1,54 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SECURITY_TOKEN_SESSION_CONTROLLER_H_ +#define CHROME_BROWSER_CHROMEOS_LOGIN_SECURITY_TOKEN_SESSION_CONTROLLER_H_ + +#include "components/keyed_service/core/keyed_service.h" +#include "components/prefs/pref_change_registrar.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/pref_service.h" + +namespace chromeos { +namespace login { + +// A controller that implements the combined behavior of the +// SecurityTokenSessionBehavior and SecurityTokenSessionNotificationSeconds +// preferences. When a user is authenticating via a security token (e.g., with a +// smart card), SecurityTokenSessionBehavior dictates what should happen if the +// certificate ceases to be present while the user is logged in. +// SecurityTokenSessionNotificationSeconds determines if and how long the user +// is getting informed what is going to happen when the certificate vanishes. +class SecurityTokenSessionController : public KeyedService { + public: + enum class Behavior { kIgnore, kLogout, kLock }; + + explicit SecurityTokenSessionController(PrefService* pref_service); + SecurityTokenSessionController(const SecurityTokenSessionController& other) = + delete; + SecurityTokenSessionController& operator=( + const SecurityTokenSessionController& other) = delete; + ~SecurityTokenSessionController() override; + + // KeyedService + void Shutdown() override; + + static void RegisterPrefs(PrefRegistrySimple* registry); + + private: + Behavior GetBehaviorFromPref() const; + + void UpdateBehaviorPref(); + void UpdateNotificationPref(); + + PrefService* const pref_service_; + PrefChangeRegistrar pref_change_registrar_; + Behavior behavior_ = Behavior::kIgnore; + base::TimeDelta notification_seconds_; +}; + +} // namespace login +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SECURITY_TOKEN_SESSION_CONTROLLER_H_
diff --git a/chrome/browser/chromeos/login/security_token_session_controller_factory.cc b/chrome/browser/chromeos/login/security_token_session_controller_factory.cc new file mode 100644 index 0000000..710931f --- /dev/null +++ b/chrome/browser/chromeos/login/security_token_session_controller_factory.cc
@@ -0,0 +1,64 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/login/security_token_session_controller_factory.h" + +#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h" +#include "chrome/browser/chromeos/login/security_token_session_controller.h" +#include "chrome/browser/chromeos/profiles/profile_helper.h" +#include "chrome/browser/profiles/incognito_helpers.h" +#include "chrome/browser/profiles/profile.h" +#include "components/keyed_service/content/browser_context_dependency_manager.h" + +namespace chromeos { +namespace login { + +SecurityTokenSessionControllerFactory::SecurityTokenSessionControllerFactory() + : BrowserContextKeyedServiceFactory( + "SecurityTokenSessionController", + BrowserContextDependencyManager::GetInstance()) { + DependsOn(CertificateProviderServiceFactory::GetInstance()); +} + +SecurityTokenSessionControllerFactory:: + ~SecurityTokenSessionControllerFactory() = default; + +// static +SecurityTokenSessionController* +SecurityTokenSessionControllerFactory::GetForBrowserContext( + content::BrowserContext* browser_context) { + return static_cast<SecurityTokenSessionController*>( + GetInstance()->GetServiceForBrowserContext(browser_context, + /*create=*/true)); +} + +// static +SecurityTokenSessionControllerFactory* +SecurityTokenSessionControllerFactory::GetInstance() { + return base::Singleton<SecurityTokenSessionControllerFactory>::get(); +} + +KeyedService* SecurityTokenSessionControllerFactory::BuildServiceInstanceFor( + content::BrowserContext* context) const { + // The service should only exist for the primary profile. + Profile* profile = Profile::FromBrowserContext(context); + if (!chromeos::ProfileHelper::IsPrimaryProfile(profile)) + return nullptr; + + return new SecurityTokenSessionController(profile->GetPrefs()); +} + +content::BrowserContext* +SecurityTokenSessionControllerFactory::GetBrowserContextToUse( + content::BrowserContext* context) const { + return chrome::GetBrowserContextRedirectedInIncognito(context); +} + +bool SecurityTokenSessionControllerFactory::ServiceIsCreatedWithBrowserContext() + const { + return true; +} + +} // namespace login +} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/security_token_session_controller_factory.h b/chrome/browser/chromeos/login/security_token_session_controller_factory.h new file mode 100644 index 0000000..981dbf2c --- /dev/null +++ b/chrome/browser/chromeos/login/security_token_session_controller_factory.h
@@ -0,0 +1,47 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SECURITY_TOKEN_SESSION_CONTROLLER_FACTORY_H_ +#define CHROME_BROWSER_CHROMEOS_LOGIN_SECURITY_TOKEN_SESSION_CONTROLLER_FACTORY_H_ + +#include "base/memory/singleton.h" +#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h" +#include "chrome/browser/chromeos/login/security_token_session_controller.h" +#include "components/keyed_service/content/browser_context_keyed_service_factory.h" +#include "content/public/browser/browser_context.h" + +namespace chromeos { +namespace login { + +class SecurityTokenSessionControllerFactory + : public BrowserContextKeyedServiceFactory { + public: + static SecurityTokenSessionController* GetForBrowserContext( + content::BrowserContext* browser_context); + + static SecurityTokenSessionControllerFactory* GetInstance(); + + private: + friend struct base::DefaultSingletonTraits< + SecurityTokenSessionControllerFactory>; + + SecurityTokenSessionControllerFactory(); + SecurityTokenSessionControllerFactory( + const SecurityTokenSessionControllerFactory& other) = delete; + SecurityTokenSessionControllerFactory& operator=( + const SecurityTokenSessionControllerFactory& other) = delete; + ~SecurityTokenSessionControllerFactory() override; + + // BrowserContextKeyedServiceFactory: + KeyedService* BuildServiceInstanceFor( + content::BrowserContext* context) const override; + content::BrowserContext* GetBrowserContextToUse( + content::BrowserContext* context) const override; + bool ServiceIsCreatedWithBrowserContext() const override; +}; + +} // namespace login +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SECURITY_TOKEN_SESSION_CONTROLLER_FACTORY_H_
diff --git a/chrome/browser/chromeos/login/session/user_session_initializer.cc b/chrome/browser/chromeos/login/session/user_session_initializer.cc index 6e853cb7..7acef1b 100644 --- a/chrome/browser/chromeos/login/session/user_session_initializer.cc +++ b/chrome/browser/chromeos/login/session/user_session_initializer.cc
@@ -144,7 +144,7 @@ void UserSessionInitializer::InitializeCerts(Profile* profile) { // Now that the user profile has been initialized - // |GetNSSCertDatabaseForProfile| is safe to be used. + // `GetNSSCertDatabaseForProfile` is safe to be used. if (NetworkCertLoader::IsInitialized() && base::SysInfo::IsRunningOnChromeOS()) { GetNSSCertDatabaseForProfile(profile, @@ -177,8 +177,8 @@ if (user->GetType() == user_manager::USER_TYPE_REGULAR) { // App install logs for extensions and ARC++ are uploaded via the user's // communication channel with the management server. This channel exists for - // regular users only. |AppInstallEventLogManagerWrapper| and - // |ExtensionInstallEventLogManagerWrapper| manages their own lifetime and + // regular users only. `AppInstallEventLogManagerWrapper` and + // `ExtensionInstallEventLogManagerWrapper` manages their own lifetime and // self-destruct on logout. policy::AppInstallEventLogManagerWrapper::CreateForProfile(profile); policy::ExtensionInstallEventLogManagerWrapper::CreateForProfile(profile);
diff --git a/chrome/browser/chromeos/login/session/user_session_initializer.h b/chrome/browser/chromeos/login/session/user_session_initializer.h index 5b7a1da..cf347443 100644 --- a/chrome/browser/chromeos/login/session/user_session_initializer.h +++ b/chrome/browser/chromeos/login/session/user_session_initializer.h
@@ -55,7 +55,7 @@ // Initialize RLZ. void InitRlz(Profile* profile); - // Get the NSS cert database for the user represented with |profile| + // Get the NSS cert database for the user represented with `profile` // and start certificate loader with it. void InitializeCerts(Profile* profile); @@ -70,7 +70,7 @@ void InitializePrimaryProfileServices(Profile* profile, const user_manager::User* user); - // Initializes RLZ. If |disabled| is true, RLZ pings are disabled. + // Initializes RLZ. If `disabled` is true, RLZ pings are disabled. void InitRlzImpl(Profile* profile, const RlzInitParams& params); base::OnceClosure init_rlz_impl_closure_for_testing_;
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc index f830ce7..329f50a 100644 --- a/chrome/browser/chromeos/login/session/user_session_manager.cc +++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -194,8 +194,8 @@ PrefService* prefs = profile->GetPrefs(); std::string locale; if (!public_session_locale.empty()) { - // If this is a public session and the user chose a |public_session_locale|, - // write it to |prefs| so that the UI switches to it. + // If this is a public session and the user chose a `public_session_locale`, + // write it to `prefs` so that the UI switches to it. locale = public_session_locale; prefs->SetString(language::prefs::kApplicationLocale, locale); @@ -213,7 +213,7 @@ input_method::InputMethodDescriptor preferred_input_method; if (!public_session_input_method.empty()) { // If this is a public session and the user chose a valid - // |public_session_input_method|, use it as the |preferred_input_method|. + // `public_session_input_method`, use it as the `preferred_input_method`. const input_method::InputMethodDescriptor* const descriptor = manager->GetInputMethodUtil()->GetInputMethodDescriptorFromId( public_session_input_method); @@ -225,7 +225,7 @@ } } - // If |preferred_input_method| is not set, use the currently active input + // If `preferred_input_method` is not set, use the currently active input // method. if (preferred_input_method.id().empty()) { preferred_input_method = @@ -243,7 +243,7 @@ } } - // Derive kLanguagePreloadEngines from |locale| and |preferred_input_method|. + // Derive kLanguagePreloadEngines from `locale` and `preferred_input_method`. std::vector<std::string> input_method_ids; manager->GetInputMethodUtil()->GetFirstLoginInputMethodIds( locale, preferred_input_method, &input_method_ids); @@ -452,10 +452,10 @@ // Note: If a user policy is introduced again which translates to command-line // switches, make sure to wrap the policy-added command-line switches in - // |"--policy-switches-begin"| / |"--policy-switches-end"| sentinels. + // `"--policy-switches-begin"` / `"--policy-switches-end"` sentinels. // This is important, because only command-line switches between the - // |"--policy-switches-begin"| / |"--policy-switches-end"| and the - // |"--flag-switches-begin"| / |"--flag-switches-end"| sentinels will be + // `"--policy-switches-begin"` / `"--policy-switches-end"` and the + // `"--flag-switches-begin"` / `"--flag-switches-end"` sentinels will be // compared when comparing the current command line and the user session // command line in order to decide if chrome should be restarted. } @@ -873,7 +873,7 @@ "Login.CustomFlags", command_line_difference, std::set<std::string>()); base::CommandLine::StringVector flags; - // argv[0] is the program name |base::CommandLine::NO_PROGRAM|. + // argv[0] is the program name `base::CommandLine::NO_PROGRAM`. flags.assign(user_flags.argv().begin() + 1, user_flags.argv().end()); LOG(WARNING) << "Restarting to apply per-session flags..."; SetSwitchesForUser( @@ -1285,7 +1285,7 @@ // Get the Gaia ID from the user context. This may not be available when // unlocking a previously opened profile, or when creating a supervised // user. However, in these cases the gaia_id should be already available in - // |IdentityManager|. + // `IdentityManager`. signin::IdentityManager* identity_manager = IdentityManagerFactory::GetForProfile(profile); std::string gaia_id = user_context.GetGaiaID(); @@ -1307,50 +1307,50 @@ } // We need to set the Primary Account. This is handled by - // |IdentityManager|, which enforces the invariant that only an account - // previously known to |IdentityManager| can be set as the Primary - // Account. |IdentityManager| gets its knowledge of accounts from - // |AccountManager| and hence, before we set the Primary Account, we need + // `IdentityManager`, which enforces the invariant that only an account + // previously known to `IdentityManager` can be set as the Primary + // Account. `IdentityManager` gets its knowledge of accounts from + // `AccountManager` and hence, before we set the Primary Account, we need // to make sure that: - // 1. The account is present in |AccountManager|, and - // 2. |IdentityManager| has been notified about it. + // 1. The account is present in `AccountManager`, and + // 2. `IdentityManager` has been notified about it. AccountManager* account_manager = g_browser_process->platform_part() ->GetAccountManagerFactory() ->GetAccountManager(profile->GetPath().value()); - // |AccountManager| MUST have been fully initialized at this point (via - // |UserSessionManager::InitializeAccountManager|), otherwise we cannot - // guarantee that |IdentityManager| will have this account in Step (2). - // Reason: |AccountManager::UpsertAccount| is an async API that can + // `AccountManager` MUST have been fully initialized at this point (via + // `UserSessionManager::InitializeAccountManager`), otherwise we cannot + // guarantee that `IdentityManager` will have this account in Step (2). + // Reason: `AccountManager::UpsertAccount` is an async API that can // technically take an arbitrarily long amount of time to complete and - // notify |AccountManager|'s observers. However, if |AccountManager| has - // been fully initialized, |AccountManager::UpsertAccount| and the + // notify `AccountManager`'s observers. However, if `AccountManager` has + // been fully initialized, `AccountManager::UpsertAccount` and the // associated notifications happen synchronously. We are relying on that // (undocumented) behaviour here. // TODO(sinhak): This is a leaky abstraction. Explore if - // |UserSessionManager::InitProfilePreferences| can handle an asynchronous + // `UserSessionManager::InitProfilePreferences` can handle an asynchronous // callback and continue. DCHECK(account_manager->IsInitialized()); const AccountManager::AccountKey account_key{ gaia_id, account_manager::AccountType::ACCOUNT_TYPE_GAIA}; - // 1. Make sure that the account is present in |AccountManager|. + // 1. Make sure that the account is present in `AccountManager`. if (!user_context.GetRefreshToken().empty()) { - // |AccountManager::UpsertAccount| is idempotent. We can safely call it + // `AccountManager::UpsertAccount` is idempotent. We can safely call it // without checking for re-auth cases. - // We MUST NOT revoke old Device Account tokens (|revoke_old_token| = - // |false|), otherwise Gaia will revoke all tokens associated to this - // user's device id, including |refresh_token_| and the user will be + // We MUST NOT revoke old Device Account tokens (`revoke_old_token` = + // `false`), otherwise Gaia will revoke all tokens associated to this + // user's device id, including `refresh_token_` and the user will be // stuck performing an online auth with Gaia at every login. See // https://crbug.com/952570 and https://crbug.com/865189 for context. account_manager->UpsertAccount(account_key, user->GetDisplayEmail() /* raw_email */, user_context.GetRefreshToken()); } else if (!account_manager->IsTokenAvailable(account_key)) { - // When |user_context| does not contain a refresh token and account is not + // When `user_context` does not contain a refresh token and account is not // present in the AccountManager it means the migration to the // AccountManager didn't happen. // Set account with dummy token to let IdentitManager know that account @@ -1520,7 +1520,7 @@ // authentication states in the browser context and the user's profile must // be merged using /MergeSession instead. Authentication cookies set by a // SAML IdP will also be transferred when the user's cookie jar is not empty - // if |transfer_saml_auth_cookies_on_subsequent_login| is true. + // if `transfer_saml_auth_cookies_on_subsequent_login` is true. const bool transfer_auth_cookies_on_first_login = has_auth_cookies_; content::StoragePartition* signin_partition = login::GetSigninPartition(); @@ -1700,7 +1700,7 @@ // TODO(nkostylev): This pointer should probably never be NULL, but it looks // like OnProfileCreated() may be getting called before - // UserSessionManager::PrepareProfile() has set |delegate_| when Chrome is + // UserSessionManager::PrepareProfile() has set `delegate_` when Chrome is // killed during shutdown in tests -- see http://crosbug.com/18269. Replace // this 'if' statement with a CHECK(delegate_) once the underlying issue is // resolved. @@ -2006,7 +2006,7 @@ } // Only update Easy unlock keys for regular user. - // TODO(xiyuan): Fix inconsistency user type of |user_context| introduced in + // TODO(xiyuan): Fix inconsistency user type of `user_context` introduced in // authenticator. const user_manager::User* user = user_manager::UserManager::Get()->FindUser(user_context.GetAccountId()); @@ -2015,7 +2015,7 @@ return; } - // Bail if |user_context| does not have secret. + // Bail if `user_context` does not have secret. if (user_context.GetKey()->GetSecret().empty()) { NotifyEasyUnlockKeyOpsFinished(); return; @@ -2083,7 +2083,7 @@ input_method::InputMethodManager* manager = input_method::InputMethodManager::Get(); - // |manager| might not be available in some unit tests. + // `manager` might not be available in some unit tests. if (!manager) return; manager->SetState( @@ -2119,7 +2119,7 @@ } void UserSessionManager::StartAccountManagerMigration(Profile* profile) { - // |migrator| is nullptr for incognito profiles. + // `migrator` is nullptr for incognito profiles. auto* migrator = chromeos::AccountManagerMigratorFactory::GetForBrowserContext(profile); if (migrator) @@ -2292,7 +2292,7 @@ const AccountId& account_id, CommandLineSwitchesType switches_type, const std::vector<std::string>& switches) { - // TODO(pmarko): Introduce a CHECK that |account_id| is the primary user + // TODO(pmarko): Introduce a CHECK that `account_id` is the primary user // (https://crbug.com/832857). command_line_switches_[switches_type] = switches;
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.h b/chrome/browser/chromeos/login/session/user_session_manager.h index ca74bba..de9012de 100644 --- a/chrome/browser/chromeos/login/session/user_session_manager.h +++ b/chrome/browser/chromeos/login/session/user_session_manager.h
@@ -70,7 +70,7 @@ class UserSessionManagerDelegate { public: // Called after profile is loaded and prepared for the session. - // |browser_launched| will be true is browser has been launched, otherwise + // `browser_launched` will be true is browser has been launched, otherwise // it will return false and client is responsible on launching browser. virtual void OnProfilePrepared(Profile* profile, bool browser_launched) = 0; @@ -156,7 +156,7 @@ // Registers session related preferences. static void RegisterPrefs(PrefRegistrySimple* registry); - // Applies user policies to |user_flags| . + // Applies user policies to `user_flags` . // This could mean removing command-line switchis that have been added by the // flag handling logic or appending additional switches due to policy. static void ApplyUserPolicyToSwitches(PrefService* user_profile_prefs, @@ -164,7 +164,7 @@ // Invoked after the tmpfs is successfully mounted. // Asks session_manager to restart Chrome in Guest session mode. - // |start_url| is an optional URL to be opened in Guest session browser. + // `start_url` is an optional URL to be opened in Guest session browser. void CompleteGuestSessionLogin(const GURL& start_url); // Creates and returns the authenticator to use. @@ -174,15 +174,15 @@ scoped_refptr<Authenticator> CreateAuthenticator( AuthStatusConsumer* consumer); - // Start user session given |user_context|. - // OnProfilePrepared() will be called on |delegate| once Profile is ready. + // Start user session given `user_context`. + // OnProfilePrepared() will be called on `delegate` once Profile is ready. void StartSession(const UserContext& user_context, StartSessionType start_session_type, bool has_auth_cookies, bool has_active_session, UserSessionManagerDelegate* delegate); - // Invalidates |delegate|, which was passed to StartSession method call. + // Invalidates `delegate`, which was passed to StartSession method call. void DelegateDeleted(UserSessionManagerDelegate* delegate); // Perform additional actions once system wide notification @@ -246,14 +246,14 @@ const user_manager::User* user, const locale_util::SwitchLanguageCallback& callback) const; - // Switch to the locale that |profile| wishes to use and invoke |callback|. + // Switch to the locale that `profile` wishes to use and invoke `callback`. void RespectLocalePreferenceWrapper(Profile* profile, const base::Closure& callback); // Restarts Chrome if needed. This happens when user session has custom // flags/switches enabled. Another case when owner has setup custom flags, // they are applied on login screen as well but not to user session. - // |early_restart| is true if this restart attempt happens before user profile + // `early_restart` is true if this restart attempt happens before user profile // is fully initialized. // Might not return if restart is possible right now. // Returns true if restart was scheduled. @@ -302,25 +302,25 @@ void Shutdown(); // Sets the command-line switches to be set by session manager for a user - // session associated with |account_id| when chrome restarts. Overwrites - // switches for |switches_type| with |switches|. The resulting command-line + // session associated with `account_id` when chrome restarts. Overwrites + // switches for `switches_type` with `switches`. The resulting command-line // switches will be the command-line switches for all types combined. Note: - // |account_id| is currently ignored, because session manager ignores the + // `account_id` is currently ignored, because session manager ignores the // passed account id. For each type, only the last-set switches will be // honored. - // TODO(pmarko): Introduce a CHECK making sure that |account_id| is the + // TODO(pmarko): Introduce a CHECK making sure that `account_id` is the // primary user (https://crbug.com/832857). void SetSwitchesForUser(const AccountId& account_id, CommandLineSwitchesType switches_type, const std::vector<std::string>& switches); - // Notify whether |service| wants session manager to save the user's login - // password. If |save_password| is true, the login password is sent over D-Bus + // Notify whether `service` wants session manager to save the user's login + // password. If `save_password` is true, the login password is sent over D-Bus // to the session manager to save in a keyring. Once this method has been - // called from all services defined in |PasswordConsumingService|, or if - // |save_password| is true, the method clears the user password from the + // called from all services defined in `PasswordConsumingService`, or if + // `save_password` is true, the method clears the user password from the // UserContext before exiting. - // Should be called for each |service| in |PasswordConsumingService| as soon + // Should be called for each `service` in `PasswordConsumingService` as soon // as the service knows whether it needs the login password. Must be called // before user_context_.ClearSecrets() (see .cc), where Chrome 'forgets' the // password. @@ -381,8 +381,8 @@ // information in Local State like GAIA ID. void StoreUserContextDataBeforeProfileIsCreated(); - // Initializes |chromeos::DemoSession| if starting user session for demo mode. - // Runs |callback| when demo session initialization finishes, i.e. when the + // Initializes `chromeos::DemoSession` if starting user session for demo mode. + // Runs `callback` when demo session initialization finishes, i.e. when the // offline demo session resources are loaded. In addition, disables browser // launch if demo session is started. void InitDemoSessionIfNeeded(base::OnceClosure callback); @@ -452,8 +452,8 @@ // Restores GAIA auth cookies for the created user profile from OAuth2 token. void RestoreAuthSessionImpl(Profile* profile, bool restore_from_auth_cookies); - // If |user| is not a kiosk app, sets session type as seen by extensions - // feature system according to |user|'s type. + // If `user` is not a kiosk app, sets session type as seen by extensions + // feature system according to `user`'s type. // The value should eventually be set for kiosk users, too - that's done as // part of special, kiosk user session bring-up. // NOTE: This has to be called before profile is initialized - so it is set up @@ -465,9 +465,9 @@ base::Optional<SessionManagerClient::ActiveSessionsMap> sessions); // Called by OnRestoreActiveSessions() when there're user sessions in - // |pending_user_sessions_| that has to be restored one by one. + // `pending_user_sessions_` that has to be restored one by one. // Also called after first user session from that list is restored and so on. - // Process continues till |pending_user_sessions_| map is not empty. + // Process continues till `pending_user_sessions_` map is not empty. void RestorePendingUserSessions(); // Notifies observers that user pending sessions restore has finished. @@ -483,9 +483,9 @@ ChildPolicyObserver::InitialPolicyRefreshResult result); // Internal implementation of DoBrowserLaunch. Initially should be called with - // |locale_pref_checked| set to false which will result in postponing browser + // `locale_pref_checked` set to false which will result in postponing browser // launch till user locale is applied if needed. After locale check has - // completed this method is called with |locale_pref_checked| set to true. + // completed this method is called with `locale_pref_checked` set to true. void DoBrowserLaunchInternal(Profile* profile, LoginDisplayHost* login_host, bool locale_pref_checked); @@ -495,10 +495,10 @@ InputEventsBlocker* input_events_blocker, const locale_util::LanguageSwitchResult& result); - // Callback invoked when |token_handle_util_| has finished. + // Callback invoked when `token_handle_util_` has finished. void OnTokenHandleObtained(const AccountId& account_id, bool success); - // Returns |true| if token handles should be used on this device. + // Returns `true` if token handles should be used on this device. bool TokenHandlesEnabled(); void CreateTokenUtilIfMissing(); @@ -619,7 +619,7 @@ std::vector<base::OnceClosure> easy_unlock_key_ops_finished_callbacks_; - // Mapped to |chrome::AttemptRestart|, except in tests. + // Mapped to `chrome::AttemptRestart`, except in tests. base::RepeatingClosure attempt_restart_closure_; std::unique_ptr<arc::AlwaysOnVpnManager> always_on_vpn_manager_;
diff --git a/chrome/browser/chromeos/login/session/user_session_manager_test.cc b/chrome/browser/chromeos/login/session/user_session_manager_test.cc index 149f84d9..1c440cf6 100644 --- a/chrome/browser/chromeos/login/session/user_session_manager_test.cc +++ b/chrome/browser/chromeos/login/session/user_session_manager_test.cc
@@ -76,7 +76,7 @@ } // Convenience shortcut to the login password stored in - // |user_session_manager_|'s user context. + // `user_session_manager_`'s user context. const std::string& GetUserSessionManagerLoginPassword() const { return user_session_manager_->user_context().GetPasswordKey()->GetSecret(); } @@ -119,8 +119,8 @@ DISALLOW_COPY_AND_ASSIGN(UserSessionManagerTest); }; -// Calling VoteForSavingLoginPassword() with |save_password| set to false for -// all |PasswordConsumerService|s should not send the password to SessionManager +// Calling VoteForSavingLoginPassword() with `save_password` set to false for +// all `PasswordConsumerService`s should not send the password to SessionManager // and clear it from the user context. TEST_F(UserSessionManagerTest, PasswordConsumerService_NoSave) { InitLoginPassword(); @@ -138,7 +138,7 @@ EXPECT_TRUE(GetUserSessionManagerLoginPassword().empty()); } -// Calling VoteForSavingLoginPassword() with |save_password| set to true should +// Calling VoteForSavingLoginPassword() with `save_password` set to true should // send the password to SessionManager and clear it from the user context once // all services have voted. TEST_F(UserSessionManagerTest, PasswordConsumerService_Save) { @@ -157,7 +157,7 @@ EXPECT_TRUE(GetUserSessionManagerLoginPassword().empty()); } -// Calling OnPasswordConsumingServicePolicyParsed() with |save_password| set to +// Calling OnPasswordConsumingServicePolicyParsed() with `save_password` set to // false for one service, followed by true, should send the password to // SessionManager on the second service and clear it from the user context. TEST_F(UserSessionManagerTest, PasswordConsumerService_NoSave_Save) {
diff --git a/chrome/browser/chromeos/login/session/user_session_manager_test_api.h b/chrome/browser/chromeos/login/session/user_session_manager_test_api.h index 9faeea4b..1031211 100644 --- a/chrome/browser/chromeos/login/session/user_session_manager_test_api.h +++ b/chrome/browser/chromeos/login/session/user_session_manager_test_api.h
@@ -18,7 +18,7 @@ public: explicit UserSessionManagerTestApi(UserSessionManager* session_manager); - // Injects |user_context| that will be used to create StubAuthenticator + // Injects `user_context` that will be used to create StubAuthenticator // instance when UserSessionManager::CreateAuthenticator() is called. // DEPRECATED: Use InjectStubAuthenticatorBuilder instead. void InjectStubUserContext(const UserContext& user_context);
diff --git a/chrome/browser/chromeos/login/signin/auth_error_observer.h b/chrome/browser/chromeos/login/signin/auth_error_observer.h index e1792f8c..e07b293b 100644 --- a/chrome/browser/chromeos/login/signin/auth_error_observer.h +++ b/chrome/browser/chromeos/login/signin/auth_error_observer.h
@@ -23,8 +23,8 @@ public syncer::SyncServiceObserver, public SigninErrorController::Observer { public: - // Whether |profile| should be observed. Currently, this returns true only - // when |profile| is a user profile of a gaia user or a supervised user. + // Whether `profile` should be observed. Currently, this returns true only + // when `profile` is a user profile of a gaia user or a supervised user. static bool ShouldObserve(Profile* profile); explicit AuthErrorObserver(Profile* profile); @@ -45,9 +45,9 @@ // SigninErrorController::Observer implementation. void OnErrorChanged() override; - // Handles an auth error for the Primary / Sync account. |auth_error| can be - // |GoogleServiceAuthError::AuthErrorNone()|, in which case, it resets and - // marks the account as valid. Note: |auth_error| must correspond to an error + // Handles an auth error for the Primary / Sync account. `auth_error` can be + // `GoogleServiceAuthError::AuthErrorNone()`, in which case, it resets and + // marks the account as valid. Note: `auth_error` must correspond to an error // in the Primary / Sync account and not a Secondary Account. void HandleAuthError(const GoogleServiceAuthError& auth_error);
diff --git a/chrome/browser/chromeos/login/signin/auth_error_observer_factory.h b/chrome/browser/chromeos/login/signin/auth_error_observer_factory.h index ac8ebb4..9cd0700 100644 --- a/chrome/browser/chromeos/login/signin/auth_error_observer_factory.h +++ b/chrome/browser/chromeos/login/signin/auth_error_observer_factory.h
@@ -21,7 +21,7 @@ class AuthErrorObserverFactory : public BrowserContextKeyedServiceFactory { public: // Returns the instance of AuthErrorObserver associated with this - // |profile| (creates one if none exists). + // `profile` (creates one if none exists). static AuthErrorObserver* GetForProfile(Profile* profile); // Returns an instance of the AuthErrorObserverFactory singleton.
diff --git a/chrome/browser/chromeos/login/signin/device_id_browsertest.cc b/chrome/browser/chromeos/login/signin/device_id_browsertest.cc index f842de6..9c47bbd 100644 --- a/chrome/browser/chromeos/login/signin/device_id_browsertest.cc +++ b/chrome/browser/chromeos/login/signin/device_id_browsertest.cc
@@ -81,8 +81,8 @@ // Checks that user's device ID retrieved from UserManager and Profile are the // same. - // If |refresh_token| is not empty, checks that device ID associated with the - // |refresh_token| in GAIA is the same as ID saved on device. + // If `refresh_token` is not empty, checks that device ID associated with the + // `refresh_token` in GAIA is the same as ID saved on device. void CheckDeviceIDIsConsistent(const AccountId& account_id, const std::string& refresh_token) { const std::string device_id_in_profile = GetDeviceIdFromProfile(account_id); @@ -303,7 +303,7 @@ .empty()); SignInOffline(FakeGaiaMixin::kFakeUserEmail, FakeGaiaMixin::kFakeUserPassword); - // Last param |auth_code| is empty, because we don't pass a device ID to GAIA + // Last param `auth_code` is empty, because we don't pass a device ID to GAIA // in this case. CheckDeviceIDIsConsistent( AccountId::FromUserEmail(FakeGaiaMixin::kFakeUserEmail), std::string());
diff --git a/chrome/browser/chromeos/login/signin/merge_session_throttling_utils.h b/chrome/browser/chromeos/login/signin/merge_session_throttling_utils.h index a0d90c7..5002e197 100644 --- a/chrome/browser/chromeos/login/signin/merge_session_throttling_utils.h +++ b/chrome/browser/chromeos/login/signin/merge_session_throttling_utils.h
@@ -26,17 +26,17 @@ // Checks if session is already merged. This is safe to call on all threads. bool AreAllSessionMergedAlready(); -// Adds/removes |profile| to/from the blocking profiles set. This should be +// Adds/removes `profile` to/from the blocking profiles set. This should be // called on the UI thread. void BlockProfile(Profile* profile); void UnblockProfile(Profile* profile); -// Whether requests from |web_contents| or |profile| should currently be +// Whether requests from `web_contents` or `profile` should currently be // delayed. This should be called on the UI thread. bool ShouldDelayRequestForProfile(Profile* profile); bool ShouldDelayRequestForWebContents(content::WebContents* web_contents); -// True if the load of |url| should be delayed. The function is safe to be +// True if the load of `url` should be delayed. The function is safe to be // called on any thread. bool ShouldDelayUrl(const GURL& url);
diff --git a/chrome/browser/chromeos/login/signin/oauth2_browsertest.cc b/chrome/browser/chromeos/login/signin/oauth2_browsertest.cc index 450c660c..3f6ceca 100644 --- a/chrome/browser/chromeos/login/signin/oauth2_browsertest.cc +++ b/chrome/browser/chromeos/login/signin/oauth2_browsertest.cc
@@ -165,7 +165,7 @@ DISALLOW_COPY_AND_ASSIGN(OAuth2LoginManagerStateWaiter); }; -// Blocks a thread associated with a given |task_runner| on construction and +// Blocks a thread associated with a given `task_runner` on construction and // unblocks it on destruction. class ThreadBlocker { public: @@ -180,10 +180,10 @@ ~ThreadBlocker() { unblock_event_->Signal(); } private: - // Blocks the target thread until |event| is signaled. + // Blocks the target thread until `event` is signaled. static void BlockThreadOnThread(base::WaitableEvent* event) { event->Wait(); } - // |unblock_event_| is deleted after BlockThreadOnThread returns. + // `unblock_event_` is deleted after BlockThreadOnThread returns. base::WaitableEvent* const unblock_event_; DISALLOW_COPY_AND_ASSIGN(ThreadBlocker); @@ -660,7 +660,7 @@ // User session should be terminated. termination_waiter.Wait(); - // Merge session should fail. Check after |termination_waiter| to ensure + // Merge session should fail. Check after `termination_waiter` to ensure // user profile is initialized and there is an OAuth2LoginManage. WaitForMergeSessionCompletion(OAuth2LoginManager::SESSION_RESTORE_FAILED); } @@ -768,7 +768,7 @@ std::unique_ptr<HttpResponse> HandleRequest(const HttpRequest& request) { // The scheme and host of the URL is actually not important but required to - // get a valid GURL in order to parse |request.relative_url|. + // get a valid GURL in order to parse `request.relative_url`. GURL request_url = GURL("http://localhost").Resolve(request.relative_url); std::string request_path = request_url.path(); std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse()); @@ -1018,7 +1018,7 @@ new ExtensionTestMessageListener("non-google-xhr-received", false)); // Load extension with a background page. The background page will - // attempt to load |fake_google_page_url_| via XHR. + // attempt to load `fake_google_page_url_` via XHR. const extensions::Extension* ext = LoadMergeSessionExtension(); ASSERT_TRUE(ext); @@ -1087,7 +1087,7 @@ new ExtensionTestMessageListener("non-google-xhr-received", false)); // Load extension with a background page. The background page will - // attempt to load |fake_google_page_url_| via XHR. + // attempt to load `fake_google_page_url_` via XHR. const extensions::Extension* ext = LoadMergeSessionExtension(); ASSERT_TRUE(ext); @@ -1156,7 +1156,7 @@ new ExtensionTestMessageListener("non-google-xhr-received", false)); // Load extension with a background page. The background page will - // attempt to load |fake_google_page_url_| via XHR. + // attempt to load `fake_google_page_url_` via XHR. const extensions::Extension* ext = LoadMergeSessionExtension(); ASSERT_TRUE(ext);
diff --git a/chrome/browser/chromeos/login/signin/oauth2_login_manager.cc b/chrome/browser/chromeos/login/signin/oauth2_login_manager.cc index 038a994..1d862bf 100644 --- a/chrome/browser/chromeos/login/signin/oauth2_login_manager.cc +++ b/chrome/browser/chromeos/login/signin/oauth2_login_manager.cc
@@ -174,7 +174,7 @@ // We already have the refresh token at this // point, and will not get any additional callbacks from Account Manager or // Identity Manager about refresh tokens. Manually call - // |OnRefreshTokenUpdatedForAccount| to continue the flow. + // `OnRefreshTokenUpdatedForAccount` to continue the flow. // TODO(https://crbug.com/977137): Clean this up after cleaning // OAuth2LoginVerifier. OnRefreshTokenUpdatedForAccount(primary_account_info);
diff --git a/chrome/browser/chromeos/login/signin/oauth2_login_manager.h b/chrome/browser/chromeos/login/signin/oauth2_login_manager.h index 52947fd..e40900229 100644 --- a/chrome/browser/chromeos/login/signin/oauth2_login_manager.h +++ b/chrome/browser/chromeos/login/signin/oauth2_login_manager.h
@@ -80,10 +80,10 @@ void AddObserver(OAuth2LoginManager::Observer* observer); void RemoveObserver(OAuth2LoginManager::Observer* observer); - // Restores and verifies OAuth tokens following specified |restore_strategy|. - // For |restore_strategy| RESTORE_FROM_PASSED_OAUTH2_REFRESH_TOKEN, parameter - // |oauth2_refresh_token| needs to have a non-empty value. - // For |restore_strategy| DDEPRECATED_RESTORE_FROM_COOKIE_JAR. + // Restores and verifies OAuth tokens following specified `restore_strategy`. + // For `restore_strategy` RESTORE_FROM_PASSED_OAUTH2_REFRESH_TOKEN, parameter + // `oauth2_refresh_token` needs to have a non-empty value. + // For `restore_strategy` DDEPRECATED_RESTORE_FROM_COOKIE_JAR. void RestoreSession( SessionRestoreStrategy restore_strategy, const std::string& oauth2_refresh_token, @@ -158,13 +158,13 @@ // process. void CompleteAuthentication(); - // Retrieves IdentityManager for |user_profile_|. + // Retrieves IdentityManager for `user_profile_`. signin::IdentityManager* GetIdentityManager(); - // Retrieves the primary account ID for |user_profile_|. + // Retrieves the primary account ID for `user_profile_`. CoreAccountId GetUnconsentedPrimaryAccountId(); - // Records |refresh_token_| to token service. The associated account id is + // Records `refresh_token_` to token service. The associated account id is // assumed to be the primary account id of the user profile. If the primary // account id is not present, GetAccountInfoOfRefreshToken will be called to // retrieve the associated account info. @@ -174,24 +174,24 @@ // if needed. void VerifySessionCookies(); - // Issue GAIA cookie recovery (MergeSession) from |refresh_token_|. + // Issue GAIA cookie recovery (MergeSession) from `refresh_token_`. void RestoreSessionCookies(); // Checks GAIA error and figures out whether the request should be // re-attempted. bool RetryOnError(const GoogleServiceAuthError& error); - // Changes |state_|, if needed fires observers (OnSessionRestoreStateChanged). + // Changes `state_`, if needed fires observers (OnSessionRestoreStateChanged). void SetSessionRestoreState(SessionRestoreState state); // Testing helper. void SetSessionRestoreStartForTesting(const base::Time& time); - // Records |outcome| of session restore process and sets new |state|. + // Records `outcome` of session restore process and sets new `state`. void RecordSessionRestoreOutcome(SessionRestoreOutcome outcome, SessionRestoreState state); - // Records |outcome| of merge verification check. |is_pre_merge| specifies + // Records `outcome` of merge verification check. `is_pre_merge` specifies // if this is pre or post merge session verification. static void RecordCookiesCheckOutcome(bool is_pre_merge, MergeVerificationOutcome outcome);
diff --git a/chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h b/chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h index 76c27d13..b6bbfcb 100644 --- a/chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h +++ b/chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h
@@ -21,7 +21,7 @@ class OAuth2LoginManagerFactory : public BrowserContextKeyedServiceFactory { public: // Returns the instance of OAuth2LoginManager associated with this - // |profile| (creates one if none exists). + // `profile` (creates one if none exists). static OAuth2LoginManager* GetForProfile(Profile* profile); // Returns an instance of the OAuth2LoginManagerFactory singleton.
diff --git a/chrome/browser/chromeos/login/signin/oauth2_token_fetcher.h b/chrome/browser/chromeos/login/signin/oauth2_token_fetcher.h index 865614c..88ac0e91 100644 --- a/chrome/browser/chromeos/login/signin/oauth2_token_fetcher.h +++ b/chrome/browser/chromeos/login/signin/oauth2_token_fetcher.h
@@ -44,10 +44,10 @@ const std::string& signin_scoped_device_id); private: - // Decides how to proceed on GAIA |error|. If the error looks temporary, - // retries |task| until max retry count is reached. + // Decides how to proceed on GAIA `error`. If the error looks temporary, + // retries `task` until max retry count is reached. // If retry count runs out, or error condition is unrecoverable, it runs - // |error_handler|. + // `error_handler`. void RetryOnError(const GoogleServiceAuthError& error, const base::Closure& task, const base::Closure& error_handler);
diff --git a/chrome/browser/chromeos/login/signin/signin_error_notifier_ash.cc b/chrome/browser/chromeos/login/signin/signin_error_notifier_ash.cc index 62df5ff..579479f 100644 --- a/chrome/browser/chromeos/login/signin/signin_error_notifier_ash.cc +++ b/chrome/browser/chromeos/login/signin/signin_error_notifier_ash.cc
@@ -225,7 +225,7 @@ message_center::NotifierType::SYSTEM_COMPONENT, kProfileSigninNotificationId); - // Set |profile_id| for multi-user notification blocker. + // Set `profile_id` for multi-user notification blocker. notifier_id.profile_id = multi_user_util::GetAccountIdFromProfile(profile_).GetUserEmail(); @@ -262,7 +262,7 @@ message_center::NotifierId notifier_id( message_center::NotifierType::SYSTEM_COMPONENT, kProfileSigninNotificationId); - // Set |profile_id| for multi-user notification blocker. Note the primary user + // Set `profile_id` for multi-user notification blocker. Note the primary user // account id is used to identify the profile for the blocker so it is used // instead of the secondary user account id. notifier_id.profile_id =
diff --git a/chrome/browser/chromeos/login/signin/signin_error_notifier_ash.h b/chrome/browser/chromeos/login/signin/signin_error_notifier_ash.h index fab03a6..13337d2 100644 --- a/chrome/browser/chromeos/login/signin/signin_error_notifier_ash.h +++ b/chrome/browser/chromeos/login/signin/signin_error_notifier_ash.h
@@ -50,11 +50,11 @@ // Handles errors for Secondary Accounts. // Displays a notification that allows users to open crOS Account Manager UI. - // |account_id| is the account identifier (used by the Token Service chain) + // `account_id` is the account identifier (used by the Token Service chain) // for the Secondary Account which received an error. void HandleSecondaryAccountError(const CoreAccountId& account_id); - // |chromeos::AccountManager::CheckDummyGaiaTokenForAllAccounts| callback + // `chromeos::AccountManager::CheckDummyGaiaTokenForAllAccounts` callback // handler. void OnCheckDummyGaiaTokenForAllAccounts( const std::vector<std::pair<chromeos::AccountManager::Account, bool>>& @@ -64,7 +64,7 @@ TokenHandleUtil::TokenHandleStatus status); // Handles clicks on the Secondary Account reauth notification. See - // |message_center::HandleNotificationClickDelegate|. + // `message_center::HandleNotificationClickDelegate`. void HandleSecondaryAccountReauthNotificationClick( base::Optional<int> button_index);
diff --git a/chrome/browser/chromeos/login/signin/signin_error_notifier_ash_unittest.cc b/chrome/browser/chromeos/login/signin/signin_error_notifier_ash_unittest.cc index f4aebbe2..14d139d 100644 --- a/chrome/browser/chromeos/login/signin/signin_error_notifier_ash_unittest.cc +++ b/chrome/browser/chromeos/login/signin/signin_error_notifier_ash_unittest.cc
@@ -164,7 +164,7 @@ SetAuthError( account_id, GoogleServiceAuthError(GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS)); - // Uses the run loop from |BrowserTaskEnvironment|. + // Uses the run loop from `BrowserTaskEnvironment`. base::RunLoop().RunUntilIdle(); EXPECT_TRUE( display_service_->GetNotification(kSecondaryAccountErrorNotificationId));
diff --git a/chrome/browser/chromeos/login/signin/token_handle_fetcher.cc b/chrome/browser/chromeos/login/signin/token_handle_fetcher.cc index a0038ad..a751165 100644 --- a/chrome/browser/chromeos/login/signin/token_handle_fetcher.cc +++ b/chrome/browser/chromeos/login/signin/token_handle_fetcher.cc
@@ -76,7 +76,7 @@ signin::ScopeSet scopes; scopes.insert(GaiaConstants::kOAuth1LoginScope); - // We can use base::Unretained(this) below because |access_token_fetcher_| is + // We can use base::Unretained(this) below because `access_token_fetcher_` is // owned by this object (thus destroyed when this object is destroyed) and // PrimaryAccountAccessTokenFetcher guarantees that it doesn't invoke its // callback after it is destroyed.
diff --git a/chrome/browser/chromeos/login/signin/token_handle_util.cc b/chrome/browser/chromeos/login/signin/token_handle_util.cc index 9acb7a5..6f5f7e4 100644 --- a/chrome/browser/chromeos/login/signin/token_handle_util.cc +++ b/chrome/browser/chromeos/login/signin/token_handle_util.cc
@@ -197,7 +197,7 @@ NotifyDone(); } -// Warning: NotifyDone() deletes |this| +// Warning: NotifyDone() deletes `this` void TokenHandleUtil::TokenDelegate::NotifyDone() { if (owner_) owner_->OnValidationComplete(token_);
diff --git a/chrome/browser/chromeos/login/signin/token_handle_util.h b/chrome/browser/chromeos/login/signin/token_handle_util.h index 2d17555..a11f5fd 100644 --- a/chrome/browser/chromeos/login/signin/token_handle_util.h +++ b/chrome/browser/chromeos/login/signin/token_handle_util.h
@@ -35,24 +35,24 @@ using TokenValidationCallback = base::Callback<void(const AccountId&, TokenHandleStatus)>; - // Returns true if UserManager has token handle associated with |account_id|. + // Returns true if UserManager has token handle associated with `account_id`. static bool HasToken(const AccountId& account_id); - // Returns true if the token status for |account_id| was checked recently + // Returns true if the token status for `account_id` was checked recently // (within kCacheStatusTime). static bool IsRecentlyChecked(const AccountId& account_id); - // Indicates if token handle for |account_id| is missing or marked as invalid. + // Indicates if token handle for `account_id` is missing or marked as invalid. static bool ShouldObtainHandle(const AccountId& account_id); - // Performs token handle check for |account_id|. Will call |callback| with + // Performs token handle check for `account_id`. Will call `callback` with // corresponding result. void CheckToken( const AccountId& account_id, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, const TokenValidationCallback& callback); - // Given the token |handle| store it for |account_id|. + // Given the token `handle` store it for `account_id`. static void StoreTokenHandle(const AccountId& account_id, const std::string& handle);
diff --git a/chrome/browser/chromeos/login/signin_partition_manager.cc b/chrome/browser/chromeos/login/signin_partition_manager.cc index 24ffdb8..ab3293e 100644 --- a/chrome/browser/chromeos/login/signin_partition_manager.cc +++ b/chrome/browser/chromeos/login/signin_partition_manager.cc
@@ -29,7 +29,7 @@ return base::GenerateGUID(); } -// Clears data from the passed storage partition. |partition_data_cleared| +// Clears data from the passed storage partition. `partition_data_cleared` // will be called when all cached data has been cleared. void ClearStoragePartition(content::StoragePartition* storage_partition, base::OnceClosure partition_data_cleared) { @@ -43,8 +43,8 @@ return g_browser_process->system_network_context_manager()->GetContext(); } -// Copies the http auth cache proxy entries with key |cache_key| into -// |signin_storage_partition|'s NetworkContext. +// Copies the http auth cache proxy entries with key `cache_key` into +// `signin_storage_partition`'s NetworkContext. void LoadHttpAuthCacheProxyEntries( content::StoragePartition* signin_storage_partition, base::OnceClosure completion_callback, @@ -53,8 +53,8 @@ cache_key, std::move(completion_callback)); } -// Transfers http auth cache proxy entries from |main_network_context| into -// |signin_storage_partition|'s NetworkContext. +// Transfers http auth cache proxy entries from `main_network_context` into +// `signin_storage_partition`'s NetworkContext. void TransferHttpAuthCacheProxyEntries( network::mojom::NetworkContext* main_network_context, content::StoragePartition* signin_storage_partition,
diff --git a/chrome/browser/chromeos/login/signin_partition_manager.h b/chrome/browser/chromeos/login/signin_partition_manager.h index a688e8777..6bdd9a0c 100644 --- a/chrome/browser/chromeos/login/signin_partition_manager.h +++ b/chrome/browser/chromeos/login/signin_partition_manager.h
@@ -52,16 +52,16 @@ // Creates a new StoragePartition for a sign-in attempt. If a previous // StoragePartition has been created by this SigninPartitionManager, it is // closed (and cleared). - // |embedder_web_contents| is the WebContents instance embedding the webview + // `embedder_web_contents` is the WebContents instance embedding the webview // which will display the sign-in pages. - // |signin_session_started| will be invoked with the partition name of the + // `signin_session_started` will be invoked with the partition name of the // started signin session on completion. void StartSigninSession( content::WebContents* embedder_web_contents, StartSigninSessionDoneCallback signin_session_started); // Closes the current StoragePartition. All cached data in the - // StoragePartition is cleared. |partition_data_cleared| will be called when + // StoragePartition is cleared. `partition_data_cleared` will be called when // clearing of cached data is finished. void CloseCurrentSigninSession(base::OnceClosure partition_data_cleared); @@ -70,7 +70,7 @@ bool IsInSigninSession() const; // Returns the current StoragePartition name. This can be used as a webview's - // |partition| attribute. May only be called when a sign-in session is active, + // `partition` attribute. May only be called when a sign-in session is active, // that is between StartSigninSession and CloseCurrentSigninSession calls. const std::string& GetCurrentStoragePartitionName() const; @@ -79,7 +79,7 @@ // CloseCurrentSigninSession calls. content::StoragePartition* GetCurrentStoragePartition(); - // Returns true if |storage_partition| is the partition in use by the current + // Returns true if `storage_partition` is the partition in use by the current // sign-in session. Returns false if no sign-in session is active. bool IsCurrentSigninStoragePartition( const content::StoragePartition* storage_partition) const; @@ -126,8 +126,8 @@ // The random and unique name of the StoragePartition to be used, is generated // by SigninPartitionManager. std::string current_storage_partition_name_; - // The StoragePartition identified by |storage_partition_domain_| and - // |current_storage_partition_name_|. + // The StoragePartition identified by `storage_partition_domain_` and + // `current_storage_partition_name_`. content::StoragePartition* current_storage_partition_ = nullptr; DISALLOW_COPY_AND_ASSIGN(SigninPartitionManager);
diff --git a/chrome/browser/chromeos/login/supervised/supervised_user_authentication.h b/chrome/browser/chromeos/login/supervised/supervised_user_authentication.h index 5bc7cf0b..6b077431 100644 --- a/chrome/browser/chromeos/login/supervised/supervised_user_authentication.h +++ b/chrome/browser/chromeos/login/supervised/supervised_user_authentication.h
@@ -57,15 +57,15 @@ // Transforms key according to schema specified in Local State. UserContext TransformKey(const UserContext& context); - // Fills |password_data| with |password|-specific data for |user_id|, + // Fills `password_data` with `password`-specific data for `user_id`, // depending on target schema. Does not affect Local State. bool FillDataForNewUser(const std::string& user_id, const std::string& password, base::DictionaryValue* password_data, base::DictionaryValue* extra_data); - // Stores |password_data| for |user_id| in Local State. Only public parts - // of |password_data| will be stored. + // Stores `password_data` for `user_id` in Local State. Only public parts + // of `password_data` will be stored. void StorePasswordData(const std::string& user_id, const base::DictionaryValue& password_data); @@ -92,7 +92,7 @@ const std::string& supervised_user_id, const base::DictionaryValue* password_data); - // Utility method that gets schema version for |user_id| from Local State. + // Utility method that gets schema version for `user_id` from Local State. Schema GetPasswordSchema(const std::string& user_id); static std::string BuildPasswordSignature(
diff --git a/chrome/browser/chromeos/login/test/active_directory_login_mixin.cc b/chrome/browser/chromeos/login/test/active_directory_login_mixin.cc index bc89cf8..cb095c6 100644 --- a/chrome/browser/chromeos/login/test/active_directory_login_mixin.cc +++ b/chrome/browser/chromeos/login/test/active_directory_login_mixin.cc
@@ -178,7 +178,7 @@ } // Checks if Active Directory password change screen is shown. Also checks if -// |invalid_element| is invalidated and all the other elements are valid. +// `invalid_element` is invalidated and all the other elements are valid. void ActiveDirectoryLoginMixin::TestPasswordChangeError( const std::string& invalid_element) { TestPasswordChangeVisible();
diff --git a/chrome/browser/chromeos/login/test/active_directory_login_mixin.h b/chrome/browser/chromeos/login/test/active_directory_login_mixin.h index 18f968f..aa4b23c5 100644 --- a/chrome/browser/chromeos/login/test/active_directory_login_mixin.h +++ b/chrome/browser/chromeos/login/test/active_directory_login_mixin.h
@@ -56,7 +56,7 @@ void TriggerPasswordChangeScreen(); void ClosePasswordChangeScreen(); // Checks if Active Directory password change screen is shown. Also checks if - // |invalid_element| is invalidated and all the other elements are valid. + // `invalid_element` is invalidated and all the other elements are valid. void TestPasswordChangeNoErrors(); void TestPasswordChangeOldPasswordError(); void TestPasswordChangeNewPasswordError();
diff --git a/chrome/browser/chromeos/login/test/device_state_mixin.h b/chrome/browser/chromeos/login/test/device_state_mixin.h index de3a122..fea877b 100644 --- a/chrome/browser/chromeos/login/test/device_state_mixin.h +++ b/chrome/browser/chromeos/login/test/device_state_mixin.h
@@ -66,7 +66,7 @@ std::unique_ptr<ScopedDevicePolicyUpdate> RequestDevicePolicyUpdate(); // Returns ScopedUserPolicyUpdate instance that can be used to set, or update - // local account policy blob for |account_id| (kept in fake session manager + // local account policy blob for `account_id` (kept in fake session manager // client). // // The cached policy value will be updated as the returned @@ -91,7 +91,7 @@ void WriteInstallAttrFile(); void WriteOwnerKey(); - // Whether |state_| value indicates enrolled state. + // Whether `state_` value indicates enrolled state. bool IsEnrolledState() const; // Updates device policy blob stored by fake session manager client.
diff --git a/chrome/browser/chromeos/login/test/dialog_window_waiter.h b/chrome/browser/chromeos/login/test/dialog_window_waiter.h index 79bd849..f3d0d02 100644 --- a/chrome/browser/chromeos/login/test/dialog_window_waiter.h +++ b/chrome/browser/chromeos/login/test/dialog_window_waiter.h
@@ -18,22 +18,22 @@ // Waits for a dialog window to open and become visible. // -// Starts listening for window creation events on construction. |Wait| blocks -// until the expected dialog window is visible. |Wait| returns immediately if -// the expected dialog window is already visible when |Wait| is called. +// Starts listening for window creation events on construction. `Wait` blocks +// until the expected dialog window is visible. `Wait` returns immediately if +// the expected dialog window is already visible when `Wait` is called. // // DialogWindowWaiter is single-use. It can only wait for one dialog to be // opened per lifetime. class DialogWindowWaiter : public aura::EnvObserver, public aura::WindowObserver { public: - // Starts listening for a dialog window to open with title |dialog_title|. + // Starts listening for a dialog window to open with title `dialog_title`. explicit DialogWindowWaiter(const base::string16& dialog_title); ~DialogWindowWaiter() override; - // Blocks until a dialog with title |dialog_title| becomes visible. All calls - // to |Wait| return immediately after the dialog becomes visible during this + // Blocks until a dialog with title `dialog_title` becomes visible. All calls + // to `Wait` return immediately after the dialog becomes visible during this // object's lifetime. void Wait();
diff --git a/chrome/browser/chromeos/login/test/enrollment_helper_mixin.h b/chrome/browser/chromeos/login/test/enrollment_helper_mixin.h index 103ab29..980c9e8 100644 --- a/chrome/browser/chromeos/login/test/enrollment_helper_mixin.h +++ b/chrome/browser/chromeos/login/test/enrollment_helper_mixin.h
@@ -67,7 +67,7 @@ // Configures not to show an attribute prompt. void DisableAttributePromptUpdate(); // Attribute prompt should be displayed during enrollment, and - // |asset_id| / |location| should be sent back to server. + // `asset_id` / `location` should be sent back to server. void ExpectAttributePromptUpdate(const std::string& asset_id, const std::string& location);
diff --git a/chrome/browser/chromeos/login/test/fake_gaia_mixin.h b/chrome/browser/chromeos/login/test/fake_gaia_mixin.h index 9caf312d..0f2b5b90 100644 --- a/chrome/browser/chromeos/login/test/fake_gaia_mixin.h +++ b/chrome/browser/chromeos/login/test/fake_gaia_mixin.h
@@ -42,7 +42,7 @@ // enterprise users. Thus if you derive from this class and don't need // policies, please use @gmail.com e-mail for login. But if you need policies // for your test, you must use e-mail addresses that a) have a potentially - // enterprise domain and b) have been registered with |fake_gaia_|. + // enterprise domain and b) have been registered with `fake_gaia_`. // For your convenience, the e-mail addresses for users that have been set up // in this way are provided below. static const char kEnterpriseUser1[]; @@ -60,7 +60,7 @@ ~FakeGaiaMixin() override; // Sets up fake gaia for the login code: - // - Maps |user_email| to |gaia_id|. If |gaia_id| is empty, |user_email| will + // - Maps `user_email` to `gaia_id`. If `gaia_id` is empty, `user_email` will // be mapped to kDefaultGaiaId in FakeGaia; // - Issues a special all-scope access token associated with the test refresh // token; @@ -68,10 +68,10 @@ const std::string& gaia_id, const std::string& refresh_token); // Sets up fake gaia to serve access tokens for a child user. - // * Maps |user_email| to |gaia_id|. If |gaia_id| is empty, |user_email| + // * Maps `user_email` to `gaia_id`. If `gaia_id` is empty, `user_email` // will be mapped to kDefaultGaiaId in FakeGaia. // * Issues user info token scoped for device management service. - // * If |issue_any_scope_token|, issues a special all-access token + // * If `issue_any_scope_token`, issues a special all-access token // associated with the test refresh token (as it's done in // SetupFakeGaiaForLogin()). // * Initializes fake merge session as needed.
diff --git a/chrome/browser/chromeos/login/test/hid_controller_mixin.cc b/chrome/browser/chromeos/login/test/hid_controller_mixin.cc index fe3d367..cd65d03 100644 --- a/chrome/browser/chromeos/login/test/hid_controller_mixin.cc +++ b/chrome/browser/chromeos/login/test/hid_controller_mixin.cc
@@ -62,7 +62,7 @@ SetUpBluetoothMock(mock_adapter_, true); // Note: The SecureChannel service, which is never destroyed until the - // browser process is killed, utilizes |mock_adapter_|. + // browser process is killed, utilizes `mock_adapter_`. testing::Mock::AllowLeak(mock_adapter_.get()); }
diff --git a/chrome/browser/chromeos/login/test/https_forwarder.cc b/chrome/browser/chromeos/login/test/https_forwarder.cc index 99db546..aa57b423 100644 --- a/chrome/browser/chromeos/login/test/https_forwarder.cc +++ b/chrome/browser/chromeos/login/test/https_forwarder.cc
@@ -109,7 +109,7 @@ // Mark the root certificate used by minica.py as trusted. It will remain // trusted for as long as the HTTPSForwarder object exists. This root cert // will be used by the Python part of the HTTPSForwarder to generate a - // certificate for |ssl_host_|. + // certificate for `ssl_host_`. scoped_refptr<net::X509Certificate> root_cert = net::ImportCertFromFile( net::GetTestCertsDirectory(), "ocsp-test-root.pem"); if (!root_cert)
diff --git a/chrome/browser/chromeos/login/test/https_forwarder.h b/chrome/browser/chromeos/login/test/https_forwarder.h index 9a454fdb..69102bb 100644 --- a/chrome/browser/chromeos/login/test/https_forwarder.h +++ b/chrome/browser/chromeos/login/test/https_forwarder.h
@@ -23,14 +23,14 @@ // An https test server that forwards all requests to another server. This // allows a server that supports http only to be accessed over https. // -// The server will bind to |127.0.0.1| but will present a certificate issued to -// |ssl_host|. +// The server will bind to `127.0.0.1` but will present a certificate issued to +// `ssl_host`. class HTTPSForwarder { public: HTTPSForwarder(); ~HTTPSForwarder(); - // Returns a URL that uses |ssl_host_| as the host. + // Returns a URL that uses `ssl_host_` as the host. GURL GetURLForSSLHost(const std::string& path) const; bool Initialize(const std::string& ssl_host,
diff --git a/chrome/browser/chromeos/login/test/https_forwarder.py b/chrome/browser/chromeos/login/test/https_forwarder.py index 6578871..b998b74 100644 --- a/chrome/browser/chromeos/login/test/https_forwarder.py +++ b/chrome/browser/chromeos/login/test/https_forwarder.py
@@ -49,7 +49,7 @@ """Forwards a GET or POST request to another server. Args: - body: The request body. This should be |None| for GET requests. + body: The request body. This should be `None` for GET requests. """ request_url = urlparse.urlparse(self.path) url = urlparse.urlunparse((self.server.forward_scheme, @@ -156,13 +156,13 @@ Returns: The started server. """ - # The server binds to |host:port| but the certificate is issued to - # |ssl_host| instead. + # The server binds to `host:port` but the certificate is issued to + # `ssl_host` instead. port = self.options.port host = self.options.host ssl_host = self.options.ssl_host - # Allow |ssl_host| to be an IP address or a domain name, and ensure + # Allow `ssl_host` to be an IP address or a domain name, and ensure # it gets added as the appropriate subjectAltName of the generated # certificate. dns_sans = None
diff --git a/chrome/browser/chromeos/login/test/js_checker.h b/chrome/browser/chromeos/login/test/js_checker.h index 4565ed4b..31626d15 100644 --- a/chrome/browser/chromeos/login/test/js_checker.h +++ b/chrome/browser/chromeos/login/test/js_checker.h
@@ -33,24 +33,24 @@ explicit JSChecker(content::WebContents* web_contents); explicit JSChecker(content::RenderFrameHost* frame_host); - // Evaluates |expression|. Evaluation will be completed when this function + // Evaluates `expression`. Evaluation will be completed when this function // call returns. void Evaluate(const std::string& expression); - // Executes |expression|. Doesn't require a correct command. Command will be + // Executes `expression`. Doesn't require a correct command. Command will be // queued up and executed later. This function will return immediately. void ExecuteAsync(const std::string& expression); - // Evaluates |expression| and returns its result. + // Evaluates `expression` and returns its result. WARN_UNUSED_RESULT bool GetBool(const std::string& expression); WARN_UNUSED_RESULT int GetInt(const std::string& expression); WARN_UNUSED_RESULT std::string GetString(const std::string& expression); - // Checks truthfulness of the given |expression|. + // Checks truthfulness of the given `expression`. void ExpectTrue(const std::string& expression); void ExpectFalse(const std::string& expression); - // Compares result of |expression| with |result|. + // Compares result of `expression` with `result`. void ExpectEQ(const std::string& expression, int result); void ExpectNE(const std::string& expression, int result); void ExpectEQ(const std::string& expression, const std::string& result); @@ -58,7 +58,7 @@ void ExpectEQ(const std::string& expression, bool result); void ExpectNE(const std::string& expression, bool result); - // Evaluates value of element with |element_id|'s |attribute| and + // Evaluates value of element with `element_id`'s `attribute` and // returns its result. WARN_UNUSED_RESULT bool GetAttributeBool( const std::string& attribute, @@ -70,7 +70,7 @@ const std::string& attribute, std::initializer_list<base::StringPiece> element_id); - // Compares value of element with |element_id|'s |attribute| with |result|. + // Compares value of element with `element_id`'s `attribute` with `result`. void ExpectAttributeEQ(const std::string& attribute, std::initializer_list<base::StringPiece> element_id, int result); @@ -94,12 +94,12 @@ WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter> CreateFocusWaiter( const std::initializer_list<base::StringPiece>& path); - // Checks test waiter that would await until |js_condition| evaluates + // Checks test waiter that would await until `js_condition` evaluates // to true. WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter> CreateWaiter( const std::string& js_condition); - // Checks test waiter that would await until |js_condition| evaluates + // Checks test waiter that would await until `js_condition` evaluates // to true. WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter> CreateWaiterWithDescription(const std::string& js_condition, @@ -258,7 +258,7 @@ const std::string& attribute, std::initializer_list<base::StringPiece> element_ids); -// Creates a waiter that allows to wait until screen with |oobe_screen_id| is +// Creates a waiter that allows to wait until screen with `oobe_screen_id` is // shown in webui. WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter> CreateOobeScreenWaiter( const std::string& oobe_screen_id);
diff --git a/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h b/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h index cf1071d..83846db 100644 --- a/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h +++ b/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h
@@ -52,7 +52,7 @@ const enterprise_management::ChromeDeviceSettingsProto& policy); // Updates user policy blob served by the local policy test server. - // |policy_user| - the policy user's email. + // `policy_user` - the policy user's email. bool UpdateUserPolicy( const enterprise_management::CloudPolicySettings& policy, const std::string& policy_user); @@ -60,7 +60,7 @@ // Updates user policies served by the local policy test server, by // configuring ser of mandatory and recommended policies that should be // returned for the policy user. - // |policy_user| - the policy user's email. + // `policy_user` - the policy user's email. bool UpdateUserPolicy(const base::Value& mandatory_policy, const base::Value& recommended_policy, const std::string& policy_user); @@ -75,7 +75,7 @@ void SetFakeAttestationFlow(); // Configures server to respond with particular error code during requests. - // |net_error_code| - error code from device_management_service.cc. + // `net_error_code` - error code from device_management_service.cc. void SetExpectedDeviceEnrollmentError(int net_error_code); void SetExpectedDeviceAttributeUpdateError(int net_error_code); void SetExpectedPolicyFetchError(int net_error_code); @@ -99,7 +99,7 @@ // Utility function that configures server parameters for zero-touch // enrollment. Should be used in conjunction with enabling zero-touch - // via command line and calling |ConfigureFakeStatisticsForZeroTouch|. + // via command line and calling `ConfigureFakeStatisticsForZeroTouch`. void SetupZeroTouchForcedEnrollment(); // Configures fake statistics provider with values that can be used with
diff --git a/chrome/browser/chromeos/login/test/local_state_mixin.cc b/chrome/browser/chromeos/login/test/local_state_mixin.cc index 3dcbd66e..73edd90 100644 --- a/chrome/browser/chromeos/login/test/local_state_mixin.cc +++ b/chrome/browser/chromeos/login/test/local_state_mixin.cc
@@ -48,7 +48,7 @@ void LocalStateMixin::CreatedBrowserMainParts( content::BrowserMainParts* browser_main_parts) { - // |browser_main_parts| take ownership of TestUserRegistrationMainExtra. + // `browser_main_parts` take ownership of TestUserRegistrationMainExtra. static_cast<ChromeBrowserMainParts*>(browser_main_parts) ->AddParts(std::make_unique<TestMainExtraPart>(delegate_)); }
diff --git a/chrome/browser/chromeos/login/test/login_manager_mixin.h b/chrome/browser/chromeos/login/test/login_manager_mixin.h index 363b036..68bb63f 100644 --- a/chrome/browser/chromeos/login/test/login_manager_mixin.h +++ b/chrome/browser/chromeos/login/test/login_manager_mixin.h
@@ -37,11 +37,11 @@ public: // Represents test user. struct TestUserInfo { - // Creates test user with regular user type from the given |account_id|. + // Creates test user with regular user type from the given `account_id`. explicit TestUserInfo(const AccountId& account_id) : TestUserInfo(account_id, user_manager::USER_TYPE_REGULAR) {} - // Creates test user with |user_type| from the given |account_id|. + // Creates test user with `user_type` from the given `account_id`. TestUserInfo(const AccountId& account_id, user_manager::UserType user_type) : TestUserInfo(account_id, user_type, @@ -107,7 +107,7 @@ void SetUpLocalState() override; // Starts login attempt for a user, using the stub authenticator provided by - // |authenticator_builder|. + // `authenticator_builder`. // Note that this will not wait for the login attempt to finish. void AttemptLoginUsingAuthenticator( const UserContext& user_context,
diff --git a/chrome/browser/chromeos/login/test/oobe_auth_page_waiter.h b/chrome/browser/chromeos/login/test/oobe_auth_page_waiter.h index 4c1de1e1..c41f6dac 100644 --- a/chrome/browser/chromeos/login/test/oobe_auth_page_waiter.h +++ b/chrome/browser/chromeos/login/test/oobe_auth_page_waiter.h
@@ -20,7 +20,7 @@ enum class AuthPageType { GAIA, ENROLLMENT }; // Gaia Login and Enrollment screens use different authenticators. - // |auth_page_type| specifies which authenticator to wait for. + // `auth_page_type` specifies which authenticator to wait for. explicit OobeAuthPageWaiter(AuthPageType auth_page_type); ~OobeAuthPageWaiter(); @@ -28,7 +28,7 @@ void WaitUntilReady(); private: - // Waits for |event| to be triggered by the page authenticator. + // Waits for `event` to be triggered by the page authenticator. void WaitForEvent(const std::string& event); const char* GetAuthenticator();
diff --git a/chrome/browser/chromeos/login/test/oobe_configuration_waiter.h b/chrome/browser/chromeos/login/test/oobe_configuration_waiter.h index 26fd2f6..4d6e321 100644 --- a/chrome/browser/chromeos/login/test/oobe_configuration_waiter.h +++ b/chrome/browser/chromeos/login/test/oobe_configuration_waiter.h
@@ -22,7 +22,7 @@ // OobeConfiguration::Observer override: void OnOobeConfigurationChanged() override; - // Return |true| or register wait callback until configuration is loaded. + // Return `true` or register wait callback until configuration is loaded. bool IsConfigurationLoaded(base::OnceClosure callback); private:
diff --git a/chrome/browser/chromeos/login/test/scoped_help_app_for_test.h b/chrome/browser/chromeos/login/test/scoped_help_app_for_test.h index 68a445d..8692e333 100644 --- a/chrome/browser/chromeos/login/test/scoped_help_app_for_test.h +++ b/chrome/browser/chromeos/login/test/scoped_help_app_for_test.h
@@ -10,9 +10,9 @@ namespace chromeos { // An object that loads a test version of the HelpApp extension for use in -// tests. While this object is in scope |HelpAppLauncher| sends requests to the +// tests. While this object is in scope `HelpAppLauncher` sends requests to the // loaded test HelpApp extension. When this object goes out of scope -// |HelpAppLauncher| reverts to sending requests to the production extension. +// `HelpAppLauncher` reverts to sending requests to the production extension. class ScopedHelpAppForTest { public: ScopedHelpAppForTest();
diff --git a/chrome/browser/chromeos/login/test/scoped_policy_update.h b/chrome/browser/chromeos/login/test/scoped_policy_update.h index 0954b79c..595c22b 100644 --- a/chrome/browser/chromeos/login/test/scoped_policy_update.h +++ b/chrome/browser/chromeos/login/test/scoped_policy_update.h
@@ -14,9 +14,9 @@ // Helper that is used by mixins to provide means for setting up user policy // values to tests that need that functionality. This does not build, nor apply -// updated policy - that's expected to be done in |callback|. +// updated policy - that's expected to be done in `callback`. // -// |callback| - Called when this object goes out of scope. +// `callback` - Called when this object goes out of scope. class ScopedUserPolicyUpdate { public: explicit ScopedUserPolicyUpdate(policy::UserPolicyBuilder* policy_builder, @@ -43,9 +43,9 @@ // Helper that is used by mixins to provide means for setting up device policy // values to tests that need that functionality. This does not build, nor apply -// updated policy - that's expected to be done in |callback|. +// updated policy - that's expected to be done in `callback`. // -// |callback| - Called when this object goes out of scope. +// `callback` - Called when this object goes out of scope. class ScopedDevicePolicyUpdate { public: explicit ScopedDevicePolicyUpdate(policy::DevicePolicyBuilder* policy_builder,
diff --git a/chrome/browser/chromeos/login/test/session_flags_manager.h b/chrome/browser/chromeos/login/test/session_flags_manager.h index 27a9680..269972a 100644 --- a/chrome/browser/chromeos/login/test/session_flags_manager.h +++ b/chrome/browser/chromeos/login/test/session_flags_manager.h
@@ -103,7 +103,7 @@ // List of switches passed as a restart job arguments. base::Optional<std::vector<Switch>> restart_job_; - // If |session_restore_enabled_| is set, the path to the file where session + // If `session_restore_enabled_` is set, the path to the file where session // state is saved. base::FilePath backing_file_;
diff --git a/chrome/browser/chromeos/login/test/session_manager_state_waiter.h b/chrome/browser/chromeos/login/test/session_manager_state_waiter.h index 63fdb39..3006dcc 100644 --- a/chrome/browser/chromeos/login/test/session_manager_state_waiter.h +++ b/chrome/browser/chromeos/login/test/session_manager_state_waiter.h
@@ -25,7 +25,7 @@ // Used to wait for session manager to get into a specific session state. class SessionStateWaiter : public session_manager::SessionManagerObserver { public: - // If |target_state| is null, SessionStateWaiter will simply wait until a + // If `target_state` is null, SessionStateWaiter will simply wait until a // session starts. explicit SessionStateWaiter(base::Optional<session_manager::SessionState> target_state = base::nullopt);
diff --git a/chrome/browser/chromeos/login/test/webview_content_extractor.cc b/chrome/browser/chromeos/login/test/webview_content_extractor.cc index 0a297d3..fdef96f 100644 --- a/chrome/browser/chromeos/login/test/webview_content_extractor.cc +++ b/chrome/browser/chromeos/login/test/webview_content_extractor.cc
@@ -48,7 +48,7 @@ }; // Helper invoked by GuestViewManager::ForEachGuest to collect WebContents of -// Webview named as |web_view_name|. +// Webview named as `web_view_name`. bool AddNamedWebContentsToSet(std::set<content::WebContents*>* frame_set, const std::string& web_view_name, content::WebContents* web_contents) {
diff --git a/chrome/browser/chromeos/login/test/webview_content_extractor.h b/chrome/browser/chromeos/login/test/webview_content_extractor.h index 275f7a5..72aecb3 100644 --- a/chrome/browser/chromeos/login/test/webview_content_extractor.h +++ b/chrome/browser/chromeos/login/test/webview_content_extractor.h
@@ -10,7 +10,7 @@ namespace chromeos { namespace test { -// Returns the contents of the <webview> identified by |element_ids|. +// Returns the contents of the <webview> identified by `element_ids`. std::string GetWebViewContents( std::initializer_list<base::StringPiece> element_ids);
diff --git a/chrome/browser/chromeos/login/ui/captive_portal_view.cc b/chrome/browser/chromeos/login/ui/captive_portal_view.cc index d4f4b6c1..76a722f 100644 --- a/chrome/browser/chromeos/login/ui/captive_portal_view.cc +++ b/chrome/browser/chromeos/login/ui/captive_portal_view.cc
@@ -55,7 +55,7 @@ // Naive way to determine the redirection. This won't be needed after portal // detection will be done on the Chrome side. GURL url = source->GetLastCommittedURL(); - // Note, |url| will be empty for "client3.google.com/generate_204" page. + // Note, `url` will be empty for "client3.google.com/generate_204" page. if (!redirected_ && url != GURL::EmptyGURL() && url != GURL(CaptivePortalStartURL())) { redirected_ = true;
diff --git a/chrome/browser/chromeos/login/ui/captive_portal_window_proxy.h b/chrome/browser/chromeos/login/ui/captive_portal_window_proxy.h index b9172c0..bded0965 100644 --- a/chrome/browser/chromeos/login/ui/captive_portal_window_proxy.h +++ b/chrome/browser/chromeos/login/ui/captive_portal_window_proxy.h
@@ -106,15 +106,15 @@ STATE_UNKNOWN }; - // Initializes |captive_portal_view_| if it is not initialized and + // Initializes `captive_portal_view_` if it is not initialized and // starts loading Captive Portal redirect URL. void InitCaptivePortalView(); // Returns symbolic state name based on internal state. State GetState() const; - // When |widget| is not NULL and the same as |widget_| stops to observe - // notifications from |widget_| and resets it. + // When `widget` is not NULL and the same as `widget_` stops to observe + // notifications from `widget_` and resets it. void DetachFromWidget(views::Widget* widget); CaptivePortalView* captive_portal_view_for_testing() {
diff --git a/chrome/browser/chromeos/login/ui/login_display.h b/chrome/browser/chromeos/login/ui/login_display.h index dae1f2d..c79914c5 100644 --- a/chrome/browser/chromeos/login/ui/login_display.h +++ b/chrome/browser/chromeos/login/ui/login_display.h
@@ -29,7 +29,7 @@ public: class Delegate { public: - // Sign in using |username| and |password| specified. + // Sign in using `username` and `password` specified. // Used for known users only. virtual void Login(const UserContext& user_context, const SigninSpecifics& specifics) = 0; @@ -79,14 +79,14 @@ // Changes enabled state of the UI. virtual void SetUIEnabled(bool is_enabled) = 0; - // Displays simple error bubble with |error_msg_id| specified. - // |login_attempts| shows number of login attempts made by current user. - // |help_topic_id| is additional help topic that is presented as link. + // Displays simple error bubble with `error_msg_id` specified. + // `login_attempts` shows number of login attempts made by current user. + // `help_topic_id` is additional help topic that is presented as link. virtual void ShowError(int error_msg_id, int login_attempts, HelpAppLauncher::HelpTopic help_topic_id) = 0; - // Show password changed dialog. If |show_password_error| is not null + // Show password changed dialog. If `show_password_error` is not null // user already tried to enter old password but it turned out to be incorrect. virtual void ShowPasswordChangedDialog(bool show_password_error, const AccountId& account_id) = 0;
diff --git a/chrome/browser/chromeos/login/ui/login_display_host.h b/chrome/browser/chromeos/login/ui/login_display_host.h index 1ab1fa4..51c2826 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host.h +++ b/chrome/browser/chromeos/login/ui/login_display_host.h
@@ -67,7 +67,7 @@ public: class Observer : public base::CheckedObserver { public: - // |bounds| is the WebDialogView's bounds in screen coordinate system. + // `bounds` is the WebDialogView's bounds in screen coordinate system. virtual void WebDialogViewBoundsChanged(const gfx::Rect& bounds) = 0; }; @@ -96,7 +96,7 @@ virtual void BeforeSessionStart() = 0; // Called when user enters or returns to browsing session so LoginDisplayHost - // instance may delete itself. |completion_callback| will be invoked when the + // instance may delete itself. `completion_callback` will be invoked when the // instance is gone. virtual void Finalize(base::OnceClosure completion_callback) = 0; @@ -109,7 +109,7 @@ // Starts out-of-box-experience flow or shows other screen handled by // Wizard controller i.e. camera, recovery. - // One could specify start screen with |first_screen|. + // One could specify start screen with `first_screen`. virtual void StartWizard(OobeScreenId first_screen) = 0; // Returns current WizardController, if it exists. @@ -121,8 +121,8 @@ virtual KioskLaunchController* GetKioskLaunchController() = 0; // Starts screen for adding user into session. - // |completion_callback| is invoked after login display host shutdown. - // |completion_callback| can be null. + // `completion_callback` is invoked after login display host shutdown. + // `completion_callback` can be null. virtual void StartUserAdding(base::OnceClosure completion_callback) = 0; // Cancel addint user into session. @@ -140,12 +140,12 @@ // Starts the demo app launch. virtual void StartDemoAppLaunch() = 0; - // Start kiosk identified by |kiosk_app-id| splash screen. if |is_auto_launch| is - // true, the app is being auto-launched with no delay. + // Start kiosk identified by `kiosk_app_id` splash screen. if `is_auto_launch` + // is true, the app is being auto-launched with no delay. virtual void StartKiosk(const KioskAppId& kiosk_app_id, bool is_auto_launch) = 0; - // Show the gaia dialog. If available, |account| is preloaded in the gaia + // Show the gaia dialog. If available, `account` is preloaded in the gaia // dialog. virtual void ShowGaiaDialog(const AccountId& prefilled_account) = 0; @@ -155,7 +155,7 @@ // Update the state of the oobe dialog. virtual void UpdateOobeDialogState(ash::OobeDialogState state) = 0; - // Confirms sign in by provided credentials in |user_context|. + // Confirms sign in by provided credentials in `user_context`. // Used for new user login via GAIA extension. virtual void CompleteLogin(const UserContext& user_context) = 0; @@ -163,16 +163,16 @@ virtual void OnGaiaScreenReady() = 0; // Sets the displayed email for the next login attempt. If it succeeds, - // user's displayed email value will be updated to |email|. + // user's displayed email value will be updated to `email`. virtual void SetDisplayEmail(const std::string& email) = 0; // Sets the displayed name and given name for the next login attempt. If it // succeeds, user's displayed name and give name values will be updated to - // |display_name| and |given_name|. + // `display_name` and `given_name`. virtual void SetDisplayAndGivenName(const std::string& display_name, const std::string& given_name) = 0; - // Load wallpaper for given |account_id|. + // Load wallpaper for given `account_id`. virtual void LoadWallpaper(const AccountId& account_id) = 0; // Loads the default sign-in wallpaper. @@ -187,7 +187,7 @@ // Cancels current password changed flow. virtual void CancelPasswordChangedFlow() = 0; - // Decrypt cryptohome using user provided |old_password| and migrate to new + // Decrypt cryptohome using user provided `old_password` and migrate to new // password. virtual void MigrateUserData(const std::string& old_password) = 0; @@ -196,7 +196,7 @@ virtual void ResyncUserData() = 0; // Handles an accelerator action. - // Returns |true| if the accelerator was handled. + // Returns `true` if the accelerator was handled. virtual bool HandleAccelerator(ash::LoginAcceleratorAction action) = 0; // Handles a request to show the captive portal web dialog. For webui, the
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_common.cc b/chrome/browser/chromeos/login/ui/login_display_host_common.cc index 902ffbc..e4d47a8 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_common.cc +++ b/chrome/browser/chromeos/login/ui/login_display_host_common.cc
@@ -148,7 +148,7 @@ << static_cast<int>(kiosk_app_id.type); SetStatusAreaVisible(false); - // Wait for the |CrosSettings| to become either trusted or permanently + // Wait for the `CrosSettings` to become either trusted or permanently // untrusted. const CrosSettingsProvider::TrustedStatus status = CrosSettings::Get()->PrepareTrustedValues(base::BindOnce( @@ -158,7 +158,7 @@ return; if (status == CrosSettingsProvider::PERMANENTLY_UNTRUSTED) { - // If the |CrosSettings| are permanently untrusted, refuse to launch a + // If the `CrosSettings` are permanently untrusted, refuse to launch a // single-app kiosk mode session. LOG(ERROR) << "Login >> Refusing to launch single-app kiosk mode."; SetStatusAreaVisible(true);
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_common.h b/chrome/browser/chromeos/login/ui/login_display_host_common.h index 93c5485a..7bdd68da 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_common.h +++ b/chrome/browser/chromeos/login/ui/login_display_host_common.h
@@ -76,7 +76,7 @@ virtual void OnFinalize() = 0; virtual void OnCancelPasswordChangedFlow() = 0; - // Deletes |auth_prewarmer_|. + // Deletes `auth_prewarmer_`. void OnAuthPrewarmDone(); // Marks display host for deletion.
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_mojo.h b/chrome/browser/chromeos/login/ui/login_display_host_mojo.h index 6bbe6dd..5836561 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_mojo.h +++ b/chrome/browser/chromeos/login/ui/login_display_host_mojo.h
@@ -57,7 +57,7 @@ void SetUserCount(int user_count); - // Show password changed dialog. If |show_password_error| is true, user + // Show password changed dialog. If `show_password_error` is true, user // already tried to enter old password but it turned out to be incorrect. void ShowPasswordChangedDialog(bool show_password_error, const AccountId& account_id); @@ -144,7 +144,7 @@ private: void LoadOobeDialog(); - // Callback to be invoked when the |challenge_response_auth_keys_loader_| + // Callback to be invoked when the `challenge_response_auth_keys_loader_` // completes building the currently available challenge-response keys. Used // only during the challenge-response authentication. void OnChallengeResponseKeysPrepared( @@ -157,10 +157,10 @@ void ShowFullScreen(); void HideDialog(); - // Adds this as a |OobeUI::Observer| if it has not already been added as one. + // Adds this as a `OobeUI::Observer` if it has not already been added as one. void ObserveOobeUI(); - // Removes this as a |OobeUI::Observer| if it has been added as an observer. + // Removes this as a `OobeUI::Observer` if it has been added as an observer. void StopObservingOobeUI(); // Create ExistingUserController and link it to LoginDisplayHostMojo so we can @@ -209,7 +209,7 @@ SecurityTokenPinDialogHostAshImpl security_token_pin_dialog_host_ash_impl_; - // Set if this has been added as a |OobeUI::Observer|. + // Set if this has been added as a `OobeUI::Observer`. bool added_as_oobe_observer_ = false; // Set if Gaia dialog is shown with prefilled email.
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc index cab13f4..05371f5 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc +++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
@@ -305,7 +305,7 @@ } // Triggers ShowLoginWizardFinish directly if no locale switch is required -// (|switch_locale| is empty) or after a locale switch otherwise. +// (`switch_locale` is empty) or after a locale switch otherwise. void TriggerShowLoginWizardFinish( std::string switch_locale, std::unique_ptr<ShowLoginWizardSwitchLanguageCallbackData> data) { @@ -938,9 +938,9 @@ ash::LoginScreen::Get()->GetModel()->NotifyOobeDialogState( ash::OobeDialogState::HIDDEN); - // Make sure to reset the |login_view_| pointer first; it is owned by - // |login_window_|. Closing |login_window_| could immediately invalidate the - // |login_view_| pointer. + // Make sure to reset the `login_view_` pointer first; it is owned by + // `login_window_`. Closing `login_window_` could immediately invalidate the + // `login_view_` pointer. if (login_view_) { login_view_->SetUIEnabled(true); login_view_ = nullptr; @@ -1075,7 +1075,7 @@ input_method::InputMethodManager* manager = input_method::InputMethodManager::Get(); - // Set up keyboards. For example, when |locale| is "en-US", enable US qwerty + // Set up keyboards. For example, when `locale` is "en-US", enable US qwerty // and US dvorak keyboard layouts. if (g_browser_process && g_browser_process->local_state()) { manager->GetActiveIMEState()->SetInputMethodLoginDefault();
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.h b/chrome/browser/chromeos/login/ui/login_display_host_webui.h index 21b117e..ffc753e 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_webui.h +++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.h
@@ -168,10 +168,10 @@ // Shows OOBE/sign in WebUI that was previously initialized in hidden state. void ShowWebUI(); - // Initializes |login_window_| and |login_view_| fields if needed. + // Initializes `login_window_` and `login_view_` fields if needed. void InitLoginWindowAndView(); - // Closes |login_window_| and resets |login_window_| and |login_view_| fields. + // Closes `login_window_` and resets `login_window_` and `login_view_` fields. void ResetLoginWindowAndView(); // Toggles OOBE progress bar visibility, the bar is hidden by default. @@ -185,7 +185,7 @@ // Called when login-prompt-visible signal is caught. void OnLoginPromptVisible(); - // Creates or recreates |existing_user_controller_|. + // Creates or recreates `existing_user_controller_`. void CreateExistingUserController(); // Plays startup sound if needed and audio device is ready.
diff --git a/chrome/browser/chromeos/login/ui/login_feedback.cc b/chrome/browser/chromeos/login/ui/login_feedback.cc index 41211fe6c..42603a1 100644 --- a/chrome/browser/chromeos/login/ui/login_feedback.cc +++ b/chrome/browser/chromeos/login/ui/login_feedback.cc
@@ -52,7 +52,7 @@ ~FeedbackExtensionLoader() override; // Loads the feedback extension on the given profile and invokes - // |on_ready_callback| when it is ready. + // `on_ready_callback` when it is ready. void Load(base::OnceClosure on_ready_callback); private:
diff --git a/chrome/browser/chromeos/login/ui/login_feedback.h b/chrome/browser/chromeos/login/ui/login_feedback.h index 01396d0..641f644d 100644 --- a/chrome/browser/chromeos/login/ui/login_feedback.h +++ b/chrome/browser/chromeos/login/ui/login_feedback.h
@@ -25,7 +25,7 @@ explicit LoginFeedback(Profile* signin_profile); ~LoginFeedback(); - // Request to show the feedback UI with |description|. |finished_callback| + // Request to show the feedback UI with `description`. `finished_callback` // will be invoked when the feedback UI is closed, either cancel or send the // feedback. void Request(const std::string& description,
diff --git a/chrome/browser/chromeos/login/ui/login_screen_extension_ui/dialog_delegate_unittest.cc b/chrome/browser/chromeos/login/ui/login_screen_extension_ui/dialog_delegate_unittest.cc index a726a3d..fc61f04 100644 --- a/chrome/browser/chromeos/login/ui/login_screen_extension_ui/dialog_delegate_unittest.cc +++ b/chrome/browser/chromeos/login/ui/login_screen_extension_ui/dialog_delegate_unittest.cc
@@ -47,7 +47,7 @@ extension->short_name(), extension->GetResourceURL(kResourcePath), false /*can_be_closed_by_user*/, close_callback_wait.QuitClosure()); - // |delegate| will delete itself when calling |OnDialogClosed()| at the end of + // `delegate` will delete itself when calling `OnDialogClosed()` at the end of // the test. DialogDelegate* delegate = new DialogDelegate(&create_options);
diff --git a/chrome/browser/chromeos/login/ui/login_screen_extension_ui/web_dialog_view.h b/chrome/browser/chromeos/login/ui/login_screen_extension_ui/web_dialog_view.h index 85d4456..2dc690da 100644 --- a/chrome/browser/chromeos/login/ui/login_screen_extension_ui/web_dialog_view.h +++ b/chrome/browser/chromeos/login/ui/login_screen_extension_ui/web_dialog_view.h
@@ -25,7 +25,7 @@ class DialogDelegate; // A WebDialogView used by chrome.loginScreenUi API calls. It hides the close -// button if |DialogDelegate::CanCloseDialog()| is false. +// button if `DialogDelegate::CanCloseDialog()` is false. class WebDialogView : public views::WebDialogView, public ash::SystemTrayFocusObserver { public:
diff --git a/chrome/browser/chromeos/login/ui/login_screen_extension_ui/window.h b/chrome/browser/chromeos/login/ui/login_screen_extension_ui/window.h index 035bbff..4d9dc56 100644 --- a/chrome/browser/chromeos/login/ui/login_screen_extension_ui/window.h +++ b/chrome/browser/chromeos/login/ui/login_screen_extension_ui/window.h
@@ -25,7 +25,7 @@ // chrome.loginScreenUi API. It manages the window's widget, view and delegate, // which are all automatically deleted when the widget closes. // The window is not draggable, and has a close button which is not visible -// if |create_options.can_be_closed_by_user| is false. +// if `create_options.can_be_closed_by_user` is false. class Window { public: explicit Window(CreateOptions* create_options);
diff --git a/chrome/browser/chromeos/login/ui/login_web_dialog.cc b/chrome/browser/chromeos/login/ui/login_web_dialog.cc index 57b0046..205d2d9ef 100644 --- a/chrome/browser/chromeos/login/ui/login_web_dialog.cc +++ b/chrome/browser/chromeos/login/ui/login_web_dialog.cc
@@ -157,7 +157,7 @@ const content::OpenURLParams& params, WebContents** out_new_contents) { // On a login screen, if a missing extension is trying to show in a web - // dialog, a NetErrorHelper is displayed instead (hence we have a |source|), + // dialog, a NetErrorHelper is displayed instead (hence we have a `source`), // but there is no browser window associated with it. A helper screen will // fire an auto-reload, which in turn leads to opening a new browser window, // so we must suppress it.
diff --git a/chrome/browser/chromeos/login/ui/login_web_dialog.h b/chrome/browser/chromeos/login/ui/login_web_dialog.h index fb831ae..55124ee2 100644 --- a/chrome/browser/chromeos/login/ui/login_web_dialog.h +++ b/chrome/browser/chromeos/login/ui/login_web_dialog.h
@@ -34,7 +34,7 @@ virtual ~Delegate() {} }; - // If |parent_window| is null then the dialog is placed in the modal dialog + // If `parent_window` is null then the dialog is placed in the modal dialog // container on the primary display. LoginWebDialog(content::BrowserContext* browser_context, Delegate* delegate, @@ -50,7 +50,7 @@ static content::WebContents* GetCurrentWebContents(); - // Returns |dialog_window_| instance for test, can be NULL if dialog is not + // Returns `dialog_window_` instance for test, can be NULL if dialog is not // shown or closed. gfx::NativeWindow get_dialog_window_for_test() const { return dialog_window_;
diff --git a/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.h b/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.h index c4986d41..9ad65d8 100644 --- a/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.h +++ b/chrome/browser/chromeos/login/ui/oobe_dialog_size_utils.h
@@ -27,9 +27,9 @@ extern const gfx::Size kMinDialogSize; extern const gfx::Insets kMinMargins; -// Position OOBE dialog according to specs inside |host_bounds| excluding shelf. -// |host_bounds| is in coordinates of oobe dialog widget. |result| is -// in the same coordinates of |host_bounds|. +// Position OOBE dialog according to specs inside `host_bounds` excluding shelf. +// `host_bounds` is in coordinates of oobe dialog widget. `result` is +// in the same coordinates of `host_bounds`. void CalculateOobeDialogBounds(const gfx::Rect& host_bounds, int shelf_height, gfx::Rect* result,
diff --git a/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.cc b/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.cc index 27fc1def..227505f 100644 --- a/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.cc +++ b/chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.cc
@@ -317,8 +317,8 @@ } DCHECK(!dialog_view_ && !widget_); - // Life cycle of |dialog_view_| is managed by the widget: - // Widget owns a root view which has |dialog_view_| as its child view. + // Life cycle of `dialog_view_` is managed by the widget: + // Widget owns a root view which has `dialog_view_` as its child view. // Before the widget is destroyed, it will clean up the view hierarchy // starting from root view. dialog_view_ =
diff --git a/chrome/browser/chromeos/login/ui/simple_web_view_dialog.cc b/chrome/browser/chromeos/login/ui/simple_web_view_dialog.cc index 892a6ef..8fb72e6 100644 --- a/chrome/browser/chromeos/login/ui/simple_web_view_dialog.cc +++ b/chrome/browser/chromeos/login/ui/simple_web_view_dialog.cc
@@ -208,8 +208,8 @@ // Add the views as child views before the grid layout is installed. This // ensures ownership is more clear. ToolbarRowView* toolbar_row_ptr = AddChildView(std::move(toolbar_row)); - // Transfer ownership of the |web_view_| from the |web_view_container_| - // created in StartLoad() to |this|. + // Transfer ownership of the `web_view_` from the `web_view_container_` + // created in StartLoad() to `this`. AddChildView(std::move(web_view_container_)); // Layout.
diff --git a/chrome/browser/chromeos/login/ui/simple_web_view_dialog.h b/chrome/browser/chromeos/login/ui/simple_web_view_dialog.h index 01d880c..dbce662 100644 --- a/chrome/browser/chromeos/login/ui/simple_web_view_dialog.h +++ b/chrome/browser/chromeos/login/ui/simple_web_view_dialog.h
@@ -99,7 +99,7 @@ LocationBarView* location_bar_ = nullptr; views::WebView* web_view_ = nullptr; - // Will own the |web_view_| until it is added as a child to the to the simple + // Will own the `web_view_` until it is added as a child to the to the simple // web view dialog. std::unique_ptr<views::WebView> web_view_container_;
diff --git a/chrome/browser/chromeos/login/user_board_view_mojo.cc b/chrome/browser/chromeos/login/user_board_view_mojo.cc index 19a68af..3349952 100644 --- a/chrome/browser/chromeos/login/user_board_view_mojo.cc +++ b/chrome/browser/chromeos/login/user_board_view_mojo.cc
@@ -85,7 +85,7 @@ lock_screen_utils::FromListValueToLocaleItem(std::move(locales)), default_locale, multiple_recommended_locales); - // Send a request to get keyboard layouts for |default_locale|. + // Send a request to get keyboard layouts for `default_locale`. LoginScreenClient::Get()->RequestPublicSessionKeyboardLayouts(account_id, default_locale); }
diff --git a/chrome/browser/chromeos/login/users/affiliation.h b/chrome/browser/chromeos/login/users/affiliation.h index 69bac2fa..491ff06 100644 --- a/chrome/browser/chromeos/login/users/affiliation.h +++ b/chrome/browser/chromeos/login/users/affiliation.h
@@ -25,15 +25,15 @@ // TODO(peletskyi): Remove email after affiliation based implementation will // fully work. http://crbug.com/515476 -// The function makes a decision if user with |user_affiliation_ids| and -// |email| is affiliated on the device with |device_affiliation_ids| and -// |enterprise_domain|. +// The function makes a decision if user with `user_affiliation_ids` and +// `email` is affiliated on the device with `device_affiliation_ids` and +// `enterprise_domain`. bool IsUserAffiliated(const AffiliationIDSet& user_affiliation_ids, const AffiliationIDSet& device_affiliation_ids, const std::string& email); // Returns a callback to retrieve device DMToken if the user with -// given |account_id| is affiliated on the device. +// given `account_id` is affiliated on the device. base::RepeatingCallback<std::string(const std::vector<std::string>&)> GetDeviceDMTokenForUserPolicyGetter(const AccountId& account_id);
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_loader.cc b/chrome/browser/chromeos/login/users/avatar/user_image_loader.cc index 6e6f6d84..1b96a1b 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_loader.cc +++ b/chrome/browser/chromeos/login/users/avatar/user_image_loader.cc
@@ -49,11 +49,11 @@ LoadedCallback loaded_cb; }; -// Crops |image| to the square format and downsizes the image to -// |target_size| in pixels. On success, returns the bytes representation and -// stores the cropped image in |bitmap|, and the format of the bytes -// representation in |image_format|. On failure, returns nullptr, and -// the contents of |bitmap| and |image_format| are undefined. +// Crops `image` to the square format and downsizes the image to +// `target_size` in pixels. On success, returns the bytes representation and +// stores the cropped image in `bitmap`, and the format of the bytes +// representation in `image_format`. On failure, returns nullptr, and +// the contents of `bitmap` and `image_format` are undefined. scoped_refptr<base::RefCountedBytes> CropImage( const SkBitmap& image, int target_size, @@ -128,8 +128,8 @@ user_manager::UserImage::ImageFormat* image_format, scoped_refptr<base::RefCountedBytes> bytes); - // Called after the image is finalized. |image_bytes_regenerated| is true - // if |image_bytes| is regenerated from the cropped image. + // Called after the image is finalized. `image_bytes_regenerated` is true + // if `image_bytes` is regenerated from the cropped image. void OnImageFinalized(const SkBitmap& image, user_manager::UserImage::ImageFormat image_format, scoped_refptr<base::RefCountedBytes> image_bytes, @@ -211,8 +211,8 @@ delete this; } -// Starts decoding the image with ImageDecoder for the image |data| if -// |data_is_ready| is true. +// Starts decoding the image with ImageDecoder for the image `data` if +// `data_is_ready` is true. void DecodeImage( ImageInfo image_info, scoped_refptr<base::SequencedTaskRunner> background_task_runner,
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_loader.h b/chrome/browser/chromeos/login/users/avatar/user_image_loader.h index 19e7965..40a538ac 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_loader.h +++ b/chrome/browser/chromeos/login/users/avatar/user_image_loader.h
@@ -28,14 +28,14 @@ using LoadedCallback = base::OnceCallback<void(std::unique_ptr<user_manager::UserImage>)>; -// Loads an image with |image_codec| in the background and calls |loaded_cb| +// Loads an image with `image_codec` in the background and calls `loaded_cb` // with the resulting UserImage (which may be empty in case of error). If -// |pixels_per_side| is positive, the image is cropped to a square and shrunk -// so that it does not exceed |pixels_per_side|x|pixels_per_side|. The first -// variant of this function reads the image from |file_path| on disk, the -// second processes |data| read into memory already. Decoding is done in a +// `pixels_per_side` is positive, the image is cropped to a square and shrunk +// so that it does not exceed `pixels_per_side`x`pixels_per_side`. The first +// variant of this function reads the image from `file_path` on disk, the +// second processes `data` read into memory already. Decoding is done in a // separate sandboxed process via ImageDecoder, and file I/O and resizing are -// done via |background_task_runner|. +// done via `background_task_runner`. void StartWithFilePath( scoped_refptr<base::SequencedTaskRunner> background_task_runner, const base::FilePath& file_path,
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_manager.h b/chrome/browser/chromeos/login/users/avatar/user_image_manager.h index 22304754..022f8162 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_manager.h +++ b/chrome/browser/chromeos/login/users/avatar/user_image_manager.h
@@ -46,7 +46,7 @@ // Indicates that a user profile was created. virtual void UserProfileCreated() = 0; - // Sets user image to the default image with index |image_index|, sends + // Sets user image to the default image with index `image_index`, sends // LOGIN_USER_IMAGE_CHANGED notification and updates Local State. virtual void SaveUserDefaultImageIndex(int image_index) = 0; @@ -61,7 +61,7 @@ // Sets profile image as user image for the user, sends // LOGIN_USER_IMAGE_CHANGED notification and updates Local State. If - // the user is not logged-in or the last |DownloadProfileImage| call + // the user is not logged-in or the last `DownloadProfileImage` call // has failed, a default grey avatar will be used until the user logs // in and profile image is downloaded successfully. virtual void SaveUserImageFromProfileImage() = 0; @@ -70,7 +70,7 @@ virtual void DeleteUserImage() = 0; // Starts downloading the profile image for the user. If user's image - // index is |USER_IMAGE_PROFILE|, newly downloaded image is immediately + // index is `USER_IMAGE_PROFILE`, newly downloaded image is immediately // set as user's current picture. virtual void DownloadProfileImage() = 0;
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_manager_browsertest.cc b/chrome/browser/chromeos/login/users/avatar/user_image_manager_browsertest.cc index 3177418..4f73c1c 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_manager_browsertest.cc +++ b/chrome/browser/chromeos/login/users/avatar/user_image_manager_browsertest.cc
@@ -209,7 +209,7 @@ run_loop_->Quit(); } - // Logs in |account_id|. + // Logs in `account_id`. void LogIn(const AccountId& account_id) { user_manager::UserManager::Get()->UserLoggedIn( account_id, account_id.GetUserEmail(), false /* browser_restart */, @@ -238,8 +238,8 @@ EXPECT_EQ(image_path.value(), actual_image_path); } - // Verifies that there is no image info for |account_id| in dictionary - // |images_pref|. + // Verifies that there is no image info for `account_id` in dictionary + // `images_pref`. void ExpectNoUserImageInfo(const base::DictionaryValue* images_pref, const AccountId& account_id) { ASSERT_TRUE(images_pref); @@ -249,7 +249,7 @@ ASSERT_FALSE(image_properties); } - // Returns the image path for user |account_id| with specified |extension|. + // Returns the image path for user `account_id` with specified `extension`. base::FilePath GetUserImagePath(const AccountId& account_id, const std::string& extension) { return user_data_dir_.Append(account_id.GetUserEmail())
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc b/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc index d4aa0632..2347489 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc +++ b/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc
@@ -61,7 +61,7 @@ static bool g_ignore_profile_data_download_delay_ = false; -// Converts |image_index| to UMA histogram value. +// Converts `image_index` to UMA histogram value. int ImageIndexToHistogramIndex(int image_index) { switch (image_index) { case user_manager::User::USER_IMAGE_EXTERNAL: @@ -74,8 +74,8 @@ } } -// Saves |image_bytes| at |image_path|, and delete the old file at -// |old_image_path| if needed. +// Saves `image_bytes` at `image_path`, and delete the old file at +// `old_image_path` if needed. bool SaveAndDeleteImage(scoped_refptr<base::RefCountedBytes> image_bytes, const base::FilePath& image_path, const base::FilePath& old_image_path) { @@ -135,42 +135,42 @@ // Every image load or update is encapsulated by a Job. The Job is allowed to // perform tasks on background threads or in helper processes but: // * Changes to User objects and local state as well as any calls to the -// |parent_| must be performed on the thread that the Job is created on only. -// * File writes and deletions must be performed via the |parent_|'s -// |background_task_runner_| only. +// `parent_` must be performed on the thread that the Job is created on only. +// * File writes and deletions must be performed via the `parent_`'s +// `background_task_runner_` only. // // Only one of the Load*() and Set*() methods may be called per Job. class UserImageManagerImpl::Job { public: - // The |Job| will update the user object corresponding to |parent|. + // The `Job` will update the user object corresponding to `parent`. explicit Job(UserImageManagerImpl* parent); ~Job(); - // Loads the image at |image_path| or one of the default images, - // depending on |image_index|, and updates the user object with the + // Loads the image at `image_path` or one of the default images, + // depending on `image_index`, and updates the user object with the // new image. void LoadImage(base::FilePath image_path, const int image_index, const GURL& image_url); // Sets the user image in local state to the default image indicated - // by |default_image_index|. Also updates the user object with the + // by `default_image_index`. Also updates the user object with the // new image. void SetToDefaultImage(int default_image_index); - // Saves the |user_image| to disk and sets the user image in local + // Saves the `user_image` to disk and sets the user image in local // state to that image. Also updates the user with the new image. void SetToImage(int image_index, std::unique_ptr<user_manager::UserImage> user_image); - // Decodes the JPEG image |data|, crops and resizes the image, saves + // Decodes the JPEG image `data`, crops and resizes the image, saves // it to disk and sets the user image in local state to that image. // Also updates the user object with the new image. void SetToImageData(std::unique_ptr<std::string> data); - // Loads the image at |path|, transcodes it to JPEG format, saves + // Loads the image at `path`, transcodes it to JPEG format, saves // the image to disk and sets the user image in local state to that - // image. If |resize| is true, the image is cropped and resized + // image. If `resize` is true, the image is cropped and resized // before transcoding. Also updates the user object with the new // image. void SetToPath(const base::FilePath& path, @@ -183,16 +183,16 @@ void OnLoadImageDone(bool save, std::unique_ptr<user_manager::UserImage> user_image); - // Updates the user object with |user_image|. + // Updates the user object with `user_image`. void UpdateUser(std::unique_ptr<user_manager::UserImage> user_image); - // Updates the user object with |user_image|, and saves the image + // Updates the user object with `user_image`, and saves the image // bytes. Local state will be updated as needed. void UpdateUserAndSaveImage( std::unique_ptr<user_manager::UserImage> user_image); - // Saves |image_bytes| to disk in |image_format| if - // |image_is_safe_format|. Local state will be updated as needed. + // Saves `image_bytes` to disk in `image_format` if + // `image_is_safe_format`. Local state will be updated as needed. void SaveImageAndUpdateLocalState( bool image_is_safe_format, scoped_refptr<base::RefCountedBytes> image_bytes, @@ -200,7 +200,7 @@ // Called back after the user image has been saved to // disk. Updates the user image information in local state. The - // information is only updated if |success| is true (indicating that + // information is only updated if `success` is true (indicating that // the image was saved successfully) or the user image is the // profile image (indicating that even if the image could not be // saved because it is not available right now, it will be @@ -209,10 +209,10 @@ // Updates the user image in local state, setting it to one of the // default images or the saved user image, depending on - // |image_index_|. + // `image_index_`. void UpdateLocalState(); - // Notifies the |parent_| that the Job is done. + // Notifies the `parent_` that the Job is done. void NotifyJobDone(); const std::string& user_id() const { return parent_->user_id(); } @@ -255,7 +255,7 @@ NotifyJobDone(); } else if (image_index_ == user_manager::User::USER_IMAGE_EXTERNAL || image_index_ == user_manager::User::USER_IMAGE_PROFILE) { - // Load the user image from a file referenced by |image_path|. This happens + // Load the user image from a file referenced by `image_path`. This happens // asynchronously. ROBUST_PNG_CODEC can be used here because LoadImage() is // called only for users whose user image has previously been set by one of // the Set*() methods, which transcode to JPEG or PNG format. @@ -494,7 +494,7 @@ const base::DictionaryValue* image_properties = nullptr; prefs_images->GetDictionaryWithoutPathExpansion(user_id(), &image_properties); - // If the user image for |user_id| is managed by policy and the policy-set + // If the user image for `user_id` is managed by policy and the policy-set // image is being loaded and persisted right now, let that job continue. It // will update the user image when done. if (IsUserImageManaged() && job_.get()) @@ -732,7 +732,7 @@ void UserImageManagerImpl::OnProfileDownloadSuccess( ProfileDownloader* downloader) { - // Ensure that the |profile_downloader_| is deleted when this method returns. + // Ensure that the `profile_downloader_` is deleted when this method returns. std::unique_ptr<ProfileDownloader> profile_downloader( profile_downloader_.release()); DCHECK_EQ(downloader, profile_downloader.get()); @@ -771,7 +771,7 @@ is_random_image_set_) { is_random_image_set_ = false; VLOG(1) << "Updating profile image for logged-in user."; - // This will persist |downloaded_profile_image_| to disk. + // This will persist `downloaded_profile_image_` to disk. SaveUserImageFromProfileImage(); } @@ -810,7 +810,7 @@ const user_manager::User* user = GetUser(); if (user->image_index() == user_manager::User::USER_IMAGE_PROFILE && downloaded_profile_image_.isNull() && !user->image_is_stub()) { - // Initialize the |downloaded_profile_image_| for the currently logged-in + // Initialize the `downloaded_profile_image_` for the currently logged-in // user if it has not been initialized already, the user image is the // profile image and the user image has been loaded successfully. VLOG(1) << "Profile image initialized from disk.";
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.h b/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.h index 57e3bc1..cfb061e6 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.h +++ b/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.h
@@ -84,8 +84,8 @@ // at any given time. There are two further guarantees: // // * Changes to User objects and local state are performed on the thread that - // |this| runs on. - // * File writes and deletions are performed via |background_task_runner_|. + // `this` runs on. + // * File writes and deletions are performed via `background_task_runner_`. // // With the above, it is guaranteed that any changes made by a canceled Job // cannot race against against changes made by the superseding Job. @@ -111,7 +111,7 @@ // LOGIN_USER_IMAGE_CHANGED notification and updates local state. void SetInitialUserImage(); - // Initializes the |downloaded_profile_image_| for the currently logged-in + // Initializes the `downloaded_profile_image_` for the currently logged-in // user to a profile image that had been downloaded and saved before if such // a saved image is available and no updated image has been downloaded yet. void TryToInitDownloadedProfileImage(); @@ -128,13 +128,13 @@ // downloaded. void DownloadProfileData(); - // Removes ther user from the dictionary |prefs_dict_root| in + // Removes ther user from the dictionary `prefs_dict_root` in // local state and deletes the image file that the dictionary // referenced for that user. void DeleteUserImageAndLocalStateEntry(const char* prefs_dict_root); // Called when a Job updates the copy of the user image held in - // memory. Allows |this| to update |downloaded_profile_image_| and + // memory. Allows `this` to update `downloaded_profile_image_` and // notify user manager about user image change. void OnJobChangedUserImage(); @@ -145,19 +145,19 @@ // allowed to be synced and no sync observer exists yet. void TryToCreateImageSyncObserver(); - // Returns immutable version of user with |user_id_|. + // Returns immutable version of user with `user_id_`. const user_manager::User* GetUser() const; - // Returns mutable version of user with |user_id_|. + // Returns mutable version of user with `user_id_`. user_manager::User* GetUserAndModify() const; - // Returns true if user with |user_id_| is logged in and has gaia account. + // Returns true if user with `user_id_` is logged in and has gaia account. bool IsUserLoggedInAndHasGaiaAccount() const; // The user manager. user_manager::UserManager* user_manager_; - // Whether the |profile_downloader_| is downloading the profile image for the + // Whether the `profile_downloader_` is downloading the profile image for the // currently logged-in user (and not just the full name). Only valid when a // download is currently in progress. bool downloading_profile_image_; @@ -170,12 +170,12 @@ // downloaded or initialized from a previously downloaded and saved image. gfx::ImageSkia downloaded_profile_image_; - // Data URL corresponding to |downloaded_profile_image_|. Empty if no - // |downloaded_profile_image_| is currently available. + // Data URL corresponding to `downloaded_profile_image_`. Empty if no + // `downloaded_profile_image_` is currently available. std::string downloaded_profile_image_data_url_; - // URL from which |downloaded_profile_image_| was downloaded. Empty if no - // |downloaded_profile_image_| is currently available. + // URL from which `downloaded_profile_image_` was downloaded. Empty if no + // `downloaded_profile_image_` is currently available. GURL profile_image_url_; // Whether a download of the currently logged-in user's profile image has been
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_manager_test_util.h b/chrome/browser/chromeos/login/users/avatar/user_image_manager_test_util.h index ceca2c71..a28c2f2 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_manager_test_util.h +++ b/chrome/browser/chromeos/login/users/avatar/user_image_manager_test_util.h
@@ -24,7 +24,7 @@ // Points to a png file with transparent pixels. extern const char kUserAvatarImage3RelativePath[]; -// Returns |true| if the two given images are pixel-for-pixel identical. +// Returns `true` if the two given images are pixel-for-pixel identical. bool AreImagesEqual(const gfx::ImageSkia& first, const gfx::ImageSkia& second); class ImageLoader : public ImageDecoder::ImageRequest {
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_sync_observer.h b/chrome/browser/chromeos/login/users/avatar/user_image_sync_observer.h index aefc42e..b01c4a8 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_sync_observer.h +++ b/chrome/browser/chromeos/login/users/avatar/user_image_sync_observer.h
@@ -65,7 +65,7 @@ // preferences. void OnInitialSync(); - // Called when preference |pref_name| was changed.j + // Called when preference `pref_name` was changed.j void OnPreferenceChanged(const std::string& pref_name); // Saves local image preferences to sync.
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager.h b/chrome/browser/chromeos/login/users/chrome_user_manager.h index bf28ec2..3aa7ceac 100644 --- a/chrome/browser/chromeos/login/users/chrome_user_manager.h +++ b/chrome/browser/chromeos/login/users/chrome_user_manager.h
@@ -39,8 +39,8 @@ // yet initialized. static ChromeUserManager* Get(); - // Sets affiliation status for the user identified with |account_id| - // judging by |user_affiliation_ids| and device affiliation IDs. + // Sets affiliation status for the user identified with `account_id` + // judging by `user_affiliation_ids` and device affiliation IDs. virtual void SetUserAffiliation( const AccountId& account_id, const AffiliationIDSet& user_affiliation_ids) = 0; @@ -50,7 +50,7 @@ virtual bool ShouldReportUser(const std::string& user_id) const = 0; // Checks whether 'DeviceLocalAccountManagedSessionEnabled' policy is enabled - // for |active_user|. + // for `active_user`. virtual bool IsManagedSessionEnabledForUser( const user_manager::User& active_user) const = 0;
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc index ee91f6c0..90687c8 100644 --- a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc +++ b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
@@ -409,7 +409,7 @@ local_accounts_subscription_.reset(); if (session_length_limiter_ && IsEnterpriseManaged()) { - // Store session length before tearing down |session_length_limiter_| for + // Store session length before tearing down `session_length_limiter_` for // enrolled devices so that it can be reported on the next run. const base::TimeDelta session_length = session_length_limiter_->GetSessionDuration(); @@ -1003,7 +1003,7 @@ void ChromeUserManagerImpl::RemoveNonCryptohomeData( const AccountId& account_id) { // Wallpaper removal depends on user preference, so it must happen before - // |known_user::RemovePrefs|. See https://crbug.com/778077. + // `known_user::RemovePrefs`. See https://crbug.com/778077. for (auto& handler : cloud_external_data_policy_handlers_) handler->RemoveForAccountId(account_id); // TODO(tbarzic): Forward data removal request to ash::HammerDeviceHandler, @@ -1243,7 +1243,7 @@ GetUserImageManager(user->GetAccountId())->UserProfileCreated(); // Allow managed guest session user to lock if - // |kLoginExtensionApiLaunchExtensionId| is set. + // `kLoginExtensionApiLaunchExtensionId` is set. if (user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT && !profile->GetPrefs() ->GetString(prefs::kLoginExtensionApiLaunchExtensionId) @@ -1386,8 +1386,8 @@ if (!broker) { // The broker could be unavailable at the early initialization stage when - // - |DeviceSettingsProvider| does not have a list of device local accounts - // in |kAccountsPrefDeviceLocalAccounts| + // - `DeviceSettingsProvider` does not have a list of device local accounts + // in `kAccountsPrefDeviceLocalAccounts` // - and there is an attempt to autologin with public account before the // device settings become available. The broker will become available later // and the real policy value will be returned with future calls.
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.h b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.h index f9aa7bb..5d5b08c 100644 --- a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.h +++ b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.h
@@ -208,14 +208,14 @@ const std::vector<std::string>& old_device_local_accounts); // Replaces the list of device local accounts with those found in - // |device_local_accounts|. Ensures that data belonging to accounts no longer - // on the list is removed. Returns |true| if the list has changed. + // `device_local_accounts`. Ensures that data belonging to accounts no longer + // on the list is removed. Returns `true` if the list has changed. // Device local accounts are defined by policy. This method is called whenever // an updated list of device local accounts is received from policy. bool UpdateAndCleanUpDeviceLocalAccounts( const std::vector<policy::DeviceLocalAccount>& device_local_accounts); - // Updates the display name for public account |username| from policy settings + // Updates the display name for public account `username` from policy settings // associated with that username. void UpdatePublicAccountDisplayName(const std::string& user_id);
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager_util.h b/chrome/browser/chromeos/login/users/chrome_user_manager_util.h index 3d7242f..98c9fa1 100644 --- a/chrome/browser/chromeos/login/users/chrome_user_manager_util.h +++ b/chrome/browser/chromeos/login/users/chrome_user_manager_util.h
@@ -11,7 +11,7 @@ namespace chromeos { namespace chrome_user_manager_util { -// Returns true if all |users| are allowed depending on the provided device +// Returns true if all `users` are allowed depending on the provided device // policies. Accepted user types: USER_TYPE_REGULAR, USER_TYPE_GUEST, // USER_TYPE_SUPERVISED, USER_TYPE_CHILD. // This function only checks against the device policies provided, so it does @@ -20,7 +20,7 @@ const enterprise_management::ChromeDeviceSettingsProto& device_settings_proto); -// Returns true if |user| is allowed, according to the given constraints. +// Returns true if `user` is allowed, according to the given constraints. // Accepted user types: USER_TYPE_REGULAR, USER_TYPE_GUEST, // USER_TYPE_SUPERVISED, USER_TYPE_CHILD. bool IsUserAllowed(const user_manager::User& user,
diff --git a/chrome/browser/chromeos/login/users/default_user_image/default_user_images.cc b/chrome/browser/chromeos/login/users/default_user_image/default_user_images.cc index 3a7c5d7..86caeb5 100644 --- a/chrome/browser/chromeos/login/users/default_user_image/default_user_images.cc +++ b/chrome/browser/chromeos/login/users/default_user_image/default_user_images.cc
@@ -292,7 +292,7 @@ base::size(kDefaultImageDescriptions); // Returns true if the string specified consists of the prefix and one of -// the default images indices. Returns the index of the image in |image_id| +// the default images indices. Returns the index of the image in `image_id` // variable. bool IsDefaultImageString(const std::string& s, const std::string& prefix,
diff --git a/chrome/browser/chromeos/login/users/default_user_image/default_user_images.h b/chrome/browser/chromeos/login/users/default_user_image/default_user_images.h index e477cc8..7cb6ef7 100644 --- a/chrome/browser/chromeos/login/users/default_user_image/default_user_images.h +++ b/chrome/browser/chromeos/login/users/default_user_image/default_user_images.h
@@ -29,7 +29,7 @@ std::string GetDefaultImageUrl(int index); // Checks if the given URL points to one of the default images. If it is, -// returns true and its index through |image_id|. If not, returns false. +// returns true and its index through `image_id`. If not, returns false. bool IsDefaultImageUrl(const std::string& url, int* image_id); // Returns bitmap of default user image with specified index. @@ -68,19 +68,19 @@ // Returns a random default image index. int GetRandomDefaultImageIndex(); -// Returns true if |index| is a valid default image index. +// Returns true if `index` is a valid default image index. bool IsValidIndex(int index); -// Returns true if |index| is a in the current set of default images. +// Returns true if `index` is a in the current set of default images. bool IsInCurrentImageSet(int index); // Returns a list of dictionary values with url, author, website, and title -// properties set for each default user image. If |all| is true then returns +// properties set for each default user image. If `all` is true then returns // the complete list of default images, otherwise only returns the current list. std::unique_ptr<base::ListValue> GetAsDictionary(bool all); // Returns the index of the first default image to make available for selection -// from GetAsDictionary when |all| is true. The last image to make available is +// from GetAsDictionary when `all` is true. The last image to make available is // always the last image in the Dictionary. int GetFirstDefaultImage();
diff --git a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc index c6f36405..6f076af 100644 --- a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc +++ b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc
@@ -279,7 +279,7 @@ void FakeChromeUserManager::RemoveUserFromList(const AccountId& account_id) { WallpaperControllerClient* const wallpaper_client = WallpaperControllerClient::Get(); - // |wallpaper_client| could be nullptr in tests. + // `wallpaper_client` could be nullptr in tests. if (wallpaper_client) wallpaper_client->RemoveUserWallpaper(account_id); chromeos::ProfileHelper::Get()->RemoveUserFromListForTesting(account_id);
diff --git a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.h b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.h index 910f7dd..eeba53d 100644 --- a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.h +++ b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.h
@@ -39,7 +39,7 @@ user_manager::User* AddActiveDirectoryUser(const AccountId& account_id); // Calculates the user name hash and calls UserLoggedIn to login a user. - // Sets the user as having its profile created if |set_profile_created_flag| + // Sets the user as having its profile created if `set_profile_created_flag` // is true, but does not create a profile. // NOTE: This does not match production, which first logs in the user, then // creates the profile and updates the user later. @@ -51,15 +51,15 @@ user_manager::User* AddUserWithAffiliation(const AccountId& account_id, bool is_affiliated); - // Creates and adds user with specified |account_id| and |user_type|. Sets - // user affiliation. If |profile| is valid, maps it to the created user. + // Creates and adds user with specified `account_id` and `user_type`. Sets + // user affiliation. If `profile` is valid, maps it to the created user. user_manager::User* AddUserWithAffiliationAndTypeAndProfile( const AccountId& account_id, bool is_affiliated, user_manager::UserType user_type, TestingProfile* profile); - // Creates the instance returned by |GetLocalState()| (which returns nullptr + // Creates the instance returned by `GetLocalState()` (which returns nullptr // by default). void CreateLocalState();
diff --git a/chrome/browser/chromeos/login/users/multi_profile_user_controller.h b/chrome/browser/chromeos/login/users/multi_profile_user_controller.h index 3baaa692..ef589cb 100644 --- a/chrome/browser/chromeos/login/users/multi_profile_user_controller.h +++ b/chrome/browser/chromeos/login/users/multi_profile_user_controller.h
@@ -58,7 +58,7 @@ static void RegisterPrefs(PrefRegistrySimple* registry); static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); - // Returns the cached policy value for |user_email|. + // Returns the cached policy value for `user_email`. std::string GetCachedValue(const std::string& user_email) const; // Returns primary user policy (only ALLOW, @@ -70,7 +70,7 @@ static ash::MultiProfileUserBehavior UserBehaviorStringToEnum( const std::string& behavior); - // Returns true if user allowed to be in the current session. If |reason| not + // Returns true if user allowed to be in the current session. If `reason` not // null stores UserAllowedInSessionReason enum that describes actual reason. bool IsUserAllowedInSession(const std::string& user_email, UserAllowedInSessionReason* reason) const;
diff --git a/chrome/browser/chromeos/login/users/supervised_user_manager.h b/chrome/browser/chromeos/login/users/supervised_user_manager.h index da4c057..f2d0f6e 100644 --- a/chrome/browser/chromeos/login/users/supervised_user_manager.h +++ b/chrome/browser/chromeos/login/users/supervised_user_manager.h
@@ -50,22 +50,22 @@ virtual bool HasSupervisedUsers(const std::string& manager_id) const = 0; - // Returns sync_user_id for supervised user with |user_id| or empty string if + // Returns sync_user_id for supervised user with `user_id` or empty string if // such user is not found or it doesn't have user_id defined. virtual std::string GetUserSyncId(const std::string& user_id) const = 0; - // Returns the display name for manager of user |user_id| if it is known - // (was previously set by a |SaveUserDisplayName| call). + // Returns the display name for manager of user `user_id` if it is known + // (was previously set by a `SaveUserDisplayName` call). // Otherwise, returns a manager id. virtual base::string16 GetManagerDisplayName( const std::string& user_id) const = 0; - // Returns the user id for manager of user |user_id| if it is known (user is + // Returns the user id for manager of user `user_id` if it is known (user is // actually a managed user). // Otherwise, returns an empty string. virtual std::string GetManagerUserId(const std::string& user_id) const = 0; - // Returns the display email for manager of user |user_id| if it is known + // Returns the display email for manager of user `user_id` if it is known // (user is actually a managed user). // Otherwise, returns an empty string. virtual std::string GetManagerDisplayEmail( @@ -74,12 +74,12 @@ // Return object that handles specifics of supervised user authentication. virtual SupervisedUserAuthentication* GetAuthentication() = 0; - // Fill |result| with public password-specific data for |user_id| from Local + // Fill `result` with public password-specific data for `user_id` from Local // State. virtual void GetPasswordInformation(const std::string& user_id, base::DictionaryValue* result) = 0; - // Stores public password-specific data from |password_info| for |user_id| in + // Stores public password-specific data from `password_info` for `user_id` in // Local State. virtual void SetPasswordInformation( const std::string& user_id,
diff --git a/chrome/browser/chromeos/login/users/user_manager_interface.h b/chrome/browser/chromeos/login/users/user_manager_interface.h index 9ecc9b6..f262b5b 100644 --- a/chrome/browser/chromeos/login/users/user_manager_interface.h +++ b/chrome/browser/chromeos/login/users/user_manager_interface.h
@@ -29,9 +29,9 @@ const AccountId& account_id) = 0; virtual SupervisedUserManager* GetSupervisedUserManager() = 0; - // Method that allows to set |flow| for user identified by |account_id|. + // Method that allows to set `flow` for user identified by `account_id`. // Flow should be set before login attempt. - // Takes ownership of the |flow|, |flow| will be deleted in case of login + // Takes ownership of the `flow`, `flow` will be deleted in case of login // failure. virtual void SetUserFlow(const AccountId& account_id, UserFlow* flow) = 0; @@ -40,12 +40,12 @@ // Returned value should not be cached. virtual UserFlow* GetCurrentUserFlow() const = 0; - // Return user flow for user identified by |account_id|. Returns instance of + // Return user flow for user identified by `account_id`. Returns instance of // DefaultUserFlow if no flow was defined for user. // Returned value should not be cached. virtual UserFlow* GetUserFlow(const AccountId& account_id) const = 0; - // Resets user flow for user identified by |account_id|. + // Resets user flow for user identified by `account_id`. virtual void ResetUserFlow(const AccountId& account_id) = 0; DISALLOW_COPY_AND_ASSIGN(UserManagerInterface);
diff --git a/chrome/browser/chromeos/login/users/wallpaper_policy_browsertest.cc b/chrome/browser/chromeos/login/users/wallpaper_policy_browsertest.cc index 9abfd9c..c9b66c6f 100644 --- a/chrome/browser/chromeos/login/users/wallpaper_policy_browsertest.cc +++ b/chrome/browser/chromeos/login/users/wallpaper_policy_browsertest.cc
@@ -91,7 +91,7 @@ return policy_manager->core()->store(); } -// Compute the average ARGB color of |bitmap|. +// Compute the average ARGB color of `bitmap`. SkColor ComputeAverageColor(const SkBitmap& bitmap) { if (bitmap.empty() || bitmap.width() < 1 || bitmap.height() < 1) { ADD_FAILURE() << "Empty or invalid bitmap."; @@ -249,8 +249,8 @@ return policy; } - // Inject |filename| as wallpaper policy for test user |user_number|. Set - // empty |filename| to clear policy. + // Inject `filename` as wallpaper policy for test user `user_number`. Set + // empty `filename` to clear policy. void InjectPolicy(int user_number, const std::string& filename) { ASSERT_TRUE(user_number == 0 || user_number == 1); const AccountId& account_id = @@ -278,7 +278,7 @@ store->validation_status()); } - // Inject |filename| as the device wallpaper policy. Set empty |filename| to + // Inject `filename` as the device wallpaper policy. Set empty `filename` to // clear policy. void InjectDevicePolicy(const std::string& filename) { if (!filename.empty()) {
diff --git a/chrome/browser/chromeos/login/version_updater/update_time_estimator.cc b/chrome/browser/chromeos/login/version_updater/update_time_estimator.cc index b8bdc64f..59000dc 100644 --- a/chrome/browser/chromeos/login/version_updater/update_time_estimator.cc +++ b/chrome/browser/chromeos/login/version_updater/update_time_estimator.cc
@@ -174,12 +174,12 @@ double work_left = progress_left * status.new_size(); // time_left is in seconds. double time_left = work_left / download_average_speed_; - // If |download_average_speed_| is 0. + // If `download_average_speed_` is 0. if (isnan(time_left)) { has_download_time_estimation_ = false; return; } - // |time_left| may be large enough or even +infinity. So we must + // `time_left` may be large enough or even +infinity. So we must // |bound possible estimations. time_left = std::min(time_left, kMaxTimeLeft.InSecondsF());
diff --git a/chrome/browser/chromeos/login/version_updater/version_updater.cc b/chrome/browser/chromeos/login/version_updater/version_updater.cc index c6fd97c..a0433e6 100644 --- a/chrome/browser/chromeos/login/version_updater/version_updater.cc +++ b/chrome/browser/chromeos/login/version_updater/version_updater.cc
@@ -134,8 +134,8 @@ UpdateEngineClient* update_engine_client = DBusThreadManager::Get()->GetUpdateEngineClient(); // Request the End of Life (Auto Update Expiration) status. Bind to a weak_ptr - // bound method rather than passing |callback| directly so that |callback| - // does not outlive |this|. + // bound method rather than passing `callback` directly so that `callback` + // does not outlive `this`. update_engine_client->GetEolInfo( base::BindOnce(&VersionUpdater::OnGetEolInfo, weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
diff --git a/chrome/browser/chromeos/login/version_updater/version_updater.h b/chrome/browser/chromeos/login/version_updater/version_updater.h index 6b183133..f31290d 100644 --- a/chrome/browser/chromeos/login/version_updater/version_updater.h +++ b/chrome/browser/chromeos/login/version_updater/version_updater.h
@@ -24,7 +24,7 @@ namespace chromeos { // Tries to update system, interacting with UpdateEnglineClient and -// NetworkPortalDetector. Uses callbacks - methods of |delegate_|, which may +// NetworkPortalDetector. Uses callbacks - methods of `delegate_`, which may // interact with user, change UI etc. class VersionUpdater : public UpdateEngineClient::Observer, public NetworkPortalDetector::Observer { @@ -104,14 +104,14 @@ virtual void DelayErrorMessage() = 0; }; - // Callback type for |GetEOLInfo| + // Callback type for `GetEOLInfo` using EolInfoCallback = base::OnceCallback<void(const UpdateEngineClient::EolInfo& eol_info)>; explicit VersionUpdater(VersionUpdater::Delegate* delegate); ~VersionUpdater() override; - // Resets |VersionUpdater| to initial state. + // Resets `VersionUpdater` to initial state. void Init(); // Starts network check. If success, starts update check. @@ -165,7 +165,7 @@ // Callback to UpdateEngineClient::SetUpdateOverCellularOneTimePermission // called in response to user confirming that the OS update can proceed // despite being over cellular charges. - // |success|: whether the update engine accepted the user permission. + // `success`: whether the update engine accepted the user permission. void OnSetUpdateOverCellularOneTimePermission(bool success); // Callback for UpdateEngineClient::RequestUpdateCheck() called from
diff --git a/chrome/browser/chromeos/login/version_updater/version_updater_unittest.cc b/chrome/browser/chromeos/login/version_updater/version_updater_unittest.cc index 62d24c08..f11d78b7 100644 --- a/chrome/browser/chromeos/login/version_updater/version_updater_unittest.cc +++ b/chrome/browser/chromeos/login/version_updater/version_updater_unittest.cc
@@ -98,14 +98,14 @@ NetworkHandler::Initialize(); - // |mock_network_portal_detector_->IsEnabled()| will always return false. + // `mock_network_portal_detector_->IsEnabled()` will always return false. mock_network_portal_detector_ = std::make_unique<MockNetworkPortalDetector>(); EXPECT_CALL(*mock_network_portal_detector_, IsEnabled()) .Times(AnyNumber()) .WillRepeatedly(Return(false)); - // |fake_network_portal_detector_->IsEnabled()| will always return true. + // `fake_network_portal_detector_->IsEnabled()` will always return true. fake_network_portal_detector_ = std::make_unique<NetworkPortalDetectorTestImpl>(); @@ -117,15 +117,15 @@ void TearDown() override { TestingBrowserProcess::GetGlobal()->SetShuttingDown(true); - // We need to stop observing |NetworkPortalDetector| before call - // |DBusThreadManager::Shutdown()|, so destroy |version_updater_| now. + // We need to stop observing `NetworkPortalDetector` before call + // `DBusThreadManager::Shutdown()`, so destroy `version_updater_` now. version_updater_.reset(); mock_delegate_.reset(); network_portal_detector::InitializeForTesting(nullptr); NetworkHandler::Shutdown(); - // It will delete |fake_update_engine_client_|. + // It will delete `fake_update_engine_client_`. DBusThreadManager::Shutdown(); }
diff --git a/chrome/browser/chromeos/login/webview_login_browsertest.cc b/chrome/browser/chromeos/login/webview_login_browsertest.cc index 06ee476..69ecd65 100644 --- a/chrome/browser/chromeos/login/webview_login_browsertest.cc +++ b/chrome/browser/chromeos/login/webview_login_browsertest.cc
@@ -122,7 +122,7 @@ std::move(done_closure).Run(); } -// Injects a cookie into |storage_partition|, so we can test for cookie presence +// Injects a cookie into `storage_partition`, so we can test for cookie presence // later to infer if the StoragePartition has been cleared. void InjectCookie(content::StoragePartition* storage_partition) { mojo::Remote<network::mojom::CookieManager> cookie_manager; @@ -148,7 +148,7 @@ std::move(done_closure).Run(); } -// Returns all cookies present in |storage_partition| as a HTTP header cookie +// Returns all cookies present in `storage_partition` as a HTTP header cookie // line. Will be an empty string if there are no cookies. std::string GetAllCookies(content::StoragePartition* storage_partition) { mojo::Remote<network::mojom::CookieManager> cookie_manager; @@ -169,8 +169,8 @@ callback.Run(); } -// Spins the loop until a notification is received from |prefs| that the value -// of |pref_name| has changed. If the notification is received before Wait() +// Spins the loop until a notification is received from `prefs` that the value +// of `pref_name` has changed. If the notification is received before Wait() // has been called, Wait() returns immediately and no loop is spun. class PrefChangeWatcher { public: @@ -306,7 +306,7 @@ } // Returns true if a webview which has a WebContents associated with - // |storage_partition| currently exists in the login UI's main WebContents. + // `storage_partition` currently exists in the login UI's main WebContents. bool IsLoginScreenHasWebviewWithStoragePartition( content::StoragePartition* storage_partition) { bool web_view_found = false; @@ -723,7 +723,7 @@ watcher.Wait(); } - // Adds the certificate from |authority_file_path| (PEM) as untrusted + // Adds the certificate from `authority_file_path` (PEM) as untrusted // authority in device OpenNetworkConfiguration policy. void SetIntermediateAuthorityInDeviceOncPolicy( const base::FilePath& authority_file_path) { @@ -750,15 +750,15 @@ watcher.Wait(); } - // Starts the Test HTTPS server with |ssl_options|. + // Starts the Test HTTPS server with `ssl_options`. void StartHttpsServer(const net::SpawnedTestServer::SSLOptions& ssl_options) { https_server_ = std::make_unique<net::SpawnedTestServer>( net::SpawnedTestServer::TYPE_HTTPS, ssl_options, base::FilePath()); ASSERT_TRUE(https_server_->Start()); } - // Requests |http_server_|'s client-cert test page in the webview specified by - // the given |webview_path|. Returns the content of the client-cert test page. + // Requests `http_server_`'s client-cert test page in the webview specified by + // the given `webview_path`. Returns the content of the client-cert test page. std::string RequestClientCertTestPageInFrame( std::initializer_list<base::StringPiece> webview_path) { const GURL url = https_server_->GetURL("client-cert"); @@ -1052,7 +1052,7 @@ ShowEulaScreen(); - // Use |watch_new_webcontents| because the EULA webview has not navigated yet. + // Use `watch_new_webcontents` because the EULA webview has not navigated yet. const std::string https_reply_content = RequestClientCertTestPageInFrame({"cros-eula-frame"}); EXPECT_EQ("got no client cert", https_reply_content); @@ -1222,7 +1222,7 @@ // Prepare device policy which will be used for two purposes: // - given to FakeSessionManagerClient, so the device appears to have // registered for policy. - // - the payload is given to |policy_test_server_|, so we can download fresh + // - the payload is given to `policy_test_server_`, so we can download fresh // policy. device_policy_builder()->policy_data().set_public_key_version(1); device_policy_builder()->Build(); @@ -1319,7 +1319,7 @@ LoginHandler* login_handler = WaitForAuthRequested(); - // Before entering auth data, make |policy_test_server_| serve a policy that + // Before entering auth data, make `policy_test_server_` serve a policy that // we can use to detect if policies have been fetched. em::ChromeDeviceSettingsProto& device_policy = device_policy_builder()->payload();
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index c633e2d..029d741 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc
@@ -294,7 +294,7 @@ std::string histogram_name = "OOBE.StepCompletionTime." + screen_name; // Equivalent to using UMA_HISTOGRAM_MEDIUM_TIMES. UMA_HISTOGRAM_MEDIUM_TIMES - // can not be used here, because |histogram_name| is calculated dynamically + // can not be used here, because `histogram_name` is calculated dynamically // and changes from call to call. base::HistogramBase* histogram = base::Histogram::FactoryTimeGet( histogram_name, base::TimeDelta::FromMilliseconds(10), @@ -1183,7 +1183,7 @@ void WizardController::OnEnrollmentDone() { PerformOOBECompletedActions(); - // Fetch the rollback flag from |oobe_configuration_|. + // Fetch the rollback flag from `oobe_configuration_`. bool enrollment_mode_rollback = false; auto* restore_after_rollback_value = wizard_context_->configuration.FindKeyOfType( @@ -1499,8 +1499,8 @@ if (start_enrollment_value) configuration_forced_enrollment = start_enrollment_value->GetBool(); - // Fetch the rollback flag from |configuration|. It is not stored in the - // |prescribed_enrollment_config_|. To restore after rollback the enrollment + // Fetch the rollback flag from `configuration`. It is not stored in the + // `prescribed_enrollment_config_`. To restore after rollback the enrollment // screen needs to be started. (crbug.com/1093928) auto* restore_after_rollback_value = wizard_context_->configuration.FindKeyOfType( @@ -1862,7 +1862,7 @@ break; } - // Wait for the |CrosSettings| to become either trusted or permanently + // Wait for the `CrosSettings` to become either trusted or permanently // untrusted. const CrosSettingsProvider::TrustedStatus status = CrosSettings::Get()->PrepareTrustedValues( @@ -1872,7 +1872,7 @@ return; if (status == CrosSettingsProvider::PERMANENTLY_UNTRUSTED) { - // If the |cros_settings_| are permanently untrusted, show an error message + // If the `cros_settings_` are permanently untrusted, show an error message // and refuse to auto-launch the kiosk app. GetErrorScreen()->SetUIState(NetworkError::UI_STATE_LOCAL_STATE_ERROR); GetLoginDisplayHost()->SetStatusAreaVisible(false);
diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h index e1625c5..22e926f2 100644 --- a/chrome/browser/chromeos/login/wizard_controller.h +++ b/chrome/browser/chromeos/login/wizard_controller.h
@@ -117,19 +117,19 @@ bool is_initialized() { return is_initialized_; } - // Shows the first screen defined by |first_screen| or by default if the + // Shows the first screen defined by `first_screen` or by default if the // parameter is empty. void Init(OobeScreenId first_screen); - // Advances to screen defined by |screen| and shows it. Might show HID + // Advances to screen defined by `screen` and shows it. Might show HID // detection screen in case HID connection is needed and screen_id == // OobeScreen::SCREEN_UNKNOWN. void AdvanceToScreen(OobeScreenId screen_id); - // Advances to screen defined by |screen| and shows it. + // Advances to screen defined by `screen` and shows it. void AdvanceToScreenAfterHIDDetection(OobeScreenId first_screen); - // Returns |true| if accelerator |action| was handled by current screen + // Returns `true` if accelerator `action` was handled by current screen // or WizardController itself. bool HandleAccelerator(ash::LoginAcceleratorAction action); @@ -143,7 +143,7 @@ // chromeos::DemoSetupScreenView::kScreenId void StartDemoModeSetup(); - // Simulates demo mode setup environment. If |demo_config| has a value, it + // Simulates demo mode setup environment. If `demo_config` has a value, it // is explicitly set on DemoSetupController and going through demo settings // screens can be skipped. void SimulateDemoModeSetupForTesting( @@ -220,7 +220,7 @@ void RemoveObserver(ScreenObserver* obs); private: - // Create BaseScreen instances. These are owned by |screen_manager_|. + // Create BaseScreen instances. These are owned by `screen_manager_`. std::vector<std::unique_ptr<BaseScreen>> CreateScreens(); // Show specific screen. @@ -259,8 +259,8 @@ // Shows images login screen. void ShowLoginScreen(); - // Check if advancing to |screen| is allowed using screen priorities. Return - // true if the priority of |screen| is higher or equal to current screen. + // Check if advancing to `screen` is allowed using screen priorities. Return + // true if the priority of `screen` is higher or equal to current screen. bool CanNavigateTo(OobeScreenId screen_id); // Shows default screen depending on device ownership. @@ -268,7 +268,7 @@ DeviceSettingsService::OwnershipStatus status); // Shared actions to be performed on a screen exit. - // |exit_reason| is the screen specific exit reason reported by the screen. + // `exit_reason` is the screen specific exit reason reported by the screen. void OnScreenExit(OobeScreenId screen, const std::string& exit_reason); // Exit handlers: @@ -350,7 +350,7 @@ // Switches from one screen to another. void SetCurrentScreen(BaseScreen* screen); - // Update the status area visibility for |screen|. + // Update the status area visibility for `screen`. void UpdateStatusAreaVisibilityForScreen(OobeScreenId screen_id); // Launched kiosk app configured for auto-launch. @@ -388,7 +388,7 @@ bool SetOnTimeZoneResolvedForTesting(const base::Closure& callback); // Start the enrollment screen using the config from - // |prescribed_enrollment_config_|. If |force_interactive| is true, + // `prescribed_enrollment_config_`. If `force_interactive` is true, // the user will be presented with a manual enrollment screen requiring // Gaia credentials. If it is false, the screen may return after trying // attestation-based enrollment if appropriate.
diff --git a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc index 1885184..c02017c5 100644 --- a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc +++ b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
@@ -168,7 +168,7 @@ ~PrefStoreStub() override {} }; -// Used to set up a |FakeAutoEnrollmentClientFactory| for the duration of a +// Used to set up a `FakeAutoEnrollmentClientFactory` for the duration of a // test. class ScopedFakeAutoEnrollmentClientFactory { public: @@ -187,10 +187,10 @@ controller_->SetAutoEnrollmentClientFactoryForTesting(nullptr); } - // Waits until the |AutoEnrollmentController| has requested the creation of an - // |AutoEnrollmentClient|. Returns the created |AutoEnrollmentClient|. If an - // |AutoEnrollmentClient| has already been created, returns immediately. - // Note: The returned instance is owned by |AutoEnrollmentController|. + // Waits until the `AutoEnrollmentController` has requested the creation of an + // `AutoEnrollmentClient`. Returns the created `AutoEnrollmentClient`. If an + // `AutoEnrollmentClient` has already been created, returns immediately. + // Note: The returned instance is owned by `AutoEnrollmentController`. policy::FakeAutoEnrollmentClient* WaitAutoEnrollmentClientCreated() { if (created_auto_enrollment_client_) return created_auto_enrollment_client_; @@ -202,17 +202,17 @@ return created_auto_enrollment_client_; } - // Resets the cached |AutoEnrollmentClient|, so another |AutoEnrollmentClient| + // Resets the cached `AutoEnrollmentClient`, so another `AutoEnrollmentClient` // may be created through this factory. void Reset() { created_auto_enrollment_client_ = nullptr; } private: - // Called when |fake_auto_enrollment_client_factory_| was asked to create an - // |AutoEnrollmentClient|. + // Called when `fake_auto_enrollment_client_factory_` was asked to create an + // `AutoEnrollmentClient`. void OnFakeAutoEnrollmentClientCreated( policy::FakeAutoEnrollmentClient* auto_enrollment_client) { // Only allow an AutoEnrollmentClient to be created when the test expects - // it. The test should call |Reset| to expect a new |AutoEnrollmentClient| + // it. The test should call `Reset` to expect a new `AutoEnrollmentClient` // to be created. EXPECT_FALSE(created_auto_enrollment_client_); created_auto_enrollment_client_ = auto_enrollment_client; @@ -221,8 +221,8 @@ std::move(run_on_auto_enrollment_client_created_).Run(); } - // The |AutoEnrollmentController| which is using - // |fake_auto_enrollment_client_factory_|. + // The `AutoEnrollmentController` which is using + // `fake_auto_enrollment_client_factory_`. AutoEnrollmentController* controller_; policy::FakeAutoEnrollmentClient::FactoryImpl fake_auto_enrollment_client_factory_; @@ -268,7 +268,7 @@ AccessibilityManager* a11y = AccessibilityManager::Get(); CrasAudioHandler* cras = CrasAudioHandler::Get(); - // Audio output is at |volume_percent| and |mute_on|. Spoken feedback + // Audio output is at `volume_percent` and `mute_on`. Spoken feedback // is disabled. cras->SetOutputVolumePercent(volume_percent); cras->SetOutputMute(mute_on); @@ -288,10 +288,10 @@ } // Returns a string which can be put into the VPD variable -// |kEnterpriseManagementEmbargoEndDateKey|. If |days_offset| is 0, the return -// value represents the current day. If |days_offset| is positive, the return -// value represents |days_offset| days in the future. If |days_offset| is -// negative, the return value represents |days_offset| days in the past. +// `kEnterpriseManagementEmbargoEndDateKey`. If `days_offset` is 0, the return +// value represents the current day. If `days_offset` is positive, the return +// value represents `days_offset` days in the future. If `days_offset` is +// negative, the return value represents `days_offset` days in the past. std::string GenerateEmbargoEndDate(int days_offset) { base::Time::Exploded exploded; base::Time target_time = @@ -1099,8 +1099,8 @@ histogram_tester_ = std::make_unique<base::HistogramTester>(); // Initialize the FakeShillManagerClient. This does not happen - // automatically because of the |DBusThreadManager::GetSetterForTesting| - // call in |SetUpInProcessBrowserTestFixture|. See https://crbug.com/847422. + // automatically because of the `DBusThreadManager::GetSetterForTesting` + // call in `SetUpInProcessBrowserTestFixture`. See https://crbug.com/847422. // TODO(pmarko): Find a way for FakeShillManagerClient to be initialized // automatically (https://crbug.com/847422). DBusThreadManager::Get() @@ -1246,8 +1246,8 @@ } // Allows testing different behavior if forced re-enrollment is performed but -// not explicitly required (instantiated with |false|) vs. if forced -// re-enrollment is explicitly required (instantiated with |true|). +// not explicitly required (instantiated with `false`) vs. if forced +// re-enrollment is explicitly required (instantiated with `true`). class WizardControllerDeviceStateExplicitRequirementTest : public WizardControllerDeviceStateTest, public testing::WithParamInterface<bool /* fre_explicitly_required */> { @@ -1818,7 +1818,7 @@ EXPECT_EQ(AutoEnrollmentController::AutoEnrollmentCheckType::kNone, auto_enrollment_controller()->auto_enrollment_check_type()); - // The timeout is 45 seconds, see |auto_enrollment_controller.cc|. + // The timeout is 45 seconds, see `auto_enrollment_controller.cc`. // Fast-forward by a bit more than that. task_runner->FastForwardBy(base::TimeDelta::FromSeconds(45 + 1));
diff --git a/chrome/browser/component_updater/crowd_deny_component_installer.cc b/chrome/browser/component_updater/crowd_deny_component_installer.cc index 2f3ab4a..34dce65 100644 --- a/chrome/browser/component_updater/crowd_deny_component_installer.cc +++ b/chrome/browser/component_updater/crowd_deny_component_installer.cc
@@ -16,6 +16,7 @@ #include "base/memory/ref_counted.h" #include "base/values.h" #include "chrome/browser/permissions/crowd_deny_preload_data.h" +#include "components/permissions/permission_uma_util.h" namespace { @@ -86,7 +87,7 @@ } CrowdDenyPreloadData::GetInstance()->LoadFromDisk( - GetPreloadDataFilePath(install_dir)); + GetPreloadDataFilePath(install_dir), version); } base::FilePath CrowdDenyComponentInstallerPolicy::GetRelativeInstallDir()
diff --git a/chrome/browser/download/download_stats.cc b/chrome/browser/download/download_stats.cc index 7c27a70a0..40eb0c2 100644 --- a/chrome/browser/download/download_stats.cc +++ b/chrome/browser/download/download_stats.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/download/download_stats.h" #include "base/metrics/histogram_macros.h" +#include "base/metrics/user_metrics.h" void RecordDownloadCount(ChromeDownloadCountTypes type) { UMA_HISTOGRAM_ENUMERATION( @@ -29,6 +30,7 @@ } void RecordDownloadOpenMethod(ChromeDownloadOpenMethod open_method) { + base::RecordAction(base::UserMetricsAction("Download.Open")); UMA_HISTOGRAM_ENUMERATION("Download.OpenMethod", open_method, DOWNLOAD_OPEN_METHOD_LAST_ENTRY);
diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_apitest.cc b/chrome/browser/extensions/api/tab_capture/tab_capture_apitest.cc index db8e98a8..fcedde3 100644 --- a/chrome/browser/extensions/api/tab_capture/tab_capture_apitest.cc +++ b/chrome/browser/extensions/api/tab_capture/tab_capture_apitest.cc
@@ -54,41 +54,6 @@ switches::kAllowlistedExtensionID, kExtensionId); } - content::WebContents* OpenNewTab(const char* url) { - const content::OpenURLParams params( - GURL(url), content::Referrer(), - WindowOpenDisposition::NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_LINK, - false); - content::WebContents* web_contents = browser()->OpenURL(params); - CHECK(web_contents) << "Failed to open new tab"; - - return web_contents; - } - - void GrantActiveTabPermission(content::WebContents* web_contents) { - const Extension* extension = - ExtensionRegistry::Get(web_contents->GetBrowserContext()) - ->enabled_extensions() - .GetByID(kExtensionId); - ASSERT_TRUE(extension) << "Failed to get extension from registry"; - TabHelper::FromWebContents(web_contents) - ->active_tab_permission_granter() - ->GrantIfRequested(extension); - } - - void ResultCatcherExpectSuccess() { - ResultCatcher catcher; - catcher.RestrictToBrowserContext(browser()->profile()); - EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); - - content::WebContents* const current_tab = - browser()->tab_strip_model()->GetActiveWebContents(); - ASSERT_TRUE(current_tab); - TabHelper::FromWebContents(current_tab) - ->active_tab_permission_granter() - ->RevokeForTesting(); - } - protected: void SimulateMouseClickInCurrentTab() { content::SimulateMouseClick( @@ -267,14 +232,20 @@ EXPECT_TRUE(listener.WaitUntilSatisfied()); - content::WebContents* web_contents = OpenNewTab(url::kAboutBlankURL); + content::OpenURLParams params(GURL(url::kAboutBlankURL), content::Referrer(), + WindowOpenDisposition::NEW_FOREGROUND_TAB, + ui::PAGE_TRANSITION_LINK, false); + content::WebContents* web_contents = browser()->OpenURL(params); + content::RenderFrameHost* const main_frame = web_contents->GetMainFrame(); ASSERT_TRUE(main_frame); listener.Reply(base::StringPrintf("web-contents-media-stream://%i:%i", main_frame->GetProcess()->GetID(), main_frame->GetRoutingID())); - ResultCatcherExpectSuccess(); + ResultCatcher catcher; + catcher.RestrictToBrowserContext(browser()->profile()); + EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); } // Make sure tabCapture.capture only works if the tab has been granted @@ -291,17 +262,25 @@ // Open a new tab and make sure capture is denied. EXPECT_TRUE(before_open_tab.WaitUntilSatisfied()); - content::WebContents* web_contents = OpenNewTab(url::kAboutBlankURL); + content::OpenURLParams params(GURL(url::kAboutBlankURL), content::Referrer(), + WindowOpenDisposition::NEW_FOREGROUND_TAB, + ui::PAGE_TRANSITION_LINK, false); + content::WebContents* web_contents = browser()->OpenURL(params); + ASSERT_TRUE(web_contents) << "Failed to open new tab"; before_open_tab.Reply(""); // Grant permission and make sure capture succeeds. EXPECT_TRUE(before_grant_permission.WaitUntilSatisfied()); - GrantActiveTabPermission(web_contents); + const Extension* extension = ExtensionRegistry::Get( + web_contents->GetBrowserContext())->enabled_extensions().GetByID( + kExtensionId); + TabHelper::FromWebContents(web_contents) + ->active_tab_permission_granter()->GrantIfRequested(extension); before_grant_permission.Reply(""); // Open a new tab and make sure capture is denied. EXPECT_TRUE(before_open_new_tab.WaitUntilSatisfied()); - OpenNewTab(url::kAboutBlankURL); + browser()->OpenURL(params); before_open_new_tab.Reply(""); // Add extension to allowlist and make sure capture succeeds. @@ -309,7 +288,9 @@ AddExtensionToCommandLineAllowlist(); before_allowlist_extension.Reply(""); - ResultCatcherExpectSuccess(); + ResultCatcher catcher; + catcher.RestrictToBrowserContext(browser()->profile()); + EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); } // Tests that fullscreen transitions during a tab capture session dispatch @@ -335,27 +316,40 @@ SimulateMouseClickInCurrentTab(); // Wait until the page examines its results and calls chrome.test.succeed(). - ResultCatcherExpectSuccess(); + ResultCatcher catcher; + catcher.RestrictToBrowserContext(browser()->profile()); + EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); } // Make sure tabCapture API can be granted for Chrome:// pages. -IN_PROC_BROWSER_TEST_F(TabCaptureApiTest, GrantForChromePages) { +// Disabled due to flakes on macOS; see https://crbug.com/1134562. +#if defined(OS_MAC) +#define MAYBE_GrantForChromePages DISABLED_GrantForChromePages +#else +#define MAYBE_GrantForChromePages GrantForChromePages +#endif +IN_PROC_BROWSER_TEST_F(TabCaptureApiTest, MAYBE_GrantForChromePages) { ExtensionTestMessageListener before_open_tab("ready1", true); - ExtensionTestMessageListener before_grant_permission("ready2", true); ASSERT_TRUE(RunExtensionSubtest("tab_capture", "active_tab_chrome_pages.html")) << message_; - EXPECT_TRUE(before_open_tab.WaitUntilSatisfied()); - content::WebContents* web_contents = OpenNewTab(kValidChromeURL); + + // Open a tab on a chrome:// page and make sure we can capture. + content::OpenURLParams params(GURL(kValidChromeURL), content::Referrer(), + WindowOpenDisposition::NEW_FOREGROUND_TAB, + ui::PAGE_TRANSITION_LINK, false); + content::WebContents* web_contents = browser()->OpenURL(params); + const Extension* extension = ExtensionRegistry::Get( + web_contents->GetBrowserContext())->enabled_extensions().GetByID( + kExtensionId); + TabHelper::FromWebContents(web_contents) + ->active_tab_permission_granter()->GrantIfRequested(extension); before_open_tab.Reply(""); - // Grant permission and make sure capture succeeds. - EXPECT_TRUE(before_grant_permission.WaitUntilSatisfied()); - GrantActiveTabPermission(web_contents); - before_grant_permission.Reply(""); - - ResultCatcherExpectSuccess(); + ResultCatcher catcher; + catcher.RestrictToBrowserContext(browser()->profile()); + EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); } // Tests that a tab in incognito mode can be captured.
diff --git a/chrome/browser/password_check/android/internal/BUILD.gn b/chrome/browser/password_check/android/internal/BUILD.gn index 8521157..23d1c6a 100644 --- a/chrome/browser/password_check/android/internal/BUILD.gn +++ b/chrome/browser/password_check/android/internal/BUILD.gn
@@ -6,6 +6,7 @@ import("//build/config/locales.gni") import("//chrome/android/features/android_library_factory_tmpl.gni") import("//chrome/common/features.gni") +import("//tools/grit/grit_rule.gni") _factory_sources = [ "java/src/org/chromium/chrome/browser/password_check/PasswordCheckFactory.java" ] _public_target = "//chrome/browser/password_check/android:public_java"
diff --git a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_iw.xtb b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_iw.xtb index 66bfab6..1b6fedd 100644 --- a/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_iw.xtb +++ b/chrome/browser/password_check/android/internal/java/strings/translations/android_password_check_strings_iw.xtb
@@ -2,7 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="iw"> <translation id="1355944513479998918">Chrome לא הצליח לבדוק את כל הסיסמאות. יש לנסות שוב מחר או <ph name="BEGIN_LINK" />לבדוק את הסיסמאות בחשבון Google<ph name="END_LINK" />.</translation> -<translation id="1513858653616922153">מחק סיסמה</translation> +<translation id="1513858653616922153">מחיקת סיסמה</translation> <translation id="1547725796794473036">{COMPROMISED_PASSWORDS,plural, =1{סיסמה אחת שנחשפה}two{# סיסמאות שנחשפו}many{# סיסמאות שנחשפו}other{# סיסמאות שנחשפו}}</translation> <translation id="1599766761352751884">המערכת בודקת סיסמאות (<ph name="ANALYSED_PASSWORDS" /> מתוך <ph name="TOTAL_PASSWORDS" />)…</translation> <translation id="1713125606790339209">בחשבונות הבאים נעשה שימוש בסיסמאות שנחשפו בפרצה באבטחת מידע של צד שלישי או שהוזנו באתר מטעה. יש לשנות את הסיסמאות האלה מיד כדי להגן על החשבונות.</translation>
diff --git a/chrome/browser/permissions/abusive_origin_permission_revocation_request.cc b/chrome/browser/permissions/abusive_origin_permission_revocation_request.cc index fa0012a..a20936c8 100644 --- a/chrome/browser/permissions/abusive_origin_permission_revocation_request.cc +++ b/chrome/browser/permissions/abusive_origin_permission_revocation_request.cc
@@ -14,6 +14,7 @@ #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/permissions/permission_manager.h" #include "components/permissions/permission_result.h" +#include "components/permissions/permission_uma_util.h" #include "components/permissions/permissions_client.h" #include "components/safe_browsing/core/db/database_manager.h" @@ -85,6 +86,10 @@ OriginStatus status = GetOriginStatus(profile, origin); status.has_been_previously_revoked = true; SetOriginStatus(profile, origin, status); + + permissions::PermissionUmaUtil::PermissionRevoked( + ContentSettingsType::NOTIFICATIONS, + permissions::PermissionSourceUI::AUTO_REVOCATION, origin, profile); } } // namespace @@ -117,9 +122,14 @@ return; } + CrowdDenyPreloadData* crowd_deny = CrowdDenyPreloadData::GetInstance(); + permissions::PermissionUmaUtil::RecordCrowdDenyIsLoadedAtAbuseCheckTime( + crowd_deny->is_loaded_from_disk()); + permissions::PermissionUmaUtil::RecordCrowdDenyVersionAtAbuseCheckTime( + crowd_deny->version_on_disk()); + const CrowdDenyPreloadData::SiteReputation* site_reputation = - CrowdDenyPreloadData::GetInstance()->GetReputationDataForSite( - url::Origin::Create(origin_)); + crowd_deny->GetReputationDataForSite(url::Origin::Create(origin_)); if (site_reputation && (site_reputation->notification_ux_quality() == CrowdDenyPreloadData::SiteReputation::ABUSIVE_PROMPTS ||
diff --git a/chrome/browser/permissions/abusive_origin_permission_revocation_request_unittests.cc b/chrome/browser/permissions/abusive_origin_permission_revocation_request_unittests.cc index 6e40495..17e9c59 100644 --- a/chrome/browser/permissions/abusive_origin_permission_revocation_request_unittests.cc +++ b/chrome/browser/permissions/abusive_origin_permission_revocation_request_unittests.cc
@@ -4,9 +4,11 @@ #include "chrome/browser/permissions/abusive_origin_permission_revocation_request.h" +#include "base/files/scoped_temp_dir.h" #include "base/test/mock_callback.h" #include "base/test/scoped_feature_list.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" +#include "chrome/browser/history/history_service_factory.h" #include "chrome/browser/permissions/abusive_origin_notifications_permission_revocation_config.h" #include "chrome/browser/permissions/crowd_deny_fake_safe_browsing_database_manager.h" #include "chrome/browser/permissions/crowd_deny_preload_data.h" @@ -22,8 +24,7 @@ using Outcome = AbusiveOriginPermissionRevocationRequest::Outcome; using SiteReputation = CrowdDenyPreloadData::SiteReputation; - AbusiveOriginPermissionRevocationRequestTest() - : testing_profile_(std::make_unique<TestingProfile>()) {} + AbusiveOriginPermissionRevocationRequestTest() = default; ~AbusiveOriginPermissionRevocationRequestTest() override = default; @@ -31,6 +32,14 @@ void SetUp() override { testing::Test::SetUp(); + DCHECK(profile_dir_.CreateUniqueTempDir()); + TestingProfile::Builder profile_builder; + profile_builder.SetPath(profile_dir_.GetPath()); + profile_builder.AddTestingFactory( + HistoryServiceFactory::GetInstance(), + HistoryServiceFactory::GetDefaultFactory()); + testing_profile_ = profile_builder.Build(); + fake_database_manager_ = base::MakeRefCounted<CrowdDenyFakeSafeBrowsingDatabaseManager>(); safe_browsing_factory_ = @@ -99,6 +108,7 @@ TestingProfile* GetTestingProfile() { return testing_profile_.get(); } private: + base::ScopedTempDir profile_dir_; content::BrowserTaskEnvironment task_environment_; testing::ScopedCrowdDenyPreloadDataOverride testing_preload_data_; std::unique_ptr<TestingProfile> testing_profile_;
diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/browser/permissions/chrome_permissions_client.cc index 0b09bea9..8aed0a2 100644 --- a/chrome/browser/permissions/chrome_permissions_client.cc +++ b/chrome/browser/permissions/chrome_permissions_client.cc
@@ -21,8 +21,6 @@ #include "chrome/browser/permissions/quiet_notification_permission_ui_config.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/search_engines/ui_thread_search_terms_data.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" #include "chrome/browser/usb/usb_chooser_context.h" #include "chrome/browser/usb/usb_chooser_context_factory.h" @@ -32,6 +30,8 @@ #include "components/google/core/common/google_util.h" #include "components/permissions/features.h" #include "components/prefs/pref_service.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" #include "components/ukm/content/source_url_recorder.h" #include "extensions/common/constants.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" @@ -237,6 +237,20 @@ ->GetBoolean(prefs::kHadThreeConsecutiveNotificationPermissionDenies); } +base::Optional<bool> +ChromePermissionsClient::HasPreviouslyAutoRevokedPermission( + content::BrowserContext* browser_context, + const GURL& origin, + ContentSettingsType permission) { + if (permission != ContentSettingsType::NOTIFICATIONS) { + return base::nullopt; + } + + Profile* profile = Profile::FromBrowserContext(browser_context); + return AbusiveOriginPermissionRevocationRequest:: + HasPreviouslyRevokedPermission(profile, origin); +} + base::Optional<url::Origin> ChromePermissionsClient::GetAutoApprovalOrigin() { #if defined(OS_CHROMEOS) // In web kiosk mode, all permission requests are auto-approved for the origin
diff --git a/chrome/browser/permissions/chrome_permissions_client.h b/chrome/browser/permissions/chrome_permissions_client.h index 99196af0..559c59d 100644 --- a/chrome/browser/permissions/chrome_permissions_client.h +++ b/chrome/browser/permissions/chrome_permissions_client.h
@@ -52,6 +52,10 @@ base::Optional<QuietUiReason> quiet_ui_reason) override; base::Optional<bool> HadThreeConsecutiveNotificationPermissionDenies( content::BrowserContext* browser_context) override; + base::Optional<bool> HasPreviouslyAutoRevokedPermission( + content::BrowserContext* browser_context, + const GURL& origin, + ContentSettingsType permission) override; base::Optional<url::Origin> GetAutoApprovalOrigin() override; bool CanBypassEmbeddingOriginCheck(const GURL& requesting_origin, const GURL& embedding_origin) override;
diff --git a/chrome/browser/permissions/crowd_deny_preload_data.cc b/chrome/browser/permissions/crowd_deny_preload_data.cc index dd2a5a2..98086e8 100644 --- a/chrome/browser/permissions/crowd_deny_preload_data.cc +++ b/chrome/browser/permissions/crowd_deny_preload_data.cc
@@ -16,6 +16,7 @@ #include "base/task/post_task.h" #include "base/task/thread_pool.h" #include "base/task_runner_util.h" +#include "components/permissions/permission_uma_util.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" #include "url/gurl.h" #include "url/origin.h" @@ -85,7 +86,9 @@ return nullptr; } -void CrowdDenyPreloadData::LoadFromDisk(const base::FilePath& proto_path) { +void CrowdDenyPreloadData::LoadFromDisk(const base::FilePath& proto_path, + const base::Version& version) { + version_on_disk_ = version; // On failure, LoadAndParseAndIndexPreloadDataFromDisk will return an empty // map. Replace the in-memory state with that regardless, so that the stale // old data will no longer be used.
diff --git a/chrome/browser/permissions/crowd_deny_preload_data.h b/chrome/browser/permissions/crowd_deny_preload_data.h index a517be9..2ea5fd2 100644 --- a/chrome/browser/permissions/crowd_deny_preload_data.h +++ b/chrome/browser/permissions/crowd_deny_preload_data.h
@@ -11,14 +11,12 @@ #include "base/containers/flat_map.h" #include "base/macros.h" #include "base/memory/ref_counted.h" +#include "base/version.h" #include "chrome/browser/permissions/crowd_deny.pb.h" #include "url/origin.h" namespace base { class SequencedTaskRunner; -} - -namespace base { class FilePath; } @@ -53,19 +51,27 @@ // Parses a single instance of chrome_browser_crowd_deny::PreloadData message // in binary wire format from the file at |preload_data_path|. - void LoadFromDisk(const base::FilePath& preload_data_path); + void LoadFromDisk(const base::FilePath& preload_data_path, + const base::Version& version); + + inline bool is_loaded_from_disk() { return is_loaded_from_disk_; } + inline const base::Optional<base::Version>& version_on_disk() { + return version_on_disk_; + } private: friend class testing::ScopedCrowdDenyPreloadDataOverride; void set_site_reputations(DomainToReputationMap map) { domain_to_reputation_map_ = std::move(map); + is_loaded_from_disk_ = true; } DomainToReputationMap TakeSiteReputations(); - + bool is_loaded_from_disk_ = false; DomainToReputationMap domain_to_reputation_map_; scoped_refptr<base::SequencedTaskRunner> loading_task_runner_; + base::Optional<base::Version> version_on_disk_; DISALLOW_COPY_AND_ASSIGN(CrowdDenyPreloadData); };
diff --git a/chrome/browser/permissions/crowd_deny_preload_data_unittest.cc b/chrome/browser/permissions/crowd_deny_preload_data_unittest.cc index 73dd803..7795204 100644 --- a/chrome/browser/permissions/crowd_deny_preload_data_unittest.cc +++ b/chrome/browser/permissions/crowd_deny_preload_data_unittest.cc
@@ -9,6 +9,7 @@ #include "base/numerics/safe_conversions.h" #include "base/strings/string_piece.h" #include "base/test/task_environment.h" +#include "base/version.h" #include "chrome/browser/permissions/crowd_deny.pb.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -74,7 +75,7 @@ } void LoadTestDataAndWait(base::FilePath path) { - preload_data()->LoadFromDisk(path); + preload_data()->LoadFromDisk(path, base::Version()); task_environment()->RunUntilIdle(); } @@ -404,8 +405,8 @@ // TODO(crbug.com/1028642): Think about making this test stronger. Even if the // ordering were random, given the generous retry policy in continuous build, // the test would still pass most of the time. - preload_data()->LoadFromDisk(data_path_v2); - preload_data()->LoadFromDisk(data_path_v3); + preload_data()->LoadFromDisk(data_path_v2, base::Version()); + preload_data()->LoadFromDisk(data_path_v3, base::Version()); task_environment()->RunUntilIdle(); // Expect the new version to have become visible.
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc index ff3e40d..034fdbe 100644 --- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc +++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -1153,10 +1153,15 @@ { key::kRequiredClientCertificateForDevice, prefs::kRequiredClientCertificateForDevice, base::Value::Type::LIST }, + { key::kSecurityTokenSessionBehavior, + prefs::kSecurityTokenSessionBehavior, + base::Value::Type::STRING }, + { key::kSecurityTokenSessionNotificationSeconds, + prefs::kSecurityTokenSessionNotificationSeconds, + base::Value::Type::INTEGER }, { key::kDeviceArcDataSnapshotHours, arc::prefs::kArcSnapshotHours, base::Value::Type::DICTIONARY }, - #else // defined(OS_CHROMEOS) { key::kMetricsReportingEnabled, metrics::prefs::kMetricsReportingEnabled,
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 25d00f36..b3a36523 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -289,6 +289,7 @@ #include "chrome/browser/chromeos/login/saml/saml_profile_prefs.h" #include "chrome/browser/chromeos/login/screens/enable_adb_sideloading_screen.h" #include "chrome/browser/chromeos/login/screens/reset_screen.h" +#include "chrome/browser/chromeos/login/security_token_session_controller.h" #include "chrome/browser/chromeos/login/session/user_session_manager.h" #include "chrome/browser/chromeos/login/signin/signin_error_notifier_ash.h" #include "chrome/browser/chromeos/login/startup_utils.h" @@ -927,6 +928,7 @@ chromeos::first_run::RegisterProfilePrefs(registry); chromeos::file_system_provider::RegisterProfilePrefs(registry); chromeos::KerberosCredentialsManager::RegisterProfilePrefs(registry); + chromeos::login::SecurityTokenSessionController::RegisterPrefs(registry); chromeos::multidevice_setup::MultiDeviceSetupService::RegisterProfilePrefs( registry); chromeos::MultiProfileUserController::RegisterProfilePrefs(registry);
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 4e5c42e..acb9f16 100644 --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -178,6 +178,7 @@ #if defined(OS_CHROMEOS) #include "chrome/browser/chromeos/cert_provisioning/cert_provisioning_scheduler_user_service.h" +#include "chrome/browser/chromeos/login/security_token_session_controller_factory.h" #include "chrome/browser/nearby_sharing/nearby_sharing_service_factory.h" #endif @@ -216,6 +217,7 @@ #if defined(OS_CHROMEOS) chromeos::cert_provisioning::CertProvisioningSchedulerUserServiceFactory:: GetInstance(); + chromeos::login::SecurityTokenSessionControllerFactory::GetInstance(); chromeos::EnsureBrowserContextKeyedServiceFactoriesBuilt(); #endif
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_gu.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_gu.xtb index 51f6d473..1a60701 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_gu.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_gu.xtb
@@ -68,6 +68,7 @@ <translation id="1383876407941801731">શોધો</translation> <translation id="1396114365388024581">tablst</translation> <translation id="1405567553485452995">આછો લીલો</translation> +<translation id="141454040365657399">પેજ હેડર</translation> <translation id="1417889266572670458">ઘેરો વાદળી</translation> <translation id="1431911867058218151">પ્લમ</translation> <translation id="1439316808600711881">rgn</translation> @@ -348,6 +349,7 @@ <translation id="3549141990712742152"><ph name="TEXT" /> કાપો.</translation> <translation id="3549680091535286226">હંગામી રૂપે સ્પીચને રોકવા માટે 2 આંગળીઓથી ટૅપ કરો</translation> <translation id="3564729643041517261">વર્તમાન ડિસ્પ્લે શૈલી 'સાથેસાથે' છે</translation> +<translation id="3573145950452451508">પેજ ફૂટર</translation> <translation id="3587482841069643663">બધા</translation> <translation id="3589661172894441357">શબ્દાવલી</translation> <translation id="3591784666823501596">રૉયલ બ્લૂ</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_iw.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_iw.xtb index c1e92835..a7bcc7c 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_iw.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_iw.xtb
@@ -84,7 +84,7 @@ <translation id="1542513807034338907">גלילה אל הדף הקודם</translation> <translation id="1546370775711804143">סרגל גלילה</translation> <translation id="1555130319947370107">כחול</translation> -<translation id="1559739829547075274">נווט לאחור</translation> +<translation id="1559739829547075274">ניווט לאחור</translation> <translation id="1565432156062359693">אין עוד רשימות</translation> <translation id="1571643229714746283">ChromeVox ready</translation> <translation id="1594072653727561613">mnu</translation> @@ -244,7 +244,7 @@ <translation id="2873259058405069099">עבור לתחילת הטבלה</translation> <translation id="287383510823843610">כתום כהה</translation> <translation id="2879867157561757640">החלקה מטה עם שלוש אצבעות</translation> -<translation id="288178314850623291">השתמש בפקודות מעבר כדי לדלג אל סוגים ספציפיים של רכיבים. כדי לעבור קדימה בין כותרות, הקש על מקש החיפוש ועל מקש H. כדי לעבור אחורה, הקש יחד על מקש החיפוש, Shift ו-H.</translation> +<translation id="288178314850623291">אפשר להשתמש בפקודות מעבר כדי לדלג אל סוגים ספציפיים של רכיבים. כדי לעבור קדימה בין כותרות, מקישים על מקש החיפוש ועל מקש H. כדי לעבור אחורה, מקישים יחד על מקש החיפוש, Shift ו-H.</translation> <translation id="2885764457467528513">{COUNT,plural, =1{דקה}two{דקות}many{דקות}other{דקות}}</translation> <translation id="2894654529758326923">מידע</translation> <translation id="2899328121302785497">{COUNT,plural, =1{סוגר מסולסל שמאלי}two{# סימני סוגר מסולסל שמאלי}many{# סימני סוגר מסולסל שמאלי}other{# סימני סוגר מסולסל שמאלי}}</translation> @@ -288,7 +288,7 @@ <translation id="3131002934070407451">יש לקרוא מספרים בתור:</translation> <translation id="3134461040845705080">rdonly</translation> <translation id="3137663468179739624">זית</translation> -<translation id="3138767756593758860">הצג רשימת ציוני דרך</translation> +<translation id="3138767756593758860">הצגה של רשימת ציוני דרך</translation> <translation id="3143851963874289911">cll</translation> <translation id="3149472044574196936">השורה הבאה</translation> <translation id="3153024374267644603">הדיבור פועל</translation> @@ -406,12 +406,12 @@ <translation id="4053520724192563562">ירוק ליים</translation> <translation id="4054936709456751127">sts</translation> <translation id="4058278702844053247">מתבצעת טעינת דף</translation> -<translation id="4065205963140826639">נסה להקיש על מקש החיפוש ועל החץ ימינה כדי למצוא את לחצן 'הבא'. לאחר מכן הקש על מקש החיפוש ומקש הרווח כדי ללחוץ עליו.</translation> +<translation id="4065205963140826639">צריך להקיש על מקש החיפוש ועל החץ ימינה כדי למצוא את הלחצן 'הבא'. כדי ללחוץ עליו, יש להקיש על מקש החיפוש ומקש הרווח.</translation> <translation id="4081085052247739398">{COUNT,plural, =1{טילדה (~)}two{# סימני טילדה (~)}many{# סימני טילדה (~)}other{# סימני טילדה (~)}}</translation> <translation id="409334809956508737">האובייקט הקודם</translation> <translation id="4099274309791143834">כולל תפריט משנה</translation> <translation id="4101527861445851766">תיבת סימון שסומנה</translation> -<translation id="4115378294792113321">מגנטה</translation> +<translation id="4115378294792113321">מג'נטה</translation> <translation id="4116415223832267137">התראה</translation> <translation id="4148180433151187540">{COUNT,plural, =1{סוגר מסולסל ימני}two{# סימני סוגר מסולסל ימני}many{# סימני סוגר מסולסל ימני}other{# סימני סוגר מסולסל ימני}}</translation> <translation id="4159784952369912983">סגול</translation> @@ -447,7 +447,7 @@ <translation id="4322625298640984693">סיינה</translation> <translation id="4342180618051828363">{COUNT,plural, =1{נקודה}=3{שלוש נקודות}two{# נקודות}many{# נקודות}other{# נקודות}}</translation> <translation id="4372435075475052704">min:<ph name="X" /></translation> -<translation id="4372705107434148843">הפסק דיבור</translation> +<translation id="4372705107434148843">הפסקת הדיבור</translation> <translation id="4376316291247992553">הגת גרפיקה כברייל</translation> <translation id="437809255587011096">תיאור קולי של עיצוב טקסט</translation> <translation id="4378308539633073595">גלילה קדימה</translation> @@ -517,7 +517,7 @@ <translation id="492295894462528572">פתח דבר</translation> <translation id="495046168593986294">גלילה למעלה</translation> <translation id="495170559598752135">פעולות</translation> -<translation id="4953585991029886728">ערוך טקסט</translation> +<translation id="4953585991029886728">עריכת הטקסט</translation> <translation id="4973717656530883744">מינימום <ph name="X" /></translation> <translation id="4974612477719259470">אין לחצן קודם</translation> <translation id="4979404613699303341">לחצן 'הקודם'</translation> @@ -530,7 +530,7 @@ <translation id="5012724933919010465"><ph name="NAME" />, סימנת את לחצן הבחירה של האפשרות בתפריט</translation> <translation id="5020651427400641814">הפעלה של תיעוד דיבור</translation> <translation id="5041394372352067729">העבר תצוגת ברייל לחלק העליון של הדף</translation> -<translation id="5042770794184672516">הגבר את עוצמת הדיבור</translation> +<translation id="5042770794184672516">הגברת עוצמת הדיבור</translation> <translation id="5042992464904238023">תוכן</translation> <translation id="5050015258024679800">הכותרת הקודמת של רמה 4</translation> <translation id="5054047268577924192">פריט קודם ברשימה</translation> @@ -616,7 +616,7 @@ <translation id="5704453877234251104">ניתן להקיש על החץ למעלה או למטה כדי להפעיל השלמות אוטומטיות</translation> <translation id="5712244464475377681">popbtn</translation> <translation id="5725079927589231571">כחול פלדה בהיר</translation> -<translation id="5732189279857692565">זו הכותרת השנייה. המשך במדריך; הקש על מקש החיפוש ועל H או על מקש החיפוש, על Shift ועל H</translation> +<translation id="5732189279857692565">זו הכותרת השנייה. כדי להמשיך בשיעור יש להקיש על מקש החיפוש ועל H או על מקש החיפוש, על Shift ועל H</translation> <translation id="5748623122140342504">הכותרת הקודמת של רמה 5</translation> <translation id="5760594853119905566">נספח</translation> <translation id="5805940204952508776">הקשה עם שתי אצבעות</translation> @@ -779,7 +779,7 @@ <translation id="7137397390322864165">סלמון</translation> <translation id="7140168702531682811">כתב עילי</translation> <translation id="7143034430156387447">מעבר בין ברייל 6 נקודות ו-8 נקודות</translation> -<translation id="7143207342074048698">מתחבר</translation> +<translation id="7143207342074048698">מתבצע חיבור</translation> <translation id="7153618581592392745">לבנדר</translation> <translation id="7157306005867877619">תקציר</translation> <translation id="7161771961008409533">לחצן קופץ</translation> @@ -897,7 +897,7 @@ <translation id="8033827949643255796">מסומן</translation> <translation id="8035962149453661158">max:<ph name="X" /></translation> <translation id="8037651341025652929">סיכום</translation> -<translation id="8042761080832772327">ערוך טקסט, רשומת חיפוש</translation> +<translation id="8042761080832772327">עריכת טקסט, רשומת חיפוש</translation> <translation id="8049189770492311300">טיימר</translation> <translation id="8058636807889143711">אין עוד ביטויים מתמטיים</translation> <translation id="8066678206530322333">מודעת באנר</translation>
diff --git a/chrome/browser/resources/chromeos/cryptohome.html b/chrome/browser/resources/chromeos/cryptohome.html index 64110c0..22181f0 100644 --- a/chrome/browser/resources/chromeos/cryptohome.html +++ b/chrome/browser/resources/chromeos/cryptohome.html
@@ -36,7 +36,11 @@ <tr> <td>Pkcs11IsTpmTokenReady</td> <td id="pkcs11-is-tpm-token-ready"></td> - </tr> + </tr> + <tr> + <td>HasResetLockPermissions</td> + <td id="has-reset-lock-permissions"></td> + </tr> </table> <h3>crypto:</h3> <table>
diff --git a/chrome/browser/resources/signin/profile_picker/icons.js b/chrome/browser/resources/signin/profile_picker/icons.js index 36372277..038d57d7 100644 --- a/chrome/browser/resources/signin/profile_picker/icons.js +++ b/chrome/browser/resources/signin/profile_picker/icons.js
@@ -18,7 +18,7 @@ <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z"/> </g> - <g id="customize-banner" viewBox="0 0 678 266" width="678" height="266" fill="none" xmlns="http://www.w3.org/2000/svg"> + <g id="customize-banner" viewBox="0 0 678 180" width="678" height="180" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M70.51 115.677c-2.425 3.218-7.276 3.053-9.621-.248-6.711-9.738-6.63-23.107.97-32.928 7.762-9.903 20.538-12.957 31.453-8.5 3.639 1.65 4.852 6.272 2.426 9.408l-25.227 32.268zM531.612 112.52c1.744-1.18 4.236-.252 4.818 1.77 1.744 6.069-.582 12.811-6.064 16.351-5.566 3.624-12.544 2.95-17.279-1.18-1.578-1.433-1.412-3.961.332-5.141l18.193-11.8zM140 128.499c0 2.519-1.98 4.498-4.5 4.498-2.52.09-4.5-1.979-4.5-4.498 0-2.52 1.98-4.499 4.5-4.499 2.43 0 4.5 1.979 4.5 4.499z" fill="var(--theme-shape-color)"/><path d="M160.541 53.57c.993-4.303 5.297-7.035 9.601-6.042l18.294 4.222c4.304.993 7.035 5.297 6.042 9.602-.993 4.304-5.297 7.036-9.602 6.042L166.5 63.173c-4.304-.91-6.953-5.298-5.959-9.602z" stroke="var(--theme-shape-color)" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M526 69c6.075 0 11-4.925 11-11s-4.925-11-11-11-11 4.925-11 11 4.925 11 11 11zM608.042 81.007L630.448 83c.944.08 1.631.876 1.545 1.753l-2.146 20.805c-.086.877-.945 1.515-1.889 1.435L605.552 105c-.944-.079-1.631-.876-1.545-1.753l2.146-20.805c.086-.877.945-1.515 1.889-1.435z" stroke="var(--theme-shape-color)" stroke-width="2"/> </g> </defs>
diff --git a/chrome/browser/resources/signin/profile_picker/profile_card_menu.html b/chrome/browser/resources/signin/profile_picker/profile_card_menu.html index 08fc921..5a2166e 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_card_menu.html +++ b/chrome/browser/resources/signin/profile_picker/profile_card_menu.html
@@ -57,10 +57,10 @@ } #removeConfirmationButton { - --active-shadow-action-rgb: var(--google-red-500-rgb); - --bg-action: var(--google-red-700); + --active-shadow-action-rgb: var(--google-red-300-rgb); + --bg-action: var(--google-red-300); --hover-bg-action: rgba(var(--google-red-700-rgb), .9); - --hover-shadow-action-rgb: var(--google-red-500-rgb); + --hover-shadow-action-rgb: var(--google-red-300-rgb); background-color: var(--bg-action); border-radius: 4px; color: var(--ink-color-action); @@ -75,6 +75,16 @@ #removeConfirmationButton:hover { background-color: var(--hover-bg-action); } + + @media (prefers-color-scheme: dark) { + .warning-message { + color: var(--google-grey-500); + } + + .statistics { + border-color: var(--google-grey-refresh-700); + } + } </style> <cr-icon-button class="icon-more-vert" id="moreActionsButton" @@ -97,7 +107,7 @@ $i18n{profileMenuRemoveText} <span class="key-text">[[profileState.localProfileName]]</span> </div> - <div> + <div class="warning-message"> [[removeWarningText_]] <span hidden$="[[!profileState.isSyncing]]" class="key-text"> [[profileState.userName]]
diff --git a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.html b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.html index 688e73e3..bb084956 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.html +++ b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/local_profile_customization.html
@@ -11,7 +11,6 @@ } #wrapperContainer { - align-items: center; display: flex; height: calc(max(100vh, var(--view-min-size)) - (var(--banner-height) + var(--avatar-size)/2 + var(--vertical-gap) +
diff --git a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html index 28218f4d..dea0ad3 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html +++ b/chrome/browser/resources/signin/profile_picker/profile_creation_flow/shared_css.html
@@ -22,9 +22,9 @@ #backButton { --cr-icon-button-fill-color: var(--theme-text-color); - --cr-icon-button-icon-size: 14px; + --cr-icon-button-icon-size: 20px; --cr-icon-button-margin-start: 4px; - --cr-icon-button-size: 25px; + --cr-icon-button-size: 36px; margin-top: 4px; }
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker.html b/chrome/browser/resources/signin/profile_picker/profile_picker.html index 354582a6..f360a35 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_picker.html +++ b/chrome/browser/resources/signin/profile_picker/profile_picker.html
@@ -14,6 +14,7 @@ @media (prefers-color-scheme: dark) { html { + --md-background-color: rgba(41, 42, 45, 1); background: var(--md-background-color); } }
diff --git a/chrome/browser/resources/signin/profile_picker/profile_picker_main_view.html b/chrome/browser/resources/signin/profile_picker/profile_picker_main_view.html index 1e4678d..9d47994 100644 --- a/chrome/browser/resources/signin/profile_picker/profile_picker_main_view.html +++ b/chrome/browser/resources/signin/profile_picker/profile_picker_main_view.html
@@ -96,10 +96,6 @@ --cr-icon-button-stroke-color: var(--google-grey-refresh-700); } - .footer > * { - background-color: rgba(255, 255, 255, .8); - } - #browseAsGuestButton { margin-inline-start: var(--footer-margin); } @@ -136,10 +132,6 @@ --cr-icon-button-stroke-color: rgb(48, 48, 50); color: var(--google-grey-refresh-500); } - - .footer > * { - background-color: rgba(0, 0, 0, .5); - } } </style>
diff --git a/chrome/browser/subresource_filter/ads_intervention_manager_browsertest.cc b/chrome/browser/subresource_filter/ads_intervention_manager_browsertest.cc index db643fe..de8b697 100644 --- a/chrome/browser/subresource_filter/ads_intervention_manager_browsertest.cc +++ b/chrome/browser/subresource_filter/ads_intervention_manager_browsertest.cc
@@ -4,12 +4,12 @@ #include "base/test/scoped_feature_list.h" #include "base/test/simple_test_clock.h" -#include "chrome/browser/subresource_filter/ads_intervention_manager.h" #include "chrome/browser/subresource_filter/chrome_subresource_filter_client.h" #include "chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" +#include "components/subresource_filter/content/browser/ads_intervention_manager.h" #include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h" #include "components/subresource_filter/core/mojom/subresource_filter.mojom.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc index 376a14e..5a9e1a3 100644 --- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc +++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
@@ -14,16 +14,16 @@ #include "chrome/browser/infobars/infobar_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/safe_browsing/safe_browsing_service.h" -#include "chrome/browser/subresource_filter/ads_intervention_manager.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" #include "components/content_settings/browser/page_specific_content_settings.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/safe_browsing/core/db/database_manager.h" +#include "components/subresource_filter/content/browser/ads_intervention_manager.h" #include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h" #include "components/subresource_filter/content/browser/ruleset_service.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" #include "components/subresource_filter/core/browser/subresource_filter_features.h" #include "components/subresource_filter/core/common/activation_decision.h" #include "components/subresource_filter/core/common/activation_scope.h"
diff --git a/chrome/browser/subresource_filter/subresource_filter_abusive_unittest.cc b/chrome/browser/subresource_filter/subresource_filter_abusive_unittest.cc index 8094f43..a09f3f2e 100644 --- a/chrome/browser/subresource_filter/subresource_filter_abusive_unittest.cc +++ b/chrome/browser/subresource_filter/subresource_filter_abusive_unittest.cc
@@ -7,11 +7,11 @@ #include "base/memory/scoped_refptr.h" #include "base/stl_util.h" #include "base/test/scoped_feature_list.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" #include "chrome/browser/subresource_filter/subresource_filter_test_harness.h" #include "components/blocked_content/safe_browsing_triggered_popup_blocker.h" #include "components/safe_browsing/core/db/util.h" #include "components/subresource_filter/content/browser/fake_safe_browsing_database_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include "components/subresource_filter/core/browser/subresource_filter_constants.h" #include "components/subresource_filter/core/browser/subresource_filter_features.h" #include "components/subresource_filter/core/browser/subresource_filter_features_test_support.h"
diff --git a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc index 7c1c2d7..9004d53 100644 --- a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc +++ b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
@@ -17,7 +17,6 @@ #include "build/build_config.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/safe_browsing/test_safe_browsing_database_helper.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" #include "chrome/browser/subresource_filter/test_ruleset_publisher.h" #include "chrome/browser/ui/browser.h" @@ -28,6 +27,7 @@ #include "components/safe_browsing/core/db/v4_test_util.h" #include "components/safe_browsing/core/features.h" #include "components/subresource_filter/content/browser/ruleset_service.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" #include "components/subresource_filter/core/common/common_features.h" #include "content/public/browser/web_contents.h" #include "content/public/common/content_paths.h"
diff --git a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h index c24b8d1e..4e3a78e 100644 --- a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h +++ b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h
@@ -11,10 +11,10 @@ #include "base/macros.h" #include "base/test/scoped_feature_list.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "chrome/browser/subresource_filter/test_ruleset_publisher.h" #include "chrome/test/base/in_process_browser_test.h" #include "components/safe_browsing/core/db/util.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" #include "components/subresource_filter/core/browser/subresource_filter_features_test_support.h" #include "components/subresource_filter/core/common/test_ruleset_creator.h" #include "components/url_pattern_index/proto/rules.pb.h"
diff --git a/chrome/browser/subresource_filter/subresource_filter_history_observer.cc b/chrome/browser/subresource_filter/subresource_filter_history_observer.cc index 8c8aea74..6ce92a0 100644 --- a/chrome/browser/subresource_filter/subresource_filter_history_observer.cc +++ b/chrome/browser/subresource_filter/subresource_filter_history_observer.cc
@@ -4,7 +4,7 @@ #include "chrome/browser/subresource_filter/subresource_filter_history_observer.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include "url/gurl.h" SubresourceFilterHistoryObserver::SubresourceFilterHistoryObserver(
diff --git a/chrome/browser/subresource_filter/subresource_filter_history_observer.h b/chrome/browser/subresource_filter/subresource_filter_history_observer.h index de7e63e2..bb34f1b 100644 --- a/chrome/browser/subresource_filter/subresource_filter_history_observer.h +++ b/chrome/browser/subresource_filter/subresource_filter_history_observer.h
@@ -6,9 +6,9 @@ #define CHROME_BROWSER_SUBRESOURCE_FILTER_SUBRESOURCE_FILTER_HISTORY_OBSERVER_H_ #include "base/scoped_observer.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "components/history/core/browser/history_service.h" #include "components/history/core/browser/history_service_observer.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" class SubresourceFilterContentSettingsManager;
diff --git a/chrome/browser/subresource_filter/subresource_filter_history_observer_unittest.cc b/chrome/browser/subresource_filter/subresource_filter_history_observer_unittest.cc index 7b1cc4a4..772712b 100644 --- a/chrome/browser/subresource_filter/subresource_filter_history_observer_unittest.cc +++ b/chrome/browser/subresource_filter/subresource_filter_history_observer_unittest.cc
@@ -7,12 +7,12 @@ #include "base/run_loop.h" #include "chrome/browser/history/history_service_factory.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" #include "chrome/test/base/testing_profile.h" #include "components/history/core/browser/history_service.h" #include "components/history/core/test/history_service_test_util.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" #include "content/public/test/browser_task_environment.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h"
diff --git a/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.cc b/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.cc index 37326f8..2f894b7 100644 --- a/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.cc +++ b/chrome/browser/subresource_filter/subresource_filter_profile_context_factory.cc
@@ -10,9 +10,9 @@ #include "chrome/browser/profiles/incognito_helpers.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/subresource_filter/subresource_filter_history_observer.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" #include "components/keyed_service/core/keyed_service.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" // static SubresourceFilterProfileContext*
diff --git a/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc b/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc index 58a0c541..67ce16a 100644 --- a/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc +++ b/chrome/browser/subresource_filter/subresource_filter_settings_browsertest.cc
@@ -12,7 +12,6 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/subresource_filter/chrome_subresource_filter_client.h" #include "chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" @@ -25,6 +24,7 @@ #include "components/policy/core/common/policy_types.h" #include "components/policy/policy_constants.h" #include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include "components/subresource_filter/core/browser/subresource_filter_constants.h" #include "content/public/browser/web_contents.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/subresource_filter/subresource_filter_test_harness.cc b/chrome/browser/subresource_filter/subresource_filter_test_harness.cc index 52304b9..b29a4e8f 100644 --- a/chrome/browser/subresource_filter/subresource_filter_test_harness.cc +++ b/chrome/browser/subresource_filter/subresource_filter_test_harness.cc
@@ -14,8 +14,6 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/safe_browsing/test_safe_browsing_service.h" #include "chrome/browser/subresource_filter/chrome_subresource_filter_client.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" #include "chrome/browser/subresource_filter/subresource_filter_test_harness.h" #include "chrome/browser/subresource_filter/test_ruleset_publisher.h" @@ -24,7 +22,9 @@ #include "components/content_settings/browser/page_specific_content_settings.h" #include "components/safe_browsing/core/db/v4_protocol_manager_util.h" #include "components/subresource_filter/content/browser/ruleset_service.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include "components/subresource_filter/content/browser/subresource_filter_observer_test_utils.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" #include "components/subresource_filter/core/common/activation_decision.h" #include "components/subresource_filter/core/common/activation_list.h" #include "components/subresource_filter/core/common/test_ruleset_creator.h"
diff --git a/chrome/browser/subresource_filter/subresource_filter_unittest.cc b/chrome/browser/subresource_filter/subresource_filter_unittest.cc index 700105a..073610c 100644 --- a/chrome/browser/subresource_filter/subresource_filter_unittest.cc +++ b/chrome/browser/subresource_filter/subresource_filter_unittest.cc
@@ -7,7 +7,6 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "chrome/browser/subresource_filter/chrome_subresource_filter_client.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" #include "chrome/browser/subresource_filter/subresource_filter_test_harness.h" #include "chrome/test/base/testing_browser_process.h" #include "components/safe_browsing/core/db/util.h" @@ -15,6 +14,7 @@ #include "components/subresource_filter/content/browser/content_activation_list_utils.h" #include "components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h" #include "components/subresource_filter/content/browser/fake_safe_browsing_database_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include "components/subresource_filter/content/browser/subresource_filter_observer_test_utils.h" #include "components/subresource_filter/core/browser/subresource_filter_features.h" #include "components/subresource_filter/core/browser/subresource_filter_features_test_support.h"
diff --git a/chrome/browser/sync/test/integration/sync_errors_test.cc b/chrome/browser/sync/test/integration/sync_errors_test.cc index 1b90147c..29535e7 100644 --- a/chrome/browser/sync/test/integration/sync_errors_test.cc +++ b/chrome/browser/sync/test/integration/sync_errors_test.cc
@@ -128,7 +128,6 @@ GetSyncService(0)->QueryDetailedSyncStatusForDebugging(&status); ASSERT_EQ(status.sync_protocol_error.error_type, syncer::TRANSIENT_ERROR); ASSERT_EQ(status.sync_protocol_error.action, syncer::UPGRADE_CLIENT); - ASSERT_EQ(status.sync_protocol_error.url, url); ASSERT_EQ(status.sync_protocol_error.error_description, description); }
diff --git a/chrome/browser/sync/test/integration/two_client_typed_urls_sync_test.cc b/chrome/browser/sync/test/integration/two_client_typed_urls_sync_test.cc index 365c789f..ee24a48 100644 --- a/chrome/browser/sync/test/integration/two_client_typed_urls_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_typed_urls_sync_test.cc
@@ -4,11 +4,13 @@ #include <stddef.h> +#include "base/big_endian.h" #include "base/guid.h" #include "base/i18n/number_formatting.h" #include "base/macros.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/metrics/histogram_tester.h" #include "build/build_config.h" #include "chrome/browser/sessions/session_service.h" #include "chrome/browser/sync/test/integration/bookmarks_helper.h" @@ -17,6 +19,9 @@ #include "chrome/browser/sync/test/integration/typed_urls_helper.h" #include "chrome/browser/sync/test/integration/updated_progress_marker_checker.h" #include "components/history/core/browser/history_types.h" +#include "components/sync/base/client_tag_hash.h" +#include "components/sync/model/metadata_batch.h" +#include "components/sync/protocol/entity_metadata.pb.h" #include "content/public/test/browser_test.h" using base::ASCIIToUTF16; @@ -32,10 +37,12 @@ using typed_urls_helper::DeleteUrlFromHistory; using typed_urls_helper::ExpireHistoryBefore; using typed_urls_helper::ExpireHistoryBetween; +using typed_urls_helper::GetAllSyncMetadata; using typed_urls_helper::GetTypedUrlsFromClient; using typed_urls_helper::GetUrlFromClient; using typed_urls_helper::GetVisitsFromClient; using typed_urls_helper::RemoveVisitsFromClient; +using typed_urls_helper::WriteMetadataToClient; namespace { const char kDummyUrl[] = "http://dummy-history.google.com/"; @@ -768,3 +775,59 @@ ASSERT_EQ(bookmark_url, urls[0].url()); ASSERT_EQ(1, GetVisitCountForFirstURL(0)); } + +// Regression test for one part crbug.com/1075573. The fix for the issue was +// general, so typed_urls is somewhat arbitrary choice (typed_urls were the most +// affected by the issue). +IN_PROC_BROWSER_TEST_F(TwoClientTypedUrlsSyncTest, + PRE_ResetWithDuplicateMetadata) { + ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; + + // Populate one client with a URL, should sync to the other. + const GURL url(kDummyUrl); + AddUrlToHistory(0, url); + EXPECT_TRUE(TypedURLChecker(1, kDummyUrl).Wait()); + EXPECT_TRUE(CheckSyncHasURLMetadata(1, GURL(kDummyUrl))); + + // Write a duplicate metadata entity. Duplicates appear on clients due to + // different reasons / bugs, this test is not realistic in this sense. It is + // just the simplest way to get to the desired state. + sync_pb::EntityMetadata duplicate_metadata; + duplicate_metadata.set_client_tag_hash( + syncer::ClientTagHash::FromUnhashed(syncer::TYPED_URLS, kDummyUrl) + .value()); + duplicate_metadata.set_creation_time(0); + history::URLID arbitrary_id(5438392); + std::string storage_key(sizeof(arbitrary_id), 0); + base::WriteBigEndian<history::URLID>(&storage_key[0], arbitrary_id); + WriteMetadataToClient(1, storage_key, duplicate_metadata); +} + +IN_PROC_BROWSER_TEST_F(TwoClientTypedUrlsSyncTest, ResetWithDuplicateMetadata) { + base::HistogramTester histogram_tester; + ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; + + // On startup, client 1 should reset its metadata and perform initial sync + // once again. Sync one more url across the clients to be sure client 1 + // finishes its initial sync. + const std::string kFurtherURL("http://www.typed.google.com/"); + AddUrlToHistory(0, GURL(kFurtherURL)); + EXPECT_TRUE(TypedURLChecker(1, kFurtherURL).Wait()); + + // Check that client 1 has all the metadata without the duplicate. + syncer::MetadataBatch batch = GetAllSyncMetadata(1); + syncer::EntityMetadataMap metadata_map(batch.TakeAllMetadata()); + size_t count_for_dummy = 0; + const syncer::ClientTagHash kClientTagHash = + syncer::ClientTagHash::FromUnhashed(syncer::TYPED_URLS, kDummyUrl); + for (const auto& kv : metadata_map) { + if (kv.second->client_tag_hash() == kClientTagHash.value()) { + ++count_for_dummy; + } + } + EXPECT_EQ(count_for_dummy, 1u); + histogram_tester.ExpectBucketCount( + "Sync.ModelTypeOrphanMetadata.ModelReadyToSync", + /*bucket=*/ModelTypeHistogramValue(syncer::TYPED_URLS), + /*count=*/1); +}
diff --git a/chrome/browser/sync/test/integration/typed_urls_helper.cc b/chrome/browser/sync/test/integration/typed_urls_helper.cc index 8a28962..7a483dd 100644 --- a/chrome/browser/sync/test/integration/typed_urls_helper.cc +++ b/chrome/browser/sync/test/integration/typed_urls_helper.cc
@@ -26,6 +26,8 @@ #include "components/history/core/browser/history_database.h" #include "components/history/core/browser/history_db_task.h" #include "components/history/core/browser/history_service.h" +#include "components/sync/model/metadata_batch.h" +#include "components/sync/protocol/entity_metadata.pb.h" using sync_datatype_helper::test; @@ -185,6 +187,30 @@ base::WaitableEvent* wait_event_; }; +class WriteTypedUrlsMetadataTask : public history::HistoryDBTask { + public: + WriteTypedUrlsMetadataTask(const std::string& storage_key, + const sync_pb::EntityMetadata& metadata, + base::WaitableEvent* event) + : storage_key_(storage_key), metadata_(metadata), wait_event_(event) {} + ~WriteTypedUrlsMetadataTask() override = default; + + bool RunOnDBThread(history::HistoryBackend* backend, + history::HistoryDatabase* db) override { + // Write the metadata to the DB. + db->UpdateSyncMetadata(syncer::TYPED_URLS, storage_key_, metadata_); + wait_event_->Signal(); + return true; + } + + void DoneRunOnMainThread() override {} + + private: + const std::string storage_key_; + const sync_pb::EntityMetadata metadata_; + base::WaitableEvent* wait_event_; +}; + // Creates a URLRow in the specified HistoryService with the passed transition // type. void AddToHistory(history::HistoryService* service, @@ -271,6 +297,21 @@ wait_event.Wait(); } +void WriteMetadataToHistoryService(history::HistoryService* service, + const std::string& storage_key, + const sync_pb::EntityMetadata& metadata) { + base::CancelableTaskTracker tracker; + base::WaitableEvent wait_event( + base::WaitableEvent::ResetPolicy::MANUAL, + base::WaitableEvent::InitialState::NOT_SIGNALED); + + service->ScheduleDBTask(FROM_HERE, + std::make_unique<WriteTypedUrlsMetadataTask>( + storage_key, metadata, &wait_event), + &tracker); + wait_event.Wait(); +} + history::HistoryService* GetHistoryServiceFromClient(int index) { return HistoryServiceFactory::GetForProfileWithoutCreating( test()->GetProfile(index)); @@ -311,6 +352,13 @@ RemoveVisitsFromHistoryService(service, visits); } +void WriteMetadataToClient(int index, + const std::string& storage_key, + const sync_pb::EntityMetadata& metadata) { + history::HistoryService* service = GetHistoryServiceFromClient(index); + WriteMetadataToHistoryService(service, storage_key, metadata); +} + base::Time GetTimestamp() { // The history subsystem doesn't like identical timestamps for page visits, // and it will massage the visit timestamps if we try to use identical @@ -549,6 +597,15 @@ return false; } +syncer::MetadataBatch GetAllSyncMetadata(int index) { + history::URLRow row; + history::HistoryService* service = GetHistoryServiceFromClient(index); + + syncer::MetadataBatch batch; + GetMetadataBatchFromHistoryService(service, &batch); + return batch; +} + } // namespace typed_urls_helper ProfilesHaveSameTypedURLsChecker::ProfilesHaveSameTypedURLsChecker()
diff --git a/chrome/browser/sync/test/integration/typed_urls_helper.h b/chrome/browser/sync/test/integration/typed_urls_helper.h index 11d98985..3c9dc6f1 100644 --- a/chrome/browser/sync/test/integration/typed_urls_helper.h +++ b/chrome/browser/sync/test/integration/typed_urls_helper.h
@@ -17,6 +17,14 @@ class Time; } +namespace sync_pb { +class EntityMetadata; +} + +namespace syncer { +class MetadataBatch; +} + namespace typed_urls_helper { // Gets the typed URLs from a specific sync profile. @@ -37,6 +45,11 @@ // Removes the passed |visits| from a specific sync profile. void RemoveVisitsFromClient(int index, const history::VisitVector& visits); +// Writes metadata for one entity into a specific sync profile. +void WriteMetadataToClient(int index, + const std::string& storage_key, + const sync_pb::EntityMetadata& metadata); + // Adds a URL to the history DB for a specific sync profile (just registers a // new visit if the URL already exists) using a TYPED PageTransition. void AddUrlToHistory(int index, const GURL& url); @@ -88,6 +101,9 @@ // given sync profile. bool CheckSyncHasMetadataForURLID(int index, history::URLID url_id); +// Return all sync metadata for the given profile. +syncer::MetadataBatch GetAllSyncMetadata(int index); + // Checks that the two vectors contain the same set of URLRows (possibly in // a different order) w.r.t. typed URL sync. bool CheckURLRowVectorsAreEqualForTypedURLs(const history::URLRows& left,
diff --git a/chrome/browser/touch_to_fill/android/internal/BUILD.gn b/chrome/browser/touch_to_fill/android/internal/BUILD.gn index 357a700..d48c7b8 100644 --- a/chrome/browser/touch_to_fill/android/internal/BUILD.gn +++ b/chrome/browser/touch_to_fill/android/internal/BUILD.gn
@@ -5,6 +5,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") import("//chrome/common/features.gni") +import("//tools/grit/grit_rule.gni") android_library("java") { deps = [
diff --git a/chrome/browser/ui/android/strings/BUILD.gn b/chrome/browser/ui/android/strings/BUILD.gn index 0add2d8..0451c290 100644 --- a/chrome/browser/ui/android/strings/BUILD.gn +++ b/chrome/browser/ui/android/strings/BUILD.gn
@@ -2,9 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//build/config/android/rules.gni") import("//build/config/locales.gni") import("//chrome/common/features.gni") +import("//tools/grit/grit_rule.gni") java_strings_grd("ui_strings_grd") { defines = chrome_grit_defines
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb index 2869371..c0cd396 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">স্ক্ৰীণ কেপচাৰ</translation> <translation id="1111673857033749125">আপোনাৰ ডিভাইচত ছেভ কৰা বুকমাৰ্কবোৰ ইয়াত দেখা পোৱা যাব।</translation> <translation id="1113597929977215864">সৰলীকৃত ভিউ প্ৰদর্শন কৰক</translation> +<translation id="1123070903960493543">আপুনি Chromeৰ সৈতে কেনেকৈ ব্যৱহাৰ কৰে, আপুনি বাছনি কৰা ছেটিং, Chrome ক্ৰেশ্বৰ সবিশেষ</translation> <translation id="1126809382673880764">আপোনাক বিপজ্জনক ৱেবছাইট, ডাউনল’ড অথবা এক্সটেনশ্বনসমূহৰ পৰা সুৰক্ষা প্ৰদান নকৰে। Gmail আৰু Searchৰ দৰে অন্য Google সেৱাসমূহ, য’ত সুৰক্ষিত ব্ৰাউজিঙৰ সুবিধাটো উপলব্ধ, সেইবিলাকত আপুনি তথাপি এই সুবিধাটো পাব।</translation> <translation id="1129510026454351943">সবিশেষ: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{১টা ডাউনল’ড বাকী আছে।}one{#টা ডাউনল’ড বাকী আছে।}other{#টা ডাউনল’ড বাকী আছে।}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> শ্বেয়াৰ কৰিব নোৱাৰি</translation> <translation id="1477626028522505441">ছার্ভাৰৰ সমস্যাৰ বাবে <ph name="FILE_NAME" /> ডাউনল'ড কৰিব পৰা নগ'ল।</translation> <translation id="1506061864768559482">সন্ধান ইঞ্জিন</translation> +<translation id="151267239139452619">ডাউনল’ডত যোগ দিয়ক</translation> <translation id="1513352483775369820">বুকমার্কবোৰ আৰু ৱেব ইতিহাস</translation> <translation id="1513858653616922153">পাছৱৰ্ড মচক</translation> <translation id="1521774566618522728">আজি সক্ৰিয় হৈছে</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> ছেভ কৰা হৈছে</translation> <translation id="213279576345780926">বন্ধ <ph name="TAB_TITLE" /></translation> <translation id="2139186145475833000">গৃহ স্ক্ৰীণত যোগ কৰক</translation> +<translation id="214888715418183969">আপুনি Chromeৰ সৈতে কি সহজে শ্বেয়াৰ কৰিব পাৰে সেয়া বাছনি কৰক। Chromeৰ সুবিধা, পাৰদৰ্শিতা আৰু স্থিৰতা উন্নত কৰাত সহায় কৰিবলৈ আপুনি শ্বেয়াৰ কৰা মেট্ৰিক্স ব্যৱহাৰ কৰা হ’ব।</translation> <translation id="2154484045852737596">কাৰ্ড সম্পাদনা কৰক</translation> <translation id="2154710561487035718">URL প্ৰতিলিপি কৰক</translation> <translation id="2156074688469523661">বাকী থকা ছাইটসমূহ (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">কিউআৰ ক’ড</translation> <translation id="218608176142494674">শ্বেয়াৰ কৰি থকা হৈছে</translation> <translation id="2195339740518523951">Chromeৰ আটাইতকৈ শক্তিশালী সুৰক্ষা লাভ কৰক</translation> +<translation id="2200113223741723867">ব্যৱহাৰৰ ডেটা শ্বেয়াৰ কৰাটো পৰিচালনা কৰক</translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> হিচাপে অব্যাহত ৰাখক</translation> <translation id="2234876718134438132">ছিংক আৰু Google সেৱা</translation> <translation id="2239812875700136898">সন্ধান কৰক বুটামটোৰ বিকল্পসমূহৰ পৰা আপোনাৰ কাহিনীসমূহ নিয়ন্ত্ৰণ কৰক</translation> @@ -370,12 +374,14 @@ <translation id="3771290962915251154">অভিভাৱকীয় নিয়ন্ত্ৰণসমূহ অন হৈ থকাৰ বাবে এই ছেটিংটো অক্ষম কৰা হৈছে</translation> <translation id="3771694256347217732">Google সেৱাৰ চৰ্তাৱলী</translation> <translation id="3773755127849930740">যোৰা লগোৱাৰ অনুমতি দিবলৈ <ph name="BEGIN_LINK" />ব্লুটুথ অন কৰক<ph name="END_LINK" /></translation> +<translation id="3773856050682458546">প্ৰাথমিক ডেটাৰ লগতে আপুনি চোৱা ৱেবছাইট আৰু আপুনি ব্যৱহাৰ কৰা এপৰ বিষয়ে তথ্য</translation> <translation id="3775705724665058594">আপোনাৰ ডিভাইচসমূহলৈ পঠিয়াওক</translation> <translation id="3778956594442850293">গৃহ স্ক্ৰীণত যোগ কৰা হ’ল</translation> <translation id="3789841737615482174">ইনষ্টল কৰক</translation> <translation id="3810838688059735925">ভিডিঅ’</translation> <translation id="3810973564298564668">পৰিচালনা কৰক</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" />টা ডাউনল'ড মচা হ'ল</translation> +<translation id="3848957262889631524">এটা সুৰক্ষা সম্পৰ্কীয় চাবি হিচাপে Google <ph name="APP_NAME" /></translation> <translation id="3856096718352044181">অনুগ্ৰহ কৰি এইটো কোনো মান্য প্ৰদানকাৰীৰ বুলি সত্যাপন কৰক অথবা পাছত আকৌ চেষ্টা কৰক</translation> <translation id="3861633093716975811">জনপ্ৰিয় ভিডিঅ’</translation> <translation id="3892148308691398805">পাঠৰ প্ৰতিলিপি কৰক</translation> @@ -403,7 +409,9 @@ <translation id="3988466920954086464">এই পেনেলটোত তাৎক্ষণিকভাৱে সন্ধানৰ ফলাফল চাওক</translation> <translation id="4000212216660919741">অফলাইন গৃহপৃষ্ঠা</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# ঘণ্টা}one{# ঘণ্টা}other{# ঘণ্টা}}</translation> +<translation id="4045764304651014138">ব্যৱহাৰৰ ডেটা</translation> <translation id="4056223980640387499">ছেপিয়া</translation> +<translation id="4057643060762047384">ইয়াত যোগ দিয়ক:</translation> <translation id="4060598801229743805">স্ক্ৰীণৰ ওপৰৰ অংশত কাষত থকা বিকল্প</translation> <translation id="4062305924942672200">আইনী তথ্য</translation> <translation id="4084682180776658562">বুকমাৰ্ক কৰক</translation> @@ -544,6 +552,7 @@ <translation id="5039804452771397117">অনুমতি দিয়ক</translation> <translation id="5040262127954254034">গোপনীয়তা</translation> <translation id="5087580092889165836">কাৰ্ড যোগ কৰক</translation> +<translation id="5091249083535528968">বিস্তাৰিত ব্যৱহাৰৰ ডেটা</translation> <translation id="509429900233858213">কোনো আসোঁৱাহ হৈছে।</translation> <translation id="510275257476243843">১ঘণ্টা বাকী আছে</translation> <translation id="5123685120097942451">ইনক’গনিট’ টেব</translation> @@ -650,6 +659,7 @@ <translation id="5833984609253377421">লিংক শ্বেয়াৰ কৰক</translation> <translation id="5836192821815272682">Chromeৰ আপডে’ট ডাউনল’ড কৰি থকা হৈছে…</translation> <translation id="5853623416121554550">পজ কৰা হ’ল</translation> +<translation id="5854512288214985237">কোনো পৰিসংখ্যা অথবা ক্ৰেশ্ব ৰিপ’ৰ্ট Googleলৈ পঠিওৱা নহয়</translation> <translation id="5854790677617711513">৩০ দিনতকৈ পুৰণি</translation> <translation id="5855546874025048181">পৰিষ্কৰণ: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chromeএ ব্লুটুথ এডাপ্টৰটো অন কৰিবলৈ সক্ষম নহ’ল</translation> @@ -722,6 +732,7 @@ <translation id="6303969859164067831">ছাইন আউট কৰি ছিংক অফ কৰক</translation> <translation id="6312687380483398334">ৱেব এপ্সমূহ (নীৰৱ)</translation> <translation id="6316139424528454185">Android সংস্কৰণটো নচলে</translation> +<translation id="6321526113093607004">বুকমাৰ্কত যোগ দিয়ক</translation> <translation id="6324034347079777476">Android ছিষ্টেম ছিংক কৰাটো অক্ষম কৰা হ’ল</translation> <translation id="6333140779060797560"><ph name="APPLICATION" />ৰ জৰিয়তে শ্বেয়াৰ কৰক</translation> <translation id="6337234675334993532">এনক্ৰিপশ্বন</translation> @@ -739,6 +750,7 @@ <translation id="6402652558933147609"><ph name="VIOLATED_URL" />ত <ph name="ERROR_CODE" /></translation> <translation id="6404511346730675251">বুকমার্ক সম্পাদনা কৰক</translation> <translation id="6406506848690869874">ছিংক কৰক</translation> +<translation id="6410404864818553978">প্ৰাথমিক ব্যৱহাৰৰ ডেটা</translation> <translation id="6410883413783534063">একে সময়তে বেলেগ বেলেগ পৃষ্ঠালৈ যাবলৈ টেবসমূহ খোলক</translation> <translation id="6412673304250309937">Chromeত ষ্ট'ৰ কৰি ৰখা অসুৰক্ষিত ছাইটসমূহৰ এখন সূচীৰ সৈতে URLসমূহ পৰীক্ষা কৰে। যদি কোনোবা ছাইটে আপোনাৰ পাছৱর্ড চুৰি কৰিবলৈ চেষ্টা কৰে অথবা আপুনি কোনো ক্ষতিকাৰক ফাইল ডাউনল'ড কৰাৰ সময়ত Chromeএ পৃষ্ঠাৰ সমলৰ বিটসমূহকে ধৰি URLসমূহ সুৰক্ষিত ব্ৰাউজিঙলৈ পঠিয়াব পাৰে।</translation> <translation id="641643625718530986">প্ৰিণ্ট কৰক…</translation> @@ -831,6 +843,7 @@ <translation id="7015203776128479407">প্ৰাৰম্ভিক ছিংকৰ ছেটআপ সম্পূর্ণ হোৱা নাই। ছিংক কৰা সুবিধাটো অফ কৰা আছে।</translation> <translation id="7022756207310403729">ব্ৰাউজাৰত খোলক</translation> <translation id="702463548815491781">টকবেক বা ছুইচৰ দ্বাৰা ব্যৱহাৰ কৰা অনুমতি অন থকা অৱস্থান এয়া চুপাৰিছ কৰা হয়</translation> +<translation id="7027549951530753705"><ph name="ITEM_TITLE" /> পুনঃস্থাপন কৰা হৈছে</translation> <translation id="7029809446516969842">পাছৱৰ্ডসমূহ</translation> <translation id="703523980599857277">গৃহপৃষ্ঠাখন সলনি কৰক</translation> <translation id="7054588988317389591">প্ৰতিচ্ছবিৰ বিৱৰণ লাভ কৰিবনে?</translation> @@ -1011,6 +1024,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> আৰু অধিক ছাইট</translation> <translation id="8327155640814342956">সকলোতকৈ ভালকৈ ব্ৰাউজিং কৰাৰ অভিজ্ঞতা পাবলৈ Chrome আপডে'ট কৰক</translation> <translation id="8349013245300336738">ব্যৱহাৰ কৰা ডেটাৰ পৰিমাণ অনুসৰি সজাওক</translation> +<translation id="835847953965672673"><ph name="NUMBER_OF_DOWNLOADS" /> টা ডাউনল’ড পুনঃস্থাপন কৰা হৈছে</translation> <translation id="8364299278605033898">জনপ্ৰিয় ৱেবছাইটসমূহ চাওক</translation> <translation id="8368027906805972958">অজ্ঞাত অথবা অসমৰ্থিত ডিভাইচ (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> সাজু আছে।</translation> @@ -1118,6 +1132,7 @@ <translation id="9148126808321036104">আকৌ ছাইন ইন কৰক</translation> <translation id="9155898266292537608">আপুনি কোনো এটা শব্দত এবাৰ টিপিও সন্ধান কৰিব পাৰে</translation> <translation id="9169507124922466868">নেভিগেশ্বন ইতিহাস আধা খোলা আছে</translation> +<translation id="9191031968346938109">ইয়াত যোগ দিয়ক…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{১ মিনিটৰ আগত পৰীক্ষা কৰা হৈছে}one{# মিনিটৰ আগত পৰীক্ষা কৰা হৈছে}other{# মিনিটৰ আগত পৰীক্ষা কৰা হৈছে}}</translation> <translation id="9204836675896933765">১টা ফাইল বাকী আছে</translation> <translation id="9206873250291191720">অ</translation> @@ -1130,6 +1145,7 @@ <translation id="938850635132480979">আসোঁৱাহ: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">পাছফ্ৰেজ দিয়ক</translation> <translation id="95817756606698420">Chromeএ চীনত সন্ধানৰ বাবে <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> ব্যৱহাৰ কৰিব পাৰে। আপুনি এইটো <ph name="BEGIN_LINK" />ছেটিংসমূহ<ph name="END_LINK" />-ত সলনি কৰিব পাৰে।</translation> +<translation id="962979164594783469">এই এপ্টো ইনষ্টল কৰক</translation> <translation id="968900484120156207">আপুনি যিবোৰ ছাইট চায় সেইবোৰ ইয়াত দেখা যায়</translation> <translation id="970715775301869095"><ph name="MINUTES" /> মিনিট বাকী আছে</translation> <translation id="974555521953189084">ছিংক আৰম্ভ কৰিবলৈ আপোনাৰ পাছফ্ৰেজ দিয়ক</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb index a67fe6d7..6ee9f98 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">Captura de pantalla</translation> <translation id="1111673857033749125">Los favoritos guardados en tus otros dispositivos aparecerán aquí.</translation> <translation id="1113597929977215864">Mostrar la vista simplificada</translation> +<translation id="1123070903960493543">Cómo interactúas con Chrome, las opciones de configuración que elegiste y detalles sobre las fallas de Chrome</translation> <translation id="1126809382673880764">No te protege contra descargas, extensiones ni sitios web peligrosos. Seguirás teniendo la protección (donde esté disponible) de la Navegación segura en otros servicios de Google, como Gmail y la Búsqueda.</translation> <translation id="1129510026454351943">Detalles: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{1 descarga pendiente}other{# descargas pendientes}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080">No se puede compartir <ph name="CONTENT_TYPE" /></translation> <translation id="1477626028522505441"><ph name="FILE_NAME" /> no se pudo descargar debido a problemas del servidor.</translation> <translation id="1506061864768559482">Motor de búsqueda</translation> +<translation id="151267239139452619">Agregar a descargas</translation> <translation id="1513352483775369820">Favoritos e historial web</translation> <translation id="1513858653616922153">Borrar contraseña</translation> <translation id="1521774566618522728">Activo hoy</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825">Datos ahorrados: <ph name="DATA" /></translation> <translation id="213279576345780926">Pestaña <ph name="TAB_TITLE" /> cerrada</translation> <translation id="2139186145475833000">Agregar a la pantalla principal</translation> +<translation id="214888715418183969">Elige lo que quieres compartir con Chrome. Las métricas que compartas se usarán para ayudar a mejorar las funciones, el rendimiento y la estabilidad de Chrome.</translation> <translation id="2154484045852737596">Editar tarjeta</translation> <translation id="2154710561487035718">Copiar URL</translation> <translation id="2156074688469523661">Sitios restantes (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">Código QR</translation> <translation id="218608176142494674">Uso compartido</translation> <translation id="2195339740518523951">Obtén la seguridad más sólida de Chrome</translation> +<translation id="2200113223741723867">Administrar cómo se comparten los datos de uso</translation> <translation id="2227444325776770048">Continuar como <ph name="USER_FULL_NAME" /></translation> <translation id="2234876718134438132">Sincronización y servicios</translation> <translation id="2239812875700136898">Controla tus historias desde las opciones del botón Descubre</translation> @@ -370,12 +374,14 @@ <translation id="3771290962915251154">Se inhabilitó esta configuración porque los Controles parentales están activados</translation> <translation id="3771694256347217732">Condiciones del Servicio de Google</translation> <translation id="3773755127849930740"><ph name="BEGIN_LINK" />Activa Bluetooth<ph name="END_LINK" /> para permitir la sincronización</translation> +<translation id="3773856050682458546">Información básica y datos sobre los sitios web que visitas y las apps que usas</translation> <translation id="3775705724665058594">Enviar a tus dispositivos</translation> <translation id="3778956594442850293">Se agregó a la pantalla principal</translation> <translation id="3789841737615482174">Instalar</translation> <translation id="3810838688059735925">Video</translation> <translation id="3810973564298564668">Administrar</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> descargas borradas</translation> +<translation id="3848957262889631524">Google <ph name="APP_NAME" /> como llave de seguridad</translation> <translation id="3856096718352044181">Verifica que sea un proveedor válido o vuelve a intentarlo más tarde</translation> <translation id="3861633093716975811">Videos populares</translation> <translation id="3892148308691398805">Copiar texto</translation> @@ -403,7 +409,9 @@ <translation id="3988466920954086464">Los resultados de la búsqueda instantánea se muestran en este panel</translation> <translation id="4000212216660919741">Página principal sin conexión</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# h}other{# h}}</translation> +<translation id="4045764304651014138">Datos de uso</translation> <translation id="4056223980640387499">Sepia</translation> +<translation id="4057643060762047384">Agregar a:</translation> <translation id="4060598801229743805">Opciones disponibles cerca de la parte superior de la pantalla</translation> <translation id="4062305924942672200">Información legal</translation> <translation id="4084682180776658562">Marcador</translation> @@ -544,6 +552,7 @@ <translation id="5039804452771397117">Permitir</translation> <translation id="5040262127954254034">Privacidad</translation> <translation id="5087580092889165836">Agregar tarjeta</translation> +<translation id="5091249083535528968">Datos de uso extendido</translation> <translation id="509429900233858213">Se ha producido un error.</translation> <translation id="510275257476243843">1 hora restante</translation> <translation id="5123685120097942451">Pestaña de incógnito</translation> @@ -650,6 +659,7 @@ <translation id="5833984609253377421">Compartir vínculo</translation> <translation id="5836192821815272682">Descargando la actualización de Chrome…</translation> <translation id="5853623416121554550">pausado</translation> +<translation id="5854512288214985237">No se envían informes de fallas ni estadísticas a Google</translation> <translation id="5854790677617711513">Hace más de 30 días</translation> <translation id="5855546874025048181">Definir mejor: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome no puede activar el adaptador Bluetooth</translation> @@ -722,6 +732,7 @@ <translation id="6303969859164067831">Salir y desactivar la sincronización</translation> <translation id="6312687380483398334">Aplicaciones web (discretas)</translation> <translation id="6316139424528454185">Versión Android no compatible</translation> +<translation id="6321526113093607004">Agregar a Favoritos</translation> <translation id="6324034347079777476">Sincronización del sistema Android inhabilitada</translation> <translation id="6333140779060797560">Compartir mediante <ph name="APPLICATION" /></translation> <translation id="6337234675334993532">Encriptación</translation> @@ -739,6 +750,7 @@ <translation id="6402652558933147609"><ph name="ERROR_CODE" /> de <ph name="VIOLATED_URL" /></translation> <translation id="6404511346730675251">Editar marcador</translation> <translation id="6406506848690869874">Sincronización</translation> +<translation id="6410404864818553978">Datos de uso básico</translation> <translation id="6410883413783534063">Abre pestañas para visitar diferentes páginas al mismo tiempo</translation> <translation id="6412673304250309937">Revisa las URL con una lista de sitios no seguros almacenados en Chrome. Si un sitio intenta robar tu contraseña, o cuando descargas un archivo dañino, es posible que Chrome también envíe las URL, con partes del contenido de la página, a la Navegación segura.</translation> <translation id="641643625718530986">Imprimir…</translation> @@ -832,6 +844,7 @@ <translation id="7015203776128479407">No se completó la configuración de la sincronización inicial. La sincronización está desactivada.</translation> <translation id="7022756207310403729">Abrir en el navegador</translation> <translation id="702463548815491781">Se recomienda cuando TalkBack o Accesibilidad con interruptores están activadas</translation> +<translation id="7027549951530753705">Se restableció <ph name="ITEM_TITLE" /></translation> <translation id="7029809446516969842">Contraseñas</translation> <translation id="703523980599857277">Cambiar la página principal</translation> <translation id="7054588988317389591">¿Deseas obtener la descripción de las imágenes?</translation> @@ -1013,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> y más sitios</translation> <translation id="8327155640814342956">A fin de obtener la mejor experiencia de navegación, abre Chrome para actualizarlo</translation> <translation id="8349013245300336738">Ordenar por cantidad de datos utilizados</translation> +<translation id="835847953965672673">Se restablecieron <ph name="NUMBER_OF_DOWNLOADS" /> descargas</translation> <translation id="8364299278605033898">Ver sitios populares</translation> <translation id="8368027906805972958">Dispositivo desconocido o no compatible (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381">El idioma <ph name="LANG" /> está listo.</translation> @@ -1121,6 +1135,7 @@ <translation id="9148126808321036104">Accede nuevamente</translation> <translation id="9155898266292537608">También puedes presionar brevemente la palabra para realizar una búsqueda</translation> <translation id="9169507124922466868">El historial de navegación está abierto a la mitad</translation> +<translation id="9191031968346938109">Agregar a…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{Se verificó hace 1 minuto}other{Se verificó hace # minutos}}</translation> <translation id="9204836675896933765">Queda 1 archivo</translation> <translation id="9206873250291191720">A</translation> @@ -1133,6 +1148,7 @@ <translation id="938850635132480979">Error: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">Ingresar frase de contraseña</translation> <translation id="95817756606698420">Chrome puede usar <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> para realizar búsquedas en China. Puede cambiar esta opción en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation> +<translation id="962979164594783469">Instalar esta app</translation> <translation id="968900484120156207">Las páginas que visites aparecerán aquí</translation> <translation id="970715775301869095"><ph name="MINUTES" /> minutos restantes</translation> <translation id="974555521953189084">Ingresa tu frase de contraseña para iniciar la sincronización</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb index 6c566be..cb4bdd9 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -659,7 +659,7 @@ <translation id="5833984609253377421">Compartir enlace</translation> <translation id="5836192821815272682">Descargando actualización de Chrome…</translation> <translation id="5853623416121554550">en pausa</translation> -<translation id="5854512288214985237">No se envían a Google estadísticas ni informes sobre fallos.</translation> +<translation id="5854512288214985237">No se envían estadísticas ni informes sobre fallos a Google.</translation> <translation id="5854790677617711513">Más de 30 días</translation> <translation id="5855546874025048181">Acotar: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome no ha podido activar el adaptador Bluetooth</translation> @@ -844,7 +844,7 @@ <translation id="7015203776128479407">La configuración de sincronización inicial no ha terminado. La sincronización está desactivada.</translation> <translation id="7022756207310403729">Abrir en el navegador</translation> <translation id="702463548815491781">Se recomienda cuando TalkBack o la accesibilidad con interruptores están activados</translation> -<translation id="7027549951530753705"><ph name="ITEM_TITLE" /> restaurado</translation> +<translation id="7027549951530753705">Se ha restaurado <ph name="ITEM_TITLE" /></translation> <translation id="7029809446516969842">Contraseñas</translation> <translation id="703523980599857277">Cambiar página principal</translation> <translation id="7054588988317389591">¿Generar descripciones de imágenes?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb index 87eba6e6..58de008 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
@@ -159,7 +159,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> tallennettu</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> suljettiin</translation> <translation id="2139186145475833000">Lisää aloitusnäyttöön</translation> -<translation id="214888715418183969">Valitse, mitä olet valmis jakamaan Chromelle. Jakamasi mittarit auttavat kehittämään Chromen ominaisuuksia, toimintaa ja vakautta.</translation> +<translation id="214888715418183969">Valitse, mitä olet valmis jakamaan Chromelle. Jakamasi mittarit auttavat parantamaan Chromen ominaisuuksia, toimintaa ja vakautta.</translation> <translation id="2154484045852737596">Muokkaa korttia</translation> <translation id="2154710561487035718">Kopioi URL-osoite</translation> <translation id="2156074688469523661">Jäljellä olevat sivustot (<ph name="NUMBER_OF_SITES" />)</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb index 0b99333..838b381 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">સ્ક્રીન કૅપ્ચર</translation> <translation id="1111673857033749125">તમારા અન્ય ઉપકરણો પર સાચવેલા બુકમાર્ક્સ અહીં દેખાશે.</translation> <translation id="1113597929977215864">સરળ દૃશ્ય બતાવો</translation> +<translation id="1123070903960493543">તમે Chrome સાથે કેવી રીતે ક્રિયાપ્રતિક્રિયા કરો છો, તમે પસંદ કરેલા સેટિંગ અને Chrome ક્રૅશ થવાની વિગતો</translation> <translation id="1126809382673880764">જોખમકારક વેબસાઇટ, ડાઉનલોડ અને એક્સ્ટેંશન સામે તમારું રક્ષણ કરતું નથી. Gmail અને Search જેવી Googleની અન્ય સેવાઓમાં, જ્યાં ઉપલબ્ધ હોય, ત્યાં તમને હજી પણ Safe Browsing સંરક્ષણ મળશે.</translation> <translation id="1129510026454351943">વિગતો: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{1 ડાઉનલોડ બાકી.}one{# ડાઉનલોડ બાકી.}other{# ડાઉનલોડ બાકી.}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> શેર કરી શકતાં નથી</translation> <translation id="1477626028522505441">સર્વર સમસ્યાઓને કારણે <ph name="FILE_NAME" /> ડાઉનલોડ નિષ્ફળ થયું.</translation> <translation id="1506061864768559482">શોધ એન્જિન</translation> +<translation id="151267239139452619">ડાઉનલોડમાં ઉમેરો</translation> <translation id="1513352483775369820">બુકમાર્ક્સ અને વેબ ઇતિહાસ</translation> <translation id="1513858653616922153">પાસવર્ડ ડિલીટ કરો</translation> <translation id="1521774566618522728">આજે સક્રિય છે</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> સાચવ્યો</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> બંધ કર્યું છે</translation> <translation id="2139186145475833000">હોમસ્ક્રીન પર ઉમેરો</translation> +<translation id="214888715418183969">Chrome સાથે શું શેર કરવાનું તમને માફક આવશે તે પસંદ કરો. તમે શેર કરેલા મેટ્રિકનો ઉપયોગ Chromeની સુવિધાઓ, કાર્યપ્રદર્શન અને સ્થિરતાને બહેતર બનાવવામાં સહાય કરવા માટે થશે.</translation> <translation id="2154484045852737596">કાર્ડમાં ફેરફાર કરો</translation> <translation id="2154710561487035718">URL ની કૉપિ કરો</translation> <translation id="2156074688469523661">બાકી સાઇટ (<ph name="NUMBER_OF_SITES" />)</translation> @@ -165,6 +168,8 @@ <translation id="2169830938017475061">હમણાં</translation> <translation id="2175927920773552910">QR કોડ</translation> <translation id="218608176142494674">શેરિંગ</translation> +<translation id="2195339740518523951">Chromeની સૌથી વધુ મજબૂત સુરક્ષા મેળવો</translation> +<translation id="2200113223741723867">વપરાશના ડેટાનું શેરિંગ મેનેજ કરો</translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> તરીકે ચાલુ રાખો</translation> <translation id="2234876718134438132">સિંક અને Google સેવાઓ</translation> <translation id="2239812875700136898">Discover બટન માટે વિકલ્પોમાંથી તમારી સ્ટોરીનું નિયંત્રણ કરો</translation> @@ -256,6 +261,7 @@ <translation id="2893180576842394309">Google, શોધ અને અન્ય Google સેવાઓને વ્યક્તિગત કરવા માટે તમારા ઇતિહાસનો ઉપયોગ કરી શકે છે</translation> <translation id="2898264748040935573">સાચવેલા પાસવર્ડમાં ફેરફાર કરો</translation> <translation id="2900528713135656174">ઇવેન્ટ બનાવો</translation> +<translation id="2901411048554510387"><ph name="WEBSITE_TITLE" /> માટે સૂચનો બતાવી રહ્યાં છીએ</translation> <translation id="2904414404539560095">કોઈ ટૅબ સાથે શેર કરવાના ડિવાઇસની સૂચિ સંપૂર્ણ ઊંચાઈએ ખૂલે છે.</translation> <translation id="2905036901251765993">નજીકના લોકો સાથે શેર કરવા માટે, તેમને આ QR કોડ તપાસવા દો</translation> <translation id="2909615210195135082">Google નોટિફિકેશન પ્લૅટફૉર્મ</translation> @@ -368,12 +374,14 @@ <translation id="3771290962915251154">માતાપિતા યોગ્ય નિયંત્રણો ચાલુ હોવાને કારણે આ સેટિંગ બંધ કરવામાં આવ્યું છે</translation> <translation id="3771694256347217732">Googleની સેવાની શરતો</translation> <translation id="3773755127849930740">જોડી કરવાની મંજૂરી આપવા માટે <ph name="BEGIN_LINK" />Bluetooth ચાલુ કરો<ph name="END_LINK" /></translation> +<translation id="3773856050682458546">મૂળભૂત ડેટા ઉપરાંત તમે મુલાકાત લો છો તે વેબસાઇટ અને ઉપયોગ કરો છો તે ઍપની માહિતી</translation> <translation id="3775705724665058594">તમારા ડિવાઇસ પર મોકલો</translation> <translation id="3778956594442850293">હોમ સ્ક્રીન પર ઉમેર્યું</translation> <translation id="3789841737615482174">ઇન્સ્ટોલ કરો</translation> <translation id="3810838688059735925">વીડિયો</translation> <translation id="3810973564298564668">મેનેજ કરો</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> ડાઉનલોડ કાઢી નાખ્યાં</translation> +<translation id="3848957262889631524">સિક્યુરિટી કી તરીકે Google <ph name="APP_NAME" /></translation> <translation id="3856096718352044181">કૃપા કરીને ચકાસણી કરો કે આ માન્ય પ્રદાતા છે અથવા પછીથી ફરી પ્રયાસ કરો</translation> <translation id="3861633093716975811">લોકપ્રિય વીડિયો</translation> <translation id="3892148308691398805">ટેક્સ્ટ કૉપિ કરો</translation> @@ -401,7 +409,9 @@ <translation id="3988466920954086464">ઝટપટ શોધ પરિણામો આ પૅનલમાં જુઓ</translation> <translation id="4000212216660919741">ઑફલાઇન હોમ</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# કલાક}one{# કલાક}other{# કલાક}}</translation> +<translation id="4045764304651014138">વપરાશનો ડેટા</translation> <translation id="4056223980640387499">Sepia</translation> +<translation id="4057643060762047384">આમાં ઉમેરો:</translation> <translation id="4060598801229743805">સ્ક્રીનની ટોચ પર વિકલ્પો ઉપલબ્ધ છે</translation> <translation id="4062305924942672200">કાનુની માહિતી</translation> <translation id="4084682180776658562">બુકમાર્ક</translation> @@ -441,6 +451,7 @@ <translation id="4405224443901389797">આમાં ખસેડો…</translation> <translation id="4411535500181276704">લાઇટ મોડ</translation> <translation id="4415276339145661267">તમારું Google એકાઉન્ટ મેનેજ કરો</translation> +<translation id="4427306783828095590">વધારેલી સુરક્ષા ફિશિંગ અને માલવેરને બ્લૉક કરવામાં વધુ સહાયરૂપ થાય છે</translation> <translation id="4440958355523780886">Google દ્વારા પ્રદાન કરવામાં આવેલું લાઇટ પેજ. ઑરિજિનલ લોડ કરવા માટે ટૅપ કરો.</translation> <translation id="4452411734226507615"><ph name="TAB_TITLE" /> ટૅબ બંધ કરો</translation> <translation id="4452548195519783679"><ph name="FOLDER_NAME" /> પર બુકમાર્ક કર્યું</translation> @@ -541,6 +552,7 @@ <translation id="5039804452771397117">મંજૂરી આપો</translation> <translation id="5040262127954254034">પ્રાઇવસી</translation> <translation id="5087580092889165836">કાર્ડ ઉમેરો</translation> +<translation id="5091249083535528968">વપરાશનો વધારાનો ડેટા</translation> <translation id="509429900233858213">કોઈ ભૂલ આવી છે.</translation> <translation id="510275257476243843">1 કલાક બાકી</translation> <translation id="5123685120097942451">છૂપા મોડમાંની ટૅબ</translation> @@ -647,6 +659,7 @@ <translation id="5833984609253377421">લિંક શેર કરો</translation> <translation id="5836192821815272682">Chrome અપડેટ ડાઉનલોડ કરી રહ્યાં છીએ…</translation> <translation id="5853623416121554550">થોભાવેલ</translation> +<translation id="5854512288214985237">Googleને કોઈ આંકડા કે ક્રૅશ રિપોર્ટ મોકલવામાં આવતા નથી</translation> <translation id="5854790677617711513">30 દિવસ કરતા જૂનો</translation> <translation id="5855546874025048181">આને સુધારો: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome, Bluetooth એડેપ્ટરને ચાલુ કરવામાં અસમર્થ છે</translation> @@ -719,6 +732,7 @@ <translation id="6303969859164067831">સાઇન આઉટ કરો અને સિંક બંધ કરો</translation> <translation id="6312687380483398334">વેબ ઍપ (છોડો)</translation> <translation id="6316139424528454185">Android વર્ઝન અસમર્થિત છે</translation> +<translation id="6321526113093607004">બુકમાર્કમાં ઉમેરો</translation> <translation id="6324034347079777476">Android સિસ્ટમ સમન્વયન અક્ષમ છે</translation> <translation id="6333140779060797560"><ph name="APPLICATION" /> મારફતે શેર કરો</translation> <translation id="6337234675334993532">એન્ક્રિપ્શન</translation> @@ -736,6 +750,7 @@ <translation id="6402652558933147609"><ph name="VIOLATED_URL" /> પર <ph name="ERROR_CODE" /></translation> <translation id="6404511346730675251">બુકમાર્કમાં ફેરફાર કરો</translation> <translation id="6406506848690869874">સમન્વયન</translation> +<translation id="6410404864818553978">વપરાશનો મૂળભૂત ડેટા</translation> <translation id="6410883413783534063">એકસાથે વિભિન્ન પેજની મુલાકાત લેવા માટે ટૅબ ખોલો</translation> <translation id="6412673304250309937">URLsને Chromeમાં સંગ્રહિત અસુરક્ષિત સાઇટની સૂચિ સાથે ચેક કરે છે. જો કોઈ સાઇટ તમારો પાસવર્ડ ચોરી કરવાનો પ્રયાસ કરે અથવા તમે કોઈ નુકસાનકારક ફાઇલ ડાઉનલોડ કરો, ત્યારે Chrome પેજ કન્ટેન્ટના બિટની સાથોસાથ URLs પણ Safe Browsingને મોકલી શકે છે.</translation> <translation id="641643625718530986">પ્રિન્ટ…</translation> @@ -829,6 +844,7 @@ <translation id="7015203776128479407">આરંભિક સિંક સેટઅપ પૂરું થયું નથી. સિંક કરવાનું બંધ છે.</translation> <translation id="7022756207310403729">બ્રાઉઝરમાં ખોલો</translation> <translation id="702463548815491781">જ્યારે ટૉકબૅક અથવા સ્વિચ ઍક્સેસ ચાલુ હોય ત્યારે આપેલ સુઝાવ</translation> +<translation id="7027549951530753705"><ph name="ITEM_TITLE" /> રિસ્ટોર કર્યું</translation> <translation id="7029809446516969842">પાસવર્ડ</translation> <translation id="703523980599857277">હોમ પેજ બદલો</translation> <translation id="7054588988317389591">છબીના વર્ણનો મેળવીએ?</translation> @@ -1010,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> અને વધુ સાઇટ</translation> <translation id="8327155640814342956">બ્રાઉઝિંગનો શ્રેષ્ઠ અનુભવ મેળવવા અપડેટ કરવા માટે Chrome ખોલો</translation> <translation id="8349013245300336738">વપરાયેલ ડેટાના પ્રમાણ અનુસાર સૉર્ટ કરો</translation> +<translation id="835847953965672673"><ph name="NUMBER_OF_DOWNLOADS" /> ડાઉનલોડ રિસ્ટોર કર્યા</translation> <translation id="8364299278605033898">લોકપ્રિય વેબસાઇટ જુઓ</translation> <translation id="8368027906805972958">અજાણ્યું અથવા અસમર્થિત ડિવાઇસ (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> તૈયાર છે.</translation> @@ -1118,6 +1135,7 @@ <translation id="9148126808321036104">ફરીથી સાઇન ઇન કરો </translation> <translation id="9155898266292537608">તમે કોઈએક શબ્દ પર ટૅપ કરીને પણ ઝડપથી શોધી શકો છો</translation> <translation id="9169507124922466868">નૅવિગેશન ઇતિહાસ અડધા ભાગમાં ખુલ્લો છે</translation> +<translation id="9191031968346938109">આમાં ઉમેરો…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{1 મિનિટ પહેલાં ચેક કર્યું}one{# મિનિટ પહેલાં ચેક કર્યું}other{# મિનિટ પહેલાં ચેક કર્યું}}</translation> <translation id="9204836675896933765">1 ફાઇલ બાકી છે</translation> <translation id="9206873250291191720">A</translation> @@ -1130,6 +1148,7 @@ <translation id="938850635132480979">ભૂલ: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">પાસફ્રેઝ દાખલ કરો</translation> <translation id="95817756606698420">Chrome, ચાઇનામાં શોધ માટે <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> નો ઉપયોગ કરી શકે છે. તમે આને <ph name="BEGIN_LINK" />સેટિંગ્સ<ph name="END_LINK" />માં બદલી શકો છો.</translation> +<translation id="962979164594783469">આ ઍપ ઇન્સ્ટૉલ કરો</translation> <translation id="968900484120156207">તમે મુલાકાત લીધેલા પેજ અહીં દેખાય છે</translation> <translation id="970715775301869095"><ph name="MINUTES" /> મિનિટ બાકી</translation> <translation id="974555521953189084">સમન્વયન શરૂ કરવા માટે તમારો પાસફ્રેઝ દાખલ કરો</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 8e94c65..e0fd809 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
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">צילום מסך</translation> <translation id="1111673857033749125">סימניות שנשמרו במכשירים האחרים שלך יופיעו כאן.</translation> <translation id="1113597929977215864">צפייה בתצוגה נקייה</translation> +<translation id="1123070903960493543">האינטראקציות שלך עם Chrome, ההגדרות שבחרת, פרטים על קריסות של Chrome</translation> <translation id="1126809382673880764">במצב הזה המערכת לא מגינה עליך מפני אתרים, הורדות ותוספים מסוכנים. גלישה בטוחה עדיין תגן עליך בשירותים אחרים של Google שבהם היא זמינה, כמו Gmail והחיפוש.</translation> <translation id="1129510026454351943">פרטים: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{הורדה אחת בהמתנה.}two{# הורדות בהמתנה.}many{# הורדות בהמתנה.}other{# הורדות בהמתנה.}}</translation> @@ -72,8 +73,9 @@ <translation id="1450753235335490080">לא ניתן לשתף את ה<ph name="CONTENT_TYPE" /></translation> <translation id="1477626028522505441">הורדת <ph name="FILE_NAME" /> נכשלה עקב בעיות בשרת.</translation> <translation id="1506061864768559482">מנוע חיפוש</translation> +<translation id="151267239139452619">הוספה להורדות</translation> <translation id="1513352483775369820">סימניות והיסטוריית אתרים</translation> -<translation id="1513858653616922153">מחק סיסמה</translation> +<translation id="1513858653616922153">מחיקת סיסמה</translation> <translation id="1521774566618522728">סנכרון אחרון: היום</translation> <translation id="1543538514740974167">רוצה להגיע לכאן מהר יותר?</translation> <translation id="1544826120773021464">כדי לנהל את חשבון Google, יש להקיש על הלחצן "ניהול החשבון"</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> נשמרו</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> נסגר</translation> <translation id="2139186145475833000">הוספה לדף הבית</translation> +<translation id="214888715418183969">בחירת המידע לשיתוף עם Chrome. המדדים שנקבל ממך ישמשו לשיפור התכונות, הביצועים והיציבות של Chrome.</translation> <translation id="2154484045852737596">עריכת כרטיס</translation> <translation id="2154710561487035718">העתק כתובת אתר</translation> <translation id="2156074688469523661">אתרים שנותרו (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">קוד QR</translation> <translation id="218608176142494674">שיתוף</translation> <translation id="2195339740518523951">רוצה ליהנות מהאבטחה החזקה ביותר של Chrome?</translation> +<translation id="2200113223741723867">ניהול השיתוף של נתוני השימוש במכשיר</translation> <translation id="2227444325776770048">המשך בשם <ph name="USER_FULL_NAME" /></translation> <translation id="2234876718134438132">סנכרון ושירותי Google</translation> <translation id="2239812875700136898">בעזרת הלחצן 'אפשרויות של Discover' ניתן לקבוע אילו מאמרים יוצגו</translation> @@ -370,12 +374,14 @@ <translation id="3771290962915251154">ההגדרה הזו מושבתת מאחר שבקרת ההורים מופעלת</translation> <translation id="3771694256347217732">תנאים והגבלות של Google</translation> <translation id="3773755127849930740"><ph name="BEGIN_LINK" />הפעל את Bluetooth<ph name="END_LINK" /> כדי לאפשר התאמה</translation> +<translation id="3773856050682458546">נתונים בסיסיים בנוסף למידע על האתרים שביקרת בהם והאפליקציות שהשתמשת בהן</translation> <translation id="3775705724665058594">שליחה אל המכשירים שלך</translation> <translation id="3778956594442850293">נוסף למסך דף הבית</translation> <translation id="3789841737615482174">התקן</translation> <translation id="3810838688059735925">וידאו</translation> <translation id="3810973564298564668">נהל</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> הורדות נמחקו</translation> +<translation id="3848957262889631524">Google <ph name="APP_NAME" /> כמפתח אבטחה</translation> <translation id="3856096718352044181">יש לאמת שהספק הזה חוקי או לנסות שוב מאוחר יותר</translation> <translation id="3861633093716975811">סרטונים פופולריים</translation> <translation id="3892148308691398805">העתקת הטקסט</translation> @@ -403,7 +409,9 @@ <translation id="3988466920954086464">בחלונית הזו אפשר לראות תוצאות חיפוש מיידי</translation> <translation id="4000212216660919741">דף הבית במצב לא מקוון</translation> <translation id="4034817413553209278">{HOURS,plural, =1{שעה אחת}two{שעתיים}many{# שעות}other{# שעות}}</translation> +<translation id="4045764304651014138">נתוני שימוש במכשיר</translation> <translation id="4056223980640387499">חום-ספיה</translation> +<translation id="4057643060762047384">הוספה אל:</translation> <translation id="4060598801229743805">האפשרויות זמינות בחלק העליון של המסך</translation> <translation id="4062305924942672200">מידע משפטי</translation> <translation id="4084682180776658562">סימניה</translation> @@ -449,7 +457,7 @@ <translation id="4452548195519783679">התווסף לסימניות ב-<ph name="FOLDER_NAME" /></translation> <translation id="4472118726404937099">כדי לסנכרן ולהתאים אישית את החוויה במכשירים שונים, יש להיכנס לחשבון ולהפעיל את הסנכרון</translation> <translation id="447252321002412580">עזרה בשיפור התכונות והביצועים של Chrome</translation> -<translation id="4479972344484327217">מתקין את <ph name="MODULE" /> ל-Chrome…</translation> +<translation id="4479972344484327217">מתבצעת התקנה של <ph name="MODULE" /> ל-Chrome…</translation> <translation id="4487967297491345095">כל נתוני היישומים של Chrome יימחקו לצמיתות, כולל כל הקבצים, ההגדרות, החשבונות, מסדי הנתונים וכו'</translation> <translation id="4493497663118223949">מצב הטעינה המהירה מופעל</translation> <translation id="4508528996305412043">תפריט כרטיס הפיד נפתח</translation> @@ -544,6 +552,7 @@ <translation id="5039804452771397117">זה בסדר</translation> <translation id="5040262127954254034">פרטיות</translation> <translation id="5087580092889165836">הוסף כרטיס</translation> +<translation id="5091249083535528968">נתונים נוספים על השימוש במכשיר</translation> <translation id="509429900233858213">אירעה שגיאה.</translation> <translation id="510275257476243843">נותרה שעה אחת</translation> <translation id="5123685120097942451">כרטיסיית גלישה בסתר</translation> @@ -589,7 +598,7 @@ <translation id="544776284582297024">כדי לפתוח כרטיסיות ולהיכנס לדפים שונים בו-זמנית, יש להקיש על לחצן הכרטיסיות הפתוחות</translation> <translation id="545042621069398927">הדפדפן מאיץ את ההורדה.</translation> <translation id="5456381639095306749">הורד דף זה</translation> -<translation id="548278423535722844">פתח יישום מפות</translation> +<translation id="548278423535722844">פתיחה באפליקציית מפות</translation> <translation id="5483197086164197190">ניווט ב-Chrome</translation> <translation id="5487521232677179737">ניקוי נתונים</translation> <translation id="549025011754480756">איך לחפש באמצעות הקול</translation> @@ -650,6 +659,7 @@ <translation id="5833984609253377421">שיתוף קישור</translation> <translation id="5836192821815272682">מוריד עדכון של Chrome…</translation> <translation id="5853623416121554550">מושהה</translation> +<translation id="5854512288214985237">לא נשלחים אל Google נתונים סטטיסטיים או דוחות קריסה כלשהם</translation> <translation id="5854790677617711513">לפני יותר מ-30 ימים</translation> <translation id="5855546874025048181">צמצום: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">לא ניתן להפעיל ב-Chrome את מתאם Bluetooth</translation> @@ -713,7 +723,7 @@ <translation id="6243852395147506234">מסונכרן למצב אופליין</translation> <translation id="624789221780392884">העדכון מוכן</translation> <translation id="6255999984061454636">הצעות לתוכן</translation> -<translation id="6277522088822131679">אירעה בעיה בעת הדפסת הדף. נסה שוב.</translation> +<translation id="6277522088822131679">אירעה בעיה בעת הדפסת הדף. יש לנסות שוב.</translation> <translation id="6278428485366576908">עיצוב</translation> <translation id="6292420053234093573">השימוש ב-Chrome מבטא הסכמה ל<ph name="BEGIN_LINK1" />תנאים ולהגבלות של Google<ph name="END_LINK1" /> ול<ph name="BEGIN_LINK2" />תנאים ולהגבלות הנוספים של Google Chrome ו-Chrome OS<ph name="END_LINK2" />.</translation> <translation id="629730747756840877">חשבון</translation> @@ -722,6 +732,7 @@ <translation id="6303969859164067831">יציאה וכיבוי הסנכרון</translation> <translation id="6312687380483398334">אפליקציות אינטרנט (שקט)</translation> <translation id="6316139424528454185">אין תמיכה בגרסת Android</translation> +<translation id="6321526113093607004">הוספה לסימניות</translation> <translation id="6324034347079777476">סנכרון מערכת Android מושבת</translation> <translation id="6333140779060797560">שיתוף באמצעות <ph name="APPLICATION" /></translation> <translation id="6337234675334993532">הצפנה</translation> @@ -739,6 +750,7 @@ <translation id="6402652558933147609"><ph name="ERROR_CODE" /> בכתובת <ph name="VIOLATED_URL" /></translation> <translation id="6404511346730675251">ערוך סימניה</translation> <translation id="6406506848690869874">סנכרון</translation> +<translation id="6410404864818553978">נתונים בסיסיים על השימוש במכשיר</translation> <translation id="6410883413783534063">ניתן לפתוח כרטיסיות כדי להיכנס אל דפים שונים בו-זמנית</translation> <translation id="6412673304250309937">המערכת בודקת כתובות URL ששמורות ב-Chrome ומכילות רשימות של אתרים לא בטוחים. אם אתר מסוים מנסה לגנוב סיסמה או אם המערכת מזהה הורדה של קובץ מזיק, Chrome עשוי גם לשלוח כתובות URL לבדיקה באמצעות 'גלישה בטוחה'. הנתונים שנשלחים לבדיקה כוללים ביטים מהתוכן של הדף.</translation> <translation id="641643625718530986">הדפסה…</translation> @@ -808,7 +820,7 @@ <translation id="6850409657436465440">ההורדה עדיין מתבצעת</translation> <translation id="6850830437481525139"><ph name="TAB_COUNT" /> כרטיסיות נסגרו</translation> <translation id="685850645784703949">Discover by Google – מושבת</translation> -<translation id="6864459304226931083">הורד תמונה</translation> +<translation id="6864459304226931083">הורדת תמונה</translation> <translation id="6865313869410766144">נתוני טפסים למילוי אוטומטי</translation> <translation id="6882836635272038266">הגנה רגילה מפני אתרים, הורדות ותוספים שידועים כמסוכנים.</translation> <translation id="688738109438487280">הוסף נתונים קיימים אל <ph name="TO_ACCOUNT" />.</translation> @@ -832,6 +844,7 @@ <translation id="7015203776128479407">הגדרת הסנכרון הראשונית לא הושלמה. הסנכרון מושבת.</translation> <translation id="7022756207310403729">פתיחה בדפדפן</translation> <translation id="702463548815491781">מומלץ אם הפעלת TalkBack או גישה באמצעות מתג</translation> +<translation id="7027549951530753705">בוצע שחזור של <ph name="ITEM_TITLE" /></translation> <translation id="7029809446516969842">סיסמאות</translation> <translation id="703523980599857277">שינוי דף הבית</translation> <translation id="7054588988317389591">רוצה לקבל תיאורי תמונות?</translation> @@ -945,7 +958,7 @@ <translation id="784934925303690534">טווח זמן</translation> <translation id="7851858861565204677">מכשירים אחרים</translation> <translation id="7857691613771368249">תוצג שאלה מתי יש לשמור קבצים</translation> -<translation id="7875915731392087153">צור הודעת אימייל</translation> +<translation id="7875915731392087153">הודעת אימייל חדשה</translation> <translation id="7876243839304621966">הסר הכל</translation> <translation id="7882131421121961860">לא נמצאה היסטוריה</translation> <translation id="7886917304091689118">פועל ב-Chrome</translation> @@ -953,7 +966,7 @@ <translation id="7919123827536834358">תרגום אוטומטי של שפות אלה</translation> <translation id="7925590027513907933">{FILE_COUNT,plural, =1{מתבצעת הורדה של הקובץ.}two{מתבצעת הורדה של # קבצים.}many{מתבצעת הורדה של # קבצים.}other{מתבצעת הורדה של # קבצים.}}</translation> <translation id="7926975587469166629">כינוי הכרטיס</translation> -<translation id="7929962904089429003">פתח את התפריט</translation> +<translation id="7929962904089429003">פתיחת התפריט</translation> <translation id="7930998711684428189">הצגת אזהרה אם סיסמאות נחשפות עקב פרצה באבטחת מידע.</translation> <translation id="7942131818088350342"><ph name="PRODUCT_NAME" /> אינו מעודכן.</translation> <translation id="7947953824732555851">קבל והיכנס</translation> @@ -963,7 +976,7 @@ <translation id="7971136598759319605">פעילות אחרונה: לפני יום אחד</translation> <translation id="7975379999046275268">הצגת הדף בתצוגה מקדימה<ph name="BEGIN_NEW" />חדש<ph name="END_NEW" /></translation> <translation id="7981313251711023384">טעינה מראש של דפים כדי לאפשר גלישה וחיפוש מהירים יותר</translation> -<translation id="7998918019931843664">פתח מחדש כרטיסייה שנסגרה</translation> +<translation id="7998918019931843664">פתיחה מחדש של כרטיסייה שנסגרה</translation> <translation id="8004582292198964060">דפדפן</translation> <translation id="8013372441983637696">יש לנקות גם את נתוני Chrome מהמכשיר הזה</translation> <translation id="8015452622527143194">החזר את כל מה שמופיע בדף לגודל ברירת המחדל</translation> @@ -987,7 +1000,7 @@ <translation id="8110087112193408731">להציג את הפעילות שלך ב-Chrome ב'שימוש חכם בדיגיטל'?</translation> <translation id="8115259494083109761">כדי לסרוק קוד QR יש להתיר ל-Chrome להשתמש במצלמה</translation> <translation id="8127542551745560481">עריכת דף הבית</translation> -<translation id="813082847718468539">הצג נתוני אתר</translation> +<translation id="813082847718468539">הצגת נתוני אתר</translation> <translation id="8137558756159375272">'גע כדי לחפש' שולח אל חיפוש Google את המילה הנבחרת, יחד עם הדף הנוכחי בתור הקשר. תוכל לכבות זאת ב<ph name="BEGIN_LINK" />הגדרות<ph name="END_LINK" />.</translation> <translation id="8156139159503939589">באילו שפות באפשרותך לקרוא?</translation> <translation id="8168435359814927499">תוכן</translation> @@ -1013,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> ועוד אתרים</translation> <translation id="8327155640814342956">כדי ליהנות מחוויית הגלישה הטובה ביותר, יש לפתוח את Chrome כדי לעדכן אותו</translation> <translation id="8349013245300336738">מיון לפי כמות הנתונים שבהם נעשה שימוש</translation> +<translation id="835847953965672673">שוחזרו <ph name="NUMBER_OF_DOWNLOADS" /> הורדות</translation> <translation id="8364299278605033898">הצגת אתרים פופולריים</translation> <translation id="8368027906805972958">מכשיר לא ידוע או שאינו נתמך (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> מוכנה לשימוש.</translation> @@ -1121,6 +1135,7 @@ <translation id="9148126808321036104">היכנס שוב</translation> <translation id="9155898266292537608">אפשר גם להתחיל חיפוש על-ידי הקשה קצרה על מילה</translation> <translation id="9169507124922466868">היסטוריית הניווט פתוחה למחצה</translation> +<translation id="9191031968346938109">הוספה אל…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{התבצעה בדיקה לפני דקה אחת}two{התבצעה בדיקה לפני # דקות}many{התבצעה בדיקה לפני # דקות}other{התבצעה בדיקה לפני # דקות}}</translation> <translation id="9204836675896933765">נותר קובץ אחד</translation> <translation id="9206873250291191720">א</translation> @@ -1132,7 +1147,8 @@ <translation id="93753284658583800">דף הבית השתנה</translation> <translation id="938850635132480979">שגיאה: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">הזן משפט-סיסמה</translation> -<translation id="95817756606698420">דפדפן Chrome יכול להשתמש ב-<ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> כדי לחפש בסין. אפשר לשנות את ההעדפה הזאת ב<ph name="BEGIN_LINK" />הגדרות<ph name="END_LINK" />.</translation> +<translation id="95817756606698420">דפדפן Chrome יכול להשתמש ב-<ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> כדי לבצע חיפוש מסין. אפשר לשנות את ההעדפה הזאת ב<ph name="BEGIN_LINK" />הגדרות<ph name="END_LINK" />.</translation> +<translation id="962979164594783469">התקנת האפליקציה</translation> <translation id="968900484120156207">הדפים שבהם ביקרת מופיעים כאן</translation> <translation id="970715775301869095">נותרו <ph name="MINUTES" /> דקות</translation> <translation id="974555521953189084">צריך להזין את ביטוי הסיסמה כדי להתחיל בסנכרון</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb index 86d7a216..1fb9060 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">ସ୍କ୍ରିନ୍ କ୍ୟାପ୍ଚର୍</translation> <translation id="1111673857033749125">ଏଠାରେ, ଆପଣଙ୍କର ଅନ୍ୟ ଡିଭାଇସ୍ରେ ସେଭ୍ ହୋଇଥିବା ବୁକ୍ମାର୍କ ଦେଖାଯିବ।</translation> <translation id="1113597929977215864">ସରଳୀକୃତ ଭ୍ୟୁ ଦେଖାନ୍ତୁ</translation> +<translation id="1123070903960493543">ଆପଣ Chrome ସହିତ କିପରି ଇଣ୍ଟରାକ୍ଟ କରନ୍ତି, ଆପଣ ଚୟନ କରିଥିବା ସେଟିଂସ୍, Chrome କ୍ରାସଗୁଡ଼ିକର ବିବରଣୀ</translation> <translation id="1126809382673880764">ବିପଦଜନକ ୱେବସାଇଟ୍, ଡାଉନଲୋଡ୍ ଏବଂ ଏକ୍ସଟେନ୍ସନଗୁଡ଼ିକ ଠାରୁ ଆପଣଙ୍କୁ ରକ୍ଷା କରେ ନାହିଁ। Gmail ଏବଂ Search ପରି ଅନ୍ୟ Google ସେବାଗୁଡ଼ିକରେ ସେଫ୍ ବ୍ରାଉଜିଂ ସୁବିଧା ଉପଲବ୍ଧ ଥିଲେ, ଆପଣ ଏବେ ବି ଏହି ସୁରକ୍ଷା ପାଇବେ।</translation> <translation id="1129510026454351943">ବିବରଣୀ: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{1ଟି ଡାଉନ୍ଲୋଡ୍ ବାକି ଅଛି।}other{#ଟି ଡାଉନ୍ଲୋଡ୍ ବାକି ଅଛି।}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> ସେୟାର୍ କରାଯାଇ ପାରିବ ନାହିଁ</translation> <translation id="1477626028522505441">ସର୍ଭର୍ ସମସ୍ୟା ଯୋଗୁଁ <ph name="FILE_NAME" /> ଡାଉନ୍ଲୋଡ୍ ହେବାରେ ବିଫଳ ହେଲା।</translation> <translation id="1506061864768559482">ସନ୍ଧାନ ଇଞ୍ଜିନ୍</translation> +<translation id="151267239139452619">ଡାଉନଲୋଡଗୁଡ଼ିକରେ ଯୋଗ କରନ୍ତୁ</translation> <translation id="1513352483775369820">ବୁକ୍ମାର୍କ ଏବଂ ୱେବ୍ ଇତିବୃତ୍ତି</translation> <translation id="1513858653616922153">ପାସ୍ୱାର୍ଡକୁ ଡିଲିଟ୍ କରନ୍ତୁ</translation> <translation id="1521774566618522728">ଆଜି ସକ୍ରିୟ ଅଛି</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> ସେଭ୍ ହୋଇଛି</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" />ବନ୍ଦ ହୋଇଯାଇଛି</translation> <translation id="2139186145475833000">ହୋମ୍ ସ୍କ୍ରିନରେ ଯୋଗ କରନ୍ତୁ</translation> +<translation id="214888715418183969">ଆପଣ Chrome ସହିତ କଣ ସହଜରେ ସେୟାର୍ କରିପାରିବେ ତାହା ବାଛନ୍ତୁ। Chromeର ଫିଚର୍, କାର୍ଯ୍ୟଦକ୍ଷତା ଏବଂ ସ୍ଥିରତା ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରିବାକୁ ଆପଣ ସେୟାର୍ କରିଥିବା ମେଟ୍ରିକ୍ସ ବ୍ୟବହାର କରାଯିବ।</translation> <translation id="2154484045852737596">କାର୍ଡକୁ ଏଡିଟ୍ କରନ୍ତୁ</translation> <translation id="2154710561487035718">URL କପି କରନ୍ତୁ</translation> <translation id="2156074688469523661">ବାକିଥିବା ସାଇଟ୍ଗୁଡ଼ିକ (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">QR କୋଡ୍</translation> <translation id="218608176142494674">ସେୟାରିଂ</translation> <translation id="2195339740518523951">Chromeର ସବୁଠାରୁ ଶକ୍ତିଶାଳୀ ସୁରକ୍ଷା ପାଆନ୍ତୁ</translation> +<translation id="2200113223741723867">ବ୍ୟବହାର ଡାଟାର ସେୟାରିଂ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> ଭାବେ ଜାରି ରଖନ୍ତୁ</translation> <translation id="2234876718134438132">ସିଙ୍କ ଓ Google ସେବାଗୁଡ଼ିକ</translation> <translation id="2239812875700136898">Discover ବଟନ୍ ପାଇଁ "ବିକଳ୍ପଗୁଡ଼ିକ"ରୁ ଆପଣଙ୍କ ଷ୍ଟୋରୀଗୁଡ଼ିକ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ</translation> @@ -370,12 +374,14 @@ <translation id="3771290962915251154">ବାପାମା ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ ଚାଲୁ ଥିବା ଯୋଗୁଁ ଏହି ସେଟିଂସକୁ ଅକ୍ଷମ କରାଯାଇଛି</translation> <translation id="3771694256347217732">Google ସେବାର ସର୍ତ୍ତାବଳୀ</translation> <translation id="3773755127849930740">ପେୟାରିଂକୁ ଅନୁମତି ଦେବା ପାଇଁ <ph name="BEGIN_LINK" />ବ୍ଲୁଟୁଥ୍ ଚାଲୁ କରନ୍ତୁ<ph name="END_LINK" /></translation> +<translation id="3773856050682458546">ଆପଣ ଭିଜିଟ୍ କରିଥିବା ୱେବସାଇଟ୍ ଏବଂ ବ୍ୟବହାର କରୁଥିବା ଆପଗୁଡ଼ିକ ବିଷୟରେ ବେସିକ୍ ଡାଟା ସହିତ ସୂଚନା</translation> <translation id="3775705724665058594">ଆପଣଙ୍କର ଡିଭାଇସ୍ଗୁଡ଼ିକୁ ପଠାନ୍ତୁ</translation> <translation id="3778956594442850293">ଏହାକୁ ମୂଳ ସ୍କ୍ରିନ୍ରେ ଯୋଗ କରାଯାଇଛି</translation> <translation id="3789841737615482174">ସଂସ୍ଥାପନ</translation> <translation id="3810838688059735925">ଭିଡିଓ</translation> <translation id="3810973564298564668">ପରିଚାଳନା</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" />ଟି ଡାଉନ୍ଲୋଡ୍ ଡିଲିଟ୍ କରାଯାଇଛି</translation> +<translation id="3848957262889631524">ଏକ ସୁରକ୍ଷା କୀ ଭାବରେ Google <ph name="APP_NAME" /></translation> <translation id="3856096718352044181">ଏହା ଏକ ବୈଧ ପ୍ରଦାନକାରୀ ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ କିମ୍ବା ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation> <translation id="3861633093716975811">ଲୋକପ୍ରିୟ ଭିଡିଓଗୁଡ଼ିକ</translation> <translation id="3892148308691398805">ଟେକ୍ସଟ୍ କପି କରନ୍ତୁ</translation> @@ -403,7 +409,9 @@ <translation id="3988466920954086464">ଏହି ପ୍ୟାନେଲ୍ରେ ତତ୍କ୍ଷଣାତ୍ ସର୍ଚ୍ଚ ପରିଣାମ ଦେଖନ୍ତୁ</translation> <translation id="4000212216660919741">ଅଫ୍ଲାଇନ୍ ହୋମ୍</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# ଘଣ୍ଟା}other{# ଘଣ୍ଟା}}</translation> +<translation id="4045764304651014138">ବ୍ୟବହାର ଡାଟା</translation> <translation id="4056223980640387499">ସେପିଆ</translation> +<translation id="4057643060762047384">ଏଥିରେ ଯୋଗ କରନ୍ତୁ:</translation> <translation id="4060598801229743805">ସ୍କ୍ରିନ୍ର ଶୀର୍ଷଭାଗରେ ବିକଳ୍ପଗୁଡ଼ିକ ଉପଲବ୍ଧ ଅଛି</translation> <translation id="4062305924942672200">ଆଇନଗତ ସୂଚନା</translation> <translation id="4084682180776658562">ବୁକମାର୍କ</translation> @@ -544,6 +552,7 @@ <translation id="5039804452771397117">ଅନୁମତି</translation> <translation id="5040262127954254034">ଗୋପନୀୟତା</translation> <translation id="5087580092889165836">କାର୍ଡ ଯୋଗ କରନ୍ତୁ</translation> +<translation id="5091249083535528968">ବିସ୍ତାରିତ ବ୍ୟବହାର ଡାଟା</translation> <translation id="509429900233858213">ଏକ ତ୍ରୁଟି ଦେଖାଦେଲା।</translation> <translation id="510275257476243843">1 ଘଣ୍ଟା ବାକି ଅଛି</translation> <translation id="5123685120097942451">ଇନ୍କଗ୍ନିଟୋ ଟାବ୍</translation> @@ -650,6 +659,7 @@ <translation id="5833984609253377421">ଲିଙ୍କ ସେୟାର୍ କରନ୍ତୁ</translation> <translation id="5836192821815272682">Chrome ଅପ୍ଡେଟ୍ ଡାଉନ୍ଲୋଡ୍ ହେଉଛି…</translation> <translation id="5853623416121554550">ବିରତ ହୋଇଛି</translation> +<translation id="5854512288214985237">Googleକୁ କୌଣସି ପରିସଂଖ୍ୟାନ କିମ୍ବା କ୍ରାସ୍ ରିପୋର୍ଟ ପଠାଯାଇନାହିଁ</translation> <translation id="5854790677617711513">30 ଦିନରୁ ଅଧିକ ପୁରୁଣା</translation> <translation id="5855546874025048181">ରିଫାଇନ୍ କରନ୍ତୁ: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">ବ୍ଲୁଟୁଥ୍ ଆଡପ୍ଟର୍ ଚାଲୁ କରିବାରେ Chrome ଅକ୍ଷମ ଅଟେ</translation> @@ -722,6 +732,7 @@ <translation id="6303969859164067831">ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ ଏବଂ ସିଙ୍କ୍ ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="6312687380483398334">ୱେବ୍ ଆପଗୁଡ଼ିକ (ନୀରବ)</translation> <translation id="6316139424528454185">Android ସଂସ୍କରଣ ଅସମର୍ଥିତ ଅଟେ</translation> +<translation id="6321526113093607004">ବୁକମାର୍କଗୁଡ଼ିକରେ ଯୋଗ କରନ୍ତୁ</translation> <translation id="6324034347079777476">Android ସିଷ୍ଟମ୍ର ସିଙ୍କ ଅକ୍ଷମ କରାଗଲା</translation> <translation id="6333140779060797560"><ph name="APPLICATION" /> ମାଧ୍ୟମରେ ସେୟାର୍ କରନ୍ତୁ</translation> <translation id="6337234675334993532">ଏନକ୍ରିପ୍ସନ୍</translation> @@ -739,6 +750,7 @@ <translation id="6402652558933147609"><ph name="VIOLATED_URL" />ରେ <ph name="ERROR_CODE" /></translation> <translation id="6404511346730675251">ବୁକ୍ମାର୍କ ଏଡିଟ୍ କରନ୍ତୁ</translation> <translation id="6406506848690869874">ସିଙ୍କ୍ କରନ୍ତୁ</translation> +<translation id="6410404864818553978">ବେସିକ୍ ବ୍ୟବହାର ଡାଟା</translation> <translation id="6410883413783534063">ଏକା ସମୟରେ ବିଭିନ୍ନ ପୃଷ୍ଠାକୁ ଭିଜିଟ୍ କରିବା ପାଇଁ ଟାବଗୁଡ଼ିକ ଖୋଲନ୍ତୁ</translation> <translation id="6412673304250309937">Chromeରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ଅସୁରକ୍ଷିତ ସାଇଟଗୁଡ଼ିକର ଏକ ତାଲିକା ସହିତ URLଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରେ। ଯଦି କୌଣସି ସାଇଟ୍ ଆପଣଙ୍କ ପାସୱାର୍ଡ ଚୋରି କରିବାକୁ ଚେଷ୍ଟା କରେ କିମ୍ବା ଆପଣ ଏକ କ୍ଷତିକାରକ ଫାଇଲ୍ ଡାଉନଲୋଡ୍ କଲେ, ପୃଷ୍ଠାର କିଛି ବିଷୟବସ୍ତୁ ସହିତ URLଗୁଡ଼ିକୁ ମଧ୍ୟ Chrome ସେଫ୍ ବ୍ରାଉଜିଂକୁ ପଠାଇପାରେ।</translation> <translation id="641643625718530986">ପ୍ରିଣ୍ଟ କରନ୍ତୁ…</translation> @@ -832,6 +844,7 @@ <translation id="7015203776128479407">ପ୍ରାରମ୍ଭିକ ସିଙ୍କ୍ ସେଟ୍ଅପ୍ ସମାପ୍ତ ହୋଇନାହିଁ। ସିଙ୍କ୍ ବନ୍ଦ ଅଛି</translation> <translation id="7022756207310403729">ବ୍ରାଉଜର୍ରେ ଖୋଲନ୍ତୁ</translation> <translation id="702463548815491781">TalkBack କିମ୍ବା ଆକ୍ସେସ୍ ପରିବର୍ତ୍ତନ ଚାଲୁ ଥିଲେ ଏହା କରିବାକୁ ସୁପାରିଶ୍ କରାଯାଇଛି</translation> +<translation id="7027549951530753705"><ph name="ITEM_TITLE" /> ରିଷ୍ଟୋର୍ କରାଯାଇଛି</translation> <translation id="7029809446516969842">ପାସୱାର୍ଡଗୁଡିକ</translation> <translation id="703523980599857277">ମୂଳପୃଷ୍ଠା ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation> <translation id="7054588988317389591">ଛବିର ବର୍ଣ୍ଣନା ପାଇବାକୁ ଚାହାଁନ୍ତି କି?</translation> @@ -1013,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> ଏବଂ ଅଧିକ ସାଇଟ୍</translation> <translation id="8327155640814342956">ଉତ୍ତମ ବ୍ରାଉଜିଂ ଅନୁଭୂତି ପାଇଁ Chrome ଅପ୍ଡେଟ୍ କରିବା ପାଇଁ ଖୋଲନ୍ତୁ</translation> <translation id="8349013245300336738">ବ୍ୟବହାର କରାଯାଇଥିବା ଡାଟାର ପରିମାଣର କ୍ରମରେ ସଜାନ୍ତୁ</translation> +<translation id="835847953965672673"><ph name="NUMBER_OF_DOWNLOADS" />ଟି ଡାଉନଲୋଡ୍ ରିଷ୍ଟୋର୍ କରାଯାଇଛି</translation> <translation id="8364299278605033898">ଲୋକପ୍ରିୟ ୱେବ୍ସାଇଟ୍ଗୁଡ଼ିକ ଦେଖନ୍ତୁ</translation> <translation id="8368027906805972958">ଅଜଣା କିମ୍ବା ଅସମର୍ଥିତ ଡିଭାଇସ୍ (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> ପ୍ରସ୍ତୁତ ଅଛି।</translation> @@ -1121,6 +1135,7 @@ <translation id="9148126808321036104">ପୁଣି ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation> <translation id="9155898266292537608">ଆପଣ ଏକ ଶଦ୍ଦ ଉପରେ କେବଳ ଏକ ଟାପ୍ କରି ଶୀଘ୍ର ଖୋଜିପାରିବେ</translation> <translation id="9169507124922466868">ନାଭିଗେସନ୍ ଇତିହାସ ଅଧା ଖୋଲା ଅଛି</translation> +<translation id="9191031968346938109">ଏଥିରେ ଯୋଗ କରନ୍ତୁ…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{1 ମିନିଟ୍ ପୂର୍ବେ ଯାଞ୍ଚ କରାଯାଇଛି}other{# ମିନିଟ୍ ପୂର୍ବେ ଯାଞ୍ଚ କରାଯାଇଛି}}</translation> <translation id="9204836675896933765">1 ଫାଇଲ୍ ବାକି ଅଛି</translation> <translation id="9206873250291191720">ଅ</translation> @@ -1133,6 +1148,7 @@ <translation id="938850635132480979">ତ୍ରୁଟି: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">ପାସ୍-ଫ୍ରେଜ୍ ଲେଖନ୍ତୁ</translation> <translation id="95817756606698420">ଚୀନ୍ରେ ସନ୍ଧାନ କରିବା ପାଇଁ, Chrome <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> ବ୍ୟବହାର କରାଯାଏ। ଆପଣ ଏହାକୁ <ph name="BEGIN_LINK" />ସେଟିଂସ୍<ph name="END_LINK" />ରେ ପରିବର୍ତ୍ତନ କରିପାରିବେ।</translation> +<translation id="962979164594783469">ଏହି ଆପ୍ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ</translation> <translation id="968900484120156207">ଆପଣ ଯେଉଁ ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଯାଆନ୍ତି, ତାହା ଏଠାରେ ଦେଖାଯାଏ</translation> <translation id="970715775301869095"><ph name="MINUTES" /> ମିନିଟ୍ ବାକି ଅଛି</translation> <translation id="974555521953189084">ସିଙ୍କ୍ ଆରମ୍ଭ କରିବାକୁ ଆପଣଙ୍କର ପାସ୍ଫ୍ରେଜ୍ ଲେଖନ୍ତୁ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb index 06fe6ee..394953e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">اسکرین کیپچر</translation> <translation id="1111673857033749125">آپ کے دیگر آلات پر محفوظ کردہ بُک مارکس یہاں ظاہر ہوں گے۔</translation> <translation id="1113597929977215864">سادہ منظر دکھائیں</translation> +<translation id="1123070903960493543">Chrome کے ساتھ آپ کے تعامل کا طریقہ، آپ کی منتخب کردہ ترتیبات، Chrome کی ناکامیوں کی تفصیلات</translation> <translation id="1126809382673880764">خطرناک ویب سائٹس، ڈاؤن لوڈز اور ایکسٹینشنز سے آپ کی حفاظت نہیں کرتی ہے۔ آپ کو اب بھی Gmail اور تلاش جیسی Google کی دیگر سروسز میں جہاں بھی دستیاب ہوگا محفوظ براؤزنگ کا تحفظ ملے گا۔</translation> <translation id="1129510026454351943">تفصیلات: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{1 ڈاؤن لوڈ زير التوا ہے۔}other{# ڈاؤن لوڈز زير التوا ہیں۔}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> کا اشتراک نہیں کیا جا سکتا</translation> <translation id="1477626028522505441">سروس کے مسائل کی وجہ سے <ph name="FILE_NAME" /> کو ڈاؤن لوڈ کرنا ناکام ہوگیا۔</translation> <translation id="1506061864768559482">تلاش انجن</translation> +<translation id="151267239139452619">ڈاؤن لوڈز میں شامل کریں</translation> <translation id="1513352483775369820">بُک مارکس اور ویب سرگزشت</translation> <translation id="1513858653616922153">پاس ورڈ حذف کریں</translation> <translation id="1521774566618522728">آج فعال کیا گیا</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825"><ph name="DATA" /> کی بچت ہوئی</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> کو بند کر دیا گیا</translation> <translation id="2139186145475833000">ہوم اسکرین میں شامل کریں</translation> +<translation id="214888715418183969">منتخب کریں کہ Chrome کے ساتھ کون سی معلومات کا اشتراک کرنے کے لیے آپ مطمئن ہیں۔ آپ کی اشتراک کی جانے والی میٹرکس کا استعمال Chrome کی خصوصیات، کارکردگی اور استحکام کو بہتر بنانے کے لئے کیا جائے گا۔</translation> <translation id="2154484045852737596">کارڈ میں ترمیم کریں</translation> <translation id="2154710561487035718">URL کاپی کریں</translation> <translation id="2156074688469523661">باقی سائٹس (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">QR کوڈ</translation> <translation id="218608176142494674">اشتراک</translation> <translation id="2195339740518523951">Chrome کی مضبوط ترین سیکیورٹی حاصل کریں</translation> +<translation id="2200113223741723867">استعمال کا ڈیٹا کے اشتراک کا نظم کریں</translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> کے بطور جاری رکھیں</translation> <translation id="2234876718134438132">مطابقت پذیری اور Google سروسز</translation> <translation id="2239812875700136898">اختیارات برائے Discover بٹن سے اپنی کہانیاں کنٹرول کریں</translation> @@ -370,12 +374,14 @@ <translation id="3771290962915251154">یہ ترتیب غیر فعال ہے کیونکہ پیرنٹل کنٹرولز آن ہیں</translation> <translation id="3771694256347217732">Google کی سروس کی شرائط</translation> <translation id="3773755127849930740">جوڑا بنانے کی اجازت دینے کیلئے <ph name="BEGIN_LINK" />بلوٹوتھ کو آن کریں<ph name="END_LINK" /></translation> +<translation id="3773856050682458546">بنیادی ڈیٹا کے ساتھ آپ کی ملاحظہ کردہ ویب سائٹس سے متعلق معلومات اور آپ کی استعمال کردہ ایپس</translation> <translation id="3775705724665058594">اپنے آلات پر بھیجیں</translation> <translation id="3778956594442850293">ہوم اسکرین میں شامل ہو گئی</translation> <translation id="3789841737615482174">انسٹال کریں</translation> <translation id="3810838688059735925">ویڈیو</translation> <translation id="3810973564298564668">نظم کریں</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> ڈاؤن لوڈز کو حذف کر دیا گیا</translation> +<translation id="3848957262889631524">Google <ph name="APP_NAME" /> بطور سیکیورٹی کلید</translation> <translation id="3856096718352044181">براہ کرم توثیق کریں کہ یہ درست فراہم کنندہ ہے یا بعد میں دوبارہ کوشش کریں</translation> <translation id="3861633093716975811">مقبول ویڈیوز</translation> <translation id="3892148308691398805">ٹیکسٹ کاپی کریں</translation> @@ -403,7 +409,9 @@ <translation id="3988466920954086464">اس پینل میں فوری تلاش کے نتائج دیکھیں</translation> <translation id="4000212216660919741">آف لائن ہوم</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# گھنٹہ}other{# گھنٹے}}</translation> +<translation id="4045764304651014138">استعمال کا ڈیٹا</translation> <translation id="4056223980640387499">سیپیا</translation> +<translation id="4057643060762047384">اس میں شامل کریں:</translation> <translation id="4060598801229743805">اسکرین کے اوپری حصہ کے قریب اختیارات دستیاب ہیں</translation> <translation id="4062305924942672200">قانونی معلومات</translation> <translation id="4084682180776658562">بُک مارک</translation> @@ -544,6 +552,7 @@ <translation id="5039804452771397117">اجازت دیں</translation> <translation id="5040262127954254034">رازداری</translation> <translation id="5087580092889165836">کارڈ شامل کریں</translation> +<translation id="5091249083535528968">توسیع کردہ استعمال کا ڈیٹا</translation> <translation id="509429900233858213">ایک خرابی پیش آگئی۔</translation> <translation id="510275257476243843">1 گھنٹہ باقی</translation> <translation id="5123685120097942451">پوشیدگی ٹیب</translation> @@ -650,6 +659,7 @@ <translation id="5833984609253377421">لنک کا اشتراک کریں</translation> <translation id="5836192821815272682">Chrome اپ ڈیٹ ڈاؤن لوڈ ہو رہا ہے…</translation> <translation id="5853623416121554550">موقوف ہو گیا</translation> +<translation id="5854512288214985237">Google کو اعداد و شمار یا کریش کی کوئی رپورٹ نہیں بھیجی گئی</translation> <translation id="5854790677617711513">30 دن سے زیادہ پرانا</translation> <translation id="5855546874025048181">بہتر بنائیں: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome بلوٹوتھ اڈاپٹر آن کرنے سے قاصر ہے</translation> @@ -722,6 +732,7 @@ <translation id="6303969859164067831">سائن آؤٹ کریں اور مطابقت پذیری آف کریں</translation> <translation id="6312687380483398334">ویب ایپس (خاموش)</translation> <translation id="6316139424528454185">Android ورژن تعاون یافتہ نہیں</translation> +<translation id="6321526113093607004">بُک مارکس میں شامل کریں</translation> <translation id="6324034347079777476">Android سسٹم کی مطابقت پذیری کو غیر فعال کر دیا گیا</translation> <translation id="6333140779060797560"><ph name="APPLICATION" /> کے ذریعے اشتراک کریں</translation> <translation id="6337234675334993532">مرموزکاری</translation> @@ -739,6 +750,7 @@ <translation id="6402652558933147609"><ph name="VIOLATED_URL" /> پر <ph name="ERROR_CODE" /></translation> <translation id="6404511346730675251">بک مارک میں ترمیم کریں</translation> <translation id="6406506848690869874">مطابقت پذیر بنائیں</translation> +<translation id="6410404864818553978">بنیادی ڈیٹا کا استعمال</translation> <translation id="6410883413783534063">ایک ہی وقت میں مختلف صفحات دیکھنے کیلئے ٹیبز کھولیں</translation> <translation id="6412673304250309937">Chrome میں اسٹور کردہ غیر محفوظ سائٹس کی فہرست کے URLs چیک کرتا ہے۔ اگر کوئی سائٹ آپ کا پاس ورڈ چرانے کی کوشش کرتی ہے یا جب آپ نقصان دہ فائل ڈاؤن لوڈ کرتے ہیں تو Chrome محفوظ براؤزنگ پر صفحہ کے مواد کے بائٹس سمیت URLs بھیجتا ہے۔</translation> <translation id="641643625718530986">پرنٹ کریں…</translation> @@ -832,6 +844,7 @@ <translation id="7015203776128479407">مطابقت پذیری کا ابتدائی سیٹ اپ مکمل نہیں ہوا۔ مطابقت پذیری آف ہے۔</translation> <translation id="7022756207310403729">براؤزر میں کھولیں</translation> <translation id="702463548815491781">TalkBack یا سوئچ رسائی آن ہونے پر تجویز کردہ</translation> +<translation id="7027549951530753705"><ph name="ITEM_TITLE" /> کو بحال کیا گیا</translation> <translation id="7029809446516969842">پاس ورڈز</translation> <translation id="703523980599857277">ہوم صفحہ تبدیل کریں</translation> <translation id="7054588988317389591">تصویری تفصیلات حاصل کریں؟</translation> @@ -1013,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> اور مزید سائٹس</translation> <translation id="8327155640814342956">براؤزنگ کے بہترین تجربے کے لیے، Chrome کو اپ ڈیٹ کریں</translation> <translation id="8349013245300336738">استعمال کردہ ڈیٹا کی مقدار کے لحاظ سے ترتیب دیں</translation> +<translation id="835847953965672673"><ph name="NUMBER_OF_DOWNLOADS" /> ڈاؤن لوڈز بحال کئے گئے</translation> <translation id="8364299278605033898">مقبول ویب سائٹس دیکھیں</translation> <translation id="8368027906805972958">نا معلوم یا غیر تعاون یافتہ آلہ (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> تیار ہے۔</translation> @@ -1121,6 +1135,7 @@ <translation id="9148126808321036104">دوبارہ سائن ان کریں</translation> <translation id="9155898266292537608">آپ کسی لفظ پر فوری تھپتھپاہٹ سے بھی تلاش کر سکتے ہیں</translation> <translation id="9169507124922466868">نیویگیشن کی سرگزشت آدھی کھلی ہوئی ہے</translation> +<translation id="9191031968346938109">اس میں شامل کریں…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{1 منٹ پہلے چیک کیا گيا}other{# منٹ پہلے چیک کیا گیا}}</translation> <translation id="9204836675896933765">1 فائل باقی ہے</translation> <translation id="9206873250291191720">A</translation> @@ -1133,6 +1148,7 @@ <translation id="938850635132480979">خرابی: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">پاس فریز درج کریں</translation> <translation id="95817756606698420">Chrome چین میں تلاش کرنے کیلئے <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> کا استعمال کر سکتا ہے۔ آپ اسے <ph name="BEGIN_LINK" />ترتیبات<ph name="END_LINK" /> میں تبدیل کر سکتے ہیں۔</translation> +<translation id="962979164594783469">یہ ایپ انسٹال کریں</translation> <translation id="968900484120156207">آپ کے ملاحظہ کردہ صفحات یہاں دکھائی دیتے ہیں</translation> <translation id="970715775301869095"><ph name="MINUTES" /> منٹ باقی</translation> <translation id="974555521953189084">مطابقت پذیری شروع کرنے کیلئے اپنا پاس فریز درج کریں</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb index e6604cb..9c363137 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">Chụp ảnh màn hình</translation> <translation id="1111673857033749125">Dấu trang được lưu trên thiết bị khác của bạn sẽ xuất hiện tại đây.</translation> <translation id="1113597929977215864">Hiển thị chế độ xem đơn giản</translation> +<translation id="1123070903960493543">Cách bạn tương tác với Chrome, các tùy chọn cài đặt bạn đã chọn, thông tin chi tiết về sự cố mà Chrome gặp phải</translation> <translation id="1126809382673880764">Không bảo vệ bạn trước các trang web, tệp đã tải xuống và tiện ích nguy hiểm. Bạn sẽ vẫn được bảo vệ bằng tính năng Duyệt web an toàn (nếu có) ở các dịch vụ khác của Google, chẳng hạn như Gmail và Tìm kiếm.</translation> <translation id="1129510026454351943">Chi tiết: <ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{1 tệp đang chờ tải xuống.}other{# tệp đang chờ tải xuống.}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080">Không thể chia sẻ <ph name="CONTENT_TYPE" /></translation> <translation id="1477626028522505441">Tải xuống <ph name="FILE_NAME" /> không thành công do sự cố máy chủ.</translation> <translation id="1506061864768559482">Công cụ tìm kiếm</translation> +<translation id="151267239139452619">Thêm vào Tệp đã tải xuống</translation> <translation id="1513352483775369820">Dấu trang và lịch sử web</translation> <translation id="1513858653616922153">Xóa mật khẩu</translation> <translation id="1521774566618522728">Hoạt động hôm nay</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825">Đã tiết kiệm <ph name="DATA" /></translation> <translation id="213279576345780926">Đã đóng <ph name="TAB_TITLE" /></translation> <translation id="2139186145475833000">Thêm vào Màn hình chính</translation> +<translation id="214888715418183969">Chọn những thông tin mà bạn muốn chia sẻ với Chrome. Những thông tin bạn chia sẻ sẽ góp phần cải thiện các tính năng, hiệu suất và độ ổn định của Chrome.</translation> <translation id="2154484045852737596">Chỉnh sửa thẻ</translation> <translation id="2154710561487035718">Sao chép URL</translation> <translation id="2156074688469523661">Số trang web còn lại (<ph name="NUMBER_OF_SITES" />)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">Mã QR</translation> <translation id="218608176142494674">Chia sẻ</translation> <translation id="2195339740518523951">Tận dụng mức bảo mật mạnh nhất của Chrome</translation> +<translation id="2200113223741723867">Quản lý tùy chọn chia sẻ dữ liệu sử dụng</translation> <translation id="2227444325776770048">Tiếp tục bằng <ph name="USER_FULL_NAME" /></translation> <translation id="2234876718134438132">Đồng bộ hóa và các dịch vụ của Google</translation> <translation id="2239812875700136898">Kiểm soát các tin bài của bạn bằng các Tùy chọn của nút Khám phá</translation> @@ -370,12 +374,14 @@ <translation id="3771290962915251154">Tùy chọn cài đặt này bị tắt do các quyền kiểm soát của cha mẹ đang bật</translation> <translation id="3771694256347217732">Điều khoản dịch vụ của Google</translation> <translation id="3773755127849930740"><ph name="BEGIN_LINK" />Bật Bluetooth<ph name="END_LINK" /> để cho phép ghép nối</translation> +<translation id="3773856050682458546">Dữ liệu cơ bản cùng với thông tin về những trang web bạn truy cập và các ứng dụng bạn dùng</translation> <translation id="3775705724665058594">Gửi đến các thiết bị của bạn</translation> <translation id="3778956594442850293">Đã thêm vào màn hình chính</translation> <translation id="3789841737615482174">Cài đặt</translation> <translation id="3810838688059735925">Video</translation> <translation id="3810973564298564668">Quản lý</translation> <translation id="3819178904835489326">Đã xóa <ph name="NUMBER_OF_DOWNLOADS" /> bản tải xuống</translation> +<translation id="3848957262889631524"><ph name="APP_NAME" /> của Google là Khóa bảo mật</translation> <translation id="3856096718352044181">Vui lòng xác minh rằng đây là nhà cung cấp hợp lệ hoặc thử lại sau</translation> <translation id="3861633093716975811">Video phổ biến</translation> <translation id="3892148308691398805">Sao chép văn bản</translation> @@ -403,7 +409,9 @@ <translation id="3988466920954086464">Xem kết quả tìm kiếm tức thì trong bảng điều khiển này</translation> <translation id="4000212216660919741">Nhà ở chế độ không kết nối Internet</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# giờ}other{# giờ}}</translation> +<translation id="4045764304651014138">Dữ liệu sử dụng</translation> <translation id="4056223980640387499">Màu nâu đỏ</translation> +<translation id="4057643060762047384">Thêm vào:</translation> <translation id="4060598801229743805">Có các tùy chọn ở gần đầu màn hình</translation> <translation id="4062305924942672200">Thông tin pháp lý</translation> <translation id="4084682180776658562">Dấu trang</translation> @@ -544,6 +552,7 @@ <translation id="5039804452771397117">Cho phép</translation> <translation id="5040262127954254034">Quyền riêng tư</translation> <translation id="5087580092889165836">Thêm thẻ</translation> +<translation id="5091249083535528968">Dữ liệu sử dụng mở rộng</translation> <translation id="509429900233858213">Đã xảy ra lỗi.</translation> <translation id="510275257476243843">Còn 1 giờ</translation> <translation id="5123685120097942451">Thẻ ẩn danh</translation> @@ -650,6 +659,7 @@ <translation id="5833984609253377421">Chia sẻ liên kết</translation> <translation id="5836192821815272682">Đang tải Bản cập nhật Chrome…</translation> <translation id="5853623416121554550">đã tạm dừng</translation> +<translation id="5854512288214985237">Không có số liệu thống kê hoặc báo cáo sự cố nào được gửi cho Google</translation> <translation id="5854790677617711513">Đã tồn tại hơn 30 ngày</translation> <translation id="5855546874025048181">Tinh chỉnh: <ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome không thể bật bộ điều hợp Bluetooth</translation> @@ -722,6 +732,7 @@ <translation id="6303969859164067831">Đăng xuất và tắt đồng bộ hóa</translation> <translation id="6312687380483398334">Ứng dụng web (im lặng)</translation> <translation id="6316139424528454185">Phiên bản Android không được hỗ trợ</translation> +<translation id="6321526113093607004">Thêm vào Dấu trang</translation> <translation id="6324034347079777476">Đồng bộ hóa hệ thống Android đã bị tắt</translation> <translation id="6333140779060797560">Chia sẻ qua <ph name="APPLICATION" /></translation> <translation id="6337234675334993532">Mã hóa</translation> @@ -739,6 +750,7 @@ <translation id="6402652558933147609"><ph name="ERROR_CODE" /> trên <ph name="VIOLATED_URL" /></translation> <translation id="6404511346730675251">Chỉnh sửa dấu trang</translation> <translation id="6406506848690869874">Đồng bộ hóa</translation> +<translation id="6410404864818553978">Dữ liệu sử dụng cơ bản</translation> <translation id="6410883413783534063">Mở các thẻ để truy cập vào nhiều trang cùng một lúc</translation> <translation id="6412673304250309937">Kiểm tra đối chiếu các URL với danh sách trang web không an toàn được lưu trữ trong Chrome. Nếu một trang web cố ăn cắp mật khẩu của bạn hoặc nếu bạn tải một tệp gây hại xuống, Chrome cũng có thể gửi các URL, bao gồm cả các đoạn nội dung trên trang, đến tính năng Duyệt web an toàn.</translation> <translation id="641643625718530986">In…</translation> @@ -832,6 +844,7 @@ <translation id="7015203776128479407">Quá trình thiết lập đồng bộ hóa ban đầu chưa hoàn tất. Tính năng đồng bộ hóa đã tắt.</translation> <translation id="7022756207310403729">Mở trong trình duyệt</translation> <translation id="702463548815491781">Khuyên dùng khi dịch vụ TalkBack hoặc Tiếp cận bằng công tắc đang bật</translation> +<translation id="7027549951530753705">Đã khôi phục <ph name="ITEM_TITLE" /></translation> <translation id="7029809446516969842">Mật khẩu</translation> <translation id="703523980599857277">Thay đổi trang chủ</translation> <translation id="7054588988317389591">Tải nội dung mô tả hình ảnh?</translation> @@ -1013,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> và các trang web khác</translation> <translation id="8327155640814342956">Để có trải nghiệm duyệt web tuyệt vời nhất, hãy mở để cập nhật Chrome</translation> <translation id="8349013245300336738">Sắp xếp theo lượng dữ liệu đã dùng</translation> +<translation id="835847953965672673">Đã khôi phục <ph name="NUMBER_OF_DOWNLOADS" /> tệp đã tải xuống</translation> <translation id="8364299278605033898">Xem các trang web phổ biến</translation> <translation id="8368027906805972958">Thiết bị không xác định hoặc không được hỗ trợ (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381"><ph name="LANG" /> đã sẵn sàng.</translation> @@ -1121,6 +1135,7 @@ <translation id="9148126808321036104">Đăng nhập lại</translation> <translation id="9155898266292537608">Bạn cũng có thể tìm kiếm bằng cách nhấn nhanh vào một từ</translation> <translation id="9169507124922466868">Lịch sử di chuyển đang mở ở nửa dưới màn hình</translation> +<translation id="9191031968346938109">Thêm vào…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{Đã kiểm tra 1 phút trước}other{Đã kiểm tra # phút trước}}</translation> <translation id="9204836675896933765">Còn lại 1 tệp</translation> <translation id="9206873250291191720">A</translation> @@ -1133,6 +1148,7 @@ <translation id="938850635132480979">Lỗi: <ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">Nhập cụm mật khẩu</translation> <translation id="95817756606698420">Chrome có thể sử dụng <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> để tìm kiếm tại Trung Quốc. Bạn có thể thay đổi điều này trong <ph name="BEGIN_LINK" />Cài đặt<ph name="END_LINK" />.</translation> +<translation id="962979164594783469">Cài đặt ứng dụng này</translation> <translation id="968900484120156207">Các trang mà bạn truy cập sẽ xuất hiện tại đây</translation> <translation id="970715775301869095">Còn <ph name="MINUTES" /> phút</translation> <translation id="974555521953189084">Nhập cụm mật khẩu của bạn để bắt đầu đồng bộ hóa</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb index f20d7ed..873f65e4 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -16,6 +16,7 @@ <translation id="1105960400813249514">屏幕截图</translation> <translation id="1111673857033749125">您在其他设备上保存的书签将列在此处。</translation> <translation id="1113597929977215864">显示简化版视图</translation> +<translation id="1123070903960493543">您与 Chrome 的互动情况、您选择的设置、Chrome 崩溃详情</translation> <translation id="1126809382673880764">不会保护您免受危险网站、下载内容和扩展程序的侵害。在 Gmail 和 Google 搜索等其他 Google 服务中,若安全浏览保护可用,您仍将获得该保护。</translation> <translation id="1129510026454351943">错误详情:<ph name="ERROR_DESCRIPTION" /></translation> <translation id="1141800923049248244">{FILE_COUNT,plural, =1{有 1 项下载尚待处理。}other{有 # 项下载尚待处理。}}</translation> @@ -72,6 +73,7 @@ <translation id="1450753235335490080">无法分享<ph name="CONTENT_TYPE" /></translation> <translation id="1477626028522505441">未能成功下载 <ph name="FILE_NAME" />,因为服务器出现了问题。</translation> <translation id="1506061864768559482">搜索引擎</translation> +<translation id="151267239139452619">添加到“下载内容”页面</translation> <translation id="1513352483775369820">书签和网络历史记录</translation> <translation id="1513858653616922153">删除密码</translation> <translation id="1521774566618522728">今天曾有活动</translation> @@ -157,6 +159,7 @@ <translation id="2131665479022868825">节省了 <ph name="DATA" /></translation> <translation id="213279576345780926">已关闭“<ph name="TAB_TITLE" />”</translation> <translation id="2139186145475833000">添加到主屏幕</translation> +<translation id="214888715418183969">选择您要与 Chrome 共享哪些数据。您共享的指标将有助于我们改进 Chrome 的功能、性能和稳定性。</translation> <translation id="2154484045852737596">修改支付卡</translation> <translation id="2154710561487035718">复制网址</translation> <translation id="2156074688469523661">其余的网站(<ph name="NUMBER_OF_SITES" /> 个)</translation> @@ -166,6 +169,7 @@ <translation id="2175927920773552910">二维码</translation> <translation id="218608176142494674">共享</translation> <translation id="2195339740518523951">获取 Chrome 的最强安全保护</translation> +<translation id="2200113223741723867">管理使用情况数据共享</translation> <translation id="2227444325776770048">以“<ph name="USER_FULL_NAME" />”的身份继续</translation> <translation id="2234876718134438132">同步功能和 Google 服务</translation> <translation id="2239812875700136898">通过“‘探索’功能的选项”按钮控制您的报道</translation> @@ -370,12 +374,14 @@ <translation id="3771290962915251154">此设置已被停用,因为开启了“家长控制”功能</translation> <translation id="3771694256347217732">Google 服务条款</translation> <translation id="3773755127849930740">请<ph name="BEGIN_LINK" />开启蓝牙<ph name="END_LINK" />以允许配对</translation> +<translation id="3773856050682458546">基本数据,以及与您所访网站和所用应用有关的信息</translation> <translation id="3775705724665058594">发送到您的设备</translation> <translation id="3778956594442850293">已添加到主屏幕</translation> <translation id="3789841737615482174">安装</translation> <translation id="3810838688059735925">视频</translation> <translation id="3810973564298564668">管理</translation> <translation id="3819178904835489326">已删除 <ph name="NUMBER_OF_DOWNLOADS" /> 项下载内容</translation> +<translation id="3848957262889631524">使用 Google <ph name="APP_NAME" /> 作为安全密钥</translation> <translation id="3856096718352044181">请检查并确保这是一个有效的提供商,或者稍后重试</translation> <translation id="3861633093716975811">热门视频</translation> <translation id="3892148308691398805">复制文字</translation> @@ -403,7 +409,9 @@ <translation id="3988466920954086464">您可以在此面板查看即时搜索结果</translation> <translation id="4000212216660919741">离线版首页</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# 小时}other{# 小时}}</translation> +<translation id="4045764304651014138">使用情况数据</translation> <translation id="4056223980640387499">棕色调</translation> +<translation id="4057643060762047384">添加到:</translation> <translation id="4060598801229743805">选项位于屏幕顶部附近</translation> <translation id="4062305924942672200">法律信息</translation> <translation id="4084682180776658562">添加书签</translation> @@ -544,6 +552,7 @@ <translation id="5039804452771397117">允许</translation> <translation id="5040262127954254034">隐私权</translation> <translation id="5087580092889165836">添加新卡</translation> +<translation id="5091249083535528968">经过扩展的使用情况数据</translation> <translation id="509429900233858213">出现错误。</translation> <translation id="510275257476243843">还剩 1 小时</translation> <translation id="5123685120097942451">无痕式标签页</translation> @@ -650,6 +659,7 @@ <translation id="5833984609253377421">分享链接</translation> <translation id="5836192821815272682">正在下载 Chrome 更新…</translation> <translation id="5853623416121554550">已暂停</translation> +<translation id="5854512288214985237">系统不会向 Google 发送任何统计信息或崩溃报告</translation> <translation id="5854790677617711513">30 天之前的</translation> <translation id="5855546874025048181">修正为:<ph name="REFINE_TEXT" /></translation> <translation id="5858741533101922242">Chrome 无法开启蓝牙适配器</translation> @@ -722,6 +732,7 @@ <translation id="6303969859164067831">退出帐号并关闭同步功能</translation> <translation id="6312687380483398334">Web 应用(安静)</translation> <translation id="6316139424528454185">Android 版本不受支持</translation> +<translation id="6321526113093607004">添加到“书签”页面</translation> <translation id="6324034347079777476">Android 系统同步功能已停用</translation> <translation id="6333140779060797560">通过<ph name="APPLICATION" />分享</translation> <translation id="6337234675334993532">加密</translation> @@ -739,6 +750,7 @@ <translation id="6402652558933147609"><ph name="VIOLATED_URL" /> 上发生了 <ph name="ERROR_CODE" /> 错误</translation> <translation id="6404511346730675251">修改书签</translation> <translation id="6406506848690869874">同步</translation> +<translation id="6410404864818553978">基本的使用情况数据</translation> <translation id="6410883413783534063">打开多个标签页即可同时访问不同网页</translation> <translation id="6412673304250309937">将网址与存储在 Chrome 中的不安全网站列表进行比对。如果某个网站企图窃取您的密码,或者您下载了有害的文件,Chrome 可能还会将相应网址连同少量网页内容发送给“安全浏览”功能。</translation> <translation id="641643625718530986">打印…</translation> @@ -832,6 +844,7 @@ <translation id="7015203776128479407">初始同步设置未完成。同步功能处于关闭状态。</translation> <translation id="7022756207310403729">在浏览器中打开</translation> <translation id="702463548815491781">建议在开启 TalkBack 或“开关控制”时使用</translation> +<translation id="7027549951530753705">已恢复“<ph name="ITEM_TITLE" />”</translation> <translation id="7029809446516969842">密码</translation> <translation id="703523980599857277">更改主页</translation> <translation id="7054588988317389591">获取图片说明?</translation> @@ -1013,6 +1026,7 @@ <translation id="8316092324682955408"><ph name="DOMAIN_NAME" /> 及更多网站</translation> <translation id="8327155640814342956">要获得最好的浏览体验,请打开 Chrome 以进行更新</translation> <translation id="8349013245300336738">按已使用的数据流量排序</translation> +<translation id="835847953965672673">已恢复 <ph name="NUMBER_OF_DOWNLOADS" /> 项下载内容</translation> <translation id="8364299278605033898">查看热门网站</translation> <translation id="8368027906805972958">未知或不支持的设备 (<ph name="DEVICE_ID" />)</translation> <translation id="8372925856448695381">可以使用<ph name="LANG" />了。</translation> @@ -1121,6 +1135,7 @@ <translation id="9148126808321036104">重新登录</translation> <translation id="9155898266292537608">您也可以通过快速点按某个字词进行搜索</translation> <translation id="9169507124922466868">导航历史记录在下半屏中显示</translation> +<translation id="9191031968346938109">添加到…</translation> <translation id="9199368092038462496">{NUM_MINS,plural, =1{1 分钟前检查过}other{# 分钟前检查过}}</translation> <translation id="9204836675896933765">还剩 1 个文件</translation> <translation id="9206873250291191720">A</translation> @@ -1133,6 +1148,7 @@ <translation id="938850635132480979">错误:<ph name="ERROR_CODE" /></translation> <translation id="939598580284253335">请输入密码</translation> <translation id="95817756606698420">在中国,Chrome 可以使用<ph name="BEGIN_BOLD" />搜狗<ph name="END_BOLD" />作为搜索引擎。如果需要,您可以在<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />中进行更改。</translation> +<translation id="962979164594783469">安装此应用</translation> <translation id="968900484120156207">您访问的网页会显示在此处</translation> <translation id="970715775301869095">还剩 <ph name="MINUTES" /> 分钟</translation> <translation id="974555521953189084">输入密码以开始同步</translation>
diff --git a/chrome/browser/ui/page_info/chrome_page_info_delegate.cc b/chrome/browser/ui/page_info/chrome_page_info_delegate.cc index 8bb32c2..cf9a343 100644 --- a/chrome/browser/ui/page_info/chrome_page_info_delegate.cc +++ b/chrome/browser/ui/page_info/chrome_page_info_delegate.cc
@@ -16,8 +16,6 @@ #include "chrome/browser/safe_browsing/chrome_password_protection_service.h" #include "chrome/browser/ssl/security_state_tab_helper.h" #include "chrome/browser/ssl/stateful_ssl_host_state_delegate_factory.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" #include "chrome/browser/usb/usb_chooser_context.h" #include "chrome/browser/usb/usb_chooser_context_factory.h" @@ -28,6 +26,8 @@ #include "components/permissions/permission_manager.h" #include "components/permissions/permission_result.h" #include "components/security_interstitials/content/stateful_ssl_host_state_delegate.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" #include "content/public/browser/web_contents.h" #include "content/public/common/content_features.h"
diff --git a/chrome/browser/ui/page_info/page_info_unittest.cc b/chrome/browser/ui/page_info/page_info_unittest.cc index edad32d..2e5a9f4 100644 --- a/chrome/browser/ui/page_info/page_info_unittest.cc +++ b/chrome/browser/ui/page_info/page_info_unittest.cc
@@ -22,8 +22,6 @@ #include "chrome/browser/infobars/mock_infobar_service.h" #include "chrome/browser/ssl/stateful_ssl_host_state_delegate_factory.h" #include "chrome/browser/ssl/tls_deprecation_test_utils.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" #include "chrome/browser/ui/page_info/chrome_page_info_delegate.h" #include "chrome/browser/ui/page_info/chrome_page_info_ui_delegate.h" @@ -41,6 +39,8 @@ #include "components/security_interstitials/content/stateful_ssl_host_state_delegate.h" #include "components/security_state/core/features.h" #include "components/strings/grit/components_strings.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" #include "content/public/browser/ssl_host_state_delegate.h" #include "content/public/browser/ssl_status.h" #include "content/public/common/content_switches.h"
diff --git a/chrome/browser/ui/views/hats/hats_browsertest.cc b/chrome/browser/ui/views/hats/hats_browsertest.cc index 97e8ece..b630ad9 100644 --- a/chrome/browser/ui/views/hats/hats_browsertest.cc +++ b/chrome/browser/ui/views/hats/hats_browsertest.cc
@@ -199,7 +199,7 @@ MOCK_METHOD0(ShowWidget, void()); MOCK_METHOD0(CloseWidget, void()); - MOCK_METHOD1(UpdateWidgetSize, void(gfx::Size)); + MOCK_METHOD0(UpdateWidgetSize, void()); void WaitForClose() { base::RunLoop run_loop; @@ -209,6 +209,14 @@ }); run_loop.Run(); } + + void WaitForUpdateWidgetSize() { + base::RunLoop run_loop; + EXPECT_CALL(*this, UpdateWidgetSize).WillOnce(testing::Invoke([&run_loop] { + run_loop.Quit(); + })); + run_loop.Run(); + } }; class HatsNextWebDialogBrowserTest : public InProcessBrowserTest { @@ -381,24 +389,39 @@ embedded_test_server()->GetURL("/hats/hats_next_mock.html"), base::TimeDelta::FromSeconds(100)); - // Check that the dialog attempts to resize with the sizes defined in - // hats_next_mock.html. - base::RunLoop run_loop; - EXPECT_CALL(*dialog, UpdateWidgetSize(gfx::Size(123, 456))) - .WillOnce(testing::Invoke([&run_loop] { run_loop.Quit(); })); - run_loop.Run(); + // Check that the dialog reports a preferred size the same as the size defined + // in hats_next_mock.html. + constexpr auto kTargetSize = gfx::Size(70, 300); + + // Depending on renderer warm-up, an initial empty size may additionally be + // reported before hats_next_mock.html has had a chance to resize. + dialog->WaitForUpdateWidgetSize(); + auto size = dialog->CalculatePreferredSize(); + EXPECT_TRUE(size == kTargetSize || size == dialog->kMinSize); + if (size != kTargetSize) { + dialog->WaitForUpdateWidgetSize(); + EXPECT_EQ(kTargetSize, dialog->CalculatePreferredSize()); + } } -IN_PROC_BROWSER_TEST_F(HatsNextWebDialogBrowserTest, InvalidSize) { +IN_PROC_BROWSER_TEST_F(HatsNextWebDialogBrowserTest, MaximumSize) { ASSERT_TRUE(embedded_test_server()->Start()); - // Check that providing a size which is too large results in the dialog being - // closed. EXPECT_CALL(*hats_service(), HatsNextDialogClosed); auto* dialog = new MockHatsNextWebDialog( - browser(), "invalid_size_for_testing", + browser(), "resize_to_large_for_testing", embedded_test_server()->GetURL("/hats/hats_next_mock.html"), base::TimeDelta::FromSeconds(100)); - dialog->WaitForClose(); + // Check that the maximum size of the dialog is bounded appropriately by the + // dialogs maximum size. Depending on renderer warm-up, an initial empty size + // may additionally be reported before hats_next_mock.html has had a chance + // to resize. + dialog->WaitForUpdateWidgetSize(); + auto size = dialog->CalculatePreferredSize(); + EXPECT_TRUE(size == HatsNextWebDialog::kMaxSize || size == dialog->kMinSize); + if (size != HatsNextWebDialog::kMaxSize) { + dialog->WaitForUpdateWidgetSize(); + EXPECT_EQ(HatsNextWebDialog::kMaxSize, dialog->CalculatePreferredSize()); + } }
diff --git a/chrome/browser/ui/views/hats/hats_next_web_dialog.cc b/chrome/browser/ui/views/hats/hats_next_web_dialog.cc index 7f7c48f..b2c75657 100644 --- a/chrome/browser/ui/views/hats/hats_next_web_dialog.cc +++ b/chrome/browser/ui/views/hats/hats_next_web_dialog.cc
@@ -30,17 +30,35 @@ #include "ui/views/bubble/bubble_dialog_delegate_view.h" #include "ui/views/bubble/bubble_frame_view.h" #include "ui/views/controls/webview/web_dialog_view.h" +#include "ui/views/controls/webview/webview.h" #include "ui/views/layout/fill_layout.h" #include "ui/web_dialogs/web_dialog_delegate.h" -// A delegate used to intercept the creation of new WebContents by the HaTS -// Next dialog. -class HatsNextWebDialog::WebContentsDelegate - : public content::WebContentsDelegate { - public: - explicit WebContentsDelegate(Browser* browser, HatsNextWebDialog* dialog) - : browser_(browser), dialog_(dialog) {} +constexpr gfx::Size HatsNextWebDialog::kMinSize; +constexpr gfx::Size HatsNextWebDialog::kMaxSize; +// WebView which contains the WebContents displaying the HaTS Next survey. +class HatsNextWebDialog::HatsWebView : public views::WebView { + public: + HatsWebView(content::BrowserContext* browser_context, + Browser* browser, + HatsNextWebDialog* dialog) + : views::WebView(browser_context), dialog_(dialog), browser_(browser) {} + + ~HatsWebView() override = default; + + // views::WebView: + void PreferredSizeChanged() override { + WebView::PreferredSizeChanged(); + dialog_->UpdateWidgetSize(); + } + + // content::WebContentsDelegate: + bool HandleContextMenu(content::RenderFrameHost* render_frame_host, + const content::ContextMenuParams& params) override { + // Ignores context menu. + return true; + } bool IsWebContentsCreationOverridden( content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, @@ -49,7 +67,6 @@ const GURL& target_url) override { return true; } - content::WebContents* CreateCustomWebContents( content::RenderFrameHost* opener, content::SiteInstance* source_site_instance, @@ -69,34 +86,7 @@ return nullptr; } - void SetContentsBounds(content::WebContents* source, - const gfx::Rect& bounds) override { - // Check that the provided bounds do not exceed the dummy window size - // provided to the HaTS library by the wrapper website. These are defined - // in the website source at google3/chrome/hats/website/www/index.html. - if (bounds.width() > 800 || bounds.height() > 600) { - LOG(ERROR) << "Desired dimensions provided by contents exceed maximum" - << "allowable."; - dialog_->CloseWidget(); - return; - } - dialog_->UpdateWidgetSize(bounds.size()); - } - - private: - Browser* browser_; - HatsNextWebDialog* dialog_; -}; - -// A thin wrapper that forwards the reference part of the URL associated with -// navigation events to the enclosing web dialog. -class HatsNextWebDialog::WebContentsObserver - : public content::WebContentsObserver { - public: - WebContentsObserver(content::WebContents* contents, HatsNextWebDialog* dialog) - : content::WebContentsObserver(contents), dialog_(dialog) {} - - // content::WebContentsObserver overrides. + // content::WebContentsObserver: void DidStartNavigation( content::NavigationHandle* navigation_handle) override { if (navigation_handle->IsSameDocument() && @@ -107,6 +97,7 @@ private: HatsNextWebDialog* dialog_; + Browser* browser_; }; HatsNextWebDialog::HatsNextWebDialog(Browser* browser, @@ -114,63 +105,14 @@ : HatsNextWebDialog( browser, trigger_id, - GURL("https://storage.googleapis.com/chrome_hats/index.html"), + GURL("https://storage.googleapis.com/chrome_hats_staging/index.html"), base::TimeDelta::FromSeconds(10)) {} -ui::ModalType HatsNextWebDialog::GetDialogModalType() const { - return ui::MODAL_TYPE_NONE; -} - -base::string16 HatsNextWebDialog::GetDialogTitle() const { - return base::string16(); -} - -GURL HatsNextWebDialog::GetDialogContentURL() const { - GURL param_url = - net::AppendQueryParameter(hats_survey_url_, "trigger_id", trigger_id_); - if (base::FeatureList::IsEnabled( - features::kHappinessTrackingSurveysForDesktopDemo)) { - param_url = net::AppendQueryParameter(param_url, "enable_testing", "true"); - } - return param_url; -} - -void HatsNextWebDialog::GetWebUIMessageHandlers( - std::vector<content::WebUIMessageHandler*>* handlers) const {} - -void HatsNextWebDialog::GetDialogSize(gfx::Size* size) const {} - -std::string HatsNextWebDialog::GetDialogArgs() const { - return std::string(); -} - -void HatsNextWebDialog::OnDialogClosed(const std::string& json_retval) {} - -void HatsNextWebDialog::OnCloseContents(content::WebContents* source, - bool* out_close_dialog) { - *out_close_dialog = true; -} - -bool HatsNextWebDialog::ShouldShowCloseButton() const { - return false; -} - -bool HatsNextWebDialog::ShouldShowDialogTitle() const { - return false; -} - -bool HatsNextWebDialog::HandleContextMenu( - content::RenderFrameHost* render_frame_host, - const content::ContextMenuParams& params) { - return true; -} -ui::WebDialogDelegate::FrameKind HatsNextWebDialog::GetWebDialogFrameKind() - const { - return ui::WebDialogDelegate::FrameKind::kDialog; -} - gfx::Size HatsNextWebDialog::CalculatePreferredSize() const { - return size_; + gfx::Size preferred_size = views::View::CalculatePreferredSize(); + preferred_size.SetToMax(kMinSize); + preferred_size.SetToMin(kMaxSize); + return preferred_size; } void HatsNextWebDialog::OnProfileWillBeDestroyed(Profile* profile) { @@ -194,24 +136,19 @@ timeout_(timeout) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); otr_profile_->AddObserver(this); - set_can_resize(false); set_close_on_deactivate(false); SetButtons(ui::DIALOG_BUTTON_NONE); SetLayoutManager(std::make_unique<views::FillLayout>()); - web_view_ = AddChildView(std::make_unique<views::WebDialogView>( - otr_profile_, this, std::make_unique<ChromeWebContentsHandler>())); + web_view_ = + AddChildView(std::make_unique<HatsWebView>(otr_profile_, browser, this)); + web_view_->LoadInitialURL(GetParameterizedHatsURL()); + web_view_->EnableSizingFromWebContents(kMinSize, kMaxSize); + set_margins(gfx::Insets()); widget_ = views::BubbleDialogDelegateView::CreateBubble(this); - web_contents_observer_ = - std::make_unique<WebContentsObserver>(web_view_->web_contents(), this); - - web_contents_delegate_ = - std::make_unique<WebContentsDelegate>(browser_, this); - web_view_->web_contents()->SetDelegate(web_contents_delegate_.get()); - loading_timer_.Start(FROM_HERE, timeout_, base::BindOnce(&HatsNextWebDialog::LoadTimedOut, weak_factory_.GetWeakPtr())); @@ -232,6 +169,16 @@ web_view_->web_contents()->SetDelegate(nullptr); } +GURL HatsNextWebDialog::GetParameterizedHatsURL() const { + GURL param_url = + net::AppendQueryParameter(hats_survey_url_, "trigger_id", trigger_id_); + if (base::FeatureList::IsEnabled( + features::kHappinessTrackingSurveysForDesktopDemo)) { + param_url = net::AppendQueryParameter(param_url, "enable_testing", "true"); + } + return param_url; +} + void HatsNextWebDialog::LoadTimedOut() { base::UmaHistogramEnumeration( kHatsShouldShowSurveyReasonHistogram, @@ -280,8 +227,7 @@ widget_->Close(); } -void HatsNextWebDialog::UpdateWidgetSize(gfx::Size size) { - size_ = size; +void HatsNextWebDialog::UpdateWidgetSize() { SizeToContents(); }
diff --git a/chrome/browser/ui/views/hats/hats_next_web_dialog.h b/chrome/browser/ui/views/hats/hats_next_web_dialog.h index 7d19ed1e6..efeb014 100644 --- a/chrome/browser/ui/views/hats/hats_next_web_dialog.h +++ b/chrome/browser/ui/views/hats/hats_next_web_dialog.h
@@ -25,8 +25,7 @@ // survey to users. The webpage has additional logic to provide information to // this dialog via URL fragments, such as whether a survey is ready to be shown // to the user. -class HatsNextWebDialog : public ui::WebDialogDelegate, - public views::BubbleDialogDelegateView, +class HatsNextWebDialog : public views::BubbleDialogDelegateView, public content::WebContentsDelegate, public ProfileObserver { public: @@ -35,23 +34,6 @@ HatsNextWebDialog(const HatsNextWebDialog&) = delete; HatsNextWebDialog& operator=(const HatsNextWebDialog&) = delete; - // ui::WebDialogDelegate: - ui::ModalType GetDialogModalType() const override; - base::string16 GetDialogTitle() const override; - GURL GetDialogContentURL() const override; - void GetWebUIMessageHandlers( - std::vector<content::WebUIMessageHandler*>* handlers) const override; - void GetDialogSize(gfx::Size* size) const override; - std::string GetDialogArgs() const override; - void OnDialogClosed(const std::string& json_retval) override; - void OnCloseContents(content::WebContents* source, - bool* out_close_dialog) override; - bool ShouldShowCloseButton() const override; - bool ShouldShowDialogTitle() const override; - bool HandleContextMenu(content::RenderFrameHost* render_frame_host, - const content::ContextMenuParams& params) override; - ui::WebDialogDelegate::FrameKind GetWebDialogFrameKind() const override; - // BubbleDialogDelegateView: gfx::Size CalculatePreferredSize() const override; @@ -61,14 +43,19 @@ protected: friend class MockHatsNextWebDialog; FRIEND_TEST_ALL_PREFIXES(HatsNextWebDialogBrowserTest, SurveyLoaded); + FRIEND_TEST_ALL_PREFIXES(HatsNextWebDialogBrowserTest, DialogResize); + FRIEND_TEST_ALL_PREFIXES(HatsNextWebDialogBrowserTest, MaximumSize); HatsNextWebDialog(Browser* browser, const std::string& trigger_id, const GURL& hats_survey_url_, const base::TimeDelta& timeout); - class WebContentsDelegate; - class WebContentsObserver; + class HatsWebView; + + // Returns the URL for the HaTS wrapper website, with the appropriate query + // parameters to request the triggered survey. + GURL GetParameterizedHatsURL() const; // Called by |loading_timer_| after |timeout_| time has passed without getting // an appropriate response from the HaTS service after creating the widget. @@ -90,9 +77,9 @@ // closed. Virtual to allow mocking in tests. virtual void CloseWidget(); - // Updates dialog size, provided via state update by the webpage. Virtual to - // allow mocking in tests. - virtual void UpdateWidgetSize(gfx::Size size); + // Updates dialog size to desired contents size. Virtual to allow mocking in + // tests. + virtual void UpdateWidgetSize(); // Returns whether the dialog is still waiting for the survey to load. bool IsWaitingForSurveyForTesting(); @@ -112,16 +99,17 @@ // Whether the web contents has communicated a loaded state. bool received_survey_loaded_ = false; - // The size of the dialog. Desired dimensions are provided by the site loaded - // in the web contents. Initialised to arbitrary non-zero value as creation - // of 0 sized windows is disallowed on OSX. - gfx::Size size_ = gfx::Size(10, 10); + // The maximum size of the dialog should never exceed the dummy window size + // provided to the HaTS library by the wrapper website. This is defined + // in the website source at google3/chrome/hats/website/www/index.html. The + // minimum size is set at an arbitrary non-zero size as creation of zero sized + // windows is disallowed on OSX. + static constexpr gfx::Size kMinSize = gfx::Size(10, 10); + static constexpr gfx::Size kMaxSize = gfx::Size(800, 600); - views::WebDialogView* web_view_ = nullptr; + views::WebView* web_view_ = nullptr; views::Widget* widget_ = nullptr; - std::unique_ptr<WebContentsDelegate> web_contents_delegate_; - std::unique_ptr<WebContentsObserver> web_contents_observer_; GURL hats_survey_url_; base::TimeDelta timeout_;
diff --git a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc index 87b92469..388d300 100644 --- a/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc +++ b/chrome/browser/ui/views/page_info/safety_tip_page_info_bubble_view_browsertest.cc
@@ -626,6 +626,12 @@ // If the user clicks 'leave site', the warning should re-appear when the user // re-visits the page. +// Flaky on Mac: https://crbug.com/1139955 +#if defined(OS_MAC) +#define MAYBE_LeaveSiteStillWarnsAfter DISABLED_LeaveSiteStillWarnsAfter +#else +#define MAYBE_LeaveSiteStillWarnsAfter LeaveSiteStillWarnsAfter +#endif IN_PROC_BROWSER_TEST_P(SafetyTipPageInfoBubbleViewBrowserTest, LeaveSiteStillWarnsAfter) { auto kNavigatedUrl = GetURL("site1.com"); @@ -848,6 +854,12 @@ } // Tests that the SafetyTipShown histogram triggers correctly. +// Flaky on Mac: https://crbug.com/1139955 +#if defined(OS_MAC) +#define MAYBE_SafetyTipShownHistogram DISABLED_SafetyTipShownHistogram +#else +#define MAYBE_SafetyTipShownHistogram SafetyTipShownHistogram +#endif IN_PROC_BROWSER_TEST_P(SafetyTipPageInfoBubbleViewBrowserTest, SafetyTipShownHistogram) { const char kHistogramName[] = "Security.SafetyTips.SafetyTipShown"; @@ -1013,6 +1025,12 @@ // Tests that the histograms recording how long the Safety Tip is open are // recorded properly. +// Flaky on Mac: https://crbug.com/1139955 +#if defined(OS_MAC) +#define MAYBE_TimeOpenHistogram DISABLED_TimeOpenHistogram +#else +#define MAYBE_TimeOpenHistogram TimeOpenHistogram +#endif IN_PROC_BROWSER_TEST_P(SafetyTipPageInfoBubbleViewBrowserTest, TimeOpenHistogram) { if (!IsSuspiciousSiteWarningEnabled()) { @@ -1257,6 +1275,14 @@ // Tests that UKM data is only recorded after the safety tip warning is // dismissed or accepted, for the blocklist heuristic. +// Flaky on Mac: https://crbug.com/1139955 +#if defined(OS_MAC) +#define MAYBE_WarningDismissalCausesUkmRecordingForBlocklist \ + DISABLED_WarningDismissalCausesUkmRecordingForBlocklist +#else +#define MAYBE_WarningDismissalCausesUkmRecordingForBlocklist \ + WarningDismissalCausesUkmRecordingForBlocklist +#endif IN_PROC_BROWSER_TEST_P(SafetyTipPageInfoBubbleViewBrowserTest, WarningDismissalCausesUkmRecordingForBlocklist) { // Only test when any UI is actually enabled.
diff --git a/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc b/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc index 95de1b7..65a4509 100644 --- a/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc +++ b/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc
@@ -74,8 +74,7 @@ const SkBitmap* icon_bitmap, Profile* profile, security_state::SecurityLevel security_level, - SkColor background_color, - views::ButtonListener* site_settings_listener) { + SkColor background_color) { auto title_origin_container = std::make_unique<views::View>(); SkColor foreground = color_utils::GetColorWithMaxContrast(background_color); views::GridLayout* title_origin_layout = @@ -282,7 +281,7 @@ state()->selected_app()->icon_bitmap(), profile_, web_contents() ? SslValidityChecker::GetSecurityLevel(web_contents()) : security_state::NONE, - background->get_color(), this); + background->get_color()); } std::unique_ptr<views::Background>
diff --git a/chrome/browser/ui/views/payments/payment_method_view_controller.cc b/chrome/browser/ui/views/payments/payment_method_view_controller.cc index 6df7a24..b53fda3 100644 --- a/chrome/browser/ui/views/payments/payment_method_view_controller.cc +++ b/chrome/browser/ui/views/payments/payment_method_view_controller.cc
@@ -82,8 +82,7 @@ BackNavigationType::kPaymentSheet, static_cast<int>(PaymentMethodViewControllerTags::MAX_TAG), /*on_edited=*/ - base::BindOnce(&PaymentRequestState::SetSelectedApp, - state()->AsWeakPtr(), app_), + base::BindOnce(&PaymentRequestState::SetSelectedApp, state(), app_), /*on_added=*/ base::OnceCallback<void(const autofill::CreditCard&)>(), static_cast<AutofillPaymentApp*>(app_)->credit_card()); @@ -223,11 +222,10 @@ dialog()->ShowCreditCardEditor( BackNavigationType::kPaymentSheet, static_cast<int>(PaymentMethodViewControllerTags::MAX_TAG), - /*on_edited=*/base::OnceClosure(), - /*on_added=*/ - base::BindOnce(&PaymentRequestState::AddAutofillPaymentApp, - state()->AsWeakPtr(), /*selected=*/true), - /*credit_card=*/nullptr); + base::OnceClosure(), + base::BindOnce(&PaymentRequestState::AddAutofillPaymentApp, state(), + true), + nullptr); } else { PaymentRequestSheetController::ButtonPressed(sender, event); }
diff --git a/chrome/browser/ui/views/payments/payment_request_dialog_view.cc b/chrome/browser/ui/views/payments/payment_request_dialog_view.cc index 61f5504b..22eea8ce 100644 --- a/chrome/browser/ui/views/payments/payment_request_dialog_view.cc +++ b/chrome/browser/ui/views/payments/payment_request_dialog_view.cc
@@ -198,7 +198,7 @@ BackNavigationType::kOneStep, /*on_edited=*/ base::BindOnce(&PaymentRequestState::SetSelectedShippingProfile, - request_->state()->AsWeakPtr(), profile), + request_->state(), profile), /*on_added=*/ base::OnceCallback<void(const autofill::AutofillProfile&)>(), profile); } @@ -210,7 +210,7 @@ BackNavigationType::kOneStep, /*on_edited=*/ base::BindOnce(&PaymentRequestState::SetSelectedContactProfile, - request_->state()->AsWeakPtr(), profile), + request_->state(), profile), /*on_added=*/ base::OnceCallback<void(const autofill::AutofillProfile&)>(), profile); }
diff --git a/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc b/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc index e1e0497ef..1dbf5c126 100644 --- a/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc +++ b/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc
@@ -478,16 +478,6 @@ return true; } -void PaymentRequestSheetController::PerformPrimaryButtonAction( - bool* is_enabled) { - // Set |is_enabled| to "true" to prevent other views from handling the event. - *is_enabled = true; - - if (dialog()->IsInteractive() && primary_button_ && - primary_button_->GetEnabled()) - ButtonPressed(primary_button_, DummyEvent()); -} - void PaymentRequestSheetController::AddPrimaryButton(views::View* container) { if (ShouldShowPrimaryButton()) { primary_button_ = container->AddChildView( @@ -510,4 +500,14 @@ } } +void PaymentRequestSheetController::PerformPrimaryButtonAction( + bool* is_enabled) { + // Set |is_enabled| to "true" to prevent other views from handling the event. + *is_enabled = true; + + if (dialog()->IsInteractive() && primary_button_ && + primary_button_->GetEnabled()) + ButtonPressed(primary_button_, DummyEvent()); +} + } // namespace payments
diff --git a/chrome/browser/ui/views/payments/payment_request_sheet_controller.h b/chrome/browser/ui/views/payments/payment_request_sheet_controller.h index d8742149..6dd89eaa 100644 --- a/chrome/browser/ui/views/payments/payment_request_sheet_controller.h +++ b/chrome/browser/ui/views/payments/payment_request_sheet_controller.h
@@ -162,6 +162,10 @@ bool is_active() const { return is_active_; } private: + // Add the primary/secondary buttons to |container|. + void AddPrimaryButton(views::View* container); + void AddSecondaryButton(views::View* container); + // Called when the Enter accelerator is pressed. Perform the action associated // with the primary button and sets |is_enabled| to true if it's enabled, // otherwise sets it to false. The |is_enabled| is an out-param to enable @@ -169,10 +173,6 @@ // values. void PerformPrimaryButtonAction(bool* is_enabled); - // Add the primary/secondary buttons to |container|. - void AddPrimaryButton(views::View* container); - void AddSecondaryButton(views::View* container); - base::WeakPtr<PaymentRequestSpec> const spec_; base::WeakPtr<PaymentRequestState> const state_; base::WeakPtr<PaymentRequestDialogView> const dialog_;
diff --git a/chrome/browser/ui/views/payments/payment_request_views_util.cc b/chrome/browser/ui/views/payments/payment_request_views_util.cc index 9857a06..470e8e6 100644 --- a/chrome/browser/ui/views/payments/payment_request_views_util.cc +++ b/chrome/browser/ui/views/payments/payment_request_views_util.cc
@@ -129,7 +129,7 @@ base::string16 name = profile.GetInfo(autofill::NAME_FULL, locale); base::string16 address = - GetShippingAddressLabelFormAutofillProfile(profile, locale); + GetShippingAddressLabelFromAutofillProfile(profile, locale); base::string16 phone = autofill::i18n::GetFormattedPhoneNumberForDisplay(profile, locale);
diff --git a/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc b/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc index a211ad4..4164eb5 100644 --- a/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc +++ b/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc
@@ -356,7 +356,7 @@ button->SetFocusBehavior(views::View::FocusBehavior::ALWAYS); button->SetEnabled(button_enabled); return CreatePaymentSheetRow( - listener_, section_name_, accessible_content_, std::move(content_view), + nullptr, section_name_, accessible_content_, std::move(content_view), nullptr, std::move(button), /*clickable=*/false, /*extra_trailing_inset=*/false, views::GridLayout::CENTER); } @@ -491,7 +491,6 @@ if (!dialog()->IsInteractive() || !spec()) return; - bool should_reset_retry_error_message = true; switch (sender->tag()) { case static_cast<int>( PaymentSheetViewControllerTags::SHOW_ORDER_SUMMARY_BUTTON): @@ -552,12 +551,10 @@ default: PaymentRequestSheetController::ButtonPressed(sender, event); - should_reset_retry_error_message = false; - break; + return; } - if (should_reset_retry_error_message && - !spec()->retry_error_message().empty()) { + if (!spec()->retry_error_message().empty()) { spec()->reset_retry_error_message(); UpdateContentView(); } @@ -691,43 +688,39 @@ PaymentSheetRowBuilder builder( weak_ptr_factory_.GetWeakPtr(), GetShippingAddressSectionString(spec()->shipping_type())); - builder.Tag(PaymentSheetViewControllerTags::SHOW_SHIPPING_BUTTON); + builder + .Id(state()->selected_shipping_profile() + ? DialogViewID::PAYMENT_SHEET_SHIPPING_ADDRESS_SECTION + : DialogViewID::PAYMENT_SHEET_SHIPPING_ADDRESS_SECTION_BUTTON) + .Tag(state()->shipping_profiles().empty() + ? PaymentSheetViewControllerTags::ADD_SHIPPING_BUTTON + : PaymentSheetViewControllerTags::SHOW_SHIPPING_BUTTON); if (state()->selected_shipping_profile()) { - builder.Id(DialogViewID::PAYMENT_SHEET_SHIPPING_ADDRESS_SECTION); base::string16 accessible_content; std::unique_ptr<views::View> content = CreateShippingSectionContent(&accessible_content); return builder.AccessibleContent(accessible_content) .CreateWithChevron(std::move(content), nullptr); - } else { - builder.Id(DialogViewID::PAYMENT_SHEET_SHIPPING_ADDRESS_SECTION_BUTTON); - if (state()->shipping_profiles().empty()) { - // If the button is "Add", clicking it should navigate to the editor - // instead of the list. - builder.Tag(PaymentSheetViewControllerTags::ADD_SHIPPING_BUTTON); - return builder.CreateWithButton(base::string16(), - l10n_util::GetStringUTF16(IDS_ADD), - /*button_enabled=*/true); - } else if (state()->shipping_profiles().size() == 1) { - base::string16 truncated_content = - GetShippingAddressLabelFormAutofillProfile( - *state()->shipping_profiles()[0], - state()->GetApplicationLocale()); - return builder.CreateWithButton(truncated_content, - l10n_util::GetStringUTF16(IDS_CHOOSE), - /*button_enabled=*/true); - } else { - base::string16 format = l10n_util::GetPluralStringFUTF16( - IDS_PAYMENT_REQUEST_SHIPPING_ADDRESSES_PREVIEW, - state()->shipping_profiles().size() - 1); - base::string16 label = GetShippingAddressLabelFormAutofillProfile( - *state()->shipping_profiles()[0], state()->GetApplicationLocale()); - return builder.CreateWithButton(label, format, - state()->shipping_profiles().size() - 1, - l10n_util::GetStringUTF16(IDS_CHOOSE), - /*button_enabled=*/true); - } } + if (state()->shipping_profiles().empty()) { + return builder.CreateWithButton(base::string16(), + l10n_util::GetStringUTF16(IDS_ADD), + /*button_enabled=*/true); + } + base::string16 label = GetShippingAddressLabelFromAutofillProfile( + *state()->shipping_profiles()[0], state()->GetApplicationLocale()); + if (state()->shipping_profiles().size() == 1) { + return builder.CreateWithButton(label, + l10n_util::GetStringUTF16(IDS_CHOOSE), + /*button_enabled=*/true); + } + base::string16 format = l10n_util::GetPluralStringFUTF16( + IDS_PAYMENT_REQUEST_SHIPPING_ADDRESSES_PREVIEW, + state()->shipping_profiles().size() - 1); + return builder.CreateWithButton(label, format, + state()->shipping_profiles().size() - 1, + l10n_util::GetStringUTF16(IDS_CHOOSE), + /*button_enabled=*/true); } // Creates the Payment Method row, which contains a "Payment" label, the user's @@ -747,10 +740,15 @@ weak_ptr_factory_.GetWeakPtr(), l10n_util::GetStringUTF16( IDS_PAYMENT_REQUEST_PAYMENT_METHOD_SECTION_NAME)); - builder.Tag(PaymentSheetViewControllerTags::SHOW_PAYMENT_METHOD_BUTTON); - + builder + .Id(selected_app + ? DialogViewID::PAYMENT_SHEET_PAYMENT_METHOD_SECTION + : DialogViewID::PAYMENT_SHEET_PAYMENT_METHOD_SECTION_BUTTON) + .Tag(state()->available_apps().empty() + ? PaymentSheetViewControllerTags::ADD_PAYMENT_METHOD_BUTTON + : PaymentSheetViewControllerTags::SHOW_PAYMENT_METHOD_BUTTON); if (selected_app) { - std::unique_ptr<views::View> content_view = std::make_unique<views::View>(); + auto content_view = std::make_unique<views::View>(); views::GridLayout* layout = content_view->SetLayoutManager(std::make_unique<views::GridLayout>()); @@ -759,47 +757,38 @@ 1.0, views::GridLayout::ColumnSize::kUsePreferred, 0, 0); layout->StartRow(views::GridLayout::kFixedSize, 0); - std::unique_ptr<views::Label> selected_app_label = - std::make_unique<views::Label>(selected_app->GetLabel()); - selected_app_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); - layout->AddView(std::move(selected_app_label)); + layout->AddView(std::make_unique<views::Label>(selected_app->GetLabel())) + ->SetHorizontalAlignment(gfx::ALIGN_LEFT); layout->StartRow(views::GridLayout::kFixedSize, 0); - std::unique_ptr<views::Label> selected_app_sublabel = - std::make_unique<views::Label>(selected_app->GetSublabel()); - selected_app_sublabel->SetHorizontalAlignment(gfx::ALIGN_LEFT); - layout->AddView(std::move(selected_app_sublabel)); + layout->AddView(std::make_unique<views::Label>(selected_app->GetSublabel())) + ->SetHorizontalAlignment(gfx::ALIGN_LEFT); std::unique_ptr<views::ImageView> icon_view = CreateAppIconView( selected_app->icon_resource_id(), selected_app->icon_bitmap(), selected_app->GetLabel()); return builder.AccessibleContent(selected_app->GetLabel()) - .Id(DialogViewID::PAYMENT_SHEET_PAYMENT_METHOD_SECTION) .CreateWithChevron(std::move(content_view), std::move(icon_view)); - } else { - builder.Id(DialogViewID::PAYMENT_SHEET_PAYMENT_METHOD_SECTION_BUTTON); - if (state()->available_apps().empty()) { - // If the button is "Add", navigate to the editor directly. - builder.Tag(PaymentSheetViewControllerTags::ADD_PAYMENT_METHOD_BUTTON); - return builder.CreateWithButton(base::string16(), - l10n_util::GetStringUTF16(IDS_ADD), - /*button_enabled=*/true); - } else if (state()->available_apps().size() == 1) { - return builder.CreateWithButton(state()->available_apps()[0]->GetLabel(), - l10n_util::GetStringUTF16(IDS_CHOOSE), - /*button_enabled=*/true); - } else { - base::string16 format = l10n_util::GetPluralStringFUTF16( - IDS_PAYMENT_REQUEST_PAYMENT_METHODS_PREVIEW, - state()->available_apps().size() - 1); - return builder.CreateWithButton(state()->available_apps()[0]->GetLabel(), - format, - state()->available_apps().size() - 1, - l10n_util::GetStringUTF16(IDS_CHOOSE), - /*button_enabled=*/true); - } } + if (state()->available_apps().empty()) { + return builder.CreateWithButton(base::string16(), + l10n_util::GetStringUTF16(IDS_ADD), + /*button_enabled=*/true); + } + const base::string16 label = state()->available_apps()[0]->GetLabel(); + if (state()->available_apps().size() == 1) { + return builder.CreateWithButton(label, + l10n_util::GetStringUTF16(IDS_CHOOSE), + /*button_enabled=*/true); + } + base::string16 format = l10n_util::GetPluralStringFUTF16( + IDS_PAYMENT_REQUEST_PAYMENT_METHODS_PREVIEW, + state()->available_apps().size() - 1); + return builder.CreateWithButton(label, format, + state()->available_apps().size() - 1, + l10n_util::GetStringUTF16(IDS_CHOOSE), + /*button_enabled=*/true); } std::unique_ptr<views::View> @@ -810,13 +799,8 @@ return profile && spec() ? payments::GetContactInfoLabel( AddressStyleType::SUMMARY, state()->GetApplicationLocale(), - *profile, - /*request_payer_name=*/spec() && - spec()->request_payer_name(), - /*request_payer_email=*/spec() && - spec()->request_payer_email(), - /*request_payer_phone=*/spec() && - spec()->request_payer_phone(), + *profile, spec()->request_payer_name(), + spec()->request_payer_email(), spec()->request_payer_phone(), *(state()->profile_comparator()), accessible_content) : std::make_unique<views::Label>(base::string16()); } @@ -833,55 +817,47 @@ PaymentSheetRowBuilder builder( weak_ptr_factory_.GetWeakPtr(), l10n_util::GetStringUTF16(IDS_PAYMENT_REQUEST_CONTACT_INFO_SECTION_NAME)); - builder.Tag(PaymentSheetViewControllerTags::SHOW_CONTACT_INFO_BUTTON); - - static constexpr autofill::ServerFieldType kLabelFields[] = { - autofill::NAME_FULL, autofill::PHONE_HOME_WHOLE_NUMBER, - autofill::EMAIL_ADDRESS}; - + builder + .Id(state()->selected_contact_profile() + ? DialogViewID::PAYMENT_SHEET_CONTACT_INFO_SECTION + : DialogViewID::PAYMENT_SHEET_CONTACT_INFO_SECTION_BUTTON) + .Tag(state()->contact_profiles().empty() + ? PaymentSheetViewControllerTags::ADD_CONTACT_INFO_BUTTON + : PaymentSheetViewControllerTags::SHOW_CONTACT_INFO_BUTTON); if (state()->selected_contact_profile()) { base::string16 accessible_content; std::unique_ptr<views::View> content = CreateContactInfoSectionContent(&accessible_content); - return builder.Id(DialogViewID::PAYMENT_SHEET_CONTACT_INFO_SECTION) - .AccessibleContent(accessible_content) + return builder.AccessibleContent(accessible_content) .CreateWithChevron(std::move(content), nullptr); - } else { - builder.Id(DialogViewID::PAYMENT_SHEET_CONTACT_INFO_SECTION_BUTTON); - if (state()->contact_profiles().empty()) { - // If the button is "Add", navigate directly to the editor. - builder.Tag(PaymentSheetViewControllerTags::ADD_CONTACT_INFO_BUTTON); - return builder.CreateWithButton(base::string16(), - l10n_util::GetStringUTF16(IDS_ADD), - /*button_enabled=*/true); - } else if (state()->contact_profiles().size() == 1) { - base::string16 truncated_content = - state()->contact_profiles()[0]->ConstructInferredLabel( - kLabelFields, base::size(kLabelFields), base::size(kLabelFields), - state()->GetApplicationLocale()); - return builder.CreateWithButton(truncated_content, - l10n_util::GetStringUTF16(IDS_CHOOSE), - /*button_enabled=*/true); - } else { - base::string16 preview = - state()->contact_profiles()[0]->ConstructInferredLabel( - kLabelFields, base::size(kLabelFields), base::size(kLabelFields), - state()->GetApplicationLocale()); - base::string16 format = l10n_util::GetPluralStringFUTF16( - IDS_PAYMENT_REQUEST_CONTACTS_PREVIEW, - state()->contact_profiles().size() - 1); - return builder.CreateWithButton( - preview, format, state()->contact_profiles().size() - 1, - l10n_util::GetStringUTF16(IDS_CHOOSE), /*button_enabled=*/true); - } } + if (state()->contact_profiles().empty()) { + return builder.CreateWithButton(base::string16(), + l10n_util::GetStringUTF16(IDS_ADD), + /*button_enabled=*/true); + } + static constexpr autofill::ServerFieldType kLabelFields[] = { + autofill::NAME_FULL, autofill::PHONE_HOME_WHOLE_NUMBER, + autofill::EMAIL_ADDRESS}; + const base::string16 preview = + state()->contact_profiles()[0]->ConstructInferredLabel( + kLabelFields, base::size(kLabelFields), base::size(kLabelFields), + state()->GetApplicationLocale()); + if (state()->contact_profiles().size() == 1) { + return builder.CreateWithButton(preview, + l10n_util::GetStringUTF16(IDS_CHOOSE), + /*button_enabled=*/true); + } + base::string16 format = + l10n_util::GetPluralStringFUTF16(IDS_PAYMENT_REQUEST_CONTACTS_PREVIEW, + state()->contact_profiles().size() - 1); + return builder.CreateWithButton( + preview, format, state()->contact_profiles().size() - 1, + l10n_util::GetStringUTF16(IDS_CHOOSE), /*button_enabled=*/true); } std::unique_ptr<PaymentRequestRowView> PaymentSheetViewController::CreateShippingOptionRow() { - if (!spec()) - return nullptr; - // The Shipping Options row has many different ways of being displayed // depending on the state of the dialog and Payment Request. // 1. There is a selected shipping address. The website updated the shipping @@ -892,8 +868,13 @@ // 1.3 There are options and none is selected: display a row with a // choose button and the string "|preview of first option| and N more" // 2. There is no selected shipping address: do not display the row. - mojom::PaymentShippingOption* selected_option = - spec()->selected_shipping_option(); + if (!spec() || spec()->GetShippingOptions().empty() || + !state()->selected_shipping_profile()) { + // 1.1 No shipping options, do not display the row. (or) + // 2. There is no selected address: do not show the shipping option section. + return nullptr; + } + // The shipping option section displays the currently selected option if there // is one. It's not possible to select an option without selecting an address // first. @@ -902,41 +883,30 @@ GetShippingOptionSectionString(spec()->shipping_type())); builder.Tag(PaymentSheetViewControllerTags::SHOW_SHIPPING_OPTION_BUTTON); - if (state()->selected_shipping_profile()) { - if (spec()->GetShippingOptions().empty()) { - // 1.1 No shipping options, do not display the row. - return nullptr; - } - - if (selected_option) { - // 1.2 Show the selected shipping option. - base::string16 accessible_content; - std::unique_ptr<views::View> option_row_content = - CreateShippingOptionLabel( - selected_option, - spec()->GetFormattedCurrencyAmount(selected_option->amount), - /*emphasize_label=*/false, &accessible_content); - return builder.Id(DialogViewID::PAYMENT_SHEET_SHIPPING_OPTION_SECTION) - .AccessibleContent(accessible_content) - .CreateWithChevron(std::move(option_row_content), nullptr); - } else { - // 1.3 There are options, none are selected: show the enabled Choose - // button. - const auto& shipping_options = spec()->GetShippingOptions(); - return builder - .Id(DialogViewID::PAYMENT_SHEET_SHIPPING_OPTION_SECTION_BUTTON) - .CreateWithButton(base::UTF8ToUTF16(shipping_options[0]->label), - l10n_util::GetPluralStringFUTF16( - IDS_PAYMENT_REQUEST_SHIPPING_OPTIONS_PREVIEW, - shipping_options.size() - 1), - shipping_options.size() - 1, - l10n_util::GetStringUTF16(IDS_CHOOSE), - /*button_enabled=*/true); - } - } else { - // 2. There is no selected address: do not show the shipping option section. - return nullptr; + mojom::PaymentShippingOption* selected_option = + spec()->selected_shipping_option(); + if (selected_option) { + // 1.2 Show the selected shipping option. + base::string16 accessible_content; + std::unique_ptr<views::View> option_row_content = CreateShippingOptionLabel( + selected_option, + spec()->GetFormattedCurrencyAmount(selected_option->amount), + /*emphasize_label=*/false, &accessible_content); + return builder.Id(DialogViewID::PAYMENT_SHEET_SHIPPING_OPTION_SECTION) + .AccessibleContent(accessible_content) + .CreateWithChevron(std::move(option_row_content), nullptr); } + // 1.3 There are options, none are selected: show the enabled Choose + // button. + const auto& shipping_options = spec()->GetShippingOptions(); + return builder.Id(DialogViewID::PAYMENT_SHEET_SHIPPING_OPTION_SECTION_BUTTON) + .CreateWithButton(base::UTF8ToUTF16(shipping_options[0]->label), + l10n_util::GetPluralStringFUTF16( + IDS_PAYMENT_REQUEST_SHIPPING_OPTIONS_PREVIEW, + shipping_options.size() - 1), + shipping_options.size() - 1, + l10n_util::GetStringUTF16(IDS_CHOOSE), + /*button_enabled=*/true); } std::unique_ptr<views::View> PaymentSheetViewController::CreateDataSourceRow() {
diff --git a/chrome/browser/ui/views/payments/profile_list_view_controller.cc b/chrome/browser/ui/views/payments/profile_list_view_controller.cc index 8f1cc2b..80d47a4 100644 --- a/chrome/browser/ui/views/payments/profile_list_view_controller.cc +++ b/chrome/browser/ui/views/payments/profile_list_view_controller.cc
@@ -155,10 +155,10 @@ BackNavigationType::kPaymentSheet, /*on_edited=*/ base::BindOnce(&PaymentRequestState::SetSelectedShippingProfile, - state()->AsWeakPtr(), profile), + state(), profile), /*on_added=*/ base::BindOnce(&PaymentRequestState::AddAutofillShippingProfile, - state()->AsWeakPtr(), /*selected=*/true), + state(), /*selected=*/true), profile); } @@ -278,11 +278,11 @@ dialog()->ShowContactInfoEditor( BackNavigationType::kPaymentSheet, /*on_edited=*/ - base::BindOnce(&PaymentRequestState::SetSelectedContactProfile, - state()->AsWeakPtr(), profile), + base::BindOnce(&PaymentRequestState::SetSelectedContactProfile, state(), + profile), /*on_added=*/ - base::BindOnce(&PaymentRequestState::AddAutofillContactProfile, - state()->AsWeakPtr(), /*selected=*/true), + base::BindOnce(&PaymentRequestState::AddAutofillContactProfile, state(), + /*selected=*/true), profile); }
diff --git a/chrome/browser/ui/views/sharesheet/sharesheet_bubble_view.cc b/chrome/browser/ui/views/sharesheet/sharesheet_bubble_view.cc index 2758d4f7..caf89b4 100644 --- a/chrome/browser/ui/views/sharesheet/sharesheet_bubble_view.cc +++ b/chrome/browser/ui/views/sharesheet/sharesheet_bubble_view.cc
@@ -243,6 +243,8 @@ } ++target_counter; + // Make a copy because value is needed after target is std::moved below. + base::string16 display_name = target.display_name; base::string16 secondary_display_name = target.secondary_display_name.value_or(base::string16()); @@ -250,7 +252,7 @@ base::BindRepeating(&SharesheetBubbleView::TargetButtonPressed, base::Unretained(this), base::Passed(std::move(target))), - target.display_name, secondary_display_name, &target.icon); + display_name, secondary_display_name, &target.icon); layout_for_target->AddView(std::move(target_view)); }
diff --git a/chrome/browser/ui/webui/chromeos/cryptohome_web_ui_handler.cc b/chrome/browser/ui/webui/chromeos/cryptohome_web_ui_handler.cc index 6a9d0c38..46ac48bf 100644 --- a/chrome/browser/ui/webui/chromeos/cryptohome_web_ui_handler.cc +++ b/chrome/browser/ui/webui/chromeos/cryptohome_web_ui_handler.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/values.h" #include "chromeos/dbus/cryptohome/cryptohome_client.h" +#include "chromeos/dbus/cryptohome/rpc.pb.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -39,6 +40,11 @@ cryptohome_client->Pkcs11IsTpmTokenReady( GetCryptohomeBoolCallback("pkcs11-is-tpm-token-ready")); + cryptohome_client->GetTpmStatus( + cryptohome::GetTpmStatusRequest(), + base::BindOnce(&CryptohomeWebUIHandler::OnCryptohomeTpmStatus, + weak_ptr_factory_.GetWeakPtr())); + content::GetIOThreadTaskRunner({})->PostTaskAndReplyWithResult( FROM_HERE, base::BindOnce(&crypto::IsTPMTokenReady, base::Closure()), base::BindOnce(&CryptohomeWebUIHandler::DidGetNSSUtilInfoOnUIThread, @@ -59,6 +65,21 @@ weak_ptr_factory_.GetWeakPtr(), destination_id); } +void CryptohomeWebUIHandler::OnCryptohomeTpmStatus( + base::Optional<cryptohome::BaseReply> reply) { + if (!reply.has_value() || reply->has_error() || + !reply->HasExtension(cryptohome::GetTpmStatusReply::reply)) { + LOG(ERROR) << "TPM status request failed, error: " + << (reply.has_value() && reply->has_error() ? reply->error() + : 0); + return; + } + auto reply_proto = reply->GetExtension(cryptohome::GetTpmStatusReply::reply); + + SetCryptohomeProperty("has-reset-lock-permissions", + base::Value(reply_proto.has_reset_lock_permissions())); +} + void CryptohomeWebUIHandler::OnCryptohomeBoolProperty( const std::string& destination_id, base::Optional<bool> result) {
diff --git a/chrome/browser/ui/webui/chromeos/cryptohome_web_ui_handler.h b/chrome/browser/ui/webui/chromeos/cryptohome_web_ui_handler.h index 8900666..855eb2c 100644 --- a/chrome/browser/ui/webui/chromeos/cryptohome_web_ui_handler.h +++ b/chrome/browser/ui/webui/chromeos/cryptohome_web_ui_handler.h
@@ -10,6 +10,7 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/optional.h" +#include "chromeos/dbus/cryptohome/cryptohome_client.h" #include "chromeos/dbus/dbus_method_call_status.h" #include "content/public/browser/web_ui_message_handler.h" @@ -45,6 +46,9 @@ void OnCryptohomeBoolProperty(const std::string& destination_id, base::Optional<bool> result); + // This method is called when Cryptohome D-Bus TpmStatus call complete. + void OnCryptohomeTpmStatus(base::Optional<cryptohome::BaseReply> reply); + // Sets textcontent of the element whose id is |destination_id| to |value|. void SetCryptohomeProperty(const std::string& destination_id, const base::Value& value);
diff --git a/chrome/browser/ui/webui/chromeos/edu_account_login_handler_chromeos.cc b/chrome/browser/ui/webui/chromeos/edu_account_login_handler_chromeos.cc index e58207c..b4af30e 100644 --- a/chrome/browser/ui/webui/chromeos/edu_account_login_handler_chromeos.cc +++ b/chrome/browser/ui/webui/chromeos/edu_account_login_handler_chromeos.cc
@@ -261,7 +261,8 @@ &EduAccountLoginHandler::CreateReAuthProofTokenForParent, base::Unretained(this), std::move(obfuscated_gaia_id), std::move(password)), - signin::PrimaryAccountAccessTokenFetcher::Mode::kImmediate); + signin::PrimaryAccountAccessTokenFetcher::Mode::kImmediate, + signin::ConsentLevel::kNotRequired); } void EduAccountLoginHandler::FetchReAuthProofTokenForParent(
diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc index d8c3c13..8d5c0fb73 100644 --- a/chrome/browser/ui/webui/settings/site_settings_helper.cc +++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc
@@ -23,8 +23,6 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/serial/serial_chooser_context.h" #include "chrome/browser/serial/serial_chooser_context_factory.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" #include "chrome/browser/usb/usb_chooser_context.h" #include "chrome/browser/usb/usb_chooser_context_factory.h" @@ -40,6 +38,8 @@ #include "components/permissions/permission_util.h" #include "components/permissions/permissions_client.h" #include "components/prefs/pref_service.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" #include "components/subresource_filter/core/browser/subresource_filter_features.h" #include "components/url_formatter/url_formatter.h" #include "content/public/common/content_features.h"
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index aba94be9..48cf78f 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-master-1603087080-212b8c940037ae1d78d2bd42956b635be6add59e.profdata +chrome-linux-master-1603107412-6ef156ac52bac5f4e53402d26e81a7a7c88be584.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index ef557a28..99910a5 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1603087080-138c0bc7a94d51e9caaa7300e866d8f7233b285e.profdata +chrome-mac-master-1603107412-fb64dfead80726fe49a6a8dd27a12a049b69e6ae.profdata
diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni index 683f931..ada80f26 100644 --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni
@@ -89,6 +89,7 @@ ]) output = "${invoker.output_dir}/resources.pak" sources = [ + "$root_gen_dir/base/tracing/protos/tracing_proto_resources.pak", "$root_gen_dir/chrome/browser_resources.pak", "$root_gen_dir/chrome/chrome_unscaled_resources.pak", "$root_gen_dir/chrome/common_resources.pak", @@ -104,6 +105,7 @@ "$root_gen_dir/ui/resources/webui_resources.pak", ] deps = [ + "//base/tracing/protos:chrome_track_event_resources", "//chrome/app/theme:chrome_unscaled_resources", "//chrome/browser:resources", "//chrome/common:resources",
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 9994968f..213b1ac 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc
@@ -3092,4 +3092,17 @@ const char kLacrosAllowed[] = "lacros_allowed"; #endif +#if defined(OS_CHROMEOS) +// String enum pref determining what should happen when a user who authenticates +// via a security token is removing this token. "IGNORE" - nothing happens +// (default). "LOGOUT" - The user is logged out. "LOCK" - The session is locked. +const char kSecurityTokenSessionBehavior[] = "security_token_session_behavior"; +// When the above pref is set to "LOGOUT" or "LOCK", this integer pref +// determines the duration of a notification that appears when the smart card is +// removed. The action will only happen after the notification timed out. If +// this pref is set to 0, the action happens immediately. +const char kSecurityTokenSessionNotificationSeconds[] = + "security_token_session_notification_seconds"; +#endif // defined(OS_CHROMEOS) + } // namespace prefs
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index 2c99177..4f7bdafc 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h
@@ -1081,6 +1081,11 @@ extern const char kLacrosAllowed[]; #endif +#if defined(OS_CHROMEOS) +extern const char kSecurityTokenSessionBehavior[]; +extern const char kSecurityTokenSessionNotificationSeconds[]; +#endif + } // namespace prefs #endif // CHROME_COMMON_PREF_NAMES_H_
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb index 69d91c8..4225ea43 100644 --- a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb +++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
@@ -5,6 +5,7 @@ <translation id="1383286653814676580">Google લૉગ ઇન વિગત પ્રદાતા સાઇન ઇન પેજ ચલાવવા માટે ઉપયોગમાં લેવામાં આવે છે.</translation> <translation id="2048923169632968961">તમારા ઑફિસના એકાઉન્ટના પાસવર્ડને તમારી Windows પ્રોફાઇલ સાથે સિંક કરતી વખતે સમસ્યા આવી હતી. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation> <translation id="2515346402363002066">તમારું સત્ર સમાપ્ત થઈ ગયું છે. તમારા ઑફિસના એકાઉન્ટ વડે સાઇન ઇન કરો.</translation> +<translation id="2549902055700841962">તમારા ઑફિસનાં એકાઉન્ટમાં સાઇન ઇન કરી શકતા નથી. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation> <translation id="2566603360883977759">આ ઇમેઇલ વડે સાઇન ઇન કરવાની મંજૂરી નથી. તમે ઑફિસમાં કે સ્કૂલમાં ઉપયોગ કરો છો તે એકાઉન્ટ વડે પ્રયાસ કરો. જો તમે હજી પણ સાઇન ઇન ન કરી શકતાં હો, તો તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation> <translation id="2844349213149998955">આ ડિવાઇસ પર વ્યક્તિગત એકાઉન્ટ વડે સાઇન ઇન કરવાની મંજૂરી નથી. કૃપા કરીને ઑફિસના એકાઉન્ટ વડે લૉગ ઇન કરો.</translation> <translation id="3217145568844727893">જો તમે તમારા Windowsનો હાલનો પાસવર્ડ દાખલ કર્યા વિના ચાલુ રાખશો, તો તમે કદાચ આ ડિવાઇસ પરનો ડેટા કાયમ માટે ગુમાવશો.</translation>
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 7e2dcda..7d5261dc 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -3683,10 +3683,8 @@ "../browser/status_icons/status_tray_unittest.cc", "../browser/storage/durable_storage_permission_context_unittest.cc", "../browser/storage_access_api/storage_access_grant_permission_context_unittest.cc", - "../browser/subresource_filter/ads_intervention_manager_unittest.cc", "../browser/subresource_filter/subresource_filter_abusive_unittest.cc", "../browser/subresource_filter/subresource_filter_configuration_unittest.cc", - "../browser/subresource_filter/subresource_filter_content_settings_manager_unittest.cc", "../browser/subresource_filter/subresource_filter_history_observer_unittest.cc", "../browser/subresource_filter/subresource_filter_test_harness.cc", "../browser/subresource_filter/subresource_filter_test_harness.h",
diff --git a/chrome/test/data/extensions/api_test/tab_capture/active_tab_chrome_pages.js b/chrome/test/data/extensions/api_test/tab_capture/active_tab_chrome_pages.js index d2a8aef1..660778aa3 100644 --- a/chrome/test/data/extensions/api_test/tab_capture/active_tab_chrome_pages.js +++ b/chrome/test/data/extensions/api_test/tab_capture/active_tab_chrome_pages.js
@@ -2,9 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -var afterGrantPermission = function() { +var afterTabOpened = function() { chrome.tabCapture.capture({audio: true, video: true}, function(stream) { - chrome.test.assertNoLastError(); chrome.test.assertTrue(!!stream); stream.getVideoTracks()[0].stop(); stream.getAudioTracks()[0].stop(); @@ -12,9 +11,5 @@ }); }; -var afterOpenTab = function() { - chrome.test.sendMessage('ready2', afterGrantPermission); -}; - chrome.test.notifyPass(); -chrome.test.sendMessage('ready1', afterOpenTab); +chrome.test.sendMessage('ready1', afterTabOpened);
diff --git a/chrome/test/data/hats/hats_next_mock.html b/chrome/test/data/hats/hats_next_mock.html index 3c37d89..86d1cd8 100644 --- a/chrome/test/data/hats/hats_next_mock.html +++ b/chrome/test/data/hats/hats_next_mock.html
@@ -1,6 +1,14 @@ <!doctype html> <html> <head> + <style> + html, body { + width: 0%; + height: 0%; + margin: 0; + padding: 0; + } + </style> <script> const params = new URLSearchParams(window.location.search); @@ -25,14 +33,25 @@ } if (params.get('trigger_id') == "resize_for_testing") { - window.resizeTo(123, 456); + // Size wrapping div element to a known size, with one dimension smaller + // than the by-default renderer-enforced minimum. + window.onload = function() { + const wrapper = document.querySelector('#surveyWrapper'); + wrapper.setAttribute('style', 'width:70px; height:300px'); + } } - if (params.get('trigger_id') == "invalid_size_for_testing") { - window.resizeTo(1000, 1000); + if (params.get('trigger_id') == "resize_to_large_for_testing") { + // Size wrapping div element larger than the maximum allowed by the HaTS + // Next dialog. + window.onload = function() { + const wrapper = document.querySelector('#surveyWrapper'); + wrapper.setAttribute('style', 'width:1000px; height:1000px'); + }; } </script> </head> <body> + <div id="surveyWrapper"></div> </body> </html>
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json index 3cbb9fc..e4007bec 100644 --- a/chrome/test/data/policy/policy_test_cases.json +++ b/chrome/test/data/policy/policy_test_cases.json
@@ -4401,6 +4401,52 @@ ] }, + "SecurityTokenSessionBehavior": { + "os": ["chromeos"], + "policy_pref_mapping_test": [ + { + "policies": { + "SecurityTokenSessionBehavior": "LOGOUT" + }, + "prefs": { + "security_token_session_behavior": { "value": "LOGOUT" } + } + }, + { + "policies": {}, + "prefs": { + "security_token_session_behavior": { + "value": "IGNORE", + "expect_default": true + } + } + } + ] + }, + + "SecurityTokenSessionNotificationSeconds": { + "os": ["chromeos"], + "policy_pref_mapping_test": [ + { + "policies": { + "SecurityTokenSessionNotificationSeconds": 10 + }, + "prefs": { + "security_token_session_notification_seconds": { "value": 10 } + } + }, + { + "policies": {}, + "prefs": { + "security_token_session_notification_seconds": { + "value": 0, + "expect_default": true + } + } + } + ] + }, + "TermsOfServiceURL": { "os": ["chromeos"], "policy_pref_mapping_test": [
diff --git a/chrome/test/data/webui/usb_internals_browsertest.js b/chrome/test/data/webui/usb_internals_browsertest.js index c7c93158..fb0e9a1f 100644 --- a/chrome/test/data/webui/usb_internals_browsertest.js +++ b/chrome/test/data/webui/usb_internals_browsertest.js
@@ -9,16 +9,10 @@ GEN('#include "content/public/test/browser_test.h"'); /** - * Test fixture for testing async methods of cr.js. * @constructor * @extends testing.Test */ -function UsbInternalsTest() { - this.setupResolver = new PromiseResolver(); - this.deviceManagerGetDevicesResolver = new PromiseResolver(); - this.deviceTabInitializedResolver = new PromiseResolver(); - this.deviceDescriptorRenderResolver = new PromiseResolver(); -} +function UsbInternalsTest() {} UsbInternalsTest.prototype = { __proto__: testing.Test.prototype, @@ -34,538 +28,12 @@ '//third_party/mocha/mocha.js', '//chrome/test/data/webui/mocha_adapter.js', '//ui/webui/resources/js/promise_resolver.js', - '//ui/webui/resources/js/cr.js', - '//ui/webui/resources/js/util.js', '//chrome/test/data/webui/test_browser_proxy.js', + '//chrome/test/data/webui/usb_internals_test.js', ], - - preLoad: function() { - /** @implements {mojom.UsbInternalsPageHandlerRemote} */ - class FakePageHandlerRemote extends TestBrowserProxy { - constructor(handle) { - super([ - 'bindUsbDeviceManagerInterface', - 'bindTestInterface', - ]); - - this.receiver_ = new mojom.UsbInternalsPageHandlerReceiver(this); - this.receiver_.$.bindHandle(handle); - } - - async bindUsbDeviceManagerInterface(deviceManagerPendingReceiver) { - this.methodCalled( - 'bindUsbDeviceManagerInterface', deviceManagerPendingReceiver); - this.deviceManager = - new FakeDeviceManagerRemote(deviceManagerPendingReceiver); - } - - async bindTestInterface(testDeviceManagerPendingReceiver) { - this.methodCalled( - 'bindTestInterface', testDeviceManagerPendingReceiver); - } - } - - /** @implements {device.mojom.UsbDeviceManagerRemote} */ - class FakeDeviceManagerRemote extends TestBrowserProxy { - constructor(pendingReceiver) { - super([ - 'enumerateDevicesAndSetClient', - 'getDevice', - 'getSecurityKeyDevice', - 'getDevices', - 'checkAccess', - 'openFileDescriptor', - 'setClient', - ]); - - this.receiver_ = new device.mojom.UsbDeviceManagerReceiver(this); - this.receiver_.$.bindHandle(pendingReceiver.handle); - - this.devices = []; - this.deviceRemoteMap = new Map(); - this.addFakeDevice( - fakeDeviceInfo(0), createDeviceWithValidDeviceDescriptor()); - this.addFakeDevice( - fakeDeviceInfo(1), createDeviceWithShortDeviceDescriptor()); - } - - /** - * Adds a fake device to this device manager. - * @param {!Object} device - * @param {!FakeUsbDeviceRemote} deviceRemote - */ - addFakeDevice(device, deviceRemote) { - this.devices.push(device); - this.deviceRemoteMap.set(device.guid, deviceRemote); - } - - async enumerateDevicesAndSetClient() {} - - async getDevice(guid, devicePendingReceiver, deviceClient) { - this.methodCalled('getDevice'); - const deviceRemote = this.deviceRemoteMap.get(guid); - deviceRemote.router.$.bindHandle(devicePendingReceiver.handle); - } - - async getSecurityKeyDevice(guid, devicePendingReceiver, deviceClient) {} - - async getDevices() { - this.methodCalled('getDevices'); - return {results: this.devices}; - } - - async checkAccess() {} - - async openFileDescriptor() {} - - async setClient() {} - } - - /** @implements {device.mojom.UsbDeviceRemote} */ - class FakeUsbDeviceRemote extends TestBrowserProxy { - constructor() { - super([ - 'open', - 'close', - 'controlTransferIn', - ]); - this.responses = new Map(); - - // NOTE: We use the generated CallbackRouter here because - // device.mojom.UsbDevice defines lots of methods we don't care to mock - // here. UsbDeviceCallbackRouter callback silently discards messages - // that have no listeners. - this.router = new device.mojom.UsbDeviceCallbackRouter; - this.router.open.addListener(async () => { - return {error: device.mojom.UsbOpenDeviceError.OK}; - }); - this.router.controlTransferIn.addListener( - (params, length, timeout) => - this.controlTransferIn(params, length, timeout)); - this.router.close.addListener(async () => {}); - } - - async controlTransferIn(params, length, timeout) { - const response = - this.responses.get(usbControlTransferParamsToString(params)); - if (!response) { - return { - status: device.mojom.UsbTransferStatus.TRANSFER_ERROR, - data: [], - }; - } - response.data = response.data.slice(0, length); - return response; - } - - /** - * Set a response for a given request. - * @param {!device.mojom.UsbControlTransferParams} params - * @param {!Object} response - */ - setResponse(params, response) { - this.responses.set(usbControlTransferParamsToString(params), response); - } - - /** - * Set the device descriptor the device will respond to queries with. - * @param {!Object} response - */ - setDeviceDescriptor(response) { - const params = {}; - params.type = device.mojom.UsbControlTransferType.STANDARD; - params.recipient = device.mojom.UsbControlTransferRecipient.DEVICE; - params.request = 6; - params.index = 0; - params.value = (1 << 8); - this.setResponse(params, response); - } - } - - /** - * Creates a fake device using the given number. - * @param {number} num - * @return {!Object} - */ - function fakeDeviceInfo(num) { - return { - guid: `abcdefgh-ijkl-mnop-qrst-uvwxyz12345${num}`, - usbVersionMajor: 2, - usbVersionMinor: 0, - usbVersionSubminor: num, - classCode: 0, - subclassCode: 0, - protocolCode: 0, - busNumber: num, - portNumber: num, - vendorId: 0x1050 + num, - productId: 0x17EF + num, - deviceVersionMajor: 3, - deviceVersionMinor: 2, - deviceVersionSubminor: 1, - manufacturerName: stringToMojoString16('test'), - productName: undefined, - serialNumber: undefined, - webusbLandingPage: {url: 'http://google.com'}, - activeConfiguration: 1, - configurations: [], - }; - } - - /** - * Creates a device with correct descriptors. - */ - function createDeviceWithValidDeviceDescriptor() { - const deviceRemote = new FakeUsbDeviceRemote(); - deviceRemote.setDeviceDescriptor({ - status: device.mojom.UsbTransferStatus.COMPLETED, - data: [ - 0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x50, 0x10, 0xEF, - 0x17, 0x21, 0x03, 0x01, 0x02, 0x00, 0x01 - ], - }); - return deviceRemote; - } - - /** - * Creates a device with too short descriptors. - */ - function createDeviceWithShortDeviceDescriptor() { - const deviceRemote = new FakeUsbDeviceRemote(); - deviceRemote.setDeviceDescriptor({ - status: device.mojom.UsbTransferStatus.SHORT_PACKET, - data: [0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x50], - }); - return deviceRemote; - } - - /** - * Converts an ECMAScript string to an instance of mojo_base.mojom.String16. - * @param {string} string - * @return {!object} - */ - function stringToMojoString16(string) { - return {data: Array.from(string, c => c.charCodeAt(0))}; - } - - /** - * Stringify a UsbControlTransferParams type object to be the key of - * response map. - * @param {!device.mojom.UsbControlTransferParams} params - * @return {string} - */ - function usbControlTransferParamsToString(params) { - return `${params.type}-${params.recipient}-${params.request}-${ - params.value}-${params.index}`; - } - - window.deviceListCompleteFn = () => { - this.deviceManagerGetDevicesResolver.resolve(); - }; - - window.deviceTabInitializedFn = () => { - this.deviceTabInitializedResolver.resolve(); - }; - - window.deviceDescriptorCompleteFn = () => { - this.deviceDescriptorRenderResolver.resolve(); - }; - - window.setupFn = () => { - this.pageHandlerInterceptor = new MojoInterfaceInterceptor( - mojom.UsbInternalsPageHandler.$interfaceName); - this.pageHandlerInterceptor.oninterfacerequest = (e) => { - this.pageHandler = new FakePageHandlerRemote(e.handle); - }; - this.pageHandlerInterceptor.start(); - - this.setupResolver.resolve(); - return Promise.resolve(); - }; - }, }; -TEST_F('UsbInternalsTest', 'WebUICorrectValueRenderTest', function() { - let pageHandler; - - // Before tests are run, make sure setup completes. - let setupPromise = this.setupResolver.promise.then(() => { - pageHandler = this.pageHandler; - }); - - let deviceManagerGetDevicesPromise = - this.deviceManagerGetDevicesResolver.promise; - let deviceTabInitializedPromise = this.deviceTabInitializedResolver.promise; - let deviceDescriptorRenderPromise = - this.deviceDescriptorRenderResolver.promise; - - suite('UsbInternalsUITest', function() { - const EXPECT_DEVICES_NUM = 2; - - suiteSetup(function() { - return setupPromise.then(function() { - return Promise.all([ - pageHandler.whenCalled('bindUsbDeviceManagerInterface'), - pageHandler.deviceManager.whenCalled('getDevices'), - ]); - }); - }); - - teardown(function() { - pageHandler.reset(); - }); - - test('PageLoaded', async function() { - // Totally 2 tables: 'TestDevice' table and 'Device' table. - const tables = document.querySelectorAll('table'); - expectEquals(2, tables.length); - - // Only 2 tabs after loading page. - const tabs = document.querySelectorAll('tab'); - expectEquals(2, tabs.length); - const tabPanels = document.querySelectorAll('tabpanel'); - expectEquals(2, tabPanels.length); - - // The second is the devices table, which has 8 columns. - const devicesTable = document.querySelectorAll('table')[1]; - const columns = devicesTable.querySelector('thead') - .querySelector('tr') - .querySelectorAll('th'); - expectEquals(8, columns.length); - - await deviceManagerGetDevicesPromise; - const devices = devicesTable.querySelectorAll('tbody tr'); - expectEquals(EXPECT_DEVICES_NUM, devices.length); - }); - - test('DeviceTabAdded', function() { - const devicesTable = document.querySelector('#device-list'); - // Click the inspect button to open information about the first device. - // The device info is opened as a third tab panel. - devicesTable.querySelectorAll('button')[0].click(); - assertEquals(3, document.querySelectorAll('tab').length); - assertEquals(3, document.querySelectorAll('tabpanel').length); - expectTrue(document.querySelectorAll('tabpanel')[2].selected); - - // Check that clicking the inspect button for another device will open a - // new tabpanel. - devicesTable.querySelectorAll('button')[1].click(); - assertEquals(4, document.querySelectorAll('tab').length); - assertEquals(4, document.querySelectorAll('tabpanel').length); - expectTrue(document.querySelectorAll('tabpanel')[3].selected); - expectFalse(document.querySelectorAll('tabpanel')[2].selected); - - // Check that clicking the inspect button for the same device a second - // time will open the same tabpanel. - devicesTable.querySelectorAll('button')[0].click(); - assertEquals(4, document.querySelectorAll('tab').length); - assertEquals(4, document.querySelectorAll('tabpanel').length); - expectTrue(document.querySelectorAll('tabpanel')[2].selected); - expectFalse(document.querySelectorAll('tabpanel')[3].selected); - }); - - test('RenderDeviceInfoTree', function() { - // Test the tab opened by clicking inspect button contains a tree view - // showing WebUSB information. Check the tree displays correct data. - // The tab panel of the first device is opened in previous test as the - // third tab panel. - const deviceTab = document.querySelectorAll('tabpanel')[2]; - const tree = deviceTab.querySelector('tree'); - const treeItems = tree.querySelectorAll('.tree-item'); - assertEquals(11, treeItems.length); - expectEquals('USB Version: 2.0.0', treeItems[0].textContent); - expectEquals('Class Code: 0', treeItems[1].textContent); - expectEquals('Subclass Code: 0', treeItems[2].textContent); - expectEquals('Protocol Code: 0', treeItems[3].textContent); - expectEquals('Port Number: 0', treeItems[4].textContent); - expectEquals('Vendor Id: 0x1050', treeItems[5].textContent); - expectEquals('Product Id: 0x17EF', treeItems[6].textContent); - expectEquals('Device Version: 3.2.1', treeItems[7].textContent); - expectEquals('Manufacturer Name: test', treeItems[8].textContent); - expectEquals( - 'WebUSB Landing Page: http://google.com', treeItems[9].textContent); - expectEquals('Active Configuration: 1', treeItems[10].textContent); - }); - - test('RenderDeviceDescriptor', async function() { - // Test the tab opened by clicking inspect button contains a panel that - // can manually retrieve device descriptor from device. Check the response - // can be rendered correctly. - await deviceTabInitializedPromise; - // The tab panel of the first device is opened in previous test as the - // third tab panel. This device has correct device descriptor. - const deviceTab = document.querySelectorAll('tabpanel')[2]; - deviceTab.querySelector('.device-descriptor-button').click(); - - await deviceDescriptorRenderPromise; - const panel = deviceTab.querySelector('.device-descriptor-panel'); - expectEquals(1, panel.querySelectorAll('descriptorpanel').length); - expectEquals(0, panel.querySelectorAll('error').length); - const treeItems = panel.querySelectorAll('.tree-item'); - assertEquals(14, treeItems.length); - expectEquals('Length (should be 18): 18', treeItems[0].textContent); - expectEquals( - 'Descriptor Type (should be 0x01): 0x01', treeItems[1].textContent); - expectEquals('USB Version: 2.0.0', treeItems[2].textContent); - expectEquals('Class Code: 0', treeItems[3].textContent); - expectEquals('Subclass Code: 0', treeItems[4].textContent); - expectEquals('Protocol Code: 0', treeItems[5].textContent); - expectEquals( - 'Control Pipe Maximum Packet Size: 64', treeItems[6].textContent); - expectEquals('Vendor ID: 0x1050', treeItems[7].textContent); - expectEquals('Product ID: 0x17EF', treeItems[8].textContent); - expectEquals('Device Version: 3.2.1', treeItems[9].textContent); - // The string descriptor index fields with non-zero number should have a - // "GET" button. - expectEquals( - 'Manufacturer String Index: 1GET', treeItems[10].textContent); - expectEquals('Product String Index: 2GET', treeItems[11].textContent); - expectEquals('Serial Number Index: 0', treeItems[12].textContent); - expectEquals('Number of Configurations: 1', treeItems[13].textContent); - const byteElements = panel.querySelectorAll('.raw-data-byte-view span'); - expectEquals(18, byteElements.length); - expectEquals( - '12010002000000405010EF17210301020001', - panel.querySelector('.raw-data-byte-view').textContent); - - // Click a single byte tree item (Length) and check that both the item - // and the related byte are highlighted. - treeItems[0].querySelector('.tree-row').click(); - expectTrue(treeItems[0].selected); - expectTrue(byteElements[0].classList.contains('selected-field')); - // Click a multi-byte tree item (Vendor ID) and check that both the - // item and the related bytes are highlighted, and other items and bytes - // are not highlighted. - treeItems[7].querySelector('.tree-row').click(); - expectFalse(treeItems[0].selected); - expectTrue(treeItems[7].selected); - expectFalse(byteElements[0].classList.contains('selected-field')); - expectTrue(byteElements[8].classList.contains('selected-field')); - expectTrue(byteElements[9].classList.contains('selected-field')); - // Click a single byte element (Descriptor Type) and check that both the - // byte and the related item are highlighted, and other items and bytes - // are not highlighted. - byteElements[1].click(); - expectFalse(treeItems[7].selected); - expectTrue(treeItems[1].selected); - expectTrue(byteElements[1].classList.contains('selected-field')); - // Click any byte element of a multi-byte element (Product ID) and check - // that both the bytes and the related item are highlighted, and other - // items and bytes are not highlighted. - byteElements[11].click(); - expectFalse(treeItems[1].selected); - expectTrue(treeItems[8].selected); - expectTrue(byteElements[10].classList.contains('selected-field')); - expectTrue(byteElements[11].classList.contains('selected-field')); - }); - }); - - // Run all registered tests. - mocha.run(); -}); - -TEST_F('UsbInternalsTest', 'WebUIIncorrectValueRenderTest', function() { - let pageHandler; - - // Before tests are run, make sure setup completes. - let setupPromise = this.setupResolver.promise.then(() => { - pageHandler = this.pageHandler; - }); - - let deviceManagerGetDevicesPromise = - this.deviceManagerGetDevicesResolver.promise; - let deviceTabInitializedPromise = this.deviceTabInitializedResolver.promise; - let deviceDescriptorRenderPromise = - this.deviceDescriptorRenderResolver.promise; - - suite('UsbInternalsUITest', function() { - suiteSetup(function() { - return setupPromise.then(function() { - return Promise.all([ - pageHandler.whenCalled('bindUsbDeviceManagerInterface'), - pageHandler.deviceManager.whenCalled('getDevices'), - ]); - }); - }); - - test('RenderShortDeviceDescriptor', async function() { - await deviceManagerGetDevicesPromise; - const devicesTable = document.querySelector('#device-list'); - // Inspect the second device, which has short device descriptor. - devicesTable.querySelectorAll('button')[1].click(); - // The third is the device tab. - const deviceTab = document.querySelectorAll('tabpanel')[2]; - - await deviceTabInitializedPromise; - deviceTab.querySelector('.device-descriptor-button').click(); - - await deviceDescriptorRenderPromise; - const panel = deviceTab.querySelector('.device-descriptor-panel'); - - expectEquals(1, panel.querySelectorAll('descriptorpanel').length); - const errors = panel.querySelectorAll('error'); - assertEquals(2, errors.length); - expectEquals('Field at offset 8 is invalid.', errors[0].textContent); - expectEquals('Descriptor is too short.', errors[1].textContent); - // For the short response, the returned data should still be rendered. - const treeItems = panel.querySelectorAll('.tree-item'); - assertEquals(7, treeItems.length); - expectEquals('Length (should be 18): 18', treeItems[0].textContent); - expectEquals( - 'Descriptor Type (should be 0x01): 0x01', treeItems[1].textContent); - expectEquals('USB Version: 2.0.0', treeItems[2].textContent); - expectEquals('Class Code: 0', treeItems[3].textContent); - expectEquals('Subclass Code: 0', treeItems[4].textContent); - expectEquals('Protocol Code: 0', treeItems[5].textContent); - expectEquals( - 'Control Pipe Maximum Packet Size: 64', treeItems[6].textContent); - - const byteElements = panel.querySelectorAll('.raw-data-byte-view span'); - expectEquals(9, byteElements.length); - expectEquals( - '120100020000004050', - panel.querySelector('.raw-data-byte-view').textContent); - - - // Click a single byte tree item (Length) and check that both the item - // and the related byte are highlighted. - treeItems[0].querySelector('.tree-row').click(); - expectTrue(treeItems[0].selected); - expectTrue(byteElements[0].classList.contains('selected-field')); - // Click a multi-byte tree item (USB Version) and check that both the - // item and the related bytes are highlighted, and other items and bytes - // are not highlighted. - treeItems[2].querySelector('.tree-row').click(); - expectFalse(treeItems[0].selected); - expectTrue(treeItems[2].selected); - expectFalse(byteElements[0].classList.contains('selected-field')); - expectTrue(byteElements[2].classList.contains('selected-field')); - expectTrue(byteElements[3].classList.contains('selected-field')); - // Click a single byte element (Descriptor Type) and check that both the - // byte and the related item are highlighted, and other items and bytes - // are not highlighted. - byteElements[1].click(); - expectFalse(treeItems[2].selected); - expectTrue(treeItems[1].selected); - expectTrue(byteElements[1].classList.contains('selected-field')); - // Click any byte element of a multi-byte element (USB Version) and - // check that both the bytes and the related item are highlighted, and - // other items and bytes are not highlighted. - byteElements[3].click(); - expectFalse(treeItems[1].selected); - expectTrue(treeItems[2].selected); - expectTrue(byteElements[2].classList.contains('selected-field')); - expectTrue(byteElements[3].classList.contains('selected-field')); - // Click the invalid field's byte (Vendor ID) will do nothing, check the - // highlighted item and bytes are not changed. - byteElements[8].click(); - expectTrue(treeItems[2].selected); - expectTrue(byteElements[2].classList.contains('selected-field')); - expectTrue(byteElements[3].classList.contains('selected-field')); - expectFalse(byteElements[8].classList.contains('selected-field')); - }); - }); - +TEST_F('UsbInternalsTest', 'WebUIValueRenderTest', function() { // Run all registered tests. mocha.run(); });
diff --git a/chrome/test/data/webui/usb_internals_test.js b/chrome/test/data/webui/usb_internals_test.js new file mode 100644 index 0000000..e5ddcd67 --- /dev/null +++ b/chrome/test/data/webui/usb_internals_test.js
@@ -0,0 +1,491 @@ +// 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. + +/** @implements {mojom.UsbInternalsPageHandlerRemote} */ +class FakePageHandlerRemote extends TestBrowserProxy { + constructor(handle) { + super([ + 'bindUsbDeviceManagerInterface', + 'bindTestInterface', + ]); + + this.receiver_ = new mojom.UsbInternalsPageHandlerReceiver(this); + this.receiver_.$.bindHandle(handle); + } + + async bindUsbDeviceManagerInterface(deviceManagerPendingReceiver) { + this.methodCalled( + 'bindUsbDeviceManagerInterface', deviceManagerPendingReceiver); + this.deviceManager = + new FakeDeviceManagerRemote(deviceManagerPendingReceiver); + } + + async bindTestInterface(testDeviceManagerPendingReceiver) { + this.methodCalled('bindTestInterface', testDeviceManagerPendingReceiver); + } +} + +/** @implements {device.mojom.UsbDeviceManagerRemote} */ +class FakeDeviceManagerRemote extends TestBrowserProxy { + constructor(pendingReceiver) { + super([ + 'enumerateDevicesAndSetClient', + 'getDevice', + 'getSecurityKeyDevice', + 'getDevices', + 'checkAccess', + 'openFileDescriptor', + 'setClient', + ]); + + this.receiver_ = new device.mojom.UsbDeviceManagerReceiver(this); + this.receiver_.$.bindHandle(pendingReceiver.handle); + + this.devices = []; + this.deviceRemoteMap = new Map(); + this.addFakeDevice( + fakeDeviceInfo(0), createDeviceWithValidDeviceDescriptor()); + this.addFakeDevice( + fakeDeviceInfo(1), createDeviceWithShortDeviceDescriptor()); + } + + /** + * Adds a fake device to this device manager. + * @param {!Object} device + * @param {!FakeUsbDeviceRemote} deviceRemote + */ + addFakeDevice(device, deviceRemote) { + this.devices.push(device); + this.deviceRemoteMap.set(device.guid, deviceRemote); + } + + async enumerateDevicesAndSetClient() {} + + async getDevice(guid, devicePendingReceiver, deviceClient) { + this.methodCalled('getDevice'); + const deviceRemote = this.deviceRemoteMap.get(guid); + deviceRemote.router.$.bindHandle(devicePendingReceiver.handle); + } + + async getSecurityKeyDevice(guid, devicePendingReceiver, deviceClient) {} + + async getDevices() { + this.methodCalled('getDevices'); + return {results: this.devices}; + } + + async checkAccess() {} + + async openFileDescriptor() {} + + async setClient() {} +} + +/** @implements {device.mojom.UsbDeviceRemote} */ +class FakeUsbDeviceRemote extends TestBrowserProxy { + constructor() { + super([ + 'open', + 'close', + 'controlTransferIn', + ]); + this.responses = new Map(); + + // NOTE: We use the generated CallbackRouter here because + // device.mojom.UsbDevice defines lots of methods we don't care to mock + // here. UsbDeviceCallbackRouter callback silently discards messages + // that have no listeners. + this.router = new device.mojom.UsbDeviceCallbackRouter; + this.router.open.addListener(async () => { + return {error: device.mojom.UsbOpenDeviceError.OK}; + }); + this.router.controlTransferIn.addListener( + (params, length, timeout) => + this.controlTransferIn(params, length, timeout)); + this.router.close.addListener(async () => {}); + } + + async controlTransferIn(params, length, timeout) { + const response = + this.responses.get(usbControlTransferParamsToString(params)); + if (!response) { + return { + status: device.mojom.UsbTransferStatus.TRANSFER_ERROR, + data: [], + }; + } + response.data = response.data.slice(0, length); + return response; + } + + /** + * Set a response for a given request. + * @param {!device.mojom.UsbControlTransferParams} params + * @param {!Object} response + */ + setResponse(params, response) { + this.responses.set(usbControlTransferParamsToString(params), response); + } + + /** + * Set the device descriptor the device will respond to queries with. + * @param {!Object} response + */ + setDeviceDescriptor(response) { + const params = {}; + params.type = device.mojom.UsbControlTransferType.STANDARD; + params.recipient = device.mojom.UsbControlTransferRecipient.DEVICE; + params.request = 6; + params.index = 0; + params.value = (1 << 8); + this.setResponse(params, response); + } +} + +/** + * Creates a fake device using the given number. + * @param {number} num + * @return {!Object} + */ +function fakeDeviceInfo(num) { + return { + guid: `abcdefgh-ijkl-mnop-qrst-uvwxyz12345${num}`, + usbVersionMajor: 2, + usbVersionMinor: 0, + usbVersionSubminor: num, + classCode: 0, + subclassCode: 0, + protocolCode: 0, + busNumber: num, + portNumber: num, + vendorId: 0x1050 + num, + productId: 0x17EF + num, + deviceVersionMajor: 3, + deviceVersionMinor: 2, + deviceVersionSubminor: 1, + manufacturerName: stringToMojoString16('test'), + productName: undefined, + serialNumber: undefined, + webusbLandingPage: {url: 'http://google.com'}, + activeConfiguration: 1, + configurations: [], + }; +} + +/** + * Creates a device with correct descriptors. + */ +function createDeviceWithValidDeviceDescriptor() { + const deviceRemote = new FakeUsbDeviceRemote(); + deviceRemote.setDeviceDescriptor({ + status: device.mojom.UsbTransferStatus.COMPLETED, + data: [ + 0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x50, 0x10, 0xEF, 0x17, + 0x21, 0x03, 0x01, 0x02, 0x00, 0x01 + ], + }); + return deviceRemote; +} + +/** + * Creates a device with too short descriptors. + */ +function createDeviceWithShortDeviceDescriptor() { + const deviceRemote = new FakeUsbDeviceRemote(); + deviceRemote.setDeviceDescriptor({ + status: device.mojom.UsbTransferStatus.SHORT_PACKET, + data: [0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x50], + }); + return deviceRemote; +} + +/** + * Converts an ECMAScript string to an instance of mojo_base.mojom.String16. + * @param {string} string + * @return {!object} + */ +function stringToMojoString16(string) { + return {data: Array.from(string, c => c.charCodeAt(0))}; +} + +/** + * Stringify a UsbControlTransferParams type object to be the key of + * response map. + * @param {!device.mojom.UsbControlTransferParams} params + * @return {string} + */ +function usbControlTransferParamsToString(params) { + return `${params.type}-${params.recipient}-${params.request}-${ + params.value}-${params.index}`; +} + +const setupResolver = new PromiseResolver(); +const deviceManagerGetDevicesResolver = new PromiseResolver(); +const deviceTabInitializedResolver = new PromiseResolver(); +let deviceDescriptorRenderResolver = new PromiseResolver(); +let pageHandler = null; + +window.deviceListCompleteFn = () => { + deviceManagerGetDevicesResolver.resolve(); +}; + +window.deviceTabInitializedFn = () => { + deviceTabInitializedResolver.resolve(); +}; + +window.deviceDescriptorCompleteFn = () => { + deviceDescriptorRenderResolver.resolve(); +}; + +window.setupFn = () => { + const pageHandlerInterceptor = new MojoInterfaceInterceptor( + mojom.UsbInternalsPageHandler.$interfaceName); + pageHandlerInterceptor.oninterfacerequest = (e) => { + pageHandler = new FakePageHandlerRemote(e.handle); + }; + pageHandlerInterceptor.start(); + + setupResolver.resolve(); + return Promise.resolve(); +}; + + +suite('UsbInternalsUITest', function() { + suiteSetup(function() { + // Before tests are run, make sure setup completes. + return setupResolver.promise.then(function() { + return Promise.all([ + pageHandler.whenCalled('bindUsbDeviceManagerInterface'), + pageHandler.deviceManager.whenCalled('getDevices'), + ]); + }); + }); + + teardown(function() { + pageHandler.reset(); + }); + + test('PageLoaded', async function() { + const EXPECT_DEVICES_NUM = 2; + + // Totally 2 tables: 'TestDevice' table and 'Device' table. + const tables = document.querySelectorAll('table'); + expectEquals(2, tables.length); + + // Only 2 tabs after loading page. + const tabs = document.querySelectorAll('tab'); + expectEquals(2, tabs.length); + const tabPanels = document.querySelectorAll('tabpanel'); + expectEquals(2, tabPanels.length); + + // The second is the devices table, which has 8 columns. + const devicesTable = document.querySelectorAll('table')[1]; + const columns = devicesTable.querySelector('thead') + .querySelector('tr') + .querySelectorAll('th'); + expectEquals(8, columns.length); + + await deviceManagerGetDevicesResolver.promise; + const devices = devicesTable.querySelectorAll('tbody tr'); + expectEquals(EXPECT_DEVICES_NUM, devices.length); + }); + + test('DeviceTabAdded', function() { + const devicesTable = document.querySelector('#device-list'); + // Click the inspect button to open information about the first device. + // The device info is opened as a third tab panel. + devicesTable.querySelectorAll('button')[0].click(); + assertEquals(3, document.querySelectorAll('tab').length); + assertEquals(3, document.querySelectorAll('tabpanel').length); + expectTrue(document.querySelectorAll('tabpanel')[2].selected); + + // Check that clicking the inspect button for another device will open a + // new tabpanel. + devicesTable.querySelectorAll('button')[1].click(); + assertEquals(4, document.querySelectorAll('tab').length); + assertEquals(4, document.querySelectorAll('tabpanel').length); + expectTrue(document.querySelectorAll('tabpanel')[3].selected); + expectFalse(document.querySelectorAll('tabpanel')[2].selected); + + // Check that clicking the inspect button for the same device a second + // time will open the same tabpanel. + devicesTable.querySelectorAll('button')[0].click(); + assertEquals(4, document.querySelectorAll('tab').length); + assertEquals(4, document.querySelectorAll('tabpanel').length); + expectTrue(document.querySelectorAll('tabpanel')[2].selected); + expectFalse(document.querySelectorAll('tabpanel')[3].selected); + }); + + test('RenderDeviceInfoTree', function() { + // Test the tab opened by clicking inspect button contains a tree view + // showing WebUSB information. Check the tree displays correct data. + // The tab panel of the first device is opened in previous test as the + // third tab panel. + const deviceTab = document.querySelectorAll('tabpanel')[2]; + const tree = deviceTab.querySelector('tree'); + const treeItems = tree.querySelectorAll('.tree-item'); + assertEquals(11, treeItems.length); + expectEquals('USB Version: 2.0.0', treeItems[0].textContent); + expectEquals('Class Code: 0', treeItems[1].textContent); + expectEquals('Subclass Code: 0', treeItems[2].textContent); + expectEquals('Protocol Code: 0', treeItems[3].textContent); + expectEquals('Port Number: 0', treeItems[4].textContent); + expectEquals('Vendor Id: 0x1050', treeItems[5].textContent); + expectEquals('Product Id: 0x17EF', treeItems[6].textContent); + expectEquals('Device Version: 3.2.1', treeItems[7].textContent); + expectEquals('Manufacturer Name: test', treeItems[8].textContent); + expectEquals( + 'WebUSB Landing Page: http://google.com', treeItems[9].textContent); + expectEquals('Active Configuration: 1', treeItems[10].textContent); + }); + + test('RenderDeviceDescriptor', async function() { + // Test the tab opened by clicking inspect button contains a panel that + // can manually retrieve device descriptor from device. Check the response + // can be rendered correctly. + await deviceTabInitializedResolver.promise; + // The tab panel of the first device is opened in previous test as the + // third tab panel. This device has correct device descriptor. + const deviceTab = document.querySelectorAll('tabpanel')[2]; + deviceTab.querySelector('.device-descriptor-button').click(); + + await deviceDescriptorRenderResolver.promise; + const panel = deviceTab.querySelector('.device-descriptor-panel'); + expectEquals(1, panel.querySelectorAll('descriptorpanel').length); + expectEquals(0, panel.querySelectorAll('error').length); + const treeItems = panel.querySelectorAll('.tree-item'); + assertEquals(14, treeItems.length); + expectEquals('Length (should be 18): 18', treeItems[0].textContent); + expectEquals( + 'Descriptor Type (should be 0x01): 0x01', treeItems[1].textContent); + expectEquals('USB Version: 2.0.0', treeItems[2].textContent); + expectEquals('Class Code: 0', treeItems[3].textContent); + expectEquals('Subclass Code: 0', treeItems[4].textContent); + expectEquals('Protocol Code: 0', treeItems[5].textContent); + expectEquals( + 'Control Pipe Maximum Packet Size: 64', treeItems[6].textContent); + expectEquals('Vendor ID: 0x1050', treeItems[7].textContent); + expectEquals('Product ID: 0x17EF', treeItems[8].textContent); + expectEquals('Device Version: 3.2.1', treeItems[9].textContent); + // The string descriptor index fields with non-zero number should have a + // "GET" button. + expectEquals('Manufacturer String Index: 1GET', treeItems[10].textContent); + expectEquals('Product String Index: 2GET', treeItems[11].textContent); + expectEquals('Serial Number Index: 0', treeItems[12].textContent); + expectEquals('Number of Configurations: 1', treeItems[13].textContent); + const byteElements = panel.querySelectorAll('.raw-data-byte-view span'); + expectEquals(18, byteElements.length); + expectEquals( + '12010002000000405010EF17210301020001', + panel.querySelector('.raw-data-byte-view').textContent); + + // Click a single byte tree item (Length) and check that both the item + // and the related byte are highlighted. + treeItems[0].querySelector('.tree-row').click(); + expectTrue(treeItems[0].selected); + expectTrue(byteElements[0].classList.contains('selected-field')); + // Click a multi-byte tree item (Vendor ID) and check that both the + // item and the related bytes are highlighted, and other items and bytes + // are not highlighted. + treeItems[7].querySelector('.tree-row').click(); + expectFalse(treeItems[0].selected); + expectTrue(treeItems[7].selected); + expectFalse(byteElements[0].classList.contains('selected-field')); + expectTrue(byteElements[8].classList.contains('selected-field')); + expectTrue(byteElements[9].classList.contains('selected-field')); + // Click a single byte element (Descriptor Type) and check that both the + // byte and the related item are highlighted, and other items and bytes + // are not highlighted. + byteElements[1].click(); + expectFalse(treeItems[7].selected); + expectTrue(treeItems[1].selected); + expectTrue(byteElements[1].classList.contains('selected-field')); + // Click any byte element of a multi-byte element (Product ID) and check + // that both the bytes and the related item are highlighted, and other + // items and bytes are not highlighted. + byteElements[11].click(); + expectFalse(treeItems[1].selected); + expectTrue(treeItems[8].selected); + expectTrue(byteElements[10].classList.contains('selected-field')); + expectTrue(byteElements[11].classList.contains('selected-field')); + }); + + test('RenderShortDeviceDescriptor', async function() { + await deviceManagerGetDevicesResolver.promise; + const devicesTable = document.querySelector('#device-list'); + // Inspect the second device, which has short device descriptor. + devicesTable.querySelectorAll('button')[1].click(); + // The fourth is the device tab (a third tab was opened in a previous test). + const deviceTab = document.querySelectorAll('tabpanel')[3]; + + await deviceTabInitializedResolver.promise; + deviceDescriptorRenderResolver = new PromiseResolver(); + deviceTab.querySelector('.device-descriptor-button').click(); + + await deviceDescriptorRenderResolver.promise; + const panel = deviceTab.querySelector('.device-descriptor-panel'); + + expectEquals(1, panel.querySelectorAll('descriptorpanel').length); + const errors = panel.querySelectorAll('error'); + assertEquals(2, errors.length); + expectEquals('Field at offset 8 is invalid.', errors[0].textContent); + expectEquals('Descriptor is too short.', errors[1].textContent); + // For the short response, the returned data should still be rendered. + const treeItems = panel.querySelectorAll('.tree-item'); + assertEquals(7, treeItems.length); + expectEquals('Length (should be 18): 18', treeItems[0].textContent); + expectEquals( + 'Descriptor Type (should be 0x01): 0x01', treeItems[1].textContent); + expectEquals('USB Version: 2.0.0', treeItems[2].textContent); + expectEquals('Class Code: 0', treeItems[3].textContent); + expectEquals('Subclass Code: 0', treeItems[4].textContent); + expectEquals('Protocol Code: 0', treeItems[5].textContent); + expectEquals( + 'Control Pipe Maximum Packet Size: 64', treeItems[6].textContent); + + const byteElements = panel.querySelectorAll('.raw-data-byte-view span'); + expectEquals(9, byteElements.length); + expectEquals( + '120100020000004050', + panel.querySelector('.raw-data-byte-view').textContent); + + + // Click a single byte tree item (Length) and check that both the item + // and the related byte are highlighted. + treeItems[0].querySelector('.tree-row').click(); + expectTrue(treeItems[0].selected); + expectTrue(byteElements[0].classList.contains('selected-field')); + // Click a multi-byte tree item (USB Version) and check that both the + // item and the related bytes are highlighted, and other items and bytes + // are not highlighted. + treeItems[2].querySelector('.tree-row').click(); + expectFalse(treeItems[0].selected); + expectTrue(treeItems[2].selected); + expectFalse(byteElements[0].classList.contains('selected-field')); + expectTrue(byteElements[2].classList.contains('selected-field')); + expectTrue(byteElements[3].classList.contains('selected-field')); + // Click a single byte element (Descriptor Type) and check that both the + // byte and the related item are highlighted, and other items and bytes + // are not highlighted. + byteElements[1].click(); + expectFalse(treeItems[2].selected); + expectTrue(treeItems[1].selected); + expectTrue(byteElements[1].classList.contains('selected-field')); + // Click any byte element of a multi-byte element (USB Version) and + // check that both the bytes and the related item are highlighted, and + // other items and bytes are not highlighted. + byteElements[3].click(); + expectFalse(treeItems[1].selected); + expectTrue(treeItems[2].selected); + expectTrue(byteElements[2].classList.contains('selected-field')); + expectTrue(byteElements[3].classList.contains('selected-field')); + // Click the invalid field's byte (Vendor ID) will do nothing, check the + // highlighted item and bytes are not changed. + byteElements[8].click(); + expectTrue(treeItems[2].selected); + expectTrue(byteElements[2].classList.contains('selected-field')); + expectTrue(byteElements[3].classList.contains('selected-field')); + expectFalse(byteElements[8].classList.contains('selected-field')); + }); +});
diff --git a/chromecast/browser/webview/client/webview.cc b/chromecast/browser/webview/client/webview.cc index 4d35cd5..ec5bdc6 100644 --- a/chromecast/browser/webview/client/webview.cc +++ b/chromecast/browser/webview/client/webview.cc
@@ -480,10 +480,7 @@ key_input->set_key_code(keyboard_code); key_input->set_dom_code(static_cast<int32_t>(dom_code)); key_input->set_dom_key(static_cast<int32_t>(dom_key)); - - // Hardcoded to true for our purposes, as IsCharacter doesn't seem to work - // here. Just means we can't test with modifier keys. - key_input->set_is_char(true); + key_input->set_is_char(dom_key.IsCharacter()); auto key_event = std::make_unique<InputEvent>(); key_event->set_event_type(down ? ui::EventType::ET_KEY_PRESSED
diff --git a/chromecast/browser/webview/proto/webview.proto b/chromecast/browser/webview/proto/webview.proto index c816eb7..24fd148 100644 --- a/chromecast/browser/webview/proto/webview.proto +++ b/chromecast/browser/webview/proto/webview.proto
@@ -249,58 +249,6 @@ int32 height = 2; } -// Represents the input mode of a focused text input field -// Corresponds with: -// http://www.whatwg.org/specs/web-apps/current-work/#attr-fe-inputmode -enum TextInputMode { - TEXT_INPUT_MODE_DEFAULT = 0; - TEXT_INPUT_MODE_NONE = 1; - TEXT_INPUT_MODE_TEXT = 2; - TEXT_INPUT_MODE_TEL = 3; - TEXT_INPUT_MODE_URL = 4; - TEXT_INPUT_MODE_EMAIL = 5; - TEXT_INPUT_MODE_NUMERIC = 6; - TEXT_INPUT_MODE_DECIMAL = 7; - TEXT_INPUT_MODE_SEARCH = 8; -}; - -// Represents the type of a focused text input field. -// Corresponds with blink's public/platform/WebTextInputType.h -// Reference that source for more extended commentary on meaning of each value. -enum TextInputType { - // Input caret is not in an editable node, no input method shall be used. - TEXT_INPUT_TYPE_NONE = 0; - TEXT_INPUT_TYPE_TEXT = 1; - TEXT_INPUT_TYPE_PASSWORD = 2; - TEXT_INPUT_TYPE_SEARCH = 3; - TEXT_INPUT_TYPE_EMAIL = 4; - TEXT_INPUT_TYPE_NUMBER = 5; - TEXT_INPUT_TYPE_TELEPHONE = 6; - TEXT_INPUT_TYPE_URL = 7; - TEXT_INPUT_TYPE_DATE = 8; - TEXT_INPUT_TYPE_DATE_TIME = 9; - TEXT_INPUT_TYPE_DATE_TIME_LOCAL = 10; - TEXT_INPUT_TYPE_MONTH = 11; - TEXT_INPUT_TYPE_TIME = 12; - TEXT_INPUT_TYPE_WEEK = 13; - TEXT_INPUT_TYPE_TEXT_AREA = 14; - TEXT_INPUT_TYPE_CONTENT_EDITABLE = 15; - TEXT_INPUT_TYPE_DATE_TIME_FIELD = 16; - - // Input caret is in an editable node which doesn't support rich editing. - TEXT_INPUT_TYPE_NULL = 17; -} - -// Represents a focus event for an input field within the webview's contents. -message TextInputFocusEvent { - TextInputType type = 1; - - // Flagged attributes of the focused text input field. - // Corresponds with those described in blink::WebTextInputFlags in - // public/platform/WebTextInputType.h - int32 flags = 2; -} - message WebviewRequest { // Unique identifier for the request. For requests that will have a response, // the response id will match the request id. @@ -369,7 +317,6 @@ // channels via AddJavascriptChannelsRequest. JavascriptChannelMessage javascript_channel_message = 10; ClearCookiesResponse clear_cookies = 11; - TextInputFocusEvent input_focus_event = 12; AssociateCastAppWindowResponse associate = 20; } }
diff --git a/chromecast/browser/webview/web_content_controller.cc b/chromecast/browser/webview/web_content_controller.cc index bd0096e..0f97c377 100644 --- a/chromecast/browser/webview/web_content_controller.cc +++ b/chromecast/browser/webview/web_content_controller.cc
@@ -25,136 +25,10 @@ #include "third_party/blink/public/common/input/web_touch_event.h" #include "ui/aura/window.h" #include "ui/aura/window_delegate.h" -#include "ui/aura/window_tree_host.h" #include "ui/base/ime/constants.h" -#include "ui/base/ime/input_method.h" -#include "ui/base/ime/input_method_observer.h" -#include "ui/base/ime/text_input_client.h" -#include "ui/base/ime/text_input_type.h" #include "ui/events/event.h" #include "ui/events/event_constants.h" -namespace { - -chromecast::webview::TextInputType ConvertTextInputType( - const ui::TextInputType text_input_type) { - switch (text_input_type) { - case ui::TEXT_INPUT_TYPE_NONE: - return chromecast::webview::TEXT_INPUT_TYPE_NONE; - break; - case ui::TEXT_INPUT_TYPE_TEXT: - return chromecast::webview::TEXT_INPUT_TYPE_TEXT; - break; - case ui::TEXT_INPUT_TYPE_CONTENT_EDITABLE: - return chromecast::webview::TEXT_INPUT_TYPE_CONTENT_EDITABLE; - break; - case ui::TEXT_INPUT_TYPE_PASSWORD: - return chromecast::webview::TEXT_INPUT_TYPE_PASSWORD; - break; - case ui::TEXT_INPUT_TYPE_SEARCH: - return chromecast::webview::TEXT_INPUT_TYPE_SEARCH; - break; - case ui::TEXT_INPUT_TYPE_EMAIL: - return chromecast::webview::TEXT_INPUT_TYPE_EMAIL; - break; - case ui::TEXT_INPUT_TYPE_NUMBER: - return chromecast::webview::TEXT_INPUT_TYPE_NUMBER; - break; - case ui::TEXT_INPUT_TYPE_TELEPHONE: - return chromecast::webview::TEXT_INPUT_TYPE_TELEPHONE; - break; - case ui::TEXT_INPUT_TYPE_DATE: - return chromecast::webview::TEXT_INPUT_TYPE_DATE; - break; - case ui::TEXT_INPUT_TYPE_DATE_TIME: - return chromecast::webview::TEXT_INPUT_TYPE_DATE_TIME; - break; - case ui::TEXT_INPUT_TYPE_MONTH: - return chromecast::webview::TEXT_INPUT_TYPE_MONTH; - break; - case ui::TEXT_INPUT_TYPE_TIME: - return chromecast::webview::TEXT_INPUT_TYPE_TIME; - break; - case ui::TEXT_INPUT_TYPE_URL: - return chromecast::webview::TEXT_INPUT_TYPE_URL; - break; - case ui::TEXT_INPUT_TYPE_WEEK: - return chromecast::webview::TEXT_INPUT_TYPE_WEEK; - break; - case ui::TEXT_INPUT_TYPE_TEXT_AREA: - return chromecast::webview::TEXT_INPUT_TYPE_TEXT_AREA; - break; - case ui::TEXT_INPUT_TYPE_DATE_TIME_FIELD: - return chromecast::webview::TEXT_INPUT_TYPE_DATE_TIME_FIELD; - break; - case ui::TEXT_INPUT_TYPE_DATE_TIME_LOCAL: - return chromecast::webview::TEXT_INPUT_TYPE_DATE_TIME_LOCAL; - break; - case ui::TEXT_INPUT_TYPE_NULL: - return chromecast::webview::TEXT_INPUT_TYPE_NULL; - break; - } - LOG(ERROR) << "Unmapped TextInputType: " << text_input_type; - return chromecast::webview::TEXT_INPUT_TYPE_NULL; -} - -// Used to watch for text field input focus changes and notify the client -// accordingly. -class WebviewInputMethodObserver : public ui::InputMethodObserver { - public: - WebviewInputMethodObserver(chromecast::WebContentController::Client* client, - ui::InputMethod* input_method); - ~WebviewInputMethodObserver() override; - - WebviewInputMethodObserver(const WebviewInputMethodObserver&) = delete; - WebviewInputMethodObserver& operator=(const WebviewInputMethodObserver&) = - delete; - - // ui::InputMethodObserver - void OnFocus() override {} - void OnBlur() override {} - void OnCaretBoundsChanged(const ui::TextInputClient* client) override {} - void OnTextInputStateChanged(const ui::TextInputClient* client) override; - void OnInputMethodDestroyed(const ui::InputMethod* input_method) override; - void OnShowVirtualKeyboardIfEnabled() override {} - - private: - chromecast::WebContentController::Client* client_; - ui::InputMethod* input_method_; -}; - -void WebviewInputMethodObserver::OnTextInputStateChanged( - const ui::TextInputClient* client) { - if (!client) - return; - std::unique_ptr<chromecast::webview::WebviewResponse> focus_event_response = - std::make_unique<chromecast::webview::WebviewResponse>(); - auto* focus_event = focus_event_response->mutable_input_focus_event(); - focus_event->set_flags(client->GetTextInputFlags()); - focus_event->set_type(ConvertTextInputType(client->GetTextInputType())); - client_->EnqueueSend(std::move(focus_event_response)); -} - -WebviewInputMethodObserver::WebviewInputMethodObserver( - chromecast::WebContentController::Client* client, - ui::InputMethod* input_method) - : client_(client), input_method_(input_method) { - input_method_->AddObserver(this); -} - -WebviewInputMethodObserver::~WebviewInputMethodObserver() { - if (input_method_) { - input_method_->RemoveObserver(this); - } -} - -void WebviewInputMethodObserver::OnInputMethodDestroyed( - const ui::InputMethod* input_method) { - input_method_ = nullptr; -} - -} // namespace - namespace chromecast { WebContentController::WebContentController(Client* client) : client_(client) { @@ -294,10 +168,6 @@ surface_->SetEmbeddedSurfaceId(base::BindRepeating( &WebContentController::GetSurfaceId, base::Unretained(this))); HandleResize(contents_window->bounds().size()); - - // Register for IME events - input_method_observer_ = std::make_unique<WebviewInputMethodObserver>( - client_, contents_window->GetHost()->GetInputMethod()); } void WebContentController::ProcessInputEvent(const webview::InputEvent& ev) {
diff --git a/chromecast/browser/webview/web_content_controller.h b/chromecast/browser/webview/web_content_controller.h index 4972dfd..44f8cf9 100644 --- a/chromecast/browser/webview/web_content_controller.h +++ b/chromecast/browser/webview/web_content_controller.h
@@ -16,8 +16,6 @@ #include "components/exo/surface_observer.h" #include "content/public/browser/render_widget_host.h" #include "content/public/browser/web_contents_observer.h" -#include "ui/base/ime/input_method.h" -#include "ui/base/ime/input_method_observer.h" #include "ui/events/gestures/gesture_recognizer_impl.h" namespace aura { @@ -141,9 +139,6 @@ std::set<content::RenderFrameHost*> current_render_frame_set_; std::set<content::RenderWidgetHost*> current_render_widget_set_; - // Used to watch key focus events. - std::unique_ptr<ui::InputMethodObserver> input_method_observer_; - base::WeakPtrFactory<WebContentController> weak_ptr_factory_{this}; DISALLOW_COPY_AND_ASSIGN(WebContentController);
diff --git a/chromeos/components/camera_app_ui/resources/strings/camera_strings_gu.xtb b/chromeos/components/camera_app_ui/resources/strings/camera_strings_gu.xtb index af8234e..ae34cbd 100644 --- a/chromeos/components/camera_app_ui/resources/strings/camera_strings_gu.xtb +++ b/chromeos/components/camera_app_ui/resources/strings/camera_strings_gu.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="gu"> <translation id="1276998909102132017">ગૅલેરી છબીઓ</translation> <translation id="1430915738399379752">પ્રિન્ટ</translation> +<translation id="1473110567575736769">3 સેકન્ડનું ટાઇમર</translation> <translation id="1620510694547887537">કૅમેરો</translation> <translation id="1627744224761163218">4 x 4</translation> <translation id="1664224225747386870">કંઈ રેકોર્ડ થયું નથી</translation> @@ -30,6 +31,7 @@ <translation id="3517926952904427380">પોર્ટ્રેટ ફોટો લઈ શકાતો નથી</translation> <translation id="3569311554794739032">શું તમે ખરેખર <ph name="FILE" />ને કાઢી નાખવા માગો છો?</translation> <translation id="3810838688059735925">વીડિયો</translation> +<translation id="4000398125663085899">હવે નવા ફોટા અને વીડિયો Files ઍપના કોઈ ફોલ્ડરમાં સાચવવામાં આવશે: મારી ફાઇલો > કૅમેરા</translation> <translation id="4118525110028899586">રેકોર્ડિંગ થોભાવો</translation> <translation id="4279490309300973883">પ્રતિબિંબત થઈ રહ્યું છે</translation> <translation id="4329152592498422850">વર્ગાકાર ફોટો લેવા માટે સ્વિચ કરો</translation> @@ -62,6 +64,7 @@ <translation id="6965382102122355670">બરાબર, સમજાઇ ગયું</translation> <translation id="698156982839284926">3 સેકન્ડ</translation> <translation id="712848772518857951">શું તમે ખરેખર <ph name="COUNT" /> આઇટમ કાઢી નાખવા માગો છો?</translation> +<translation id="7134221860976209830">10 સેકન્ડનું ટાઇમર</translation> <translation id="7243947652761655814">વીડિયો રિઝોલ્યુશન</translation> <translation id="7337660886763914220">ફાઇલ સિસ્ટમની ભૂલો.</translation> <translation id="7557677699350329807">આગલા કૅમેરા પર સ્વિચ કરો</translation>
diff --git a/chromeos/dbus/shill/fake_shill_device_client.cc b/chromeos/dbus/shill/fake_shill_device_client.cc index 0d4f2bd4..32b71fe 100644 --- a/chromeos/dbus/shill/fake_shill_device_client.cc +++ b/chromeos/dbus/shill/fake_shill_device_client.cc
@@ -105,9 +105,9 @@ base::OnceClosure callback, ErrorCallback error_callback, bool notify_changed) { - base::DictionaryValue* device_properties = nullptr; - if (!stub_devices_.GetDictionaryWithoutPathExpansion(device_path.value(), - &device_properties)) { + base::Value* device_properties = + stub_devices_.FindDictKey(device_path.value()); + if (!device_properties) { PostNotFoundError(std::move(error_callback)); return; } @@ -124,9 +124,9 @@ void FakeShillDeviceClient::ClearProperty(const dbus::ObjectPath& device_path, const std::string& name, VoidDBusMethodCallback callback) { - base::DictionaryValue* device_properties = nullptr; - if (!stub_devices_.GetDictionaryWithoutPathExpansion(device_path.value(), - &device_properties)) { + base::Value* device_properties = + stub_devices_.FindDictKey(device_path.value()); + if (!device_properties) { PostVoidCallback(std::move(callback), false); return; } @@ -140,7 +140,7 @@ base::OnceClosure callback, ErrorCallback error_callback) { VLOG(1) << "RequirePin: " << device_path.value(); - if (!stub_devices_.HasKey(device_path.value())) { + if (!stub_devices_.FindKey(device_path.value())) { PostNotFoundError(std::move(error_callback)); return; } @@ -162,7 +162,7 @@ base::OnceClosure callback, ErrorCallback error_callback) { VLOG(1) << "EnterPin: " << device_path.value(); - if (!stub_devices_.HasKey(device_path.value())) { + if (!stub_devices_.FindKey(device_path.value())) { PostNotFoundError(std::move(error_callback)); return; } @@ -183,7 +183,7 @@ base::OnceClosure callback, ErrorCallback error_callback) { VLOG(1) << "UnblockPin: " << device_path.value(); - if (!stub_devices_.HasKey(device_path.value())) { + if (!stub_devices_.FindKey(device_path.value())) { PostNotFoundError(std::move(error_callback)); return; } @@ -211,7 +211,7 @@ base::OnceClosure callback, ErrorCallback error_callback) { VLOG(1) << "ChangePin: " << device_path.value(); - if (!stub_devices_.HasKey(device_path.value())) { + if (!stub_devices_.FindKey(device_path.value())) { PostNotFoundError(std::move(error_callback)); return; } @@ -236,8 +236,9 @@ const std::string& network_id, base::OnceClosure callback, ErrorCallback error_callback) { - base::Value* device_properties = stub_devices_.FindKey(device_path.value()); - if (!device_properties || !device_properties->is_dict()) { + base::Value* device_properties = + stub_devices_.FindDictKey(device_path.value()); + if (!device_properties) { PostNotFoundError(std::move(error_callback)); return; } @@ -258,7 +259,7 @@ void FakeShillDeviceClient::Reset(const dbus::ObjectPath& device_path, base::OnceClosure callback, ErrorCallback error_callback) { - if (!stub_devices_.HasKey(device_path.value())) { + if (!stub_devices_.FindKey(device_path.value())) { PostNotFoundError(std::move(error_callback)); return; } @@ -270,7 +271,7 @@ const net::IPEndPoint& ip_endpoint, base::OnceClosure callback, ErrorCallback error_callback) { - if (!stub_devices_.HasKey(device_path.value())) { + if (!stub_devices_.FindKey(device_path.value())) { PostNotFoundError(std::move(error_callback)); return; } @@ -285,7 +286,7 @@ const std::vector<std::string>& types, base::OnceClosure callback, ErrorCallback error_callback) { - if (!stub_devices_.HasKey(device_path.value())) { + if (!stub_devices_.FindKey(device_path.value())) { PostNotFoundError(std::move(error_callback)); return; } @@ -300,7 +301,7 @@ base::OnceClosure callback, ErrorCallback error_callback) { const auto device_iter = wake_on_packet_connections_.find(device_path); - if (!stub_devices_.HasKey(device_path.value()) || + if (!stub_devices_.FindKey(device_path.value()) || device_iter == wake_on_packet_connections_.end()) { PostNotFoundError(std::move(error_callback)); return; @@ -322,7 +323,7 @@ const std::vector<std::string>& types, base::OnceClosure callback, ErrorCallback error_callback) { - if (!stub_devices_.HasKey(device_path.value())) { + if (!stub_devices_.FindKey(device_path.value())) { PostNotFoundError(std::move(error_callback)); return; } @@ -345,7 +346,7 @@ base::OnceClosure callback, ErrorCallback error_callback) { const auto iter = wake_on_packet_connections_.find(device_path); - if (!stub_devices_.HasKey(device_path.value()) || + if (!stub_devices_.FindKey(device_path.value()) || iter == wake_on_packet_connections_.end()) { PostNotFoundError(std::move(error_callback)); return; @@ -361,7 +362,7 @@ const std::string& source, base::OnceClosure callback, ErrorCallback error_callback) { - if (!stub_devices_.HasKey(device_path.value())) { + if (!stub_devices_.FindKey(device_path.value())) { PostNotFoundError(std::move(error_callback)); return; } @@ -413,7 +414,7 @@ void FakeShillDeviceClient::ClearDevices() { ShillManagerClient::Get()->GetTestInterface()->ClearDevices(); - stub_devices_.Clear(); + stub_devices_ = base::Value(base::Value::Type::DICTIONARY); } void FakeShillDeviceClient::SetDeviceProperty(const std::string& device_path, @@ -429,17 +430,14 @@ std::string FakeShillDeviceClient::GetDevicePathForType( const std::string& type) { - for (base::DictionaryValue::Iterator iter(stub_devices_); !iter.IsAtEnd(); - iter.Advance()) { - const base::DictionaryValue* properties = nullptr; - if (!iter.value().GetAsDictionary(&properties)) + for (auto iter : stub_devices_.DictItems()) { + if (!iter.second.is_dict()) continue; - std::string prop_type; - if (!properties->GetStringWithoutPathExpansion(shill::kTypeProperty, - &prop_type) || - prop_type != type) + const std::string* prop_type = + iter.second.FindStringKey(shill::kTypeProperty); + if (!prop_type || *prop_type != type) continue; - return iter.key(); + return iter.first; } return std::string(); } @@ -454,8 +452,8 @@ void FakeShillDeviceClient::AddCellularFoundNetwork( const std::string& device_path) { - base::Value* device_properties = stub_devices_.FindKey(device_path); - if (!device_properties || !device_properties->is_dict()) { + base::Value* device_properties = stub_devices_.FindDictKey(device_path); + if (!device_properties) { LOG(ERROR) << "Device path not found: " << device_path; return; } @@ -474,7 +472,7 @@ scan_results = device_properties->SetKey(shill::kFoundNetworksProperty, base::ListValue()); } - base::DictionaryValue new_result; + base::Value new_result(base::Value::Type::DICTIONARY); int idx = static_cast<int>(scan_results->GetList().size()); new_result.SetKey(shill::kNetworkIdProperty, base::Value(base::StringPrintf("network%d", idx))); @@ -502,29 +500,29 @@ FakeShillDeviceClient::SimLockStatus FakeShillDeviceClient::GetSimLockStatus( const std::string& device_path) { SimLockStatus status; - base::DictionaryValue* device_properties = nullptr; - base::DictionaryValue* simlock_dict = nullptr; - if (stub_devices_.GetDictionaryWithoutPathExpansion(device_path, - &device_properties) && - device_properties->GetDictionaryWithoutPathExpansion( - shill::kSIMLockStatusProperty, &simlock_dict)) { - simlock_dict->GetStringWithoutPathExpansion(shill::kSIMLockTypeProperty, - &status.type); - simlock_dict->GetIntegerWithoutPathExpansion( - shill::kSIMLockRetriesLeftProperty, &status.retries_left); - simlock_dict->GetBooleanWithoutPathExpansion(shill::kSIMLockEnabledProperty, - &status.lock_enabled); - if (status.type == shill::kSIMLockPin && status.retries_left == 0) - status.retries_left = kSimPinRetryCount; - } + base::Value* device_properties = stub_devices_.FindDictKey(device_path); + if (!device_properties) + return status; + base::Value* simlock_dict = + device_properties->FindDictKey(shill::kSIMLockStatusProperty); + if (!simlock_dict) + return status; + const std::string* type = + simlock_dict->FindStringKey(shill::kSIMLockTypeProperty); + if (type) + status.type = *type; + status.retries_left = + simlock_dict->FindIntKey(shill::kSIMLockRetriesLeftProperty).value_or(0); + status.lock_enabled = + simlock_dict->FindBoolKey(shill::kSIMLockEnabledProperty).value_or(false); + if (status.type == shill::kSIMLockPin && status.retries_left == 0) + status.retries_left = kSimPinRetryCount; return status; } void FakeShillDeviceClient::SetSimLockStatus(const std::string& device_path, const SimLockStatus& status) { - base::Value* device_properties = - stub_devices_.FindKeyOfType(device_path, base::Value::Type::DICTIONARY); - + base::Value* device_properties = stub_devices_.FindDictKey(device_path); if (!device_properties) { NOTREACHED() << "Device not found: " << device_path; return; @@ -623,14 +621,14 @@ void FakeShillDeviceClient::NotifyObserversPropertyChanged( const dbus::ObjectPath& device_path, const std::string& property) { - base::DictionaryValue* dict = nullptr; std::string path = device_path.value(); - if (!stub_devices_.GetDictionaryWithoutPathExpansion(path, &dict)) { + base::Value* device_properties = stub_devices_.FindDictKey(path); + if (!device_properties) { LOG(ERROR) << "Notify for unknown device: " << path; return; } - base::Value* value = nullptr; - if (!dict->GetWithoutPathExpansion(property, &value)) { + base::Value* value = device_properties->FindKey(property); + if (!value) { LOG(ERROR) << "Notify for unknown property: " << path << " : " << property; return; } @@ -640,12 +638,12 @@ base::Value* FakeShillDeviceClient::GetDeviceProperties( const std::string& device_path) { - base::Value* properties = - stub_devices_.FindKeyOfType(device_path, base::Value::Type::DICTIONARY); - if (properties) - return properties; - return stub_devices_.SetKey(device_path, - base::Value(base::Value::Type::DICTIONARY)); + base::Value* properties = stub_devices_.FindDictKey(device_path); + if (!properties) { + properties = stub_devices_.SetKey( + device_path, base::Value(base::Value::Type::DICTIONARY)); + } + return properties; } FakeShillDeviceClient::PropertyObserverList&
diff --git a/chromeos/dbus/shill/fake_shill_device_client.h b/chromeos/dbus/shill/fake_shill_device_client.h index 977d65be..fe4b94f 100644 --- a/chromeos/dbus/shill/fake_shill_device_client.h +++ b/chromeos/dbus/shill/fake_shill_device_client.h
@@ -152,7 +152,8 @@ PropertyObserverList& GetObserverList(const dbus::ObjectPath& device_path); // Dictionary of <device_name, Dictionary>. - base::DictionaryValue stub_devices_; + base::Value stub_devices_{base::Value::Type::DICTIONARY}; + // Observer list for each device. std::map<dbus::ObjectPath, std::unique_ptr<PropertyObserverList>> observer_list_;
diff --git a/chromeos/dbus/shill/fake_shill_ipconfig_client.cc b/chromeos/dbus/shill/fake_shill_ipconfig_client.cc index 3bf1cbf..fe9ab28 100644 --- a/chromeos/dbus/shill/fake_shill_ipconfig_client.cc +++ b/chromeos/dbus/shill/fake_shill_ipconfig_client.cc
@@ -48,8 +48,7 @@ const std::string& name, const base::Value& value, VoidDBusMethodCallback callback) { - base::Value* dict = ipconfigs_.FindKeyOfType(ipconfig_path.value(), - base::Value::Type::DICTIONARY); + base::Value* dict = ipconfigs_.FindDictKey(ipconfig_path.value()); if (!dict) { dict = ipconfigs_.SetKey(ipconfig_path.value(), base::Value(base::Value::Type::DICTIONARY)); @@ -82,9 +81,8 @@ // ShillIPConfigClient::TestInterface overrides -void FakeShillIPConfigClient::AddIPConfig( - const std::string& ip_config_path, - const base::DictionaryValue& properties) { +void FakeShillIPConfigClient::AddIPConfig(const std::string& ip_config_path, + const base::Value& properties) { ipconfigs_.SetKey(ip_config_path, properties.Clone()); }
diff --git a/chromeos/dbus/shill/fake_shill_ipconfig_client.h b/chromeos/dbus/shill/fake_shill_ipconfig_client.h index faef091..9b7df20 100644 --- a/chromeos/dbus/shill/fake_shill_ipconfig_client.h +++ b/chromeos/dbus/shill/fake_shill_ipconfig_client.h
@@ -44,11 +44,11 @@ // ShillIPConfigClient::TestInterface overrides. void AddIPConfig(const std::string& ip_config_path, - const base::DictionaryValue& properties) override; + const base::Value& properties) override; private: // Dictionary of <ipconfig_path, property dictionaries> - base::DictionaryValue ipconfigs_; + base::Value ipconfigs_{base::Value::Type::DICTIONARY}; // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed.
diff --git a/chromeos/dbus/shill/fake_shill_manager_client.cc b/chromeos/dbus/shill/fake_shill_manager_client.cc index e1fe87b..ff88ddf 100644 --- a/chromeos/dbus/shill/fake_shill_manager_client.cc +++ b/chromeos/dbus/shill/fake_shill_manager_client.cc
@@ -774,7 +774,7 @@ const bool add_to_visible = true; // IPConfigs - base::DictionaryValue ipconfig_v4_dictionary; + base::Value ipconfig_v4_dictionary(base::Value::Type::DICTIONARY); ipconfig_v4_dictionary.SetKey(shill::kAddressProperty, base::Value("100.0.0.1")); ipconfig_v4_dictionary.SetKey(shill::kGatewayProperty, @@ -785,7 +785,7 @@ ipconfig_v4_dictionary.SetKey(shill::kWebProxyAutoDiscoveryUrlProperty, base::Value("http://wpad.com/wpad.dat")); ip_configs->AddIPConfig("ipconfig_v4_path", ipconfig_v4_dictionary); - base::DictionaryValue ipconfig_v6_dictionary; + base::Value ipconfig_v6_dictionary(base::Value::Type::DICTIONARY); ipconfig_v6_dictionary.SetKey(shill::kAddressProperty, base::Value("0:0:0:0:100:0:0:1")); ipconfig_v6_dictionary.SetKey(shill::kMethodProperty, @@ -977,7 +977,7 @@ shill::kRoamingStateProperty, base::Value(shill_roaming_state)); - base::DictionaryValue apn; + base::Value apn(base::Value::Type::DICTIONARY); apn.SetKey(shill::kApnProperty, base::Value("testapn")); apn.SetKey(shill::kApnNameProperty, base::Value("Test APN")); apn.SetKey(shill::kApnLocalizedNameProperty, @@ -985,15 +985,15 @@ apn.SetKey(shill::kApnUsernameProperty, base::Value("User1")); apn.SetKey(shill::kApnPasswordProperty, base::Value("password")); apn.SetKey(shill::kApnAuthenticationProperty, base::Value("chap")); - base::DictionaryValue apn2; + base::Value apn2(base::Value::Type::DICTIONARY); apn2.SetKey(shill::kApnProperty, base::Value("testapn2")); services->SetServiceProperty(kCellularServicePath, shill::kCellularApnProperty, apn); services->SetServiceProperty(kCellularServicePath, shill::kCellularLastGoodApnProperty, apn); base::ListValue apn_list; - apn_list.Append(apn.CreateDeepCopy()); - apn_list.Append(apn2.CreateDeepCopy()); + apn_list.Append(std::move(apn)); + apn_list.Append(std::move(apn2)); SetInitialDeviceProperty("/device/cellular1", shill::kCellularApnListProperty, apn_list); @@ -1008,10 +1008,10 @@ // Shill, "Provider.Type", etc keys are used, but when reading the values // "Provider" . "Type", etc keys are used. Here we are setting the values // that will be read (by the UI, tests, etc). - base::DictionaryValue provider_properties_openvpn; - provider_properties_openvpn.SetString(shill::kTypeProperty, - shill::kProviderOpenVpn); - provider_properties_openvpn.SetString(shill::kHostProperty, "vpn_host"); + base::Value provider_properties_openvpn(base::Value::Type::DICTIONARY); + provider_properties_openvpn.SetStringKey(shill::kTypeProperty, + shill::kProviderOpenVpn); + provider_properties_openvpn.SetStringKey(shill::kHostProperty, "vpn_host"); services->AddService("/service/vpn1", "vpn1_guid", "vpn1" /* name */, shill::kTypeVPN, state, add_to_visible); @@ -1019,10 +1019,10 @@ provider_properties_openvpn); profiles->AddService(shared_profile, "/service/vpn1"); - base::DictionaryValue provider_properties_l2tp; - provider_properties_l2tp.SetString(shill::kTypeProperty, - shill::kProviderL2tpIpsec); - provider_properties_l2tp.SetString(shill::kHostProperty, "vpn_host2"); + base::Value provider_properties_l2tp(base::Value::Type::DICTIONARY); + provider_properties_l2tp.SetStringKey(shill::kTypeProperty, + shill::kProviderL2tpIpsec); + provider_properties_l2tp.SetStringKey(shill::kHostProperty, "vpn_host2"); services->AddService("/service/vpn2", "vpn2_guid", "vpn2" /* name */, shill::kTypeVPN, shill::kStateIdle, add_to_visible); @@ -1031,16 +1031,13 @@ } // Additional device states - for (DevicePropertyMap::iterator iter1 = shill_device_property_map_.begin(); - iter1 != shill_device_property_map_.end(); ++iter1) { - std::string device_type = iter1->first; + for (const auto& iter1 : shill_device_property_map_) { + std::string device_type = iter1.first; std::string device_path = devices->GetDevicePathForType(device_type); - for (ShillPropertyMap::iterator iter2 = iter1->second.begin(); - iter2 != iter1->second.end(); ++iter2) { - SetInitialDeviceProperty(device_path, iter2->first, *(iter2->second)); - delete iter2->second; - } + for (const auto& iter2 : iter1.second) + SetInitialDeviceProperty(device_path, iter2.first, iter2.second); } + shill_device_property_map_.clear(); SortManagerServices(true); } @@ -1198,28 +1195,28 @@ return true; } else if (arg0 == "sim_lock") { bool locked = (arg1 == "1"); - base::DictionaryValue* simlock_dict = new base::DictionaryValue; - simlock_dict->SetBoolean(shill::kSIMLockEnabledProperty, true); + base::Value simlock_dict(base::Value::Type::DICTIONARY); + simlock_dict.SetBoolKey(shill::kSIMLockEnabledProperty, true); std::string lock_type = locked ? shill::kSIMLockPin : ""; - simlock_dict->SetString(shill::kSIMLockTypeProperty, lock_type); + simlock_dict.SetStringKey(shill::kSIMLockTypeProperty, lock_type); if (locked) { - simlock_dict->SetInteger(shill::kSIMLockRetriesLeftProperty, - FakeShillDeviceClient::kSimPinRetryCount); + simlock_dict.SetIntKey(shill::kSIMLockRetriesLeftProperty, + FakeShillDeviceClient::kSimPinRetryCount); } shill_device_property_map_[shill::kTypeCellular] - [shill::kSIMPresentProperty] = - new base::Value(true); + [shill::kSIMPresentProperty] = base::Value(true); shill_device_property_map_[shill::kTypeCellular] - [shill::kSIMLockStatusProperty] = simlock_dict; + [shill::kSIMLockStatusProperty] = + std::move(simlock_dict); shill_device_property_map_[shill::kTypeCellular] [shill::kTechnologyFamilyProperty] = - new base::Value(shill::kNetworkTechnologyGsm); + base::Value(shill::kNetworkTechnologyGsm); return true; } else if (arg0 == "sim_present") { bool present = (arg1 == "1"); - base::Value* sim_present = new base::Value(present); shill_device_property_map_[shill::kTypeCellular] - [shill::kSIMPresentProperty] = sim_present; + [shill::kSIMPresentProperty] = + base::Value(present); if (!present) shill_initial_state_map_[shill::kTypeCellular] = kNetworkDisabled; return true;
diff --git a/chromeos/dbus/shill/fake_shill_manager_client.h b/chromeos/dbus/shill/fake_shill_manager_client.h index ddc1946..835448f 100644 --- a/chromeos/dbus/shill/fake_shill_manager_client.h +++ b/chromeos/dbus/shill/fake_shill_manager_client.h
@@ -149,7 +149,7 @@ // Current network throttling status. NetworkThrottlingStatus network_throttling_status_ = {false, 0, 0}; - typedef std::map<std::string, base::Value*> ShillPropertyMap; + typedef std::map<std::string, base::Value> ShillPropertyMap; typedef std::map<std::string, ShillPropertyMap> DevicePropertyMap; DevicePropertyMap shill_device_property_map_;
diff --git a/chromeos/dbus/shill/shill_ipconfig_client.h b/chromeos/dbus/shill/shill_ipconfig_client.h index 97365264..17c24d4 100644 --- a/chromeos/dbus/shill/shill_ipconfig_client.h +++ b/chromeos/dbus/shill/shill_ipconfig_client.h
@@ -14,8 +14,7 @@ namespace base { class Value; -class DictionaryValue; -} // namespace base +} namespace dbus { class Bus; @@ -35,7 +34,7 @@ public: // Adds an IPConfig entry. virtual void AddIPConfig(const std::string& ip_config_path, - const base::DictionaryValue& properties) = 0; + const base::Value& properties) = 0; protected: virtual ~TestInterface() {}
diff --git a/chromeos/profiles/orderfile.newest.txt b/chromeos/profiles/orderfile.newest.txt index c7a1d6ef1..29e34504 100644 --- a/chromeos/profiles/orderfile.newest.txt +++ b/chromeos/profiles/orderfile.newest.txt
@@ -1 +1 @@ -chromeos-chrome-orderfile-field-88-4277.0-1602497703-benchmark-88.0.4288.0-r1.orderfile.xz +chromeos-chrome-orderfile-field-88-4277.0-1602497703-benchmark-88.0.4294.0-r1.orderfile.xz
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb index df09da4..fbbe21c 100644 --- a/chromeos/strings/chromeos_strings_as.xtb +++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">পাছৱর্ড সলনি কৰাৰ সময় উকলিছে</translation> <translation id="2049639323467105390">এই ডিভাইচটো <ph name="DOMAIN" />এ পৰিচালনা কৰে।</translation> <translation id="2161394479394250669">প্ৰিণ্টিঙৰ কাৰ্য বাতিল কৰক</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> <translation id="2338501278241028356">ওচৰ-পাজৰৰ ডিভাইচসমূহ চাবলৈ ব্লুটুথ অন কৰক</translation> <translation id="2375079107209812402"><ph name="ATTEMPTS_LEFT" /> টা প্ৰয়াস বাকী আছে</translation> <translation id="2517472476991765520">স্কেন কৰক</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb index 536b0cb..476eac9 100644 --- a/chromeos/strings/chromeos_strings_en-GB.xtb +++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="en-GB"> <translation id="1018656279737460067">Cancelled</translation> <translation id="1195447618553298278">Unknown error.</translation> +<translation id="1330426557709298164">JPG</translation> <translation id="1413240736185167732">Failed – Filter failed</translation> <translation id="1468664791493211953">Offers</translation> <translation id="1478594628797167447">Scanner</translation> @@ -46,6 +47,7 @@ <translation id="4227825898293920515">Password expires in <ph name="TIME" /></translation> <translation id="4238516577297848345">No print jobs in progress</translation> <translation id="4297501883039923494">Stopped – unknown error</translation> +<translation id="4382484599443659549">PDF</translation> <translation id="4429881212383817840">Kerberos ticket expires soon</translation> <translation id="445059817448385655">Old password</translation> <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> out of <ph name="TOTAL_PAGE_NUMBER" />. Press Enter to cancel the print job.</translation> @@ -73,6 +75,7 @@ <translation id="6058625436358447366">To finish, enter your old and new passwords</translation> <translation id="6106186594183574873">To finish, enter your old password</translation> <translation id="6146993107019042706">To finish, enter your new password</translation> +<translation id="6147514244879357420">PNG</translation> <translation id="636850387210749493">Enterprise enrolment</translation> <translation id="649050271426829538">Stopped – paper jam</translation> <translation id="6517239166834772319">Explore</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb index 007a798..65b898e 100644 --- a/chromeos/strings/chromeos_strings_es-419.xtb +++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">Está pendiente el cambio de contraseña</translation> <translation id="2049639323467105390"><ph name="DOMAIN" /> administra esta cuenta.</translation> <translation id="2161394479394250669">Cancelar el trabajo de impresión</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> <translation id="2338501278241028356">Activar Bluetooth para buscar los dispositivos cercanos</translation> <translation id="2375079107209812402">Intentos restantes: <ph name="ATTEMPTS_LEFT" /></translation> <translation id="2517472476991765520">Buscar</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb index 211a8ad..b6d1a28 100644 --- a/chromeos/strings/chromeos_strings_gu.xtb +++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">પાસવર્ડ બદલવાની તારીખ નીકળી ગઈ છે</translation> <translation id="2049639323467105390">આ ઉપકરણને <ph name="DOMAIN" /> દ્વારા મેનેજ કરવામાં આવેલું છે.</translation> <translation id="2161394479394250669">પ્રિન્ટ જોબ રદ કરો</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> <translation id="2338501278241028356">નજીકનાં ડિવાઇસ શોધવા માટે Bluetooth ચાલુ કરો</translation> <translation id="2375079107209812402"><ph name="ATTEMPTS_LEFT" /> પ્રયત્ન બાકી</translation> <translation id="2517472476991765520">સ્કૅન કરો</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb index 794530e..ed2819d 100644 --- a/chromeos/strings/chromeos_strings_iw.xtb +++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">המועד האחרון לשינוי הסיסמה כבר חלף</translation> <translation id="2049639323467105390">מכשיר זה מנוהל על ידי <ph name="DOMAIN" />.</translation> <translation id="2161394479394250669">ביטול משימת ההדפסה</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> DPI</translation> <translation id="2338501278241028356">יש להפעיל את Bluetooth כדי לאתר מכשירים קרובים</translation> <translation id="2375079107209812402">נותרו <ph name="ATTEMPTS_LEFT" /> ניסיונות</translation> <translation id="2517472476991765520">סריקה</translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb index 654b1397..9d762d94 100644 --- a/chromeos/strings/chromeos_strings_ka.xtb +++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="ka"> <translation id="1018656279737460067">გაუქმდა</translation> <translation id="1195447618553298278">უცნობი შეცდომა.</translation> +<translation id="1330426557709298164">JPG</translation> <translation id="1413240736185167732">ვერ მოხერხდა — ფილტრის ხარვეზი</translation> <translation id="1468664791493211953">შემოთავაზებები</translation> <translation id="1478594628797167447">სკანერი</translation> @@ -46,6 +47,7 @@ <translation id="4227825898293920515">პაროლი ძალაშია <ph name="TIME" /></translation> <translation id="4238516577297848345">ბეჭდვის მიმდინარე დავალებები არ არის</translation> <translation id="4297501883039923494">გაჩერდა — უცნობი შეცდომა</translation> +<translation id="4382484599443659549">PDF</translation> <translation id="4429881212383817840">Kerberos ბილეთის მოქმედების ვადა მალე იწურება</translation> <translation id="445059817448385655">ძველი პაროლი</translation> <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> / <ph name="TOTAL_PAGE_NUMBER" />. გთხოვთ დააჭიროთ შეყვანის ღილაკს ამ ბეჭდვის დავალების გასაუქმებლად.</translation> @@ -73,6 +75,7 @@ <translation id="6058625436358447366">დასასრულებლად შეიყვანეთ თქვენი ძველი და ახალი პაროლები</translation> <translation id="6106186594183574873">დასასრულებლად შეიყვანეთ თქვენი ძველი პაროლი</translation> <translation id="6146993107019042706">დასასრულებლად შეიყვანეთ თქვენი ახალი პაროლი</translation> +<translation id="6147514244879357420">PNG</translation> <translation id="636850387210749493">ორგანიზაციის რეგისტრაცია</translation> <translation id="649050271426829538">გაჩერდა — ქაღალდი გაიჭედა</translation> <translation id="6517239166834772319">გაცნობა</translation> @@ -82,6 +85,7 @@ <translation id="6747215703636344499">გაჩერდა — გამომტანი სავსეა</translation> <translation id="7162487448488904999">გალერეა</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">ფაილის ტიპი</translation> <translation id="7561454561030345039">ამ მოქმედებას მართავს თქვენი ადმინისტრატორი</translation> <translation id="7658239707568436148">გაუქმება</translation> <translation id="7690294790491645610">დაადასტურეთ ახალი პაროლი</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index 20526b7..eed10ebd6 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="ml"> <translation id="1018656279737460067">റദ്ദാക്കി</translation> <translation id="1195447618553298278">അജ്ഞാത പിശക്.</translation> +<translation id="1330426557709298164">JPG</translation> <translation id="1413240736185167732">പ്രിന്റ് ചെയ്യാനായില്ല - ഫിൽട്ടർ പ്രവർത്തിക്കുന്നില്ല</translation> <translation id="1468664791493211953">ഓഫറുകൾ</translation> <translation id="1478594628797167447">സ്കാനർ</translation> @@ -46,6 +47,7 @@ <translation id="4227825898293920515">പാസ്വേഡ് <ph name="TIME" /> സമയത്തിനുള്ളിൽ കാലഹരണപ്പെടും</translation> <translation id="4238516577297848345">പ്രിന്റ് ജോലികളൊന്നും പുരോഗമിക്കുന്നില്ല</translation> <translation id="4297501883039923494">പ്രിന്റ് ജോലി നിർത്തി - അജ്ഞാതമായ പിശക്</translation> +<translation id="4382484599443659549">PDF</translation> <translation id="4429881212383817840">Kerberos ടിക്കറ്റ് ഉടൻ കാലഹരണപ്പെടും</translation> <translation id="445059817448385655">പഴയ പാസ്വേഡ്</translation> <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, ആകെയുള്ള <ph name="TOTAL_PAGE_NUMBER" /> എണ്ണത്തിൽ <ph name="PRINTED_PAGE_NUMBER" /> എണ്ണം. പ്രിന്റ് ജോലി റദ്ദാക്കാൻ എന്റർ അമർത്തുക.</translation> @@ -72,6 +74,7 @@ <translation id="6058625436358447366">പൂർത്തിയാക്കാൻ നിങ്ങളുടെ പഴയ പാസ്വേഡും പുതിയ പാസ്വേഡും നൽകുക</translation> <translation id="6106186594183574873">പൂർത്തിയാക്കാൻ നിങ്ങളുടെ പഴയ പാസ്വേഡ് നൽകുക</translation> <translation id="6146993107019042706">പൂർത്തിയാക്കാൻ നിങ്ങളുടെ പുതിയ പാസ്വേഡ് നൽകുക</translation> +<translation id="6147514244879357420">PNG</translation> <translation id="636850387210749493">സംരംഭ വിവരപ്പട്ടിക</translation> <translation id="649050271426829538">പ്രിന്റ് ജോലി നിർത്തി - പേപ്പർ ജാമായി</translation> <translation id="6517239166834772319">അടുത്തറിയുക</translation>
diff --git a/chromeos/strings/chromeos_strings_mn.xtb b/chromeos/strings/chromeos_strings_mn.xtb index c7ace7a9..46ff97cc 100644 --- a/chromeos/strings/chromeos_strings_mn.xtb +++ b/chromeos/strings/chromeos_strings_mn.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="mn"> <translation id="1018656279737460067">Цуцлагдсан байна</translation> <translation id="1195447618553298278">Үл танигдах алдаа гаргасан байна</translation> +<translation id="1330426557709298164">JPG</translation> <translation id="1413240736185167732">Амжилтгүй болсон - Шүүж чадсангүй</translation> <translation id="1468664791493211953">Саналууд</translation> <translation id="1478594628797167447">Скан хийгч</translation> @@ -46,6 +47,7 @@ <translation id="4227825898293920515">Нууц үгний хугацаа <ph name="TIME" />-н дотор дуусна</translation> <translation id="4238516577297848345">Хэвлэж байгаа ажил алга</translation> <translation id="4297501883039923494">Зогссон - Тодорхойгүй алдаа</translation> +<translation id="4382484599443659549">PDF</translation> <translation id="4429881212383817840">Kerberos тасалбарын хугацаа удахгүй дуусна</translation> <translation id="445059817448385655">Хуучин нууц үг</translation> <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="TOTAL_PAGE_NUMBER" />-с <ph name="PRINTED_PAGE_NUMBER" />. Хэвлэх ажлыг цуцлахын тулд enter дээр дарна уу.</translation> @@ -73,6 +75,7 @@ <translation id="6058625436358447366">Дуусгахын тулд хуучин болон шинэ нууц үгээ оруулна уу</translation> <translation id="6106186594183574873">Дуусгахын тулд хуучин нууц үгээ оруулна уу</translation> <translation id="6146993107019042706">Дуусгахын тулд шинэ нууц үгээ оруулна уу</translation> +<translation id="6147514244879357420">PNG</translation> <translation id="636850387210749493">Байгууллагын бүртгэл</translation> <translation id="649050271426829538">Зогссон - Цаас гацсан</translation> <translation id="6517239166834772319">Судлах</translation> @@ -82,6 +85,7 @@ <translation id="6747215703636344499">Зогссон - Гаралт дүүрсэн</translation> <translation id="7162487448488904999">Gallery</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Файлын төрөл</translation> <translation id="7561454561030345039">Энэ үйлдлийг таны администратор удирддаг</translation> <translation id="7658239707568436148">Болих</translation> <translation id="7690294790491645610">Шинэ нууц үг баталгаажуулна уу</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb index ce2f945..4bb76f2c 100644 --- a/chromeos/strings/chromeos_strings_nl.xtb +++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="nl"> <translation id="1018656279737460067">Geannuleerd</translation> <translation id="1195447618553298278">Onbekende fout</translation> +<translation id="1330426557709298164">Jpg</translation> <translation id="1413240736185167732">Mislukt - Filter mislukt</translation> <translation id="1468664791493211953">Aanbiedingen</translation> <translation id="1478594628797167447">Scanner</translation> @@ -46,6 +47,7 @@ <translation id="4227825898293920515">Wachtwoord verloopt over <ph name="TIME" /></translation> <translation id="4238516577297848345">Er worden geen afdruktaken uitgevoerd</translation> <translation id="4297501883039923494">Gestopt: onbekende fout</translation> +<translation id="4382484599443659549">Pdf</translation> <translation id="4429881212383817840">Kerberos-ticket verloopt binnenkort</translation> <translation id="445059817448385655">Oud wachtwoord</translation> <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> van <ph name="TOTAL_PAGE_NUMBER" />. Druk op Enter om de afdruktaak te annuleren.</translation> @@ -73,6 +75,7 @@ <translation id="6058625436358447366">Geef je oude en nieuwe wachtwoord op om te voltooien</translation> <translation id="6106186594183574873">Geef je oude wachtwoord op om te voltooien</translation> <translation id="6146993107019042706">Geef je nieuwe wachtwoord opnieuw op om te voltooien</translation> +<translation id="6147514244879357420">Png</translation> <translation id="636850387210749493">Aanmelding voor Enterprise</translation> <translation id="649050271426829538">Gestopt: papierstoring</translation> <translation id="6517239166834772319">Ontdekken</translation>
diff --git a/chromeos/strings/chromeos_strings_or.xtb b/chromeos/strings/chromeos_strings_or.xtb index 4d7772e2..7c8b373 100644 --- a/chromeos/strings/chromeos_strings_or.xtb +++ b/chromeos/strings/chromeos_strings_or.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">ପାସ୍ୱାର୍ଡ ପରିବର୍ତ୍ତନର ସମୟ ବିଳମ୍ବ ହୋଇଯାଇଛି</translation> <translation id="2049639323467105390">ଏହି ଡିଭାଇସ୍ <ph name="DOMAIN" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି।</translation> <translation id="2161394479394250669">ପ୍ରିଣ୍ଟ କାର୍ଯ୍ୟକୁ ବାତିଲ୍ କରନ୍ତୁ</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> <translation id="2338501278241028356">ଆଖପାଖରେ ଥିବା ଡିଭାଇସ୍ଗୁଡ଼ିକୁ ଖୋଜିବାକୁ ବ୍ଲୁଟୁଥ୍ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="2375079107209812402"><ph name="ATTEMPTS_LEFT" />ଟି ପ୍ରଚେଷ୍ଟା ବାକି ଅଛି</translation> <translation id="2517472476991765520">ସ୍କାନ୍ କରନ୍ତୁ</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb index e981901..4cecbe2 100644 --- a/chromeos/strings/chromeos_strings_sw.xtb +++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="sw"> <translation id="1018656279737460067">Imeghairiwa</translation> <translation id="1195447618553298278">Hitilafu isiyojulikana.</translation> +<translation id="1330426557709298164">JPG</translation> <translation id="1413240736185167732">Haijakamilika - Kichujio kimeshindwa kufanya kazi</translation> <translation id="1468664791493211953">Ofa</translation> <translation id="1478594628797167447">Kichanganuzi</translation> @@ -46,6 +47,7 @@ <translation id="4227825898293920515">Muda wa kutumia nenosiri utaisha baada ya <ph name="TIME" /></translation> <translation id="4238516577297848345">Hakuna kazi za kuchapisha zinazoendelea</translation> <translation id="4297501883039923494">Imesimama - Hitilafu isiyojulikana</translation> +<translation id="4382484599443659549">PDF</translation> <translation id="4429881212383817840">Muda wa kutumia tiketi ya Kerberos unakaribia kuisha</translation> <translation id="445059817448385655">Nenosiri la awali</translation> <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> kati ya <ph name="TOTAL_PAGE_NUMBER" />. Bonyeza 'Enter' ili ughairi kazi ya kuchapisha.</translation> @@ -72,6 +74,7 @@ <translation id="6058625436358447366">Ili ukamilishe, weka nenosiri lako la awali na lile jipya</translation> <translation id="6106186594183574873">Ili ukamilishe, weka nenosiri lako la awali</translation> <translation id="6146993107019042706">Ili ukamilishe, weka nenosiri jipya</translation> +<translation id="6147514244879357420">PNG</translation> <translation id="636850387210749493">Usajili wa biashara</translation> <translation id="649050271426829538">Imesimama - Karatasi imekwama</translation> <translation id="6517239166834772319">Gundua</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb index 7656d3f..b6a1f4e 100644 --- a/chromeos/strings/chromeos_strings_te.xtb +++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="te"> <translation id="1018656279737460067">రద్దయింది</translation> <translation id="1195447618553298278">తెలియని ఎర్రర్.</translation> +<translation id="1330426557709298164">JPG</translation> <translation id="1413240736185167732">విఫలమైంది - ఫిల్టర్ విఫలమైంది</translation> <translation id="1468664791493211953">ఆఫర్లు</translation> <translation id="1478594628797167447">స్కానర్</translation> @@ -46,6 +47,7 @@ <translation id="4227825898293920515"><ph name="TIME" />లో పాస్వర్డ్ గడువు ముగుస్తుంది</translation> <translation id="4238516577297848345">ప్రింట్ టాస్క్లు ఏవీ ప్రోగ్రెస్లో లేవు</translation> <translation id="4297501883039923494">ఆగిపోయింది - తెలియని ఎర్రర్</translation> +<translation id="4382484599443659549">PDF</translation> <translation id="4429881212383817840">Kerberos టిక్కెట్ గడువు త్వరలో ముగుస్తుంది</translation> <translation id="445059817448385655">పాత పాస్వర్డ్</translation> <translation id="4627232916386272576"><ph name="TOTAL_PAGE_NUMBER" />లో <ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />. ప్రింట్ టాస్క్ను రద్దు చేయడానికి ఎంటర్ నొక్కండి.</translation> @@ -72,6 +74,7 @@ <translation id="6058625436358447366">దీనిని ముగించడానికి, మీ పాత, కొత్త పాస్వర్డ్లను నమోదు చేయండి</translation> <translation id="6106186594183574873">దీనిని ముగించడానికి, మీ పాత పాస్వర్డ్ను నమోదు చేయండి</translation> <translation id="6146993107019042706">దీనిని ముగించడానికి, మీ కొత్త పాస్వర్డ్ను నమోదు చేయండి</translation> +<translation id="6147514244879357420">PNG</translation> <translation id="636850387210749493">ఎంటర్ప్రైజ్ నమోదు</translation> <translation id="649050271426829538">ఆగిపోయింది - కాగితం జామ్ అయింది</translation> <translation id="6517239166834772319">అన్వేషణ</translation>
diff --git a/chromeos/strings/chromeos_strings_th.xtb b/chromeos/strings/chromeos_strings_th.xtb index 455c24a9..2ff65ee 100644 --- a/chromeos/strings/chromeos_strings_th.xtb +++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="th"> <translation id="1018656279737460067">ยกเลิกแล้ว</translation> <translation id="1195447618553298278">ข้อผิดพลาดที่ไม่รู้จัก</translation> +<translation id="1330426557709298164">JPG</translation> <translation id="1413240736185167732">ไม่สำเร็จ - ตัวกรองล้มเหลว</translation> <translation id="1468664791493211953">ข้อเสนอ</translation> <translation id="1478594628797167447">เครื่องสแกน</translation> @@ -46,6 +47,7 @@ <translation id="4227825898293920515">รหัสผ่านจะหมดอายุในอีก <ph name="TIME" /></translation> <translation id="4238516577297848345">ไม่มีงานที่กำลังพิมพ์</translation> <translation id="4297501883039923494">หยุดพิมพ์ - ข้อผิดพลาดที่ไม่รู้จัก</translation> +<translation id="4382484599443659549">PDF</translation> <translation id="4429881212383817840">ตั๋ว Kerberos กำลังจะหมดอายุ</translation> <translation id="445059817448385655">รหัสผ่านเดิม</translation> <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> จาก <ph name="TOTAL_PAGE_NUMBER" /> หน้า กด Enter เพื่อยกเลิกงานพิมพ์</translation> @@ -73,6 +75,7 @@ <translation id="6058625436358447366">ป้อนรหัสผ่านเดิมและรหัสผ่านใหม่เพื่อเปลี่ยนรหัสผ่านให้เสร็จ</translation> <translation id="6106186594183574873">ป้อนรหัสผ่านเดิมเพื่อเปลี่ยนรหัสผ่านให้เสร็จ</translation> <translation id="6146993107019042706">ป้อนรหัสผ่านใหม่เพื่อเปลี่ยนรหัสผ่านให้เสร็จ</translation> +<translation id="6147514244879357420">PNG</translation> <translation id="636850387210749493">การลงทะเบียนองค์กร</translation> <translation id="649050271426829538">หยุดพิมพ์ - กระดาษติด</translation> <translation id="6517239166834772319">สำรวจ</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb index 1582d6f9..6b6c2fcb 100644 --- a/chromeos/strings/chromeos_strings_ur.xtb +++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">پاس ورڈ تبدیل کرنے میں تاخیر ہو گئی ہے</translation> <translation id="2049639323467105390">یہ آلہ <ph name="DOMAIN" /> کے زیر انتظام ہے۔</translation> <translation id="2161394479394250669">پرنٹ جاب منسوخ کریں</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> <translation id="2338501278241028356">قریبی آلات دریافت کرنے کیلئے بلوٹوتھ آن کریں</translation> <translation id="2375079107209812402"><ph name="ATTEMPTS_LEFT" /> کوششیں باقی ہیں</translation> <translation id="2517472476991765520">اسکین کریں</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb index 0f3e8e9..a7b37ae9 100644 --- a/chromeos/strings/chromeos_strings_uz.xtb +++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="uz"> <translation id="1018656279737460067">Bekor qilindi</translation> <translation id="1195447618553298278">Noma’lum xatolik.</translation> +<translation id="1330426557709298164">JPG</translation> <translation id="1413240736185167732">Bajarilmadi - Filtr ishlamadi</translation> <translation id="1468664791493211953">Takliflar</translation> <translation id="1478594628797167447">Skaner</translation> @@ -46,6 +47,7 @@ <translation id="4227825898293920515">Parol muddati tugashiga <ph name="TIME" /> qoldi</translation> <translation id="4238516577297848345">Hozir hech nima chop etilmayapti</translation> <translation id="4297501883039923494">Toʻxtatildi – Notanish xato</translation> +<translation id="4382484599443659549">PDF</translation> <translation id="4429881212383817840">Kerberos chiptasi amal qilish muddati tezda tugaydi</translation> <translation id="445059817448385655">Eski parol</translation> <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" />/<ph name="TOTAL_PAGE_NUMBER" />. Chop etilishini bekor qilish uchun Enter tugmasini bosing.</translation> @@ -73,6 +75,7 @@ <translation id="6058625436358447366">Yakunlash uchun eski va yangi parollarni kiriting</translation> <translation id="6106186594183574873">Yakunlash uchun eski parolni kiriting</translation> <translation id="6146993107019042706">Yakunlash uchun yangi parolni kiriting</translation> +<translation id="6147514244879357420">PNG</translation> <translation id="636850387210749493">Korporativ domen ro‘yxatidan o‘tish</translation> <translation id="649050271426829538">Toʻxtatildi – Qogʻoz tiqilib qoldi</translation> <translation id="6517239166834772319">Tanishuv</translation> @@ -82,6 +85,7 @@ <translation id="6747215703636344499">Toʻxtatildi – Boʻsh joy qolmadi</translation> <translation id="7162487448488904999">Galereya</translation> <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation> +<translation id="7359657277149375382">Fayl turi</translation> <translation id="7561454561030345039">Bu sozlama administrator tomonidan boshqariladi</translation> <translation id="7658239707568436148">Bekor qilish</translation> <translation id="7690294790491645610">Yangi parolni tasdiqlang.</translation>
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb index fd947233..f3a75b7 100644 --- a/chromeos/strings/chromeos_strings_vi.xtb +++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">Đã quá hạn thay đổi mật khẩu</translation> <translation id="2049639323467105390">Thiết bị này được <ph name="DOMAIN" /> quản lý.</translation> <translation id="2161394479394250669">Hủy lệnh in</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> <translation id="2338501278241028356">Bật Bluetooth để khám phá các thiết bị lân cận</translation> <translation id="2375079107209812402">Còn <ph name="ATTEMPTS_LEFT" /> lần thử</translation> <translation id="2517472476991765520">Quét</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-CN.xtb b/chromeos/strings/chromeos_strings_zh-CN.xtb index d7e4935..7469c7c6 100644 --- a/chromeos/strings/chromeos_strings_zh-CN.xtb +++ b/chromeos/strings/chromeos_strings_zh-CN.xtb
@@ -18,6 +18,7 @@ <translation id="1979103255016296513">密码更改期限已过</translation> <translation id="2049639323467105390">此设备由 <ph name="DOMAIN" /> 管理。</translation> <translation id="2161394479394250669">取消打印任务</translation> +<translation id="2326139988748364651"><ph name="RESOLUTION_VALUE" /> dpi</translation> <translation id="2338501278241028356">开启蓝牙以发现附近的设备</translation> <translation id="2375079107209812402">剩余尝试次数:<ph name="ATTEMPTS_LEFT" /></translation> <translation id="2517472476991765520">扫描</translation>
diff --git a/components/autofill/android/BUILD.gn b/components/autofill/android/BUILD.gn index 150a6db..b0b84c78 100644 --- a/components/autofill/android/BUILD.gn +++ b/components/autofill/android/BUILD.gn
@@ -4,6 +4,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") +import("//tools/grit/grit_rule.gni") java_strings_grd("autofill_strings_grd") { grd_file = "java/strings/autofill_strings.grd"
diff --git a/components/autofill_assistant/browser/chip.h b/components/autofill_assistant/browser/chip.h index 650935d..965915bf 100644 --- a/components/autofill_assistant/browser/chip.h +++ b/components/autofill_assistant/browser/chip.h
@@ -34,6 +34,9 @@ // Whether this chip is sticky. A sticky chip will be a candidate to be // displayed in the header if the peek mode of the sheet is HANDLE_HEADER. bool sticky = false; + + // Whether this chip should be displayed in the carousel. + bool visible = true; }; // Guarantees that the Chip.type of all chips is set to a sensible value.
diff --git a/components/autofill_assistant/browser/controller.cc b/components/autofill_assistant/browser/controller.cc index b6c41de..904dc3f 100644 --- a/components/autofill_assistant/browser/controller.cc +++ b/components/autofill_assistant/browser/controller.cc
@@ -380,6 +380,19 @@ SetDefaultChipType(user_actions.get()); } user_actions_ = std::move(user_actions); + SetVisibilityAndUpdateUserActions(); +} + +void Controller::SetVisibilityAndUpdateUserActions() { + // All non-cancel chips should be hidden while the keyboard is showing. + if (user_actions_) { + for (UserAction& user_action : *user_actions_) { + if (user_action.chip().type != CANCEL_ACTION) { + user_action.chip().visible = !is_keyboard_showing_; + } + } + } + for (ControllerObserver& observer : observers_) { observer.OnUserActionsChanged(GetUserActions()); } @@ -2006,6 +2019,11 @@ return service_ ? service_->IsLiteService() : false; } +void Controller::OnKeyboardVisibilityChanged(bool visible) { + is_keyboard_showing_ = visible; + SetVisibilityAndUpdateUserActions(); +} + ElementArea* Controller::touchable_element_area() { if (!touchable_element_area_) { touchable_element_area_ = std::make_unique<ElementArea>(this);
diff --git a/components/autofill_assistant/browser/controller.h b/components/autofill_assistant/browser/controller.h index b755b62..ebaf6d80 100644 --- a/components/autofill_assistant/browser/controller.h +++ b/components/autofill_assistant/browser/controller.h
@@ -251,6 +251,7 @@ bool ShouldShowOverlay() const override; void ShutdownIfNecessary() override; bool IsRunningLiteScript() const override; + void OnKeyboardVisibilityChanged(bool visible) override; private: friend ControllerTest; @@ -354,6 +355,8 @@ bool StateNeedsUI(AutofillAssistantState state); + void SetVisibilityAndUpdateUserActions(); + ClientSettings settings_; Client* const client_; const base::TickClock* const tick_clock_; @@ -521,6 +524,7 @@ bool expand_sheet_for_prompt_action_ = true; std::vector<std::string> browse_domains_allowlist_; bool browse_mode_invisible_ = false; + bool is_keyboard_showing_ = false; // Only set during a ShowGenericUiAction. std::unique_ptr<GenericUserInterfaceProto> generic_user_interface_;
diff --git a/components/autofill_assistant/browser/ui_delegate.h b/components/autofill_assistant/browser/ui_delegate.h index cbe589f4..0b552a88 100644 --- a/components/autofill_assistant/browser/ui_delegate.h +++ b/components/autofill_assistant/browser/ui_delegate.h
@@ -263,6 +263,9 @@ // Returns whether the UI delegate is currently running a lite script or not. virtual bool IsRunningLiteScript() const = 0; + // Called when the visibility of the keyboard has changed. + virtual void OnKeyboardVisibilityChanged(bool visible) = 0; + protected: UiDelegate() = default; };
diff --git a/components/browser_ui/strings/android/BUILD.gn b/components/browser_ui/strings/android/BUILD.gn index f7aca7a..d99f4d81 100644 --- a/components/browser_ui/strings/android/BUILD.gn +++ b/components/browser_ui/strings/android/BUILD.gn
@@ -2,8 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//build/config/android/rules.gni") import("//build/config/locales.gni") +import("//tools/grit/grit_rule.gni") java_strings_grd("browser_ui_strings_grd") { grd_file = "browser_ui_strings.grd"
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb index 389b01bd..5772188 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_en-GB.xtb
@@ -38,6 +38,7 @@ <translation id="1994173015038366702">Site URL</translation> <translation id="2025115093177348061">Augmented reality</translation> <translation id="2030769033451695672">Tap to return to <ph name="URL_OF_THE_CURRENT_TAB" /></translation> +<translation id="2054665754582400095">Your presence</translation> <translation id="2079545284768500474">Undo</translation> <translation id="2091887806945687916">Sound</translation> <translation id="2107397443965016585">Ask before allowing sites to play protected content (recommended)</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 56dc1d0..6d4ce8c 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
@@ -5,7 +5,7 @@ <translation id="1044891598689252897">אתרים יפעלו כרגיל</translation> <translation id="1124090076051167250">הפעולה הזאת תמחק <ph name="DATASIZE" /> של נתונים וקובצי cookie שאתרים ואפליקציות שמרו במסך הבית.</translation> <translation id="1124772482545689468">משתמש</translation> -<translation id="1178581264944972037">השהה</translation> +<translation id="1178581264944972037">השהיה</translation> <translation id="1181037720776840403">הסרה</translation> <translation id="1195941046451948919">ההרשאות שניתנו לאתר הזה יאופסו להגדרת ברירת המחדל. להמשיך?</translation> <translation id="1201402288615127009">הבא</translation> @@ -145,7 +145,7 @@ <translation id="5335288049665977812">אפשר לאתרים להריץ JavaScript (מומלץ)</translation> <translation id="534295439873310000">מכשירי NFC</translation> <translation id="5354152178998424783">הפעולה הזו תגרום למחיקת <ph name="DATASIZE" /> של נתונים וקובצי cookie שנשמרו על ידי אתרים.</translation> -<translation id="5384883051496921101">אתר זה עומד לשתף מידע עם אפליקציה מחוץ למצב גלישה בסתר.</translation> +<translation id="5384883051496921101">אתר זה עומד לשתף מידע עם אפליקציה מחוץ למצב אנונימי.</translation> <translation id="5391532827096253100">החיבור שלך לאתר הזה לא מאובטח. פרטי האתר</translation> <translation id="5394307150471348411">{DETAIL_COUNT,plural, =1{(ועוד 1)}two{(ועוד #)}many{(ועוד #)}other{(ועוד #)}}</translation> <translation id="5403592356182871684">שמות</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 90c20114..6862aeb 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
@@ -38,6 +38,7 @@ <translation id="1994173015038366702">საიტის URL</translation> <translation id="2025115093177348061">აუგმენტური რეალობა</translation> <translation id="2030769033451695672">შეეხეთ <ph name="URL_OF_THE_CURRENT_TAB" />-ზე დასაბრუნებლად</translation> +<translation id="2054665754582400095">თქვენი დასწრება</translation> <translation id="2079545284768500474">მოქმედების გაუქმება</translation> <translation id="2091887806945687916">ხმა</translation> <translation id="2107397443965016585">შეკითხვა საიტებისთვის დაცული კონტენტის დაკვრის დაშვებამდე (რეკომენდებული)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb index 0887983..92718fd0 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb
@@ -38,6 +38,7 @@ <translation id="1994173015038366702">സൈറ്റ് URL</translation> <translation id="2025115093177348061">അനുബന്ധയാഥാർത്ഥ്യം</translation> <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> എന്നതിലേക്ക് മടങ്ങാൻ ടാപ്പ് ചെയ്യുക</translation> +<translation id="2054665754582400095">നിങ്ങളുടെ സാന്നിധ്യം</translation> <translation id="2079545284768500474">പഴയപടിയാക്കുക</translation> <translation id="2091887806945687916">ശബ്ദം</translation> <translation id="2107397443965016585">പരിരക്ഷിത ഉള്ളടക്കം പ്ലേ ചെയ്യാൻ സൈറ്റുകളെ അനുവദിക്കുന്നതിന് മുമ്പ് ചോദിക്കുക (ശുപാർശചെയ്തത്)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb index 46e8bb9..750632e9 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb
@@ -38,6 +38,7 @@ <translation id="1994173015038366702">Сайтын URL</translation> <translation id="2025115093177348061">Өргөтгөсөн бодит орчин</translation> <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> руу буцах бол товшино уу</translation> +<translation id="2054665754582400095">Таны байгаа эсэх</translation> <translation id="2079545284768500474">Буцаах</translation> <translation id="2091887806945687916">Дуу</translation> <translation id="2107397443965016585">Сайтад хамгаалагдсан контент тоглуулахыг зөвшөөрөхөөс өмнө асуух (санал болгосон)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb index 6212b1e9..b5151be 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_nl.xtb
@@ -38,6 +38,7 @@ <translation id="1994173015038366702">Site-URL</translation> <translation id="2025115093177348061">Augmented reality</translation> <translation id="2030769033451695672">Tik om terug te gaan naar <ph name="URL_OF_THE_CURRENT_TAB" /></translation> +<translation id="2054665754582400095">Je aanwezigheid</translation> <translation id="2079545284768500474">Ongedaan maken</translation> <translation id="2091887806945687916">Geluid</translation> <translation id="2107397443965016585">Vragen voordat sites beschermde content mogen afspelen (aanbevolen)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb index 031ab02..a1e66e6 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb
@@ -38,6 +38,7 @@ <translation id="1994173015038366702">URL ya Tovuti</translation> <translation id="2025115093177348061">Uhalisia ulioboreshwa</translation> <translation id="2030769033451695672">Gusa ili urudi kwenye <ph name="URL_OF_THE_CURRENT_TAB" /></translation> +<translation id="2054665754582400095">Maelezo ya wakati upo mtandaoni</translation> <translation id="2079545284768500474">Tendua</translation> <translation id="2091887806945687916">Sauti</translation> <translation id="2107397443965016585">Iulize kabla ya kuruhusu tovuti kucheza maudhui yanayolindwa (inapendekezwa)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb index eb81fdb..ef8443db 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb
@@ -38,6 +38,7 @@ <translation id="1994173015038366702">సైట్ URL</translation> <translation id="2025115093177348061">అగ్మెంటెడ్ రియాలిటీ</translation> <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" />కు తిరిగి వెళ్లడానికి ట్యాప్ చేయండి</translation> +<translation id="2054665754582400095">మీ ఉనికి</translation> <translation id="2079545284768500474">చర్య రద్దు</translation> <translation id="2091887806945687916">ధ్వని</translation> <translation id="2107397443965016585">సైట్లు రక్షిత కంటెంట్ను ప్లే చేయడానికి ముందు అనుమతి కోసం అడుగుతాయి (సిఫార్సు చేయడమైనది)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb index 5e4d088..6e7c228 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_th.xtb
@@ -38,6 +38,7 @@ <translation id="1994173015038366702">URL ของเว็บไซต์</translation> <translation id="2025115093177348061">Augmented Reality</translation> <translation id="2030769033451695672">แตะเพื่อกลับไปที่ <ph name="URL_OF_THE_CURRENT_TAB" /></translation> +<translation id="2054665754582400095">การใช้งาน</translation> <translation id="2079545284768500474">เลิกทำ</translation> <translation id="2091887806945687916">เสียง</translation> <translation id="2107397443965016585">ถามก่อนอนุญาตให้เว็บไซต์เล่นเนื้อหาที่ได้รับความคุ้มครอง (แนะนำ)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_uz.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_uz.xtb index 52a2cf4..9fac6bcc 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_uz.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_uz.xtb
@@ -38,6 +38,7 @@ <translation id="1994173015038366702">Sayt URL manzili</translation> <translation id="2025115093177348061">Boyitilgan reallik</translation> <translation id="2030769033451695672"><ph name="URL_OF_THE_CURRENT_TAB" /> sahifasiga qaytish uchun bosing</translation> +<translation id="2054665754582400095">Faolligingiz</translation> <translation id="2079545284768500474">Bekor qilish</translation> <translation id="2091887806945687916">Tovush</translation> <translation id="2107397443965016585">Himoyalangan kontentni ijro etishdan avval ruxsat soʻralsin (tavsiya etiladi)</translation>
diff --git a/components/embedder_support/android/BUILD.gn b/components/embedder_support/android/BUILD.gn index 2fcb86c..86454c0 100644 --- a/components/embedder_support/android/BUILD.gn +++ b/components/embedder_support/android/BUILD.gn
@@ -4,6 +4,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") +import("//tools/grit/grit_rule.gni") android_library("browser_context_java") { sources = [ "java/src/org/chromium/components/embedder_support/browser_context/BrowserContextHandle.java" ]
diff --git a/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_iw.xtb b/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_iw.xtb index c9c1c2e..a741c33 100644 --- a/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_iw.xtb +++ b/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_iw.xtb
@@ -5,7 +5,7 @@ <translation id="161042844686301425">ציאן</translation> <translation id="2713444072780614174">לבן</translation> <translation id="3329013043687509092">רווייה</translation> -<translation id="4115378294792113321">מגנטה</translation> +<translation id="4115378294792113321">מג'נטה</translation> <translation id="5901630391730855834">צהוב</translation> <translation id="6017514345406065928">ירוק</translation> <translation id="6042308850641462728">עוד</translation>
diff --git a/components/javascript_dialogs/android/BUILD.gn b/components/javascript_dialogs/android/BUILD.gn index faeebe8..6fe6f1d 100644 --- a/components/javascript_dialogs/android/BUILD.gn +++ b/components/javascript_dialogs/android/BUILD.gn
@@ -4,6 +4,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") +import("//tools/grit/grit_rule.gni") android_library("java") { sources = [
diff --git a/components/media_router/browser/android/BUILD.gn b/components/media_router/browser/android/BUILD.gn index b4f30e9..30575bb 100644 --- a/components/media_router/browser/android/BUILD.gn +++ b/components/media_router/browser/android/BUILD.gn
@@ -5,6 +5,7 @@ import("//build/config/android/config.gni") import("//build/config/android/rules.gni") import("//build/config/locales.gni") +import("//tools/grit/grit_rule.gni") android_library("java") { resources_package = "org.chromium.components.media_router"
diff --git a/components/omnibox/browser/clipboard_provider.cc b/components/omnibox/browser/clipboard_provider.cc index 467df170..26f5065 100644 --- a/components/omnibox/browser/clipboard_provider.cc +++ b/components/omnibox/browser/clipboard_provider.cc
@@ -552,7 +552,10 @@ void ClipboardProvider::OnReceiveImage( ClipboardImageMatchCallback callback, base::Optional<gfx::Image> optional_image) { - if (!optional_image) { + // ImageSkia::ToImageSkia should only be called if the gfx::Image is + // non-empty. It is unclear when the clipboard returns a non-optional but + // empty image. See crbug.com/1136759 for more details. + if (!optional_image || optional_image.value().IsEmpty()) { std::move(callback).Run(base::nullopt); return; }
diff --git a/components/payments/core/strings_util.cc b/components/payments/core/strings_util.cc index 61e4c3f..41e8171 100644 --- a/components/payments/core/strings_util.cc +++ b/components/payments/core/strings_util.cc
@@ -15,7 +15,7 @@ namespace payments { -base::string16 GetShippingAddressLabelFormAutofillProfile( +base::string16 GetShippingAddressLabelFromAutofillProfile( const autofill::AutofillProfile& profile, const std::string& locale) { // Name, phone number, and country are not included in the shipping address
diff --git a/components/payments/core/strings_util.h b/components/payments/core/strings_util.h index 3fcd43a6..8146a689 100644 --- a/components/payments/core/strings_util.h +++ b/components/payments/core/strings_util.h
@@ -20,7 +20,7 @@ namespace payments { // Helper function to create a shipping address label from an autofill profile. -base::string16 GetShippingAddressLabelFormAutofillProfile( +base::string16 GetShippingAddressLabelFromAutofillProfile( const autofill::AutofillProfile& profile, const std::string& locale);
diff --git a/components/permissions/android/BUILD.gn b/components/permissions/android/BUILD.gn index 35d56e6c..5b24616 100644 --- a/components/permissions/android/BUILD.gn +++ b/components/permissions/android/BUILD.gn
@@ -4,6 +4,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") +import("//tools/grit/grit_rule.gni") generate_jni("jni_headers") { sources = [
diff --git a/components/permissions/permission_uma_util.cc b/components/permissions/permission_uma_util.cc index 34a195ae3..1d64d3c 100644 --- a/components/permissions/permission_uma_util.cc +++ b/components/permissions/permission_uma_util.cc
@@ -128,6 +128,7 @@ PermissionSourceUI source_ui, PermissionPromptDisposition ui_disposition, base::Optional<bool> has_three_consecutive_denies, + base::Optional<bool> has_previously_revoked_permission, base::Optional<ukm::SourceId> source_id) { // Only record the permission change if the origin is in the history. if (!source_id.has_value()) @@ -153,6 +154,15 @@ builder.SetSatisfiedAdaptiveTriggers(satisfied_adaptive_triggers); } + if (has_previously_revoked_permission.has_value()) { + int64_t previously_revoked_permission = 0; + if (has_previously_revoked_permission.value()) { + previously_revoked_permission = static_cast<int64_t>( + PermissionAutoRevocationHistory::PREVIOUSLY_AUTO_REVOKED); + } + builder.SetPermissionAutoRevocationHistory(previously_revoked_permission); + } + builder.Record(ukm::UkmRecorder::Get()); } @@ -181,6 +191,37 @@ return ""; } +// |full_version| represented in the format `YYYY.M.D.m`, where m is the +// minute-of-day. Return int represented in the format `YYYYMMDD`. +// CrowdDeny versions published before 2020 will be reported as 1. +// Returns 0 if no version available. +// Returns 1 if a version has invalid format. +int ConvertCrowdDenyVersionToInt(const base::Optional<base::Version>& version) { + if (!version.has_value() || !version.value().IsValid()) + return 0; + + const std::vector<uint32_t>& full_version = version.value().components(); + if (full_version.size() != 4) + return 1; + + const int kCrowdDenyMinYearLimit = 2020; + const int year = base::checked_cast<int>(full_version.at(0)); + if (year < kCrowdDenyMinYearLimit) + return 1; + + const int month = base::checked_cast<int>(full_version.at(1)); + const int day = base::checked_cast<int>(full_version.at(2)); + + int short_version = year; + + short_version *= 100; + short_version += month; + short_version *= 100; + short_version += day; + + return short_version; +} + } // anonymous namespace // PermissionUmaUtil ---------------------------------------------------------- @@ -405,6 +446,18 @@ expanded); } +void PermissionUmaUtil::RecordCrowdDenyIsLoadedAtAbuseCheckTime(bool loaded) { + base::UmaHistogramBoolean( + "Permissions.CrowdDeny.PreloadData.IsLoadedAtAbuseCheckTime", loaded); +} + +void PermissionUmaUtil::RecordCrowdDenyVersionAtAbuseCheckTime( + const base::Optional<base::Version>& version) { + base::UmaHistogramSparse( + "Permissions.CrowdDeny.PreloadData.VersionAtAbuseCheckTime", + ConvertCrowdDenyVersionToInt(version)); +} + void PermissionUmaUtil::RecordMissingPermissionInfobarShouldShow( bool should_show, const std::vector<ContentSettingsType>& content_settings_types) { @@ -518,7 +571,9 @@ ? PermissionsClient::Get() ->HadThreeConsecutiveNotificationPermissionDenies( browser_context) - : base::nullopt)); + : base::nullopt, + PermissionsClient::Get()->HasPreviouslyAutoRevokedPermission( + browser_context, requesting_origin, permission))); switch (permission) { case ContentSettingsType::GEOLOCATION:
diff --git a/components/permissions/permission_uma_util.h b/components/permissions/permission_uma_util.h index 964033b..4bf397f 100644 --- a/components/permissions/permission_uma_util.h +++ b/components/permissions/permission_uma_util.h
@@ -9,6 +9,7 @@ #include "base/macros.h" #include "base/time/time.h" +#include "base/version.h" #include "components/permissions/permission_request.h" #include "components/permissions/permission_result.h" #include "components/permissions/permission_util.h" @@ -50,6 +51,9 @@ // through the notification UI. INLINE_SETTINGS = 5, + // Permission settings changes as part of the abusive origins revocation. + AUTO_REVOCATION = 6, + // Always keep this at the end. NUM, }; @@ -111,6 +115,14 @@ THREE_CONSECUTIVE_DENIES = 0x01, }; +enum class PermissionAutoRevocationHistory { + // Permission has not been automatically revoked. + NONE = 0, + + // Permission has been automatically revoked. + PREVIOUSLY_AUTO_REVOKED = 0x01, +}; + // Provides a convenient way of logging UMA for permission related operations. class PermissionUmaUtil { public: @@ -161,6 +173,11 @@ static void RecordInfobarDetailsExpanded(bool expanded); + static void RecordCrowdDenyIsLoadedAtAbuseCheckTime(bool loaded); + + static void RecordCrowdDenyVersionAtAbuseCheckTime( + const base::Optional<base::Version>& version); + // Record UMAs related to the Android "Missing permissions" infobar. static void RecordMissingPermissionInfobarShouldShow( bool should_show,
diff --git a/components/permissions/permission_uma_util_unittest.cc b/components/permissions/permission_uma_util_unittest.cc index b2623b92..a902bb9 100644 --- a/components/permissions/permission_uma_util_unittest.cc +++ b/components/permissions/permission_uma_util_unittest.cc
@@ -108,4 +108,38 @@ static_cast<int>(PermissionAction::REVOKED), 3); } +TEST_F(PermissionUmaUtilTest, CrowdDenyVersionTest) { + base::HistogramTester histograms; + + const base::Optional<base::Version> empty_version; + PermissionUmaUtil::RecordCrowdDenyVersionAtAbuseCheckTime(empty_version); + histograms.ExpectBucketCount( + "Permissions.CrowdDeny.PreloadData.VersionAtAbuseCheckTime", 0, 1); + + const base::Optional<base::Version> valid_version = + base::Version({2020, 10, 11, 1234}); + PermissionUmaUtil::RecordCrowdDenyVersionAtAbuseCheckTime(valid_version); + histograms.ExpectBucketCount( + "Permissions.CrowdDeny.PreloadData.VersionAtAbuseCheckTime", 20201011, 1); + + const base::Optional<base::Version> valid_old_version = + base::Version({2019, 10, 10, 1234}); + PermissionUmaUtil::RecordCrowdDenyVersionAtAbuseCheckTime(valid_old_version); + histograms.ExpectBucketCount( + "Permissions.CrowdDeny.PreloadData.VersionAtAbuseCheckTime", 1, 1); + + const base::Optional<base::Version> valid_future_version = + base::Version({2021, 1, 1, 1234}); + PermissionUmaUtil::RecordCrowdDenyVersionAtAbuseCheckTime( + valid_future_version); + histograms.ExpectBucketCount( + "Permissions.CrowdDeny.PreloadData.VersionAtAbuseCheckTime", 20210101, 1); + + const base::Optional<base::Version> invalid_version = + base::Version({2020, 10, 11}); + PermissionUmaUtil::RecordCrowdDenyVersionAtAbuseCheckTime(valid_version); + histograms.ExpectBucketCount( + "Permissions.CrowdDeny.PreloadData.VersionAtAbuseCheckTime", 1, 1); +} + } // namespace permissions
diff --git a/components/permissions/permissions_client.cc b/components/permissions/permissions_client.cc index 645c0cd..96dca126 100644 --- a/components/permissions/permissions_client.cc +++ b/components/permissions/permissions_client.cc
@@ -91,6 +91,13 @@ return base::nullopt; } +base::Optional<bool> PermissionsClient::HasPreviouslyAutoRevokedPermission( + content::BrowserContext* browser_context, + const GURL& origin, + ContentSettingsType permission) { + return base::nullopt; +} + bool PermissionsClient::CanBypassEmbeddingOriginCheck( const GURL& requesting_origin, const GURL& embedding_origin) {
diff --git a/components/permissions/permissions_client.h b/components/permissions/permissions_client.h index 9a02adc..406be4f 100644 --- a/components/permissions/permissions_client.h +++ b/components/permissions/permissions_client.h
@@ -143,6 +143,14 @@ virtual base::Optional<bool> HadThreeConsecutiveNotificationPermissionDenies( content::BrowserContext* browser_context); + // Returns whether the |permission| has already been auto-revoked due to abuse + // at least once for the given |origin|. Returns `nullopt` if permission + // auto-revocation is not supported for a given permission type. + virtual base::Optional<bool> HasPreviouslyAutoRevokedPermission( + content::BrowserContext* browser_context, + const GURL& origin, + ContentSettingsType permission); + // If the embedder returns an origin here, any requests matching that origin // will be approved. Requests that do not match the returned origin will // immediately be finished without granting/denying the permission.
diff --git a/components/policy/proto/device_management_backend.proto b/components/policy/proto/device_management_backend.proto index c6d2eb57..1c05064 100644 --- a/components/policy/proto/device_management_backend.proto +++ b/components/policy/proto/device_management_backend.proto
@@ -1896,6 +1896,12 @@ optional string version = 3; } +// An enum shows which information a partial CBCM report contains. +enum PartialReportType { + UNSPECIFIED = 0; + EXTENSION_REQUEST = 1; +} + // Report the status of a Chrome installation on non-Chrome OS platform. message ChromeDesktopReportRequest { // The name of the machine within its local network. The string is a JSON @@ -1926,6 +1932,10 @@ // TODO(crbug.com/1105938): This will also replace the computer_name and // serial_number fields. optional BrowserDeviceIdentifier browser_device_identifier = 9; + // A list of flags indicates that the report only contains particular + // information. When list is empty or unset, the report should contains all + // information. + repeated PartialReportType partial_report_types = 10; } // Report user level status on Chrome OS platform. Chrome OS equivalent of @@ -1935,6 +1945,10 @@ optional BrowserReport browser_report = 1; // Android applications installed in primary profile. repeated AndroidAppInfo android_app_infos = 2; + // A list of flags indicates that the report only contains particular + // information. When list is empty or unset, the report should contains all + // information. + repeated PartialReportType partial_report_types = 3; } // A validation issue from validating a policy value that was contained in
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index ccba8c6..30d3914 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -3611,13 +3611,11 @@ 'id': 111, 'caption': '''Set media disk cache size in bytes''', 'tags': [], - 'desc': '''Configures the cache size that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use for storing cached media files on the disk. + 'desc': '''Setting the policy configures the cache size that <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> uses for storing cached media files on the disk, regardless of whether or not users specify the --media-cache-size flag. The value specified in this policy isn't a hard boundary, but a suggestion to the caching system. Any value below a few megabytes is rounded up. - If you set this policy, <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will use the provided cache size regardless whether the user has specified the '--media-cache-size' flag or not. The value specified in this policy is not a hard boundary but rather a suggestion to the caching system, any value below a few megabytes is too small and will be rounded up to a sane minimum. + Setting the value of the policy to 0 uses the default cache size, and users can't change it. - If the value of this policy is 0, the default cache size will be used but the user will not be able to change it. - - If this policy is not set the default size will be used and the user will be able to override it with the --media-cache-size flag.''', + Leaving the policy unset uses the default cache size and users can change it with the --media-cache-size flag.''', 'label': '''Set media disk cache size''', }, { @@ -5869,11 +5867,11 @@ 'id': 603, 'caption': '''Automatically grant permission to these sites to connect to USB devices with the given vendor and product IDs on the login screen.''', 'tags': ['website-sharing'], - 'desc': '''Allows you to set a list of URL patterns that specify which sites are automatically granted permission to access a USB device with the given vendor and product IDs on the login screen. Each list item must have a "devices" and "urls" field for the policy to be valid. Each item in the "devices" field can have a "vendor_id" and "product_id" field. Omitting the "vendor_id" field will create a policy matching any device. Omitting the "product_id" field will create a policy matching any device with the given vendor ID. A policy which has a "product_id" field without a "vendor_id" vield is invalid. + 'desc': '''Setting the policy lets you list the URL patterns that specify which sites are automatically granted permission to access a USB device with the given vendor and product IDs on the login screen. Each item in the list requires both "devices" and "urls" fields for the policy to be valid. Each item in the "devices" field can have a "vendor_id" and "product_id" field. Omitting the "vendor_id" field will create a policy matching any device. Omitting the "product_id" field will create a policy matching any device with the given vendor ID. A policy which has a "product_id" field without a "vendor_id" vield is invalid. - The USB permission model uses the URL of the requesting site ("requesting URL") and the URL of the top-level frame site ("embedding URL") to grant permission to the requesting URL to access the USB device. The requesting URL may be different than the embedding URL when the requesting site is loaded in an iframe. Therefore, the "urls" field can contain up to two URL strings delimited by a comma to specify the requesting and embedding URL respectively. If only one URL is specified, then access to the corresponding USB devices will be granted when the requesting site's URL matches this URL regardless of embedding status. The URLs in "urls" must be valid URLs, otherwise the policy will be ignored. + The USB permission model uses the requesting and embedding URLs to grant the requesting URL permission to access the USB device. The requesting URL can be different than the embedding URL when the requesting site is loaded in an iframe. So, the urls field can have up to 2 URL strings delimited by a comma to specify the requesting and embedding URL, respectively. If only one URL is specified, then access to the corresponding USB devices is granted when the requesting site's URL matches this URL, regardless of embedding status. The URLs must be valid, otherwise the policy is ignored. - If this policy is left not set, the global default value will be used for all sites (no automatic access).''', + Leaving the policy unset puts the global default value in use for all sites (no automatic access).''', }, { 'name': 'WebUsbAskForUrls', @@ -7355,6 +7353,58 @@ If this policy is set to False or unset, the user can continue working in an unauthenticated state.''' }, { + 'name': 'SecurityTokenSessionBehavior', + 'owners': ['fabiansommer@chromium.org, emaxx@chromium.org'], + 'type': 'string-enum', + 'schema': { + 'type': 'string', + 'enum': [ 'IGNORE', 'LOGOUT', 'LOCK' ], + }, + 'items': [ + { + 'name': 'ignore', + 'value': 'IGNORE', + 'caption': '''No action happens.''', + }, + { + 'name': 'logout', + 'value': 'LOGOUT', + 'caption': '''Log the user out.''', + }, + { + 'name': 'lock', + 'value': 'LOCK', + 'caption': '''Lock the current session.''', + }, + ], + 'future_on': ['chrome_os'], + 'features': { + 'dynamic_refresh': True, + 'per_profile': False, + }, + 'example_value': 'LOGOUT', + 'id': 799, + 'caption': '''Action on security token removal (e.g., smart card) for <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>.''', + 'tags': [], + 'desc': '''Specifies what happens when a user who is authenticating via a security token (e.g., with a smart card) removes that token while in a session. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_IGNORE">IGNORE</ph>: Nothing happens. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOCK">LOCK</ph>: The screen is locked until the user authenticates again. <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOGOUT">LOGOUT</ph>: The session is ended and the user is logged out. If this policy is not set, it defaults to <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_IGNORE">IGNORE</ph>.''' + }, + { + 'name': 'SecurityTokenSessionNotificationSeconds', + 'owners': ['fabiansommer@chromium.org, emaxx@chromium.org'], + 'type': 'int', + 'schema': { 'type': 'integer', 'minimum': 0, 'maximum': 9999 }, + 'future_on': ['chrome_os'], + 'features': { + 'dynamic_refresh': True, + 'per_profile': False, + }, + 'example_value': 10, + 'id': 800, + 'caption': '''Duration of the notification on smart card removal for <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph>.''', + 'tags': [], + 'desc': '''This policy only takes effect when the policy <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_POLICY_NAME">SecurityTokenSessionBehavior</ph> is set to <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOCK">LOCK</ph> or <ph name="SECURITY_TOKEN_SESSION_BEHAVIOR_LOGOUT">LOGOUT</ph>, and a user who authenticates via a smart card remvoes that smart card. Then, this policy specifies for how many seconds a notification which informs the user of the impending action is displayed. This notification is blocking the screen. The action will only happen after this notification expires. The user can prevent the action from happening by re-inserting the smart card before the notification expires. If this policy is set to zero, no notification will be displayed and the action happens immediately.''' + }, + { 'name': 'InstantEnabled', 'owners': ['file://components/policy/resources/OWNERS'], 'type': 'main', @@ -7928,11 +7978,11 @@ 'id': 584, 'caption': '''Enables the concept of policy atomic groups''', 'tags': [], - 'desc': '''If this policy is enabled, policies coming from the an atomic group that do not share the source with the highest priority from that group will be ignored. + 'desc': '''Setting the policy to Enabled means policies coming from an atomic group that don't share the source with the highest priority from that group get ignored. - If this policy is disabled, no policy will be ignored because of its source. Policies will be ignored only if there is a conflict and the policy does not have the highest priority. + Setting the policy to Disabled means no policy is ignored because of its source. Policies are ignored only if there's a conflict, and the policy doesn't have the highest priority. - If this policy ist set from a cloud source, it cannot target a specific user''', + If this policy is set from a cloud source, it can't target a specific user.''', }, { 'name': 'PolicyListMultipleSourceMergeList', @@ -20296,10 +20346,9 @@ 'id': 570, 'caption': '''Allow user feedback''', 'tags': [], - 'desc': '''Allow user feedback. - If the policy is set to false, users can not send feedback to Google. + 'desc': '''Setting the policy to Enabled or leaving it unset lets users send feedback to Google through Menu > Help > Report an Issue or key combination. - If the policy is unset or set to true, users can send feedback to Google via Menu->Help->Report an Issue or key combination.''' + Setting the policy to Disabled means users can't send feedback to Google.''' }, { 'name': 'SamlPasswordExpirationAdvanceWarningDays', @@ -20958,12 +21007,9 @@ 'supported_on': ['chrome_os:78-'], 'caption': '''Allows users to play media when the device is locked''', 'tags': [], - 'desc': '''This policy controls whether users are able to play media when the device is locked. + 'desc': '''Setting the policy to Enabled or leaving it unset displays media controls on the lock screen if users lock the device when media is playing. - If this policy is set to False, then media controls on the lock screen are disabled. - - If this policy is set to True or not set, then media controls will be displayed on the lock screen if the user locks the device when media is playing. - ''' + Setting the policy to Disabled turns media controls on the lock screen off.''' }, { 'name': 'UnsafeEventsReportingEnabled', @@ -21613,9 +21659,11 @@ 'id': 598, 'caption': '''Enable Renderer Code Integrity''', 'tags': ['system-security'], - 'desc': '''If this policy is enabled or left unset, then Renderer Code Integrity is enabled. This should only be disabled if compatibility issues are encountered with third party software that must run inside Chrome's renderer processes. + 'desc': '''Setting the policy to Enabled or leaving it unset turns Renderer Code Integrity on. - Disabling this policy has a detrimental effect on Chrome's security and stability as unknown and potentially hostile code will be allowed to load inside Chrome's renderer processes. See https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md#Process-mitigation-policies for more info.''', + Setting the policy to Disabled has a detrimental effect on <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s security and stability as unknown and potentially hostile code can load inside <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s renderer processes. Only turn off the policy if there are compatibility issues with third-party software that must run inside <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s renderer processes. + + Note: Read more about Process mitigation policies ( https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md#Process-mitigation-policies ).''', }, { # TODO(rogerta): Use a custom policy handler to show in chrome://policy that this policy depends on the state of SendFilesForMalwareCheck. @@ -21691,7 +21739,7 @@ 'id': 601, 'caption': '''List of names that will bypass the HSTS policy check''', 'tags': ['system-security'], - 'desc': '''Hostnames specified in this list will be exempt from the HSTS policy check that could potentially upgrade requests from http to https. Only single-label hostnames are allowed in this policy. Hostnames must be canonicalized: any IDNs must be converted to their A-label format, and all ASCII letters must be lowercase. This policy only applies to the specific hostnames specified; it does not apply to subdomains of the names specified.''', + 'desc': '''Setting the policy specifies a list of hostnames that are exempt from the HSTS policy check that could upgrade requests from http to https. Only single-label hostnames are allowed in this policy. Hostnames must be canonicalized: Any IDNs must be converted to their A-label format, and all ASCII letters must be lowercase. This policy only applies to the specific hostnames specified, not to subdomains of those names.''', }, { 'name': 'AllowSyncXHRInPageDismissal', @@ -24553,6 +24601,6 @@ 'placeholders': [], 'deleted_policy_ids': [114, 115, 412, 476, 544, 546, 562, 569, 578, 583, 589], 'deleted_atomic_policy_group_ids': [], - 'highest_id_currently_used': 798, + 'highest_id_currently_used': 800, 'highest_atomic_group_id_currently_used': 40 }
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index 0bfc444..9645f4a 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -41,6 +41,11 @@ Esta política afecta solo a los usuarios cuyo dominio coincide con el dominio de inscripción del dispositivo. Para todos los demás usuarios, las cookies que establece el IdP se transfieren al perfil del usuario únicamente durante el primer acceso en el dispositivo.</translation> <translation id="1029052664284722254">Forzar el reinicio del dispositivo cuando el usuario salga de su cuenta</translation> +<translation id="1032533786864478457">Si habilitas la política, los usuarios podrán configurar sus dispositivos para que se sincronicen los mensajes de texto con las Chromebooks. Los usuarios deben habilitar esta función de forma explícita completando un flujo de configuración. Al finalizar el flujo, los usuarios podrán enviar y recibir mensajes de texto en sus Chromebooks. + + Si inhabilitas la política, los usuarios no podrán configurar la sincronización de mensajes de texto. + + Si no la estableces, de forma predeterminada los usuarios administrados no podrán usar la función, pero sí podrán usarla otros usuarios.</translation> <translation id="1040446814317236570">Habilitar la eliminación de URL de PAC (para https://)</translation> <translation id="1046484220783400299">Habilitar funciones de Web Platform, que dejaron de estar disponibles, durante un período limitado</translation> <translation id="1047128214168693844">No permitir que ningún sitio rastree la ubicación física de los usuarios.</translation> @@ -665,6 +670,9 @@ <translation id="2057317273526988987">Permitir el acceso a una lista de URL</translation> <translation id="2061810934846663491">Configurar los nombres de dominio obligatorios para hosts de acceso remoto</translation> <translation id="2067011586099792101">Bloquea el acceso a sitios fuera de los paquetes de contenido.</translation> +<translation id="2069350366303315077">Si habilitas la política, <ph name="PRODUCT_NAME" /> aplicará las sesiones de invitado y no permitirá acceder a los perfiles. Los accesos de invitado son perfiles de <ph name="PRODUCT_NAME" /> en donde todas las ventanas están en el modo Incógnito. + + Si inhabilitas la política, no la estableces o inhabilitas el modo de invitado del navegador (mediante <ph name="BROWSER_GUEST_MODE_ENABLED_POLICY_NAME" />) se podrán usar perfiles nuevos y existentes.</translation> <translation id="2073552873076775140">Permitir el acceso a <ph name="PRODUCT_NAME" /></translation> <translation id="2075732129949889165">Playbook de Ansible de Crostini</translation> <translation id="2077129598763517140">Usar aceleración de hardware cuando esté disponible</translation> @@ -1000,6 +1008,11 @@ <translation id="2482676533225429905">Mensajería nativa</translation> <translation id="2483146640187052324">Predecir acciones de la red en cualquier conexión de red</translation> <translation id="2498238926436517902">Siempre ocultar automáticamente los archivos</translation> +<translation id="250022556568924228">Si estableces la política, <ph name="PRODUCT_OS_NAME" /> descargará las Condiciones del Servicio y las presentará a los usuarios cada vez que se inicie la sesión local del dispositivo. Los usuarios solo podrán acceder a la sesión cuando acepten las Condiciones del Servicio. + + Si no estableces la política, no se mostrarán las Condiciones del Servicio. + + La política debe establecerse en una URL de la cual <ph name="PRODUCT_OS_NAME" /> pueda descargar las Condiciones del Servicio. Estas deberán estar en texto sin formato y ofrecerse como texto sin formato tipo MIME. No puede incluir lenguaje de marcado.</translation> <translation id="2502467045153796624">Comportamiento del cambio a una versión inferior del canal</translation> <translation id="250670737672448119">Habilita la función de accesibilidad de resaltar el signo de intercalación. @@ -1182,6 +1195,13 @@ Esta política empresarial es una adaptación por corto plazo y se quitará en Chrome 88.</translation> <translation id="2759224876420453487">Controlar el comportamiento del usuario en una sesión de varios perfiles</translation> +<translation id="2759426227259007018">Si estableces la política, se especificarán las apps que los usuarios pueden activar, como una app para tomar notas en la pantalla de bloqueo de <ph name="PRODUCT_OS_NAME" />. + + Si la app preferida se habilita en la pantalla de bloqueo, aparecerá un elemento de IU para ejecutar la app preferida para tomar notas. Cuando se ejecute, la app podrá crear una ventana en la parte superior de la pantalla de bloqueo para tomar notas en este contexto. La app podrá importar las notas creadas a la sesión del usuario principal cuando la sesión se desbloquee. La pantalla de bloqueo solo admite apps para tomar notas de <ph name="PRODUCT_NAME" />. + + Si estableces la política, los usuarios podrán activar una app en la pantalla de bloqueo siempre que el ID de extensión de la app aparezca en la lista de políticas. Por lo tanto, si la estableces con una lista vacía, se desactivará la función para tomar notas en la pantalla de bloqueo. Ten en cuenta que el hecho de que la política contenga un ID de app no implica necesariamente que el usuario pueda habilitar la app para tomar notas en la pantalla de bloqueo. Por ejemplo, en <ph name="PRODUCT_NAME" /> 61, la plataforma aplica otras restricciones al conjunto de apps disponibles. + + Si no estableces la política, no se impondrán restricciones en la cantidad de apps que el usuario puede habilitar en la pantalla de bloqueo.</translation> <translation id="2761483219396643566">Demora para la advertencia de inactividad cuando el dispositivo está funcionando a batería</translation> <translation id="2765601181281280493">Si estableces la política, podrás definir una lista de patrones de URL donde se especifiquen los sitios que no pueden pedir permiso a los usuarios para acceder a un puerto en serie. @@ -1521,6 +1541,9 @@ <translation id="3251500716404598358">Permite configurar políticas para cambiar de navegador. Los sitios web configurados se abrirán automáticamente en otro navegador que no sea <ph name="PRODUCT_NAME" />.</translation> +<translation id="3255624750680556186">Si habilitas la política o no la estableces, los dispositivos podrán activar Powerwash. + + Si la inhabilitas, los dispositivos no podrán activar Powerwash. Se puede configurar una excepción para permitir un Powerwash si estableces <ph name="TPM_FIRMWARE_UPDATE_SETTINGS_NAME" /> en un valor que permita la actualización del firmware TPM, pero que todavía no se haya actualizado.</translation> <translation id="3255762580838224124">Si estableces la política, las pantallas rotarán a la orientación especificada cada vez que se reinicie el dispositivo y la primera vez que se conecten después de cambiar el valor de la política. Después de acceder, los usuarios podrán cambiar la rotación de las pantallas en la página de configuración, pero volverá a cambiar la próxima vez que se reinicie el dispositivo. Esta política se aplica a la pantalla principal y a la secundaria. Si no la estableces, el valor predeterminado será 0 grados y los usuarios podrán cambiarlo. Si deciden hacerlo, no se volverá a aplicar el valor predeterminado cuando se reinicie el dispositivo.</translation> @@ -2640,6 +2663,9 @@ Si se inhabilita esta política, fallarán las llamadas a las API para compartir pantalla y se mostrará un error.</translation> +<translation id="5025239932007658691">Si habilitas la política o no la estableces, <ph name="PRODUCT_NAME" /> enviará consultas ocasionales a un servidor de Google para recuperar una marca de tiempo precisa. + + Si la inhabilitas, <ph name="PRODUCT_NAME" /> dejará de enviar estas consultas.</translation> <translation id="5032164758660626397">Evita que el usuario transfiera archivos grandes</translation> <translation id="5047604665028708335">Permite el acceso a sitios fuera de los paquetes de contenido.</translation> <translation id="5056708224511062314">La lupa está inhabilitada.</translation> @@ -3412,6 +3438,9 @@ <translation id="6034341625190551415">Controla la sesión pública y los tipos de cuenta del kiosko.</translation> <translation id="6034603289689965535">Permite que una página muestre ventanas emergentes durante su descarga</translation> <translation id="6036523166753287175">Habilitar el cruce seguro de firewall desde hosts de acceso remoto</translation> +<translation id="603768430528561926">Si habilitas la política o no la estableces, los usuarios de dispositivos empresariales podrán canjear ofertas a través del registro en <ph name="PRODUCT_OS_NAME" />. + + Si la inhabilitas, los usuarios no podrán canjear esas ofertas.</translation> <translation id="6038407313189625985">Si se habilita esta política y no se establece, se habilitará la integridad del código del renderizador. Esta opción se debe inhabilitar solo si se identifican problemas de compatibilidad con software de terceros que deba ejecutarse en los procesos del renderizador de Chrome. Inhabilitar esta política reduce la estabilidad y la seguridad de Chrome, ya que se permitirá cargar código desconocido y potencialmente hostil en los procesos del renderizador de Chrome. Para obtener más información, consulta el siguiente vínculo: https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md#Process-mitigation-policies.</translation> @@ -3632,6 +3661,7 @@ Si no estableces esta política o la lista está vacía, se podrá acceder a todos los esquemas que aparecen en <ph name="PRODUCT_NAME" />.</translation> <translation id="6338982178236723271">Envía información sobre el sistema</translation> <translation id="6342187235303612558">No permitir que los usuarios carguen o descarguen archivos que no admitan el análisis de DLP o software malicioso</translation> +<translation id="6353890097388312479">Si estableces la política en All (0) o no la estableces, los usuarios podrán editar la configuración de confianza para todos los certificados de CA, importar certificados mediante el administrador de certificados y quitar los certificados importados por el usuario. Si la estableces en UserOnly (1), los usuarios podrán administrar solo los certificados importados por el usuario, pero no podrán cambiar la configuración de confianza de los certificados integrados. Si la estableces en None (2), los usuarios podrán ver los certificados de CA, pero no los podrán administrar.</translation> <translation id="6366574325767783825">Si estableces la política como verdadera o no la estableces, <ph name="PRODUCT_NAME" /> aceptará contenidos web que se presenten como intercambios HTTP firmados. Si estableces la política como falsa, no se cargarán los intercambios HTTP firmados.</translation> @@ -3723,6 +3753,15 @@ Para bloquear la pantalla cuando está inactiva, se recomienda habilitar el bloqueo de pantalla en la suspensión y que se suspenda <ph name="PRODUCT_OS_NAME" /> después de la demora de inactividad. Esta política solo debe usarse si el bloqueo de pantalla ocurre mucho antes que la suspensión o si no se desea la suspensión por inactividad. El valor de la política debe especificarse en milisegundos. Se establecerán los valores de modo que sean inferiores a la demora de inactividad.</translation> +<translation id="6506239283767807745">Esta política dejó de estar disponible; usa <ph name="NOTE_TAKING_APPS_LOCK_SCREEN_ALLOWLIST" /> en su lugar. + + Si estableces la política, se especificarán las apps que los usuarios pueden activar, como una app para tomar notas en la pantalla de bloqueo de <ph name="PRODUCT_OS_NAME" />. + + Si la app preferida se habilita en la pantalla de bloqueo, aparecerá un elemento de IU para ejecutar la app preferida para tomar notas. Cuando se ejecute, la app podrá crear una ventana en la parte superior de la pantalla de bloqueo para tomar notas en este contexto. La app podrá importar las notas creadas a la sesión del usuario principal cuando la sesión se desbloquee. La pantalla de bloqueo solo admite apps para tomar notas de <ph name="PRODUCT_NAME" />. + + Si estableces la política, los usuarios podrán activar una app en la pantalla de bloqueo siempre que el ID de extensión de la app aparezca en la lista de políticas. Por lo tanto, si la estableces con una lista vacía, se desactivará la función para tomar notas en la pantalla de bloqueo. Ten en cuenta que el hecho de que la política contenga un ID de app no implica necesariamente que el usuario pueda habilitar la app para tomar notas en la pantalla de bloqueo. Por ejemplo, en <ph name="PRODUCT_NAME" /> 61, la plataforma aplica otras restricciones al conjunto de apps disponibles. + + Si no estableces la política, no se impondrán restricciones en la cantidad de apps que el usuario puede habilitar en la pantalla de bloqueo.</translation> <translation id="6506486086262398387">Si habilitas la política, la función Network File Shares para <ph name="PRODUCT_OS_NAME" /> utilizará el protocolo NTLM para autenticar archivos compartidos SMB en caso de ser necesario. Si inhabilitas la política, se desactivará la autenticación de archivos compartidos SMB mediante NTLM. Si no la estableces, de forma predeterminada se desactivará para los usuarios administrados y se activará para los demás usuarios.</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb index daf480c..1747857c 100644 --- a/components/policy/resources/policy_templates_es.xtb +++ b/components/policy/resources/policy_templates_es.xtb
@@ -41,6 +41,11 @@ Esta política afecta a los usuarios cuyo dominio coincida con el dominio de registro del dispositivo. En el caso del resto de usuarios, las cookies establecidas por el proveedor de identidad se transfieren al perfil del usuario solo la primera vez que inicie sesión en un dispositivo.</translation> <translation id="1029052664284722254">Forzar el reinicio del dispositivo cuando el usuario cierre sesión</translation> +<translation id="1032533786864478457">Si se habilita esta política, los usuarios podrán configurar sus dispositivos para sincronizar sus SMS con Chromebook. Los usuarios deben aceptar explícitamente esta función completando un proceso de configuración. Tras completarlo, podrán enviar y recibir SMS con sus Chromebooks. + + Si se inhabilita la política, los usuarios no podrán configurar la sincronización de SMS. + + Si no se establece la política, los usuarios gestionados no podrán usar esta función, pero otros usuarios sí (por defecto).</translation> <translation id="1040446814317236570">Habilitar eliminación de URL PAC (para https://)</translation> <translation id="1046484220783400299">Habilita funciones obsoletas de la plataforma web durante un periodo de tiempo limitado</translation> <translation id="1047128214168693844">No permitir que ningún sitio haga un seguimiento de la ubicación física de los usuarios</translation> @@ -669,6 +674,9 @@ <translation id="2057317273526988987">Permitir el acceso a una lista de URL</translation> <translation id="2061810934846663491">Configurar los nombres de dominio obligatorios para hosts de acceso remoto</translation> <translation id="2067011586099792101">Bloquear acceso a sitios no incluidos en paquetes de contenido</translation> +<translation id="2069350366303315077">Si se habilita la política, <ph name="PRODUCT_NAME" /> usará sesiones de invitado e impedirá inicios de sesión de perfiles. Las sesiones de invitado son perfiles de <ph name="PRODUCT_NAME" /> en los que las ventanas están en modo de incógnito. + + Si se inhabilita la política, no se establece o se inhabilita el modo invitados del navegador (mediante <ph name="BROWSER_GUEST_MODE_ENABLED_POLICY_NAME" />), se permitirá el uso de perfiles nuevos y de perfiles ya existentes.</translation> <translation id="2073552873076775140">Permitir inicio de sesión en <ph name="PRODUCT_NAME" /></translation> <translation id="2075732129949889165">Playbook de Ansible para Crostini</translation> <translation id="2077129598763517140">Utilizar aceleración por hardware cuando esté disponible</translation> @@ -1004,6 +1012,11 @@ <translation id="2482676533225429905">Mensajes nativos</translation> <translation id="2483146640187052324">Predecir las acciones de red en cualquier conexión de red</translation> <translation id="2498238926436517902">Ocultar siempre automáticamente los archivos</translation> +<translation id="250022556568924228">Si se establece la política, <ph name="PRODUCT_OS_NAME" /> descargará los Términos del Servicio y se los mostrará a los usuarios siempre que se inicie sesión con una cuenta local del dispositivo. Para iniciar sesión, los usuarios deben aceptar los Términos del Servicio. + + Si no se establece la política, los Términos del Servicio no aparecerán. + + La política debe establecerse especificando la URL desde la que <ph name="PRODUCT_OS_NAME" /> puede descargar los Términos del Servicio. Los Términos del Servicio deben estar en texto sin formato y publicarse con el tipo de MIME "text/plain". No se permiten etiquetas.</translation> <translation id="2502467045153796624">Comportamiento del cambio a una versión inferior</translation> <translation id="250670737672448119">Habilita la función de accesibilidad de resaltado del símbolo de intercalación de texto. @@ -1188,6 +1201,13 @@ Esta política de empresa sirve para una adaptación a corto plazo y se eliminará en Chrome 88.</translation> <translation id="2759224876420453487">Controlar el comportamiento del usuario en una sesión de varios perfiles</translation> +<translation id="2759426227259007018">Si se establece esta política, se especificarán las aplicaciones que pueden activar los usuarios para tomar notas en la pantalla de bloqueo de <ph name="PRODUCT_OS_NAME" />. + + Si la aplicación preferida está habilitada en la pantalla de bloqueo, aparecerá en la pantalla un elemento de interfaz de usuario para iniciar la aplicación para tomar notas. Una vez iniciada, la aplicación podrá abrir una ventana sobre la pantalla de bloqueo y crear notas en este contexto. La aplicación puede importar las notas creadas a la sesión del usuario principal cuando se desbloquee la sesión. En la pantalla de bloqueo, solo se admiten las aplicaciones para tomar notas de <ph name="PRODUCT_NAME" />. + + Después de establecer la política, los usuarios podrán activar una aplicación en la pantalla de bloqueo si el ID de extensión de la aplicación se encuentra entre los valores de la lista de la política. Por tanto, si se asigna una lista vacía a esta política, se desactivará la toma de notas en la pantalla de bloqueo. Que la política incluya el ID de una aplicación no significa que el usuario pueda activarla como aplicación para tomar notas en la pantalla de bloqueo. Por ejemplo, en <ph name="PRODUCT_NAME" /> 61, la plataforma también restringe el conjunto de aplicaciones disponibles. + + Si no se establece la política, esta no restringirá el conjunto de aplicaciones que los usuarios pueden habilitar en la pantalla de bloqueo.</translation> <translation id="2761483219396643566">Tiempo de espera de advertencia de inactividad cuando el dispositivo funciona con batería</translation> <translation id="2765601181281280493">Si estableces esta política, podrás definir una lista de patrones de URL donde se especifique qué sitios web no pueden pedir a los usuarios que les permitan acceder a un puerto serie. @@ -1526,6 +1546,9 @@ <translation id="3251500716404598358">Configura las políticas para cambiar de navegador. Los sitios web configurados se abrirán automáticamente en un navegador diferente a <ph name="PRODUCT_NAME" />.</translation> +<translation id="3255624750680556186">Si se habilita la política o no se establece, se permitirá que un dispositivo active la función Powerwash. + + Si se inhabilita la política, no se permitirá que un dispositivo active Powerwash. Puede producirse una excepción que permita activar Powerwash si a <ph name="TPM_FIRMWARE_UPDATE_SETTINGS_NAME" /> se le asigna un valor que permita la actualización de firmware de TPM cuando el firmware no se haya actualizado aún.</translation> <translation id="3255762580838224124">Si se asigna un valor a esta política, cada pantalla rotará después de cada reinicio según la orientación especificada y también rotará la primera vez que se conecte después de que cambies el valor de la política. Los usuarios podrán cambiar la rotación de la pantalla a través de la página de configuración después de iniciar sesión, pero, en el siguiente reinicio, se volverá a establecer el valor definido en la política. Esta política se aplica a las pantallas principales y secundarias. Si no se le asigna ningún valor, el valor predeterminado será 0 grados y los usuarios podrán cambiarlo. En este caso, no se volverá a aplicar el valor predeterminado tras reiniciar.</translation> @@ -2648,6 +2671,9 @@ Cuando esta política esté inhabilitada, aparecerá un error en las llamadas de las API de pantalla compartida.</translation> +<translation id="5025239932007658691">Si se habilita la política o no se establece, <ph name="PRODUCT_NAME" /> enviará consultas ocasionales a un servidor de Google para obtener una marca de tiempo precisa. + + Si se inhabilita la política, <ph name="PRODUCT_NAME" /> no podrá enviar esas consultas.</translation> <translation id="5032164758660626397">Impedir al usuario transferir archivos grandes</translation> <translation id="5047604665028708335">Permitir acceso a sitios no incluidos en paquetes de contenido</translation> <translation id="5056708224511062314">Lupa inhabilitada</translation> @@ -3429,6 +3455,9 @@ <translation id="6034341625190551415">Controla los tipos de cuenta de sesión pública y de kiosko.</translation> <translation id="6034603289689965535">Permite que una página muestre ventanas emergentes mientras se descarga</translation> <translation id="6036523166753287175">Habilita que se pueda pasar a través de un cortafuegos desde un host de acceso remoto.</translation> +<translation id="603768430528561926">Si se habilita la política o no se establece, los usuarios de dispositivos empresariales podrán canjear ofertas mediante el registro de <ph name="PRODUCT_OS_NAME" />. + + Si se inhabilita la política, los usuarios no podrán canjear estas ofertas.</translation> <translation id="6038407313189625985">Si se habilita esta política o no se le asigna ningún valor, se activará la integridad del código del renderizador. Solo debería inhabilitarse si hay problemas de compatibilidad con algún software de terceros que deba ejecutarse en los procesos del renderizador de Chrome. Inhabilitar esta política reduce la estabilidad y la seguridad de Chrome, ya que se permitirá cargar código desconocido y potencialmente hostil en los procesos del renderizador de Chrome. Puedes consultar más información en la página https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md#Process-mitigation-policies</translation> @@ -3650,6 +3679,7 @@ Si esta política no se establece o la lista está vacía, se podrá acceder a todos los esquemas en <ph name="PRODUCT_NAME" />.</translation> <translation id="6338982178236723271">Ofrece información del sistema</translation> <translation id="6342187235303612558">Impide que los usuarios suban o descarguen archivos que actualmente no admiten un análisis de software malicioso o de DLP.</translation> +<translation id="6353890097388312479">Si se asigna el valor All (0) a esta política o no se establece, los usuarios podrán editar la configuración de confianza de todos los certificados AC, quitar certificados importados por el usuario e importar certificados mediante el administrador de certificados. Si se le asigna el valor UserOnly (1), los usuarios podrán gestionar únicamente certificados importados por usuarios, pero no podrán cambiar la configuración de confianza de los certificados integrados. Si se le asigna el valor None (2), los usuarios podrán ver los certificados AC, pero no gestionarlos.</translation> <translation id="6366574325767783825">Si se le asigna el valor "Habilitada" a esta política o no se le asigna ninguno, <ph name="PRODUCT_NAME" /> aceptará contenidos web de tipo Signed HTTP Exchanges. Si se le asigna el valor "Inhabilitada", los Signed HTTP Exchanges no se podrán cargar.</translation> @@ -3741,6 +3771,15 @@ La forma recomendada de bloquear la pantalla en modo de inactividad es habilitar el bloqueo de pantalla en modo de suspensión y configurar <ph name="PRODUCT_OS_NAME" /> para que realice la suspensión después del periodo de inactividad indicado. Esta política solo debe utilizarse cuando el bloqueo de la pantalla debería producirse mucho antes que la suspensión o cuando no se quiera que se produzca la suspensión en modo de inactividad. El valor de esta política debe especificarse en milisegundos. Los valores deben ser inferiores al retraso de inactividad.</translation> +<translation id="6506239283767807745">Esta política está obsoleta. Usa <ph name="NOTE_TAKING_APPS_LOCK_SCREEN_ALLOWLIST" /> en su lugar. + + Si se establece esta política, se especificarán las aplicaciones que pueden activar los usuarios para tomar notas en la pantalla de bloqueo de <ph name="PRODUCT_OS_NAME" />. + + Si la aplicación preferida está habilitada en la pantalla de bloqueo, aparecerá en la pantalla un elemento de interfaz de usuario para iniciar la aplicación para tomar notas. Una vez iniciada, la aplicación podrá abrir una ventana sobre la pantalla de bloqueo y crear notas en este contexto. La aplicación puede importar las notas creadas a la sesión del usuario principal cuando se desbloquee la sesión. En la pantalla de bloqueo, solo se admiten las aplicaciones para tomar notas de <ph name="PRODUCT_NAME" />. + + Después de establecer la política, los usuarios podrán activar una aplicación en la pantalla de bloqueo si el ID de extensión de la aplicación se encuentra entre los valores de la lista de la política. Por tanto, si se asigna una lista vacía a esta política, se desactivará la toma de notas en la pantalla de bloqueo. Que la política incluya el ID de una aplicación no significa que el usuario pueda activarla como aplicación para tomar notas en la pantalla de bloqueo. Por ejemplo, en <ph name="PRODUCT_NAME" /> 61, la plataforma también restringe el conjunto de aplicaciones disponibles. + + Si no se establece esta política, no habrá restricciones impuestas por la política en relación con el conjunto de aplicaciones que los usuarios pueden habilitar en la pantalla de bloqueo.</translation> <translation id="6506486086262398387">Si se habilita esta política, la función de sistemas de archivos compartidos en red de <ph name="PRODUCT_OS_NAME" /> usará NTLM para la autenticación en sistemas de archivos compartidos SMB si es necesario. Si se inhabilita, se desactivará el uso de NTLM para la autenticación en sistemas de archivos compartidos SMB. Si no se asigna ningún valor a esta política, el comportamiento estará inhabilitado para los usuarios gestionados y habilitado para el resto de los usuarios de forma predeterminada.</translation>
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb index d7c8614..22117bf 100644 --- a/components/policy/resources/policy_templates_nl.xtb +++ b/components/policy/resources/policy_templates_nl.xtb
@@ -1456,6 +1456,11 @@ <translation id="316778957754360075">Deze instelling wordt niet meer gebruikt sinds <ph name="PRODUCT_NAME" /> versie 29. De aanbevolen manier om verzamelingen van extensies/apps die door de organisatie worden gehost in te stellen, is het opnemen van de site die de CRX-pakketten in ExtensionInstallSources host en het plaatsen van rechtstreekse downloadlinks naar de pakketten op een webpagina. Je kunt voor die webpagina een startprogramma maken met het beleid ExtensionInstallForcelist.</translation> <translation id="3168968618972302728">Beleidsregels met betrekking tot Kerberos-verificatie.</translation> <translation id="3171369832001535378">Template voor hostnaam van apparaat in netwerk</translation> +<translation id="3176903288465566098">Als je deze instelling aanzet, kunnen gebruikers die Phone Hub al hebben toegestaan meldingen van hun telefoon sturen/ontvangen in Chrome OS. + + Als je deze instelling uitzet, mogen gebruikers deze functie niet gebruiken. Als het beleid PhoneHubAllowed uitstaat, mogen gebruikers deze functie ook niet gebruiken. + + Als je dit beleid niet instelt, geldt de standaardwaarde 'toegestaan' voor zowel beheerde zakelijke gebruikers als niet-beheerde gebruikers.</translation> <translation id="3177802893484440532">Online OCSP/CRL-controles voor lokale vertrouwensinstanties vereisen</translation> <translation id="3184161739683646075">Hiermee wordt de modus voor DNS-over-HTTPS bepaald</translation> <translation id="3185009703220253572">sinds versie <ph name="SINCE_VERSION" /></translation> @@ -2923,6 +2928,7 @@ Als dit beleid is ingesteld op False, is poortdoorschakeling naar Crostini-containers uitgeschakeld.</translation> <translation id="538108065117008131"><ph name="PRODUCT_FRAME_NAME" /> toestaan de volgende soorten content te verwerken.</translation> +<translation id="5383436189211119400">Als je het beleid DeviceArcDataSnapshotHours instelt, wordt het mechanisme voor momentopnamen van ARC-gegevens aangezet. De update voor momentopnamen van ARC-gegevens kan automatisch worden gestart gedurende de gedefinieerde tijdsintervallen. Wanneer een interval start, is de update voor ARC-momentopnamen vereist. Als er geen gebruiker is ingelogd, wordt het updateproces voor momentopnamen van ARC-gegevens gestart zonder melding aan de gebruiker. Als de gebruikerssessie actief is, wordt de UI-melding weergegeven en moet deze worden geaccepteerd om een apparaat opnieuw op te starten en het updateproces voor momentopnamen van ARC-gegevens te starten. Opmerking: Een apparaat is geblokkeerd voor gebruik tijdens het updateproces voor momentopnamen van ARC-gegevens.</translation> <translation id="538768040137709073">De functie voor gedeeld klembord inschakelen, waarmee gebruikers tekst kunnen sturen tussen Chrome-desktops en een Android-apparaat als synchronisatie is ingeschakeld en de gebruiker is ingelogd. Als dit beleid is ingesteld op True, is de mogelijkheid om tekst tussen apparaten te sturen ingeschakeld voor Chrome-gebruikers. @@ -4196,6 +4202,7 @@ <translation id="7068108874199666656">Hiermee kun je een netwerkconfiguratie toepassen voor alle gebruikers van een <ph name="PRODUCT_OS_NAME" />-apparaat. De netwerkconfiguratie is een tekenreeks met json-indeling, zoals gedefinieerd in de Open Network Configuration-indeling.</translation> <translation id="7070525176564511548">Het wachtwoord moet elke week (168 uur) worden opgegeven</translation> <translation id="7072208053150563108">Wijzigingsfrequentie van computerwachtwoord</translation> +<translation id="7072567600438630966">Toestaan dat Phone Hub wordt aangezet.</translation> <translation id="7079519252486108041">Pop-ups blokkeren op deze sites</translation> <translation id="7080072532759721791">Toestaan dat gebruikers bestanden met wachtwoordbeveiliging uploaden of downloaden</translation> <translation id="7086677522575756117">Hiermee wordt het percentage aangegeven waarmee de dimvertraging van het scherm wordt geschaald wanneer er gebruikersactiviteit wordt waargenomen terwijl het scherm is gedimd of kort nadat het scherm is uitgeschakeld. @@ -4374,6 +4381,7 @@ Als dit beleid niet wordt ingesteld of leeg is, kan de gebruiker elk willekeurig Google-account instellen als primair browseraccount in <ph name="PRODUCT_NAME" />.</translation> <translation id="723103540848640830">De minimumlengte van de pincode voor het vergrendelscherm instellen</translation> <translation id="7234280155140786597">Namen van de verboden hosts voor systeemeigen berichten (of * voor alle)</translation> +<translation id="7246767840750730334">Toestaan dat Phone Hub-meldingen worden aangezet.</translation> <translation id="7249828445670652637">CA-certificaten van <ph name="PRODUCT_OS_NAME" /> voor ARC-apps inschakelen</translation> <translation id="7252681704926980614">Gebruikersnaam en bestandsnaam bij elke afdruktaak naar systeemeigen printerserver verzenden. De standaardinstelling is om deze gegevens niet te verzenden. @@ -4480,6 +4488,11 @@ Dit beleid is verouderd. Gebruik in plaats daarvan <ph name="PRINTERS_BULK_BLOCKLIST" />. </translation> +<translation id="7358744897221281073">Als je deze instelling aanzet, kunnen gebruikers die Phone Hub al hebben toegestaan taken voortzetten in Chrome OS, zoals de webpagina's van hun telefoon bekijken. + + Als je deze instelling uitzet, mogen gebruikers deze functie niet gebruiken. Als het beleid PhoneHubAllowed uitstaat, mogen gebruikers deze functie ook niet gebruiken. + + Als je dit beleid niet instelt, geldt de standaardwaarde 'toegestaan' voor zowel beheerde zakelijke gebruikers als niet-beheerde gebruikers.</translation> <translation id="7360181094056034924">Hiermee wordt bepaald hoe <ph name="PRODUCT_NAME" /> werkt met geüploade en gedownloade gegevens waarvoor scannen vereist lijkt. Het uitstellen van de levering betekent dat <ph name="PRODUCT_NAME" /> niet toestaat dat de gebruiker een gedownload bestand opent, een bestand selecteert voor uploaden, gegevens plakt vanaf het klembord of gegevens sleept en neerzet totdat het betreffende item is gescand en het resultaat van die scan bekend is. Deze beperking geldt alleen voor bestanden of gegevens die moeten worden gescand, zoals bepaald door <ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" />, <ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" /> en de beleidsregels die de lijst met domeinen beheren waarvoor controles zijn ingeschakeld. Als dit beleid niet is ingesteld of is ingesteld op 'Geen', stelt <ph name="PRODUCT_NAME" /> niet uit dat bestanden worden geüpload, gegevens worden geplakt vanaf het klembord, gegevens worden gesleept en neergezet of gedownloade bestanden worden geopend. De scan wordt op de achtergrond uitgevoerd. @@ -4677,6 +4690,7 @@ Als dit beleid niet is ingesteld, is de grote cursor uitgeschakeld op het inlogscherm. Gebruikers kunnen deze functionaliteit op elk moment inschakelen en de status daarvan op het inlogscherm is van toepassing op alle gebruikers. Opmerking: <ph name="DEVICE_LOGIN_SCREEN_LARGE_CURSOR_ENABLED" /> overschrijft dit beleid als het is opgegeven.</translation> +<translation id="7632147323011514740">Intervallen wanneer het updateproces voor momentopnamen van ARC-gegevens kan worden gestart voor beheerde gastsessies</translation> <translation id="7632724434767231364">Naam van GSSAPI-bibliotheek</translation> <translation id="7643883929273267746">Accounts die zichtbaar zijn in <ph name="PRODUCT_NAME" /> beperken</translation> <translation id="7648907905084499629">Gedrag van <ph name="FEATURE_NAME_SAMESITE_BY_DEFAULT_COOKIES" /> voor cookies op alle sites gebruiken</translation> @@ -4957,6 +4971,7 @@ Dit beleid is altijd van kracht voor <ph name="PRODUCT_OS_NAME" />.</translation> <translation id="8050080920415773384">Systeemeigen printer</translation> <translation id="8053580360728293758">Hiermee overschrijf je de standaard kleurenmodus voor afdrukken. Als de modus niet beschikbaar is, wordt dit beleid genegeerd.</translation> +<translation id="8056237304861875584">Toestaan dat Phone Hub-taakvoortzetting wordt aangezet.</translation> <translation id="8059164285174960932">URL waarbij clients met externe toegang hun verificatietoken moeten ophalen</translation> <translation id="8077245272412229388">Hiermee worden vooraf ingevulde Kerberos-accounts toegevoegd. Als de Kerberos-gegevens overeenkomen met de inloggegevens, kan een account worden geconfigureerd om de inloggegevens opnieuw te gebruiken door '<ph name="LOGIN_EMAIL_PLACEHOLDER" />' en '<ph name="PASSWORD_PLACEHOLDER" />' te specificeren voor respectievelijk het hoofdaccount en wachtwoord. Hierdoor kan het Kerberos-ticket automatisch kan worden opgehaald, tenzij verificatie in twee stappen is geconfigureerd. Gebruikers kunnen accounts die zijn toegevoegd via dit beleid niet aanpassen. @@ -5712,6 +5727,11 @@ <translation id="9084985621503260744">Specificeer of videoactiviteit invloed heeft op stroombeheer</translation> <translation id="9088433379343318874">Contentprovider voor de gebruiker met beperkte rechten inschakelen</translation> <translation id="9088444059179765143">De methode voor automatische tijdzonedetectie configureren</translation> +<translation id="9095999573959728902">Als je deze instelling aanzet, mogen gebruikers toestemming geven voor Phone Hub. Hiermee kunnen ze interactie met hun telefoon hebben op een Chrome OS-apparaat. + + Als je deze instelling uitzet, mogen gebruikers geen toestemming geven voor Phone Hub. + + Als je dit beleid niet instelt, geldt de standaardwaarde 'niet toegestaan' voor beheerde zakelijke gebruikers en 'toegestaan' voor niet-beheerde gebruikers.</translation> <translation id="9096086085182305205">Witte lijst voor verificatieserver</translation> <translation id="9105265795073104888">Er is slechts een subset van de configuratieopties voor de proxy beschikbaar voor Android-apps. Android-apps kunnen op vrijwillige basis gebruikmaken van de proxy. Je kunt Android-apps niet dwingen een proxy te gebruiken.</translation> <translation id="9106865192244721694">WebUSB toestaan op deze sites</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb index 02c768d..99080481 100644 --- a/components/policy/resources/policy_templates_th.xtb +++ b/components/policy/resources/policy_templates_th.xtb
@@ -1453,6 +1453,11 @@ <translation id="316778957754360075">การตั้งค่านี้ถูกยกเลิกไปตั้งแต่ <ph name="PRODUCT_NAME" /> เวอร์ชัน 29 วิธีที่แนะนำในการตั้งค่าคอลเล็กชันส่วนขยาย/แอปที่โฮสต์โดยองค์กรคือการรวมไซต์ที่โฮสต์แพ็กเกจ CRX ใน ExtensionInstallSources และการวางลิงก์ดาวน์โหลดโดยตรงไปยังแพ็กเกจบนหน้าเว็บ ตัวเรียกใช้งานสำหรับหน้าเว็บนั้นสามารถถูกสร้างขึ้นโดยใช้นโยบาย ExtensionInstallForcelist</translation> <translation id="3168968618972302728">นโยบายเกี่ยวกับการตรวจสอบสิทธิ์ Kerberos</translation> <translation id="3171369832001535378">เทมเพลตชื่อโฮสต์เครือข่ายของอุปกรณ์</translation> +<translation id="3176903288465566098">หากเปิดใช้การตั้งค่านี้ ผู้ใช้ที่เลือกใช้ฮับโทรศัพท์อยู่แล้วจะส่ง/รับการแจ้งเตือนของโทรศัพท์ใน Chrome OS ได้ + + หากปิดใช้การตั้งค่านี้ ผู้ใช้จะใช้ฟีเจอร์นี้ไม่ได้ หากปิดใช้นโยบาย PhoneHubAllowed ผู้ใช้ก็จะใช้ฟีเจอร์นี้ไม่ได้เช่นกัน + + หากไม่ได้ตั้งค่านโยบายนี้ ทั้งผู้ใช้ที่มีองค์กรเป็นผู้จัดการและผู้ใช้ที่ไม่มีการจัดการจะใช้ค่าเริ่มต้นได้</translation> <translation id="3177802893484440532">ต้องใช้การตรวจสอบ OCSP/CRL ออนไลน์สำหรับ Trust Anchor ในพื้นที่</translation> <translation id="3184161739683646075">ควบคุมโหมด DNS-over-HTTPS</translation> <translation id="3185009703220253572">ตั้งแต่รุ่น <ph name="SINCE_VERSION" /></translation> @@ -2916,6 +2921,7 @@ หากตั้งค่านโยบายนี้เป็น "เท็จ" ระบบจะปิดใช้การส่งต่อพอร์ตไปยังคอนเทนเนอร์ Crostini</translation> <translation id="538108065117008131">อนุญาตให้ <ph name="PRODUCT_FRAME_NAME" /> จัดการประเภทเนื้อหาดังต่อไปนี้</translation> +<translation id="5383436189211119400">หากตั้งค่านโยบาย "DeviceArcDataSnapshotHours" ระบบจะเปิดใช้กลไกการสรุปภาพรวมของข้อมูล ARC และอัปเดตการสรุปภาพรวมของข้อมูล ARC จะเริ่มต้นโดยอัตโนมัติในช่วงเวลาที่กำหนดได้ เมื่อช่วงเวลาดังกล่าวเริ่มต้น ระบบต้องอัปเดตภาพรวม ARC และไม่อนุญาตให้ผู้ใช้ลงชื่อเข้าสู่ระบบ ขั้นตอนการอัปเดตภาพรวมของข้อมูล ARC จะเริ่มโดยไม่แสดงการแจ้งเตือนต่อผู้ใช้ หากผู้ใช้กำลังใช้งานอยู่ การแจ้งเตือน UI จะแสดงขึ้นและผู้ใช้ต้องยอมรับเพื่อรีบูตอุปกรณ์และเริ่มขั้นตอนการอัปเดตภาพรวมของข้อมูล ARC หมายเหตุ: ระบบจะไม่อนุญาตให้มีการใช้งานอุปกรณ์ในระหว่างที่อัปเดตภาพรวมของข้อมูล ARC</translation> <translation id="538768040137709073">เปิดใช้ฟีเจอร์คลิปบอร์ดที่แชร์ซึ่งจะทำให้ผู้ใช้ส่งข้อความระหว่าง Chrome ในเดสก์ท็อปกับอุปกรณ์ Android ได้เมื่อมีการเปิดการซิงค์ไว้และผู้ใช้ลงชื่อเข้าใช้อยู่ หากตั้งค่านโยบายนี้เป็น "จริง" จะเปิดใช้ความสามารถในการส่งข้อความระหว่างอุปกรณ์สำหรับผู้ใช้ Chrome @@ -4185,6 +4191,7 @@ <translation id="7068108874199666656">อนุญาตให้ใช้การกำหนดค่าเครือข่ายแบบพุชสำหรับผู้ใช้ทั้งหมดของอุปกรณ์ <ph name="PRODUCT_OS_NAME" /> การกำหนดค่าเครือข่ายจะเป็นสตริงรูปแบบ JSON ตามที่กำหนดโดยรูปแบบการกำหนดค่าเครือข่ายแบบเปิด</translation> <translation id="7070525176564511548">ต้องป้อนรหัสผ่านทุกสัปดาห์ (168 ชั่วโมง)</translation> <translation id="7072208053150563108">อัตราการเปลี่ยนรหัสผ่านโดยเครื่อง</translation> +<translation id="7072567600438630966">อนุญาตให้มีการเปิดใช้ฮับโทรศัพท์</translation> <translation id="7079519252486108041">ปิดกั้นป๊อปอัปบนไซต์เหล่านี้</translation> <translation id="7080072532759721791">อนุญาตให้ผู้ใช้อัปโหลดหรือดาวน์โหลดไฟล์ที่ป้องกันด้วยรหัสผ่าน</translation> <translation id="7086677522575756117">ระบุเปอร์เซ็นต์การปรับขนาดการหน่วงเวลาการหรี่แสงหน้าจอเมื่อระบบสังเกตพบกิจกรรมของผู้ใช้ขณะที่หน้าจอหรี่แสงหรือในไม่ช้าหลังจากที่มีการปิดหน้าจอ @@ -4363,6 +4370,7 @@ หากไม่ได้ตั้งค่านโยบายนี้หรือเว้นว่างไว้ ผู้ใช้จะตั้งค่าบัญชี Google ใดก็ได้ให้เป็นบัญชีหลักของเบราว์เซอร์ใน <ph name="PRODUCT_NAME" /></translation> <translation id="723103540848640830">ตั้งค่าความยาวขั้นต่ำของ PIN หน้าจอล็อก</translation> <translation id="7234280155140786597">ชื่อของโฮสต์การรับส่งข้อความดั้งเดิมต้องห้าม (หรือ * สำหรับทั้งหมด)</translation> +<translation id="7246767840750730334">อนุญาตให้มีการเปิดใช้การแจ้งเตือนของฮับโทรศัพท์</translation> <translation id="7249828445670652637">เปิดใช้ใบรับรอง CA ของ <ph name="PRODUCT_OS_NAME" /> สำหรับแอป ARC</translation> <translation id="7252681704926980614">ส่งชื่อผู้ใช้และชื่อไฟล์ไปยังเซิร์ฟเวอร์เครื่องพิมพ์ดั้งเดิมพร้อมด้วยงานพิมพ์ทั้งหมด ค่าเริ่มต้นคือไม่ส่ง @@ -4467,6 +4475,11 @@ นโยบายนี้เลิกใช้งานไปแล้ว โปรดใช้ <ph name="PRINTERS_BULK_BLOCKLIST" /> แทน </translation> +<translation id="7358744897221281073">หากเปิดใช้การตั้งค่านี้ ผู้ใช้ที่เลือกใช้ฮับโทรศัพท์อยู่แล้วจะทำงานต่างๆ เช่น ดูหน้าเว็บของโทรศัพท์ใน Chrome OS ต่อไปได้ + + หากปิดใช้การตั้งค่านี้ ผู้ใช้จะใช้ฟีเจอร์นี้ไม่ได้ หากปิดใช้นโยบาย PhoneHubAllowed ผู้ใช้ก็จะใช้ฟีเจอร์นี้ไม่ได้เช่นกัน + + หากไม่ได้ตั้งค่านโยบายนี้ ทั้งผู้ใช้ที่มีองค์กรเป็นผู้จัดการและผู้ใช้ที่ไม่มีการจัดการจะใช้ค่าเริ่มต้นได้</translation> <translation id="7360181094056034924">ควบคุมการทำงานของ <ph name="PRODUCT_NAME" /> กับข้อมูลการอัปโหลดและดาวน์โหลดที่เห็นว่าต้องสแกน การถ่วงเวลาการส่งหมายความว่า <ph name="PRODUCT_NAME" /> จะไม่อนุญาตให้ผู้ใช้เข้าถึงไฟล์ที่ดาวน์โหลดมา เลือกไฟล์ที่จะอัปโหลด วางจากคลิปบอร์ด หรือลากและวางข้อมูล จนกว่าระบบจะสแกนไฟล์หรือข้อมูลนั้นแล้ว และรู้ผลคำตัดสินของการสแกนก่อน การจำกัดนี้ใช้เฉพาะกับไฟล์หรือข้อมูลที่ต้องมีการสแกนตามที่กำหนดโดย <ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" />, <ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" /> และนโยบายต่างๆ ที่ควบคุมรายการโดเมนที่เปิดใช้การตรวจสอบ หากไม่ได้ตั้งค่านโยบายนี้หรือตั้งค่าเป็น "ไม่มี" <ph name="PRODUCT_NAME" /> จะไม่ถ่วงเวลาไฟล์ใดๆ ในการอัปโหลด วางจากคลิปบอร์ด ลากและวางข้อมูล หรือถ่วงเวลาการเข้าถึงไฟล์ใดๆ ที่ดาวน์โหลดมา การสแกนจะทำงานอยู่เบื้องหลัง @@ -4663,6 +4676,7 @@ หากไม่ได้ตั้งค่าไว้ ระบบจะปิดใช้เคอร์เซอร์ขนาดใหญ่ในหน้าจอลงชื่อเข้าใช้ ผู้ใช้จะเปิดใช้เมื่อใดก็ได้ และสถานะนั้นในหน้าจอลงชื่อเข้าใช้จะยังคงอยู่ตลอดระหว่างการใช้งานของผู้ใช้แต่ละคน หมายเหตุ: <ph name="DEVICE_LOGIN_SCREEN_LARGE_CURSOR_ENABLED" /> จะลบล้างนโยบายนี้หากระบุนโยบายเดิมไว้</translation> +<translation id="7632147323011514740">ช่วงเวลาที่ขั้นตอนการอัปเดตภาพรวมของข้อมูล ARC จะเริ่มต้นสำหรับเซสชันผู้เยี่ยมชมที่มีการจัดการได้</translation> <translation id="7632724434767231364">ชื่อไลบรารี GSSAPI</translation> <translation id="7643883929273267746">จำกัดบัญชีที่แสดงอยู่ใน <ph name="PRODUCT_NAME" /></translation> <translation id="7648907905084499629">ใช้ลักษณะการทำงาน <ph name="FEATURE_NAME_SAMESITE_BY_DEFAULT_COOKIES" /> สำหรับคุกกี้ในทุกเว็บไซต์</translation> @@ -4938,6 +4952,7 @@ และจะมีผลเสมอสำหรับ <ph name="PRODUCT_OS_NAME" /></translation> <translation id="8050080920415773384">การพิมพ์ดั้งเดิม</translation> <translation id="8053580360728293758">ลบล้างโหมดสีการพิมพ์เริ่มต้น ระบบจะเพิกเฉยนโยบายนี้หากไม่มีโหมด</translation> +<translation id="8056237304861875584">อนุญาตให้มีการเปิดใช้การทำงานอย่างต่อเนื่องในฮับโทรศัพท์</translation> <translation id="8059164285174960932">URL ที่ไคลเอ็นต์การเข้าถึงระยะไกลควรรับโทเค็นการตรวจสอบสิทธิ์</translation> <translation id="8077245272412229388">เพิ่มบัญชี Kerberos ที่กรอกไว้ล่วงหน้า หากข้อมูลเข้าสู่ระบบ Kerberos ตรงกับข้อมูลเข้าสู่ระบบของการเข้าสู่ระบบ คุณจะกำหนดค่าบัญชีให้ใช้ข้อมูลเข้าสู่ระบบของการเข้าสู่ระบบซ้ำได้โดยระบุ "<ph name="LOGIN_EMAIL_PLACEHOLDER" />" และ "<ph name="PASSWORD_PLACEHOLDER" />" สำหรับผู้ใช้หลักและรหัสผ่านตามลำดับ เพื่อให้ดึงข้อมูลตั๋ว Kerberos ได้โดยอัตโนมัติ เว้นแต่มีการกำหนดค่าการตรวจสอบสิทธิ์แบบ 2 ปัจจัย ผู้ใช้จะแก้ไขบัญชีที่เพิ่มผ่านนโยบายนี้ไม่ได้ @@ -5699,6 +5714,11 @@ <translation id="9084985621503260744">ระบุว่ากิจกรรมวิดีโอมีผลต่อการจัดการพลังงานหรือไม่</translation> <translation id="9088433379343318874">เปิดใช้ผู้ให้บริการเนื้อหาสำหรับผู้ใช้ภายใต้การดูแล</translation> <translation id="9088444059179765143">กำหนดค่าวิธีการตรวจหาเขตเวลาอัตโนมัติ</translation> +<translation id="9095999573959728902">หากเปิดใช้การตั้งค่านี้ ผู้ใช้จะสามารถเลือกใช้ฮับโทรศัพท์ซึ่งทำให้โต้ตอบกับโทรศัพท์ในอุปกรณ์ Chrome OS ได้ + + หากปิดใช้การตั้งค่านี้ ผู้ใช้จะเลือกใช้ฮับโทรศัพท์ไม่ได้ + + หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะไม่อนุญาตให้ใช้ค่าเริ่มต้นกับผู้ใช้ที่มีการจัดการโดยองค์กรแต่อนุญาตให้ใช้กับผู้ใช้ที่ไม่มีการจัดการ</translation> <translation id="9096086085182305205">รายการที่อนุญาตสำหรับเซิร์ฟเวอร์การตรวจสอบสิทธิ์</translation> <translation id="9105265795073104888">แอป Android สามารถใช้เพียงชุดย่อยของตัวเลือกการกำหนดค่าพร็อกซี โดยแอป Android อาจเลือกใช้พร็อกซีโดยสมัครใจ คุณไม่สามารถบังคับให้แอปใช้พร็อกซีได้</translation> <translation id="9106865192244721694">อนุญาต WebUSB ในเว็บไซต์เหล่านี้</translation>
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb index e78afbc..1d652b4 100644 --- a/components/policy/resources/policy_templates_uk.xtb +++ b/components/policy/resources/policy_templates_uk.xtb
@@ -1478,6 +1478,11 @@ <translation id="316778957754360075">Це налаштування не підтримується від 29-ї версії <ph name="PRODUCT_NAME" />. Рекомендований спосіб налаштування груп розширень і програм, розміщених на корпоративних серверах, – включити сайт, на якому розміщено пакети CRX у правило ExtensionInstallSources і розмістити прямі посилання для завантаження в пакети на веб-сторінці. Панель запуску для веб-сторінки можна створити за допомогою правила ExtensionInstallForcelist.</translation> <translation id="3168968618972302728">Правила, пов’язані з автентифікацією в Kerberos.</translation> <translation id="3171369832001535378">Шаблон імені хосту мережі пристрою</translation> +<translation id="3176903288465566098">Якщо це правило ввімкнено, користувачі, які вже активували Керування телефоном, зможуть надсилати й отримувати сповіщення зі свого телефона на пристрої з ОС Chrome. + + Якщо цей параметр або правило PhoneHubAllowed вимкнено, така функція буде недоступна для користувачів. + + Якщо це правило не налаштовано, за умовчанням цю функцію зможуть вмикати користувачі, якими керує адміністратор і якими він не керує.</translation> <translation id="3177802893484440532">Вимагати перевірку OCSP/CRL онлайн для локальних ключів довіри</translation> <translation id="3184161739683646075">Керує режимом DNS-over-HTTPS</translation> <translation id="3185009703220253572">від версії <ph name="SINCE_VERSION" /></translation> @@ -2959,6 +2964,7 @@ Якщо для цього правила вибрано значення false, переадресацію портів у контейнери Crostini буде вимкнено.</translation> <translation id="538108065117008131">Дозволити <ph name="PRODUCT_FRAME_NAME" /> обробляти перелічені типи вмісту.</translation> +<translation id="5383436189211119400">Якщо правило DeviceArcDataSnapshotHours налаштовано, механізм короткого огляду даних ARC буде ввімкнено, а оновлення короткого огляду таких даних може відбуватись автоматично впродовж визначених проміжків часу. Коли починається такий проміжок часу, а також потрібно оновити короткий огляд даних ARC і жодний користувач не ввійшов в обліковий запис, згадане оновлення запускається, а користувачі не отримують відповідного сповіщення. Якщо є активний сеанс користувача, в інтерфейсі з'являється сповіщення, а користувач має прийняти запит перезапустити пристрій і почати оновлення короткого огляду даних ARC. Примітка: упродовж такого оновлення пристроєм не можна користуватися.</translation> <translation id="538768040137709073">Увімкнути функцію "Спільний буфер обміну", яка дозволяє ділитися текстом між комп'ютерами з Chrome і пристроями Android, коли ввімкнено синхронізацію й користувач увійшов в обліковий запис. Якщо для цього правила вибрано значення true, користувач Chrome може надсилати текст на інші пристрої. @@ -4233,6 +4239,7 @@ <translation id="7068108874199666656">Дає змогу надсилати конфігурацію мережі для застосування всіма користувачами на пристрої з <ph name="PRODUCT_OS_NAME" />. Конфігурація мережі – це рядок у форматі JSON, визначений форматом Open Network Configuration.</translation> <translation id="7070525176564511548">Пароль потрібно вводити щотижня (кожні 168 годин)</translation> <translation id="7072208053150563108">Швидкість зміни пароля пристрою</translation> +<translation id="7072567600438630966">Дозволити вмикати Керування телефоном.</translation> <translation id="7079519252486108041">Блокувати спливаючі вікна на цих сайтах</translation> <translation id="7080072532759721791">Дозволити користувачам додавати або завантажувати файли, захищені паролем</translation> <translation id="7086677522575756117">Указує відсоток, за яким масштабується затримка затемнення екрана, коли спостерігається активність користувача на пристрої із затемненим екраном або невдовзі після його вимкнення. @@ -4411,6 +4418,7 @@ Якщо це правило порожнє або його не налаштовано, користувач може вибрати будь-який обліковий запис Google основним у веб-переглядачі <ph name="PRODUCT_NAME" />.</translation> <translation id="723103540848640830">Установити мінімальну довжину PIN-коду для блокування екрана</translation> <translation id="7234280155140786597">Імена заборонених хостів для обміну повідомленнями з оригінальними додатками (або * для всіх)</translation> +<translation id="7246767840750730334">Дозволити вмикати сповіщення функції "Керування телефоном".</translation> <translation id="7249828445670652637">Дозволити сертифікати центру сертифікації <ph name="PRODUCT_OS_NAME" /> для додатків ARC</translation> <translation id="7252681704926980614">Надсилайте ім’я користувача та назву файлу на сервер власних принтерів під час кожного завдання друку. Дані за умовчанням не надсилаються. @@ -4515,6 +4523,11 @@ Це правило більше не підтримується. Натомість використовуйте правило <ph name="PRINTERS_BULK_BLOCKLIST" />. </translation> +<translation id="7358744897221281073">Якщо це правило ввімкнено, користувачі, які вже ввімкнули Керування телефоном, зможуть продовжувати виконувати на пристрої з ОС Chrome завдання, які почали на телефоні, наприклад переглядати веб-сторінки. + + Якщо цей параметр або правило PhoneHubAllowed вимкнено, така функція буде недоступна для користувачів. + + Якщо це правило не налаштовано, за умовчанням цю функцію зможуть вмикати користувачі, якими керує адміністратор і якими він не керує.</translation> <translation id="7360181094056034924">Визначає, як <ph name="PRODUCT_NAME" /> поводиться з доданими й завантаженими даними, які мають перевірятися. Якщо відкласти доставку, <ph name="PRODUCT_NAME" /> не дозволить користувачу отримати доступ до завантаженого файлу, вибрати файл для додавання, вставити з буфера або перетягнути дані, доки не надійдуть результати перевірки. Це обмеження стосується лише файлів або даних, які потрібно перевіряти згідно з <ph name="SEND_FILES_FOR_MALWARE_CHECK_POLICY_NAME" />, <ph name="CHECK_CONTENT_COMPLIANCE_POLICY_NAME" /> і правилами, що керують списком доменів, для яких увімкнено перевірку. Якщо це правило не налаштовано або для нього вибрано значення None, <ph name="PRODUCT_NAME" /> не відкладає файли для додавання, вставлення з буфера й перетягування даних і не відкладає доступ до завантажених файлів. Перевірка продовжиться у фоновому режимі. @@ -4712,6 +4725,7 @@ Якщо це правило не налаштовано, великий курсор буде вимкнено на екрані входу. Користувачі можуть будь-коли ввімкнути його, а вибраний розмір буде відображатися на екрані входу для всіх користувачів. Примітка: якщо вказано правило <ph name="DEVICE_LOGIN_SCREEN_LARGE_CURSOR_ENABLED" />, воно замінює це правило.</translation> +<translation id="7632147323011514740">Інтервали часу, упродовж яких може запускатись оновлення короткого огляду даних ARC для керованих сеансів у режимі "Гість"</translation> <translation id="7632724434767231364">Назва бібліотеки GSSAPI</translation> <translation id="7643883929273267746">Обмежити видимість облікових записів у <ph name="PRODUCT_NAME" /></translation> <translation id="7648907905084499629">Застосовувати поведінку <ph name="FEATURE_NAME_SAMESITE_BY_DEFAULT_COOKIES" /> для файлів cookie на всіх сайтах</translation> @@ -4987,6 +5001,7 @@ Для <ph name="PRODUCT_OS_NAME" /> це правило діє завжди.</translation> <translation id="8050080920415773384">Власний друк</translation> <translation id="8053580360728293758">Замінює стандартні параметри кольорового друку. Якщо такий режим недоступний, це правило ігнорується.</translation> +<translation id="8056237304861875584">Дозволити вмикати продовження виконання завдань через функцію "Керування телефоном"</translation> <translation id="8059164285174960932">URL-адреса, за якою клієнти віддаленого доступу мають отримати маркер автентифікації</translation> <translation id="8077245272412229388">Додає попередньо вказані облікові записи Kerberos. Якщо облікові дані Kerberos збігаються з обліковими даними для входу, можна налаштувати повторне використання останніх в обліковому записі, указавши <ph name="LOGIN_EMAIL_PLACEHOLDER" /> і <ph name="PASSWORD_PLACEHOLDER" /> для основного поля й пароля відповідно, щоб автоматично отримувати запит Kerberos, якщо не налаштовано двохетапну перевірку. Користувачі не можуть змінювати облікові записи, додані через це правило. @@ -5750,6 +5765,11 @@ <translation id="9084985621503260744">Визначати, чи дії з відео впливають на керування живленням</translation> <translation id="9088433379343318874">Увімкнути постачальника вмісту для контрольованих користувачів</translation> <translation id="9088444059179765143">Налаштувати метод автоматичного визначення часового поясу</translation> +<translation id="9095999573959728902">Якщо це правило ввімкнено, користувачі зможуть активувати Керування телефоном, щоб взаємодіяти зі своїм телефоном на пристрої з ОС Chrome. + + Якщо цей параметр вимкнений, користувачі не зможуть активувати Керування телефоном. + + Якщо це правило не налаштовано, за умовчанням дозвіл мають лише користувачі, якими не керує адміністратор.</translation> <translation id="9096086085182305205">Список дозволених серверів для автентифікації</translation> <translation id="9105265795073104888">Додаткам Android доступні лише варіанти конфігурації проксі. Додатки Android можуть вибирати, чи використовувати проксі. Ви не можете вплинути на це.</translation> <translation id="9106865192244721694">Дозволити WebUSB на цих сайтах</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index ab44c4e0..ba956f4 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -41,6 +41,11 @@ Chính sách này chỉ ảnh hưởng đến những người có miền khớp với miền đăng ký của thiết bị. Đối với tất cả người dùng khác, cookie do IdP đặt chỉ được chuyển tới hồ sơ của người dùng trong lần đăng nhập đầu tiên của họ trên thiết bị.</translation> <translation id="1029052664284722254">Buộc thiết bị khởi động lại khi đăng xuất người dùng</translation> +<translation id="1032533786864478457">Nếu bạn đặt chính sách này thành Bật, thì người dùng có thể thiết lập các thiết bị để đồng bộ hóa tin nhắn văn bản của họ với Chromebook. Người dùng phải chọn sử dụng tính năng này một cách rõ ràng thông qua việc hoàn tất quy trình thiết lập. Sau khi hoàn tất, họ có thể gửi và nhận tin nhắn văn bản trên Chromebook. + + Nếu bạn đặt chính sách này thành Tắt, thì người dùng sẽ không thể thiết lập tính năng đồng bộ hóa tin nhắn văn bản. + + Nếu bạn không đặt chính sách này thì theo mặc định, người dùng khác chứ không phải người dùng được quản lý sẽ được phép dùng tính năng nêu trên.</translation> <translation id="1040446814317236570">Bật tách URL PAC (cho https://)</translation> <translation id="1046484220783400299">Bật các tính năng nền tảng web không dùng nữa trong một khoảng thời gian giới hạn</translation> <translation id="1047128214168693844">Không cho phép bất kỳ trang web nào theo dõi vị trí thực của người dùng</translation> @@ -670,6 +675,9 @@ <translation id="2057317273526988987">Cho phép truy cập vào một danh sách các URL</translation> <translation id="2061810934846663491">Định cấu hình tên miền bắt buộc cho máy chủ truy cập từ xa</translation> <translation id="2067011586099792101">Chặn truy cập vào các trang web nằm ngoài gói nội dung</translation> +<translation id="2069350366303315077">Khi bạn đặt chính sách này thành Bật, thì <ph name="PRODUCT_NAME" /> sẽ thực thi các phiên khách và ngăn chặn phiên đăng nhập vào hồ sơ. Phiên đăng nhập khách là hồ sơ <ph name="PRODUCT_NAME" />, trong đó các cửa sổ đều ở Chế độ ẩn danh. + + Nếu bạn không đặt hoặc đặt chính sách này thành Tắt hay tắt Chế độ khách trên trình duyệt, (thông qua <ph name="BROWSER_GUEST_MODE_ENABLED_POLICY_NAME" />), thì người dùng có thể sử dụng các hồ sơ mới và hiện có.</translation> <translation id="2073552873076775140">Cho phép đăng nhập vào <ph name="PRODUCT_NAME" /></translation> <translation id="2075732129949889165">Playbook Crostini Ansible</translation> <translation id="2077129598763517140">Sử dụng chế độ tăng tốc phần cứng khi khả dụng</translation> @@ -1004,6 +1012,11 @@ <translation id="2482676533225429905">Nhắn tin gốc</translation> <translation id="2483146640187052324">Dự đoán tác vụ mạng trên kết nối mạng bất kỳ</translation> <translation id="2498238926436517902">Luôn tự động ẩn giá</translation> +<translation id="250022556568924228">Nếu bạn đặt chính sách này, <ph name="PRODUCT_OS_NAME" /> sẽ tải Điều khoản dịch vụ xuống và hiển thị với người dùng ở bất cứ thời điểm nào bắt đầu phiên truy cập tài khoản trên thiết bị. Người dùng chỉ có thể đăng nhập vào phiên đó sau khi chấp nhận Điều khoản dịch vụ. + + Nếu bạn không đặt chính sách này, Điều khoản dịch vụ sẽ không xuất hiện. + + Bạn nên đặt chính sách này thành một URL mà từ đó <ph name="PRODUCT_OS_NAME" /> có thể tải Điều khoản dịch vụ xuống. Điều khoản dịch vụ phải là văn bản thuần túy, được phân phối dưới dạng văn bản/văn bản thuần túy loại MIME. Không được phép đánh dấu.</translation> <translation id="2502467045153796624">Chế độ hạ cấp kênh</translation> <translation id="250670737672448119">Bật tính năng hỗ trợ tiếp cận về làm nổi bật dấu chèn. @@ -1188,6 +1201,13 @@ Chính sách doanh nghiệp này được áp dụng ngắn hạn và sẽ bị loại bỏ trong Chrome 88.</translation> <translation id="2759224876420453487">Kiểm soát hoạt động của người dùng trong một phiên đa cấu hình</translation> +<translation id="2759426227259007018">Nếu bạn đặt chính sách này, hệ thống sẽ chỉ định những ứng dụng mà người dùng có thể bật làm ứng dụng ghi chú trên màn hình khóa của <ph name="PRODUCT_OS_NAME" />. + + Nếu bạn bật ứng dụng ghi chú ưa thích trên màn hình khóa, thì thành phần trên giao diện người dùng để chạy ứng dụng đó sẽ xuất hiện trên màn hình. Sau khi chạy, ứng dụng có thể tạo một cửa sổ ở đầu màn hình khóa và tạo các ghi chú trong ngữ cảnh này. Ứng dụng này có thể nhập các ghi chú đã tạo vào phiên truy cập của người dùng chính, khi phiên được mở khóa. Bạn chỉ dùng được ứng dụng ghi chú của <ph name="PRODUCT_NAME" /> trên màn hình khóa. + + Nếu bạn đặt chính sách này, người dùng có thể bật một ứng dụng trên màn hình khóa khi mã nhận dạng tiện ích của ứng dụng đó có trong giá trị danh sách của chính sách. Do vậy, khi bạn đặt chính sách này thành một danh sách trống, tính năng ghi chú trên màn hình khóa sẽ tắt. Xin lưu ý rằng không phải cứ có mã nhận dạng ứng dụng trong chính sách là người dùng có thể bật ứng dụng đó làm ứng dụng ghi chú trên màn hình khóa. Ví dụ: trên <ph name="PRODUCT_NAME" /> 61, chúng tôi cũng hạn chế một số ứng dụng có sẵn theo nền tảng. + + Nếu bạn không đặt chính sách này, sẽ không có hạn chế nào do chính sách này áp dụng cho một số ứng dụng mà người dùng có thể bật trên màn hình khóa.</translation> <translation id="2761483219396643566">Thời gian chờ cảnh báo trạng thái không sử dụng khi chạy trên nguồn pin</translation> <translation id="2765601181281280493">Khi đặt chính sách này, bạn có thể tạo danh sách các mẫu URL chỉ định những trang web không được phép yêu cầu người dùng cấp quyền truy cập vào một cổng nối tiếp. @@ -1525,6 +1545,9 @@ <translation id="3251500716404598358">Định cấu hình chính sách để chuyển đổi giữa các trình duyệt. Các trang web được định cấu hình sẽ tự động mở trong trình duyệt khác không phải là <ph name="PRODUCT_NAME" />.</translation> +<translation id="3255624750680556186">Nếu bạn không đặt hoặc đặt chính sách này thành Bật, thì thiết bị sẽ kích hoạt chức năng Powerwash. + + Nếu bạn đặt chính sách này thành Tắt, thì thiết bị sẽ không kích hoạt chức năng Powerwash. Trường hợp ngoại lệ là thiết bị vẫn có thể kích hoạt chức năng Powerwash nếu bạn đặt chính sách <ph name="TPM_FIRMWARE_UPDATE_SETTINGS_NAME" /> thành một giá trị cho phép cập nhật chương trình cơ sở TPM, tuy nhiên chương trình đó lại chưa được cập nhật.</translation> <translation id="3255762580838224124">Nếu đặt chính sách này, thì mỗi màn hình sẽ xoay theo một hướng chỉ định mỗi khi khởi động lại và vào lần đầu tiên màn hình được kết nối sau khi giá trị chính sách thay đổi. Người dùng có thể thay đổi chế độ xoay màn hình thông qua trang cài đặt sau khi đăng nhập. Tuy nhiên, chế độ này sẽ chuyển về như cũ vào lần khởi động lại tiếp theo. Chính sách này áp dụng cho màn hình chính và phụ. Nếu bạn chưa đặt chính sách này, thì giá trị mặc định là 0 độ và người dùng có thể thay đổi giá trị này. Trong trường hợp này, giá trị mặc định không được áp dụng thêm lần nữa khi khởi động lại.</translation> @@ -2649,6 +2672,9 @@ Nếu bạn tắt chính sách này, thì mọi lệnh gọi đến API chia sẻ màn hình đều sẽ không thực hiện được do gặp lỗi.</translation> +<translation id="5025239932007658691">Nếu bạn không đặt hoặc đặt chính sách này thành Bật, thì thỉnh thoảng, <ph name="PRODUCT_NAME" /> sẽ gửi các truy vấn đến máy chủ của Google để truy xuất dấu thời gian chính xác. + + Nếu bạn đặt chính sách này thành Tắt, <ph name="PRODUCT_NAME" /> sẽ ngừng gửi các truy vấn đó.</translation> <translation id="5032164758660626397">Ngăn người dùng chuyển các tệp có kích thước lớn</translation> <translation id="5047604665028708335">Cho phép truy cập vào các trang web nằm ngoài gói nội dung</translation> <translation id="5056708224511062314">Đã tắt kính lúp màn hình</translation> @@ -3432,6 +3458,9 @@ <translation id="6034341625190551415">Kiểm soát phiên công khai và loại tài khoản kiosk.</translation> <translation id="6034603289689965535">Cho phép trang hiển thị cửa sổ bật lên khi đang hủy tải trang</translation> <translation id="6036523166753287175">Bật tính năng chặn tường lửa từ máy chủ truy cập từ xa</translation> +<translation id="603768430528561926">Nếu bạn không đặt hoặc đặt chính sách này thành Bật, thì người dùng thiết bị của doanh nghiệp sẽ có thể đổi ưu đãi bằng cách đăng ký<ph name="PRODUCT_OS_NAME" />. + + Nếu bạn đặt chính sách này thành Tắt, thì người dùng không thể đổi các ưu đãi này.</translation> <translation id="6038407313189625985">Nếu bạn không đặt hoặc đặt chính sách này thành bật, thì tính năng Tính toàn vẹn của mã trình kết xuất sẽ bật. Bạn chỉ nên tắt chính sách này nếu gặp vấn đề về khả năng tương thích với phần mềm bên thứ ba. Phần mềm này phải chạy trong các quá trình xử lý trình kết xuất của Chrome. Khi tắt chính sách này, tính bảo mật và độ ổn định của Chrome sẽ bị ảnh hưởng bởi vì mã không xác định và có khả năng gây hại sẽ được phép tải trong các quá trình xử lý trình kết xuất của Chrome. Vui lòng tham khảo https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md#Process-mitigation-policies để biết thêm thông tin.</translation> @@ -3652,6 +3681,7 @@ Nếu bạn không đặt chính sách này hoặc danh sách trống, thì tất cả lược đồ đều truy cập được trong <ph name="PRODUCT_NAME" />.</translation> <translation id="6338982178236723271">Báo cáo thông tin về hệ thống</translation> <translation id="6342187235303612558">Chặn người dùng tải lên hoặc tải xuống các tệp hiện không được hỗ trợ quét tìm phần mềm độc hại hoặc quét tìm dựa trên tính năng Ngăn chặn mất dữ liệu.</translation> +<translation id="6353890097388312479">Nếu bạn không đặt hoặc đặt chính sách này thành Tất cả (0), thì người dùng có thể chỉnh sửa các tùy chọn cài đặt tin cậy cho tất cả chứng chỉ CA, xóa chứng chỉ do người dùng nhập và nhập chứng chỉ bằng Trình quản lý chứng chỉ. Nếu bạn đặt chính sách này thành UserOnly (1), người dùng có thể chỉ quản lý các chứng chỉ do người dùng nhập nhưng không thể thay đổi các tùy chọn cài đặt tin cậy của chứng chỉ tích hợp. Nếu bạn đặt chính sách này thành Không (2), người dùng có thể xem (nhưng không thể quản lý) chứng chỉ CA.</translation> <translation id="6366574325767783825">Nếu bạn không đặt hoặc đặt chính sách này thành True, thì <ph name="PRODUCT_NAME" /> sẽ chấp nhận nội dung web được phân phối dưới dạng Signed HTTP Exchanges. Nếu bạn đặt chính sách này thành False, thì Signed HTTP Exchanges sẽ không tải được.</translation> @@ -3743,6 +3773,15 @@ Để khóa màn hình khi ở chế độ tạm vắng, bạn nên bật phương thức khóa màn hình khi tạm ngưng và đặt <ph name="PRODUCT_OS_NAME" /> tạm ngưng sau thời gian chờ khi ở chế độ tạm vắng. Bạn chỉ nên sử dụng chính sách này khi muốn khóa màn hình sớm hơn đáng kể so với thời gian tạm ngưng hoặc khi không muốn tạm ngưng ở chế độ tạm vắng. Bạn phải chỉ định giá trị của chính sách bằng mili giây. Các giá trị được giới hạn ở mức nhỏ hơn thời gian chờ khi ở chế độ tạm vắng.</translation> +<translation id="6506239283767807745">Chính sách này không còn dùng nữa, vui lòng sử dụng <ph name="NOTE_TAKING_APPS_LOCK_SCREEN_ALLOWLIST" />. + + Nếu bạn đặt chính sách này, hệ thống sẽ chỉ định những ứng dụng mà người dùng có thể bật làm ứng dụng ghi chú trên màn hình khóa của <ph name="PRODUCT_OS_NAME" />. + + Nếu bạn bật ứng dụng ghi chú ưa thích trên màn hình khóa, thì thành phần trên giao diện người dùng để chạy ứng dụng đó sẽ xuất hiện trên màn hình. Sau khi chạy, ứng dụng có thể tạo một cửa sổ ở đầu màn hình khóa và tạo các ghi chú trong ngữ cảnh này. Ứng dụng này có thể nhập các ghi chú đã tạo vào phiên truy cập của người dùng chính, khi phiên được mở khóa. Bạn chỉ dùng được ứng dụng ghi chú của <ph name="PRODUCT_NAME" /> trên màn hình khóa. + + Nếu bạn đặt chính sách này, người dùng có thể bật một ứng dụng trên màn hình khóa khi mã nhận dạng tiện ích của ứng dụng đó có trong giá trị danh sách của chính sách. Do vậy, khi bạn đặt chính sách này thành một danh sách trống, tính năng ghi chú trên màn hình khóa sẽ tắt. Xin lưu ý rằng không phải cứ có mã nhận dạng ứng dụng trong chính sách là người dùng có thể bật ứng dụng đó làm ứng dụng ghi chú trên màn hình khóa. Ví dụ: trên <ph name="PRODUCT_NAME" /> 61, chúng tôi cũng hạn chế một số ứng dụng có sẵn theo nền tảng. + + Nếu bạn không đặt chính sách này, sẽ không có hạn chế nào do chính sách này áp dụng cho một số ứng dụng mà người dùng có thể bật trên màn hình khóa.</translation> <translation id="6506486086262398387">Nếu bạn đặt chính sách này thành Bật, tính năng Chia sẻ tệp trong mạng của <ph name="PRODUCT_OS_NAME" /> sẽ sử dụng NTLM để xác thực các lượt chia sẻ SMB nếu cần. Nếu bạn đặt chính sách này thành Tắt, tính năng xác thực bằng NTLM cho các lượt chia sẻ SMB sẽ bị tắt. Nếu bạn không đặt chính sách này, chế độ hoạt động mặc định sẽ là tắt đối với người dùng được quản lý và bật đối với người dùng khác.</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index 6f935c8..dc1f75b 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -41,6 +41,11 @@ 此政策只会影响所在网域与设备注册网域匹配的用户。对于所有其他用户,仅当他们首次在设备上登录时,由 IdP 设置的 Cookie 才会被转移到其个人资料中。</translation> <translation id="1029052664284722254">用户退出后强制设备重新启动</translation> +<translation id="1032533786864478457">如果此政策已启用,用户便可设置其设备,以便将他们的短信同步到 Chromebook。用户必须通过完成一个设置流程来明确选择启用这项功能。完成设置流程后,用户便可在 Chromebook 上收发短信。 + + 如果此政策已停用,用户将无法设置短信同步功能。 + + 如果您未设置此政策,默认情况下,受管用户将无法使用这项功能,但其他用户可以使用这项功能。</translation> <translation id="1040446814317236570">启用 PAC 网址剔除功能(适用于 https:// 类网址)</translation> <translation id="1046484220783400299">让已弃用的网络平台功能在限定的时间内发挥功效</translation> <translation id="1047128214168693844">不允许任何网站跟踪用户的地理位置</translation> @@ -639,6 +644,9 @@ <translation id="2057317273526988987">允许访问指定的一系列网址</translation> <translation id="2061810934846663491">为远程访问主机配置所需的域名</translation> <translation id="2067011586099792101">禁止访问非内容包内的网站</translation> +<translation id="2069350366303315077">如果此政策已启用,<ph name="PRODUCT_NAME" /> 会强制启动访客会话并禁止登录个人资料。访客身份是一类 <ph name="PRODUCT_NAME" /> 个人资料;使用此类个人资料登录后,窗口均会处于无痕模式。 + + 如果此政策已停用或未设置,或者浏览器访客模式已停用(通过 <ph name="BROWSER_GUEST_MODE_ENABLED_POLICY_NAME" />),系统将允许使用新的和现有的个人资料。</translation> <translation id="2073552873076775140">允许登录 <ph name="PRODUCT_NAME" /></translation> <translation id="2075732129949889165">Crostini Ansible Playbook</translation> <translation id="2077129598763517140">使用硬件加速模式(如果可用)</translation> @@ -974,6 +982,11 @@ <translation id="2482676533225429905">本地消息传递</translation> <translation id="2483146640187052324">采用任何网络连接时,均预测网络操作</translation> <translation id="2498238926436517902">始终自动隐藏任务栏</translation> +<translation id="250022556568924228">如果您设置了此政策,<ph name="PRODUCT_OS_NAME" />会下载《服务条款》,并会在用户开始进行设备本地帐号会话时将其呈现给用户。用户必须先接受《服务条款》才能登录会话。 + + 如果您未设置此政策,系统将不会显示《服务条款》。 + + 此政策的值应设为一个可供 <ph name="PRODUCT_OS_NAME" />用来下载《服务条款》的网址。《服务条款》必须是纯文本,以 MIME 类型 text/plain 提供,且不得使用任何标记。</translation> <translation id="2502467045153796624">版本降级行为</translation> <translation id="250670737672448119">启用“插入符号突出显示”无障碍功能。 @@ -1158,6 +1171,13 @@ 这项企业政策只是短期的适应性措施,将在 Chrome 88 中移除。</translation> <translation id="2759224876420453487">控制多用户配置会话中的用户行为</translation> +<translation id="2759426227259007018">通过设置此政策,您可以指定用户能在 <ph name="PRODUCT_OS_NAME" />锁定屏幕中将哪些应用作为笔记应用开启。 + + 如果首选的应用已在锁定屏幕中,屏幕上将会显示用于启动首选笔记应用的界面元素。启动后,该应用便可在锁定屏幕之上创建窗口,并在此情境中创建笔记。当主要用户会话解锁时,该应用便可将所创建的笔记导入此会话中。目前,锁定屏幕上仅支持 <ph name="PRODUCT_NAME" /> 笔记应用。 + + 如果您设置了此政策,仅当此政策的列表值包含某个应用的扩展程序 ID 时,用户才能在锁定屏幕上开启该应用。所以,如果您将此政策设为空列表,系统就会关闭锁定屏幕上的笔记功能。即使此政策的值包含某个应用 ID,也未必意味着用户一定能在锁定屏幕上将该应用作为笔记应用开启。例如,在 <ph name="PRODUCT_NAME" /> 61 中,可用应用集还会受到平台的限制。 + + 如果您未设置此政策,系统便不会对用户能在锁定屏幕上启用的应用集强加任何限制。</translation> <translation id="2761483219396643566">使用电池供电时的闲置警告延迟时间</translation> <translation id="2765601181281280493">通过设置此政策,您可以创建一个网址格式列表,从而指定哪些网站无法请求用户授权其访问串行端口。 @@ -1496,6 +1516,9 @@ <translation id="3251500716404598358">配置政策以在浏览器之间切换。 配置的网站将自动在其他浏览器(而非 <ph name="PRODUCT_NAME" />)中打开。</translation> +<translation id="3255624750680556186">如果此政策已启用或未设置,系统会允许设备触发 Powerwash。 + + 如果此政策已停用,系统将不允许设备触发 Powerwash。但例外情况是:如果为 <ph name="TPM_FIRMWARE_UPDATE_SETTINGS_NAME" /> 设定的值允许 TPM 固件更新,且 TPM 固件尚未更新,系统将仍然允许设备触发 Powerwash。</translation> <translation id="3255762580838224124">如果您设置了此政策,那么每当重新启动时或在此政策的值更改后首次连接时,每个显示屏都会旋转到指定方向。用户可在登录后通过“设置”页面更改显示屏旋转角度,但下次重新启动时显示屏仍会遵从更改前的设置。此政策适用于主要显示屏和次要显示屏。 如果此政策未设置,默认值便是 0 度,但用户可以随意更改此值。如果用户更改了默认值,显示屏在重启时将不会重新应用此值。</translation> @@ -2607,6 +2630,9 @@ <translation id="5023555740504506178">如果此政策已启用或未配置(默认),网页可以使用屏幕共享 API(例如 getDisplayMedia() 或 Desktop Capture Extension API)提示用户选择要截取的标签页、窗口或桌面。 如果此政策已停用,对屏幕共享 API 的所有调用都会失败并会返回错误。</translation> +<translation id="5025239932007658691">如果此政策已启用或未设置,<ph name="PRODUCT_NAME" /> 会不定时向 Google 服务器发送查询以检索准确的时间戳。 + + 如果此政策已停用,系统会阻止 <ph name="PRODUCT_NAME" /> 发送此类查询。</translation> <translation id="5032164758660626397">阻止用户传输大型文件</translation> <translation id="5047604665028708335">允许访问非内容包内的网站</translation> <translation id="5056708224511062314">放大镜已停用</translation> @@ -3377,6 +3403,9 @@ <translation id="6034341625190551415">控制公用自助终端和自助服务终端帐号类型。</translation> <translation id="6034603289689965535">允许页面在取消加载的过程中显示弹出式窗口</translation> <translation id="6036523166753287175">支持通过远程访问主机穿越防火墙</translation> +<translation id="603768430528561926">如果此政策已启用或未设置,企业设备用户便可通过 <ph name="PRODUCT_OS_NAME" />注册流程来兑换优惠。 + + 如果此政策已停用,用户将无法兑换这类优惠。</translation> <translation id="6038407313189625985">如果此政策处于启用状态或未设置,则系统会启用“渲染程序代码完整性”。仅当必须在 Chrome 的渲染程序进程中运行的第三方软件遇到兼容性问题时,才应停用此政策。 停用此政策会对 Chrome 的安全性和稳定性产生不利影响,因为在这种情况下,系统会允许未知的潜在恶意代码在 Chrome 的渲染程序进程中加载。如需了解详情,请参阅 https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md#Process-mitigation-policies。</translation> @@ -3594,6 +3623,7 @@ 如果此政策未设置或列表为空,则意味着所有协议在 <ph name="PRODUCT_NAME" /> 中都可用。</translation> <translation id="6338982178236723271">报告系统信息</translation> <translation id="6342187235303612558">禁止用户上传或下载目前不支持数据泄露防护或恶意软件扫描的文件。</translation> +<translation id="6353890097388312479">如果此政策设为“All (0)”或未设置,用户便可修改所有 CA 证书的信任设置、移除用户导入的证书以及使用证书管理器导入证书。如果此政策设为“UserOnly (1)”,用户将仅能管理用户导入的证书,但无法更改内置证书的信任设置。如果此政策设为“None (2)”,用户可以查看(但无法管理)CA 证书。</translation> <translation id="6366574325767783825">如果此政策设为 True 或未设置,<ph name="PRODUCT_NAME" /> 将会接受通过 Signed HTTP Exchange (SXG) 提供的网络内容。 如果此政策设为 False,系统会阻止加载 Signed HTTP Exchange (SXG) 内容。</translation> @@ -3685,6 +3715,15 @@ 要在设备闲置时锁定屏幕,您最好采用以下方式:让系统在进入暂停状态时锁定屏幕,并指示 <ph name="PRODUCT_OS_NAME" />在闲置延迟时间过后进入暂停状态。只有在以下情况下才应使用此政策:屏幕锁定时间应显著早于系统进入暂停状态的时间,或者完全不需要在设备闲置时暂停系统。 指定的政策值应以毫秒为单位,且必须小于闲置延迟时间。</translation> +<translation id="6506239283767807745">此政策已被弃用,请改用 <ph name="NOTE_TAKING_APPS_LOCK_SCREEN_ALLOWLIST" />。 + + 通过设置此政策,您可以指定用户能在 <ph name="PRODUCT_OS_NAME" />锁定屏幕中将哪些应用作为笔记应用开启。 + + 如果首选的应用已在锁定屏幕中,屏幕上将会显示用于启动首选笔记应用的界面元素。启动后,该应用便可在锁定屏幕之上创建窗口,并在此情境中创建笔记。当主要用户会话解锁时,该应用便可将所创建的笔记导入此会话中。目前,锁定屏幕上仅支持 <ph name="PRODUCT_NAME" /> 笔记应用。 + + 如果您设置了此政策,仅当此政策的列表值包含某个应用的扩展程序 ID 时,用户才能在锁定屏幕上开启该应用。所以,如果您将此政策设为空列表,系统就会关闭锁定屏幕上的笔记功能。即使此政策的值包含某个应用 ID,也未必意味着用户一定能在锁定屏幕上将该应用作为笔记应用开启。例如,在 <ph name="PRODUCT_NAME" /> 61 中,可用应用集还会受到平台的限制。 + + 如果您未设置此政策,系统便不会对用户能在锁定屏幕上启用的应用集强加任何限制。</translation> <translation id="6506486086262398387">如果此政策已启用,适用于 <ph name="PRODUCT_OS_NAME" />的网络文件共享功能会酌情使用 NTLM 对 SMB 共享文件进行身份验证。如果此政策已停用,系统会关闭对 SMB 共享文件的 NTLM 身份验证机制。 如果您未设置此政策,系统的默认行为就会是:为受管用户停用此政策,并为其他用户启用此政策。</translation>
diff --git a/components/strings/components_chromium_strings_iw.xtb b/components/strings/components_chromium_strings_iw.xtb index 3205c157..eddf0dce 100644 --- a/components/strings/components_chromium_strings_iw.xtb +++ b/components/strings/components_chromium_strings_iw.xtb
@@ -7,7 +7,7 @@ <translation id="3550966579244642892">מערכת ההפעלה של Chromium לא השלימה את ההגדרה הראשונית.</translation> <translation id="358997566136285270">לוגו של Chromium</translation> <translation id="4365115785552740256">Chromium קיים הודות לפרויקט הקוד הפתוח של <ph name="BEGIN_LINK_CHROMIUM" /> Chromium<ph name="END_LINK_CHROMIUM" /> ו<ph name="BEGIN_LINK_OSS" />תוכנות קוד פתוח<ph name="END_LINK_OSS" /> אחרות.</translation> -<translation id="4559775032954821361">עבור אל +<translation id="4559775032954821361">יש לעבור אל תפריט Chromium > <ph name="SETTINGS_TITLE" /> > @@ -16,17 +16,17 @@ <ph name="PROXIES_TITLE" /> > הגדרות LAN - ובטל את הבחירה באפשרות "השתמש בשרת proxy עבור רשת LAN".</translation> + ולבטל את הבחירה באפשרות "שימוש בשרת proxy עבור רשת LAN".</translation> <translation id="48558539577516920">שנה את הגדרות חומת האש או האנטי-וירוס כדי לאפשר ל-Chromium לגשת לרשת.</translation> -<translation id="580822234363523061">עבור אל +<translation id="580822234363523061">יש לעבור אל תפריט Chromium > <ph name="SETTINGS_TITLE" /> > <ph name="ADVANCED_TITLE" /> > <ph name="PROXIES_TITLE" /> - ובדוק שהתצורה שלך מוגדרת לאפשרות "ללא שרת proxy" או "ישיר".</translation> + ולבדוק שהתצורה שלך מוגדרת לאפשרות "ללא שרת proxy" או "ישיר".</translation> <translation id="6613594504749178791">השינויים שביצעת ייכנסו לתוקף בפעם הבאה שתפעיל מחדש את Chromium.</translation> <translation id="7861509383340276692">עבור אל תפריט Chromium >
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index d02e5950f..084eafac 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -903,6 +903,7 @@ <translation id="4597348597567598915">আকাৰ ৮</translation> <translation id="4600854749408232102">C6/C5 (লেফাফা)</translation> <translation id="4628948037717959914">Photo</translation> +<translation id="4631649115723685955">কেশ্ববেক লিংক কৰা হ'ল</translation> <translation id="464342062220857295">সন্ধানৰ সুবিধাসমূহ</translation> <translation id="4644670975240021822">তলমুখীয়াকৈ বিপৰীত ক্ৰম</translation> <translation id="4646534391647090355">মোক এতিয়াই তালৈ নিয়ক</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb index 2948e72c..30c8221 100644 --- a/components/strings/components_strings_en-GB.xtb +++ b/components/strings/components_strings_en-GB.xtb
@@ -282,6 +282,7 @@ <translation id="204357726431741734">Sign in to use passwords saved in your Google Account</translation> <translation id="2053111141626950936">Pages in <ph name="LANGUAGE" /> will not be translated.</translation> <translation id="2053553514270667976">ZIP code</translation> +<translation id="2054665754582400095">Your presence</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 suggestion}other{# suggestions}}</translation> <translation id="2079545284768500474">Undo</translation> <translation id="20817612488360358">System proxy settings are set to be used but an explicit proxy configuration is also specified.</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index a55bb0d..510a9e9 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -898,6 +898,7 @@ <translation id="4597348597567598915">Tamaño 8</translation> <translation id="4600854749408232102">C6/C5 (Envelope)</translation> <translation id="4628948037717959914">Foto</translation> +<translation id="4631649115723685955">Devolución de dinero vinculada</translation> <translation id="464342062220857295">Buscar funciones</translation> <translation id="4644670975240021822">Orden inverso hacia abajo</translation> <translation id="4646534391647090355">Ir ahora</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 89e8e16..32c6047 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -908,6 +908,7 @@ <translation id="4597348597567598915">કદ 8</translation> <translation id="4600854749408232102">C6/C5 (એન્વલપ)</translation> <translation id="4628948037717959914">ફોટો</translation> +<translation id="4631649115723685955">કૅશબૅક લિંક કર્યું છે</translation> <translation id="464342062220857295">શોધ સુવિધાઓ</translation> <translation id="4644670975240021822">ઉલ્ટા ક્રમમાં નીચે તરફ</translation> <translation id="4646534391647090355">મને હવે ડાઉનલોડ હોમ પર લઈ જાઓ</translation> @@ -1895,6 +1896,7 @@ <translation id="8685155993131031756">Prc-16K</translation> <translation id="8688672835843460752">ઉપલબ્ધ</translation> <translation id="868922510921656628">સેટ દીઠ પેજ</translation> +<translation id="8697373104056314601">Chromeની સૌથી ઉચ્ચ લેવલની સુરક્ષા મેળવવા માટે, <ph name="BEGIN_ENHANCED_PROTECTION_LINK" />વધારેલી સુરક્ષા ચાલુ કરો<ph name="END_ENHANCED_PROTECTION_LINK" />.</translation> <translation id="869891660844655955">સમાપ્તિ તારીખ</translation> <translation id="8699041776323235191">HID ડિવાઇસ</translation> <translation id="8703575177326907206"><ph name="DOMAIN" /> સાથેનું તમારું કનેક્શન એન્ક્રિપ્ટેડ નથી.</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb index eb63b5b..2307067 100644 --- a/components/strings/components_strings_iw.xtb +++ b/components/strings/components_strings_iw.xtb
@@ -53,7 +53,7 @@ ללא הרשאה מפורשת ממך, האפשרות הזו תישאר חסומה בהתאם להגדרות הפרטיות. הרשאה זו תאפשר פעולה תקינה של תוכן שתתקיים איתו אינטראקציה, אבל היא עשויה גם לאפשר ל-<ph name="EMBEDDED_URL" /> לעקוב אחרי הפעילות שלך.</translation> <translation id="1175364870820465910">הדפסה…</translation> <translation id="1175875016430184367">3 סיכות הידוק בצד ימין</translation> -<translation id="1178581264944972037">השהה</translation> +<translation id="1178581264944972037">השהיה</translation> <translation id="1181037720776840403">הסרה</translation> <translation id="1186201132766001848">בדיקת הסיסמאות</translation> <translation id="1195558154361252544">הצגת ההודעות חסומה באופן אוטומטי בכל האתרים, מלבד האתרים שבהם היא אושרה</translation> @@ -181,7 +181,7 @@ <translation id="16338877384480380">Architecture-B</translation> <translation id="1634828734222219955">סך הכל</translation> <translation id="1638780421120290329">לא ניתן לשמור את הכרטיס</translation> -<translation id="1639239467298939599">טוען</translation> +<translation id="1639239467298939599">בטעינה</translation> <translation id="1640180200866533862">מדיניות משתמשים</translation> <translation id="1640244768702815859">נסה <ph name="BEGIN_LINK" />להיכנס לדף הבית של האתר<ph name="END_LINK" />.</translation> <translation id="1641976391427233992">עיכוב הפלט עד</translation> @@ -406,7 +406,7 @@ <translation id="2556876185419854533">&ביטול עריכה</translation> <translation id="257674075312929031">קבוצה</translation> <translation id="2586657967955657006">לוח</translation> -<translation id="2587730715158995865">מ-<ph name="ARTICLE_PUBLISHER" />. לקריאת כתבה זו ו-<ph name="OTHER_ARTICLE_COUNT" /> כתבות נוספות.</translation> +<translation id="2587730715158995865">מאת <ph name="ARTICLE_PUBLISHER" />. לקריאת כתבה זו ועוד <ph name="OTHER_ARTICLE_COUNT" /> כתבות נוספות.</translation> <translation id="2587841377698384444">מזהה ממשק API של ספרייה:</translation> <translation id="2595719060046994702">המכשיר והחשבון לא מנוהלים על-ידי חברה או ארגון אחר.</translation> <translation id="2597378329261239068">מסמך זה מוגן באמצעות סיסמה. יש להזין סיסמה.</translation> @@ -738,7 +738,7 @@ <translation id="3963721102035795474">מצב קורא</translation> <translation id="3963837677003247395">להמשיך באופן ידני?</translation> <translation id="3964661563329879394">{COUNT,plural, =0{ללא}=1{מאתר אחד }two{משני אתרים }many{מ-# אתרים }other{מ-# אתרים }}</translation> -<translation id="397105322502079400">מחשב...</translation> +<translation id="397105322502079400">מתבצע חישוב...</translation> <translation id="3973234410852337861"><ph name="HOST_NAME" /> חסום</translation> <translation id="3987405730340719549">לפי אמצעי האבטחה של Chrome, האתר הזה עשוי להיות מזויף או אתר שנועד להונאה. @@ -906,6 +906,7 @@ <translation id="4597348597567598915">גודל 8</translation> <translation id="4600854749408232102">C6/C5 (Envelope)</translation> <translation id="4628948037717959914">תמונה</translation> +<translation id="4631649115723685955">הקאשבק מקושר</translation> <translation id="464342062220857295">תכונות חיפוש</translation> <translation id="4644670975240021822">בסדר הפוך עם הפנים כלפי מטה</translation> <translation id="4646534391647090355">אני רוצה לעבור לשם עכשיו</translation> @@ -929,7 +930,7 @@ <translation id="4731967714531604179">Prc2 (Envelope)</translation> <translation id="4733082559415072992"><ph name="URL" /> רוצה להשתמש במיקום המכשיר שלך</translation> <translation id="4736825316280949806">אתחול ה-Chromium</translation> -<translation id="473775607612524610">עדכן</translation> +<translation id="473775607612524610">עדכון</translation> <translation id="4738601419177586157"><ph name="TEXT" /> – הצעת חיפוש</translation> <translation id="4742407542027196863">ניהול סיסמאות…</translation> <translation id="4744603770635761495">נתיב להפעלה</translation> @@ -1427,7 +1428,7 @@ <translation id="6711464428925977395">משהו אינו תקין בשרת ה-proxy, או שהכתובת שגויה.</translation> <translation id="6716672519412350405">האתר <ph name="URL" /> רוצה ליצור מפה בתלת ממד של הסביבה שלך ולעקוב אחר מיקום המצלמה</translation> <translation id="6718612893943028815">להשתמש במצלמה?</translation> -<translation id="6738516213925468394">הנתונים שלך הוצפנו באמצעות<ph name="BEGIN_LINK" />ביטוי סיסמה לסנכרון<ph name="END_LINK" /> בתאריך <ph name="TIME" />. צריך להזין אותו כדי להתחיל את הסנכרון.</translation> +<translation id="6738516213925468394">הנתונים שלך הוצפנו באמצעות <ph name="BEGIN_LINK" />ביטוי סיסמה לסנכרון<ph name="END_LINK" /> בתאריך <ph name="TIME" />. צריך להזין אותו כדי להתחיל את הסנכרון.</translation> <translation id="674375294223700098">שגיאת אישור שרת לא ידוע.</translation> <translation id="6744009308914054259">בזמן ההמתנה לחיבור אפשר לעבור אל 'הורדות' כדי לקרוא מאמרים לא מקוונים.</translation> <translation id="6753269504797312559">ערך מדיניות</translation> @@ -1534,7 +1535,7 @@ <translation id="721197778055552897"><ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /> בנושא זה.</translation> <translation id="7217745192097460130">רוצה להשתמש ב-Touch ID כדי לאמת ולהשלים את הרכישה?</translation> <translation id="7219179957768738017">החיבור משתמש ב-<ph name="SSL_VERSION" />.</translation> -<translation id="7220786058474068424">מעבד</translation> +<translation id="7220786058474068424">המערכת מעבדת את התשלום</translation> <translation id="7221855153210829124">להציג הודעות</translation> <translation id="7229659723041939809">הזנת כרגע את הסיסמה שלך באתר מטעה. ההמלצה של Chrome היא לבדוק באופן מיידי את הסיסמאות השמורות של <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" />, <ph name="WEBSITE_3" /> ואתרים אחרים שבהם הסיסמה הזו נמצאת בשימוש.</translation> <translation id="7233592378249864828">הדפסה של גיליון אישור</translation> @@ -1613,7 +1614,7 @@ <translation id="7503664977220660814">הזנת כרגע את הסיסמה שלך באתר מטעה. ההמלצה של Chromium היא לבדוק באופן מיידי את הסיסמאות השמורות של <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> ואתרים אחרים שבהם הסיסמה הזו נמצאת בשימוש.</translation> <translation id="7508255263130623398">מזהה המכשיר במדיניות שהוחזר ריק או שאינו תואם את מזהה המכשיר הנוכחי</translation> <translation id="7508870219247277067">ירוק אבוקדו</translation> -<translation id="7511955381719512146">ייתכן שתידרש להיכנס ל-<ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" /> עבור רשת ה-Wi-Fi שבה אתה משתמש.</translation> +<translation id="7511955381719512146">ייתכן שהשימוש ברשת ה-Wi-Fi ידרוש ממך להיכנס ל-<ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation> <translation id="7514365320538308">הורדה</translation> <translation id="7518003948725431193">לא נמצא דף אינטרנט עבור כתובת האינטרנט: <ph name="URL" /></translation> <translation id="7520302887438682816">C8 (Envelope)</translation> @@ -1664,11 +1665,11 @@ <translation id="7663736086183791259">אישור <ph name="CERTIFICATE_VALIDITY" /></translation> <translation id="7667346355482952095">אסימון המדיניות שהוחזר הוא ריק או שאינו תואם לאסימון הנוכחי</translation> <translation id="7668654391829183341">מכשיר לא ידוע</translation> -<translation id="7669271284792375604">תוקפים באתר הזה עשויים לגרום לך, בדרכי מרמה, להתקין תוכניות שיפגעו בחוויית הגלישה שלך (לדוגמה, על ידי שינוי דף הבית או הצגת מודעות נוספות באתרים שבהם אתה מבקר).</translation> +<translation id="7669271284792375604">תוקפים באתר הזה עשויים לגרום לך, בדרכי מרמה, להתקין תוכנות שיפגעו בחוויית הגלישה שלך (לדוגמה, על ידי שינוי דף הבית או הצגת מודעות נוספות באתרים).</translation> <translation id="7673278391011283842">תיבת דואר 6</translation> <translation id="7676643023259824263">חיפוש טקסט בלוח, <ph name="TEXT" /></translation> <translation id="7682287625158474539">משלוח</translation> -<translation id="7687186412095877299">ממלא בטופסי תשלום את אמצעי התשלום ששמרת</translation> +<translation id="7687186412095877299">שימוש באמצעי התשלום ששמרת למילוי טופסי תשלום</translation> <translation id="7687305263118037187">זמן קצוב לתפוגה של ניסיון חוזר</translation> <translation id="7693583928066320343">סדר דפים התקבל</translation> <translation id="7697066736081121494">Prc8 (Envelope)</translation> @@ -1820,7 +1821,7 @@ <translation id="8282947398454257691">ידיעת המזהה הייחודי של המכשיר</translation> <translation id="8286036467436129157">כניסה</translation> <translation id="8288807391153049143">הצגת אישור</translation> -<translation id="8289355894181816810">פנה אל מנהל הרשת אם אינך יודע מה זה אומר.</translation> +<translation id="8289355894181816810">כדי לברר מה זה אומר, מומלץ לפנות למנהל הרשת.</translation> <translation id="8293206222192510085">הוסף סימניה</translation> <translation id="8294431847097064396">מקור</translation> <translation id="8298115750975731693">ייתכן שתידרש להיכנס ל-<ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" /> עבור רשת ה-Wi-Fi שבה אתה משתמש (<ph name="WIFI_NAME" />).</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb index b8955172..0de8108 100644 --- a/components/strings/components_strings_ka.xtb +++ b/components/strings/components_strings_ka.xtb
@@ -279,6 +279,7 @@ <translation id="204357726431741734">თქვენს Google ანგარიშში შენახული პაროლების გამოსაყენებლად შედით სისტემაში</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" /> გვერდები არ ითარგმნება.</translation> <translation id="2053553514270667976">ZIP კოდი</translation> +<translation id="2054665754582400095">თქვენი დასწრება</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 შეთავაზება}other{# შეთავაზება}}</translation> <translation id="2079545284768500474">მოქმედების გაუქმება</translation> <translation id="20817612488360358">დაყენებულია სისტემის პროქსის პარამეტრების გამოყენება, მაგრამ ასევე მითითებულია პროქსის აშკარა კონფიგურაცია.</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb index 30b0c70..acd21267 100644 --- a/components/strings/components_strings_ml.xtb +++ b/components/strings/components_strings_ml.xtb
@@ -282,6 +282,7 @@ <translation id="204357726431741734">നിങ്ങളുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിച്ചിട്ടുള്ള പാസ്വേഡുകൾ ഉപയോഗിക്കാൻ സൈൻ ഇൻ ചെയ്യുക</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" /> ഭാഷയിലുള്ള പേജുകൾ വിവർത്തനം ചെയ്യില്ല.</translation> <translation id="2053553514270667976">തപാൽ കോഡ്</translation> +<translation id="2054665754582400095">നിങ്ങളുടെ സാന്നിധ്യം</translation> <translation id="2064691555167957331">{COUNT,plural, =1{ഒരു നിർദ്ദേശം}other{# നിർദ്ദേശങ്ങൾ}}</translation> <translation id="2079545284768500474">പഴയപടിയാക്കുക</translation> <translation id="20817612488360358">സിസ്റ്റം പ്രോക്സി ക്രമീകരണം ഉപയോഗിക്കുന്നതിനായി സജ്ജമാക്കി, പക്ഷെ ഒരു സ്പഷ്ടമായ പ്രോക്സി കോൺഫിഗറേഷനും അതോടൊപ്പം നിർദ്ദേശിച്ചിരിക്കുന്നു.</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb index a5882e7..b26e9de 100644 --- a/components/strings/components_strings_mn.xtb +++ b/components/strings/components_strings_mn.xtb
@@ -283,6 +283,7 @@ <translation id="204357726431741734">Google Бүртгэлдээ хадгалсан нууц үгсийг ашиглахын тулд нэвтрэх</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" /> хэл дээрх хуудсыг орчуулахгүй.</translation> <translation id="2053553514270667976">Зип Код</translation> +<translation id="2054665754582400095">Таны байгаа эсэх</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 зөвлөмж}other{# зөвлөмж}}</translation> <translation id="2079545284768500474">Буцаах</translation> <translation id="20817612488360358">Системийн прокси-гийн тохиргоонуудыг ашиглахаар суулгасан хэдий ч прокси-гийн нарийн тохиргоог зааж өгсөн байна.</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb index 34082a6..8e4fbcae 100644 --- a/components/strings/components_strings_nl.xtb +++ b/components/strings/components_strings_nl.xtb
@@ -280,6 +280,7 @@ <translation id="204357726431741734">Inloggen om wachtwoorden te gebruiken die zijn opgeslagen in je Google-account</translation> <translation id="2053111141626950936">Pagina's in het <ph name="LANGUAGE" /> worden niet vertaald.</translation> <translation id="2053553514270667976">Postcode</translation> +<translation id="2054665754582400095">Je aanwezigheid</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 suggestie}other{# suggesties}}</translation> <translation id="2079545284768500474">Ongedaan maken</translation> <translation id="20817612488360358">De proxyinstellingen van het systeem moeten worden gebruikt, maar er is ook een expliciete proxyconfiguratie opgegeven.</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb index f6c48af5..ad87694 100644 --- a/components/strings/components_strings_or.xtb +++ b/components/strings/components_strings_or.xtb
@@ -894,6 +894,7 @@ <translation id="4597348597567598915">ଆକାର 8</translation> <translation id="4600854749408232102">C6/C5 (ଏନଭଲପ୍)</translation> <translation id="4628948037717959914">ଫଟୋ</translation> +<translation id="4631649115723685955">କ୍ୟାସବ୍ୟାକ୍ ଲିଙ୍କ୍ କରାଯାଇଛି</translation> <translation id="464342062220857295">ଫିଚର୍ଗୁଡ଼ିକର ସନ୍ଧାନ କରନ୍ତୁ</translation> <translation id="4644670975240021822">ଓଲଟା ଅର୍ଡରରେ ଫେସ୍ ଡାଉନ୍</translation> <translation id="4646534391647090355">ମୋତେ ବର୍ତ୍ତମାନ ସେଠାକୁ ନେଇଚାଲନ୍ତୁ</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index b7dc2749..5b72258e 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -282,6 +282,7 @@ <translation id="204357726431741734">Ingia katika akaunti ili utumie manenosiri uliyohifadhi kwenye Akaunti yako ya Google</translation> <translation id="2053111141626950936">Haitatafsiri kurasa za <ph name="LANGUAGE" />.</translation> <translation id="2053553514270667976">Msimbo wa eneo</translation> +<translation id="2054665754582400095">Maelezo ya wakati upo mtandaoni</translation> <translation id="2064691555167957331">{COUNT,plural, =1{Pendekezo 1}other{Mapendekezo #}}</translation> <translation id="2079545284768500474">Tendua</translation> <translation id="20817612488360358">Mipangilio ya mfumo ya proksi imewekwa ili kutumiwa lakini usanidi dhahiri wa proksi pia umebainishwa.</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index 642f112..41f5d78 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -285,6 +285,7 @@ <translation id="204357726431741734">మీ Google ఖాతాలో సేవ్ చేయబడిన పాస్వర్డ్లను ఉపయోగించడానికి సైన్ ఇన్ చేయండి</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" /> భాషలో ఉన్న పేజీలు అనువదించబడవు.</translation> <translation id="2053553514270667976">జిప్ కోడ్</translation> +<translation id="2054665754582400095">మీ ఉనికి</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 సూచన}other{# సూచనలు}}</translation> <translation id="2079545284768500474">చర్య రద్దు</translation> <translation id="20817612488360358">సిస్టమ్ ప్రాక్సీ సెట్టింగ్లు ఉపయోగించడానికి సెట్ చేయబడ్డాయి కానీ స్పష్టమైన ప్రాక్సీ కాన్ఫిగరేషన్ కూడా పేర్కొనబడింది.</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb index 29fa9aed..26c1c10c 100644 --- a/components/strings/components_strings_th.xtb +++ b/components/strings/components_strings_th.xtb
@@ -279,6 +279,7 @@ <translation id="204357726431741734">ลงชื่อเข้าใช้เพื่อใช้รหัสผ่านที่บันทึกไว้ในบัญชี Google</translation> <translation id="2053111141626950936">ระบบจะไม่แปลหน้าเว็บภาษา<ph name="LANGUAGE" /></translation> <translation id="2053553514270667976">รหัสไปรษณีย์</translation> +<translation id="2054665754582400095">การใช้งาน</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 คำแนะนำ}other{# คำแนะนำ}}</translation> <translation id="2079545284768500474">เลิกทำ</translation> <translation id="20817612488360358">มีการกำหนดให้ใช้การตั้งค่าพร็อกซีระบบ แต่ก็มีการระบุการกำหนดค่าพร็อกซีอย่างชัดเจนไว้ด้วยเช่นกัน</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb index a4371da6..6515229 100644 --- a/components/strings/components_strings_ur.xtb +++ b/components/strings/components_strings_ur.xtb
@@ -911,6 +911,7 @@ <translation id="4597348597567598915">سائز 8</translation> <translation id="4600854749408232102">C6/C5 (Envelope)</translation> <translation id="4628948037717959914">تصویر</translation> +<translation id="4631649115723685955">کیش بیک لنک کردہ ہے</translation> <translation id="464342062220857295">خصوصیات تلاش کریں</translation> <translation id="4644670975240021822">اُلٹ ترتیب میں، صفحات کا رُخ نیچے کی جانب</translation> <translation id="4646534391647090355">اب مجھے وہاں لے چلیں</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb index 0cdb0e1d..f00ee1c 100644 --- a/components/strings/components_strings_uz.xtb +++ b/components/strings/components_strings_uz.xtb
@@ -282,6 +282,7 @@ <translation id="204357726431741734">Google hisobingizda saqlangan parollardan foydalanish uchun hisobingizga kiring</translation> <translation id="2053111141626950936"><ph name="LANGUAGE" /> tilidagi sahifalar tarjima qilinmaydi</translation> <translation id="2053553514270667976">Pochta indeksi</translation> +<translation id="2054665754582400095">Faolligingiz</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 ta tavsiya}other{# ta tavsiya}}</translation> <translation id="2079545284768500474">Bekor qilish</translation> <translation id="20817612488360358">Tizim proksi-server sozlamalari yoniq, lekin uning sozlamalari aniq belgilangan.</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index b50ff6c0..c655f64 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -908,6 +908,7 @@ <translation id="4597348597567598915">Kích thước 8</translation> <translation id="4600854749408232102">C6/C5 (Phong bì)</translation> <translation id="4628948037717959914">Ảnh</translation> +<translation id="4631649115723685955">Đã liên kết ưu đãi bằng tiền mặt</translation> <translation id="464342062220857295">Tìm kiếm tính năng</translation> <translation id="4644670975240021822">Thứ tự đảo ngược hướng xuống</translation> <translation id="4646534391647090355">Chuyển đến đó ngay</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index 84848534..23b06be 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -893,6 +893,7 @@ <translation id="4597348597567598915">大小:8</translation> <translation id="4600854749408232102">C6/C5 (Envelope)</translation> <translation id="4628948037717959914">照片</translation> +<translation id="4631649115723685955">已关联返现</translation> <translation id="464342062220857295">搜索功能</translation> <translation id="4644670975240021822">逆转顺序,正面朝下</translation> <translation id="4646534391647090355">立即前往</translation>
diff --git a/components/subresource_filter/content/browser/BUILD.gn b/components/subresource_filter/content/browser/BUILD.gn index 3923b66..b8b0a6f 100644 --- a/components/subresource_filter/content/browser/BUILD.gn +++ b/components/subresource_filter/content/browser/BUILD.gn
@@ -6,6 +6,8 @@ sources = [ "activation_state_computing_navigation_throttle.cc", "activation_state_computing_navigation_throttle.h", + "ads_intervention_manager.cc", + "ads_intervention_manager.h", "async_document_subresource_filter.cc", "async_document_subresource_filter.h", "content_activation_list_utils.cc", @@ -26,9 +28,13 @@ "subframe_navigation_filtering_throttle.cc", "subframe_navigation_filtering_throttle.h", "subresource_filter_client.h", + "subresource_filter_content_settings_manager.cc", + "subresource_filter_content_settings_manager.h", "subresource_filter_observer.h", "subresource_filter_observer_manager.cc", "subresource_filter_observer_manager.h", + "subresource_filter_profile_context.cc", + "subresource_filter_profile_context.h", "subresource_filter_safe_browsing_activation_throttle.cc", "subresource_filter_safe_browsing_activation_throttle.h", "subresource_filter_safe_browsing_client.cc", @@ -40,6 +46,9 @@ ] deps = [ "//base", + "//components/content_settings/core/browser", + "//components/content_settings/core/common", + "//components/keyed_service/core", "//components/prefs:prefs", "//components/safe_browsing/core/db:database_manager", "//components/safe_browsing/core/db:util", @@ -92,6 +101,7 @@ testonly = true sources = [ "activation_state_computing_navigation_throttle_unittest.cc", + "ads_intervention_manager_unittest.cc", "async_document_subresource_filter_unittest.cc", "content_activation_list_utils_unittest.cc", "content_subresource_filter_throttle_manager_unittest.cc", @@ -99,6 +109,7 @@ "ruleset_publisher_impl_unittest.cc", "ruleset_service_unittest.cc", "subframe_navigation_filtering_throttle_unittest.cc", + "subresource_filter_content_settings_manager_unittest.cc", "subresource_filter_safe_browsing_activation_throttle_unittest.cc", "verified_ruleset_dealer_unittest.cc", ] @@ -106,6 +117,8 @@ ":browser", ":test_support", "//base/test:test_support", + "//components/content_settings/core/browser", + "//components/content_settings/core/common", "//components/prefs:test_support", "//components/safe_browsing/core/db:database_manager", "//components/safe_browsing/core/db:util", @@ -114,6 +127,7 @@ "//components/subresource_filter/core/browser:test_support", "//components/subresource_filter/core/common", "//components/subresource_filter/core/common:test_support", + "//components/sync_preferences:test_support", "//components/ukm:test_support", "//components/ukm/content:content", "//content/test:test_support",
diff --git a/components/subresource_filter/content/browser/DEPS b/components/subresource_filter/content/browser/DEPS index e588ec2..c0f9556 100644 --- a/components/subresource_filter/content/browser/DEPS +++ b/components/subresource_filter/content/browser/DEPS
@@ -1,5 +1,9 @@ include_rules = [ + "+components/content_settings/core/browser", + "+components/content_settings/core/common", + "+components/keyed_service/core", "+components/safe_browsing/core/db", + "+components/sync_preferences", "+components/ukm", "+content/public/browser", "+content/public/test",
diff --git a/chrome/browser/subresource_filter/ads_intervention_manager.cc b/components/subresource_filter/content/browser/ads_intervention_manager.cc similarity index 92% rename from chrome/browser/subresource_filter/ads_intervention_manager.cc rename to components/subresource_filter/content/browser/ads_intervention_manager.cc index 8b78ab1..969b657 100644 --- a/chrome/browser/subresource_filter/ads_intervention_manager.cc +++ b/components/subresource_filter/content/browser/ads_intervention_manager.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/subresource_filter/ads_intervention_manager.h" +#include "components/subresource_filter/content/browser/ads_intervention_manager.h" #include "base/time/default_clock.h" #include "base/time/time.h" #include "base/values.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include "components/subresource_filter/core/browser/subresource_filter_features.h" #include "url/gurl.h"
diff --git a/chrome/browser/subresource_filter/ads_intervention_manager.h b/components/subresource_filter/content/browser/ads_intervention_manager.h similarity index 89% rename from chrome/browser/subresource_filter/ads_intervention_manager.h rename to components/subresource_filter/content/browser/ads_intervention_manager.h index 9ad9d126..3792f04b 100644 --- a/chrome/browser/subresource_filter/ads_intervention_manager.h +++ b/components/subresource_filter/content/browser/ads_intervention_manager.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_SUBRESOURCE_FILTER_ADS_INTERVENTION_MANAGER_H_ -#define CHROME_BROWSER_SUBRESOURCE_FILTER_ADS_INTERVENTION_MANAGER_H_ +#ifndef COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_ADS_INTERVENTION_MANAGER_H_ +#define COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_ADS_INTERVENTION_MANAGER_H_ #include <memory> #include "base/optional.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include "components/subresource_filter/core/mojom/subresource_filter.mojom.h" class GURL; @@ -77,4 +77,4 @@ base::Clock* clock_; }; -#endif // CHROME_BROWSER_SUBRESOURCE_FILTER_ADS_INTERVENTION_MANAGER_H_ +#endif // COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_ADS_INTERVENTION_MANAGER_H_
diff --git a/chrome/browser/subresource_filter/ads_intervention_manager_unittest.cc b/components/subresource_filter/content/browser/ads_intervention_manager_unittest.cc similarity index 94% rename from chrome/browser/subresource_filter/ads_intervention_manager_unittest.cc rename to components/subresource_filter/content/browser/ads_intervention_manager_unittest.cc index e6c7230..7fcf844 100644 --- a/chrome/browser/subresource_filter/ads_intervention_manager_unittest.cc +++ b/components/subresource_filter/content/browser/ads_intervention_manager_unittest.cc
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/subresource_filter/ads_intervention_manager.h" +#include "components/subresource_filter/content/browser/ads_intervention_manager.h" #include <memory> #include "base/test/simple_test_clock.h" #include "base/time/time.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" #include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include "components/subresource_filter/core/mojom/subresource_filter.mojom.h" #include "components/sync_preferences/testing_pref_service_syncable.h" #include "content/public/test/browser_task_environment.h"
diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.cc similarity index 97% rename from chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc rename to components/subresource_filter/content/browser/subresource_filter_content_settings_manager.cc index 97e56d1f..af1030e 100644 --- a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc +++ b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include <string> @@ -10,6 +10,7 @@ #include "base/check.h" #include "base/time/default_clock.h" #include "base/values.h" +#include "build/build_config.h" #include "components/content_settings/core/browser/content_settings_constraints.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/content_settings.h"
diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h similarity index 94% rename from chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h rename to components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h index 75df6c98b..66269fa 100644 --- a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h +++ b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_SUBRESOURCE_FILTER_SUBRESOURCE_FILTER_CONTENT_SETTINGS_MANAGER_H_ -#define CHROME_BROWSER_SUBRESOURCE_FILTER_SUBRESOURCE_FILTER_CONTENT_SETTINGS_MANAGER_H_ +#ifndef COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_SUBRESOURCE_FILTER_CONTENT_SETTINGS_MANAGER_H_ +#define COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_SUBRESOURCE_FILTER_CONTENT_SETTINGS_MANAGER_H_ #include <memory> #include <utility> @@ -152,4 +152,4 @@ DISALLOW_COPY_AND_ASSIGN(SubresourceFilterContentSettingsManager); }; -#endif // CHROME_BROWSER_SUBRESOURCE_FILTER_SUBRESOURCE_FILTER_CONTENT_SETTINGS_MANAGER_H_ +#endif // COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_SUBRESOURCE_FILTER_CONTENT_SETTINGS_MANAGER_H_
diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager_unittest.cc b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager_unittest.cc similarity index 98% rename from chrome/browser/subresource_filter/subresource_filter_content_settings_manager_unittest.cc rename to components/subresource_filter/content/browser/subresource_filter_content_settings_manager_unittest.cc index 82b49bb..1a8ab9fa 100644 --- a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager_unittest.cc +++ b/components/subresource_filter/content/browser/subresource_filter_content_settings_manager_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" #include <set> #include <string>
diff --git a/chrome/browser/subresource_filter/subresource_filter_profile_context.cc b/components/subresource_filter/content/browser/subresource_filter_profile_context.cc similarity index 76% rename from chrome/browser/subresource_filter/subresource_filter_profile_context.cc rename to components/subresource_filter/content/browser/subresource_filter_profile_context.cc index 1b9e144..0e81140 100644 --- a/chrome/browser/subresource_filter/subresource_filter_profile_context.cc +++ b/components/subresource_filter/content/browser/subresource_filter_profile_context.cc
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" -#include "chrome/browser/subresource_filter/ads_intervention_manager.h" -#include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/ads_intervention_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" SubresourceFilterProfileContext::SubresourceFilterProfileContext( HostContentSettingsMap* settings_map)
diff --git a/chrome/browser/subresource_filter/subresource_filter_profile_context.h b/components/subresource_filter/content/browser/subresource_filter_profile_context.h similarity index 75% rename from chrome/browser/subresource_filter/subresource_filter_profile_context.h rename to components/subresource_filter/content/browser/subresource_filter_profile_context.h index f7f0171b..a400d37 100644 --- a/chrome/browser/subresource_filter/subresource_filter_profile_context.h +++ b/components/subresource_filter/content/browser/subresource_filter_profile_context.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_SUBRESOURCE_FILTER_SUBRESOURCE_FILTER_PROFILE_CONTEXT_H_ -#define CHROME_BROWSER_SUBRESOURCE_FILTER_SUBRESOURCE_FILTER_PROFILE_CONTEXT_H_ +#ifndef COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_SUBRESOURCE_FILTER_PROFILE_CONTEXT_H_ +#define COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_SUBRESOURCE_FILTER_PROFILE_CONTEXT_H_ #include <memory> @@ -14,7 +14,10 @@ class SubresourceFilterContentSettingsManager; class AdsInterventionManager; -// This class holds profile scoped context for subresource filtering. +// This class holds BrowserContext-scoped context for subresource filtering. The +// embedder should use KeyedServiceFactory to associate instances of this class +// with instances of (their subclass of) BrowserContext; see //chrome's +// subresource_filter_profile_context_factory.* for an example. class SubresourceFilterProfileContext : public KeyedService { public: // An opaque class that the embedder can use to scope an embedder-level object @@ -58,4 +61,4 @@ DISALLOW_COPY_AND_ASSIGN(SubresourceFilterProfileContext); }; -#endif // CHROME_BROWSER_SUBRESOURCE_FILTER_SUBRESOURCE_FILTER_PROFILE_CONTEXT_H_ +#endif // COMPONENTS_SUBRESOURCE_FILTER_CONTENT_BROWSER_SUBRESOURCE_FILTER_PROFILE_CONTEXT_H_
diff --git a/components/sync/BUILD.gn b/components/sync/BUILD.gn index a2df633..7f7eadb 100644 --- a/components/sync/BUILD.gn +++ b/components/sync/BUILD.gn
@@ -91,6 +91,8 @@ "engine_impl/backoff_delay_provider.h", "engine_impl/bookmark_update_preprocessing.cc", "engine_impl/bookmark_update_preprocessing.h", + "engine_impl/cancelation_signal.cc", + "engine_impl/cancelation_signal.h", "engine_impl/commit.cc", "engine_impl/commit.h", "engine_impl/commit_contribution.h", @@ -397,7 +399,6 @@ testonly = true sources = [ "base/bind_to_task_runner_unittest.cc", - "base/cancelation_signal_unittest.cc", "base/client_tag_hash_unittest.cc", "base/enum_set_unittest.cc", "base/immutable_unittest.cc", @@ -432,6 +433,7 @@ "engine/sync_backend_registrar_unittest.cc", "engine_impl/backoff_delay_provider_unittest.cc", "engine_impl/bookmark_update_preprocessing_unittest.cc", + "engine_impl/cancelation_signal_unittest.cc", "engine_impl/commit_contribution_impl_unittest.cc", "engine_impl/commit_processor_unittest.cc", "engine_impl/cycle/nudge_tracker_unittest.cc",
diff --git a/components/sync/base/BUILD.gn b/components/sync/base/BUILD.gn index 70a7095..ab987ab 100644 --- a/components/sync/base/BUILD.gn +++ b/components/sync/base/BUILD.gn
@@ -12,9 +12,6 @@ static_library("base") { sources = [ "bind_to_task_runner.h", - "cancelation_observer.h", - "cancelation_signal.cc", - "cancelation_signal.h", "client_tag_hash.cc", "client_tag_hash.h", "data_type_histogram.cc",
diff --git a/components/sync/base/cancelation_observer.h b/components/sync/base/cancelation_observer.h deleted file mode 100644 index 1d7f1109..0000000 --- a/components/sync/base/cancelation_observer.h +++ /dev/null
@@ -1,23 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef COMPONENTS_SYNC_BASE_CANCELATION_OBSERVER_H_ -#define COMPONENTS_SYNC_BASE_CANCELATION_OBSERVER_H_ - -namespace syncer { - -// Interface for classes that handle signals from the CancelationSignal. -class CancelationObserver { - public: - CancelationObserver() = default; - virtual ~CancelationObserver() = default; - - // This may be called from a foreign thread while the CancelationSignal's lock - // is held. The callee should avoid performing slow or blocking operations. - virtual void OnSignalReceived() = 0; -}; - -} // namespace syncer - -#endif // COMPONENTS_SYNC_BASE_CANCELATION_OBSERVER_H_
diff --git a/components/sync/base/cancelation_signal.h b/components/sync/base/cancelation_signal.h deleted file mode 100644 index 0bf72e7f..0000000 --- a/components/sync/base/cancelation_signal.h +++ /dev/null
@@ -1,71 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef COMPONENTS_SYNC_BASE_CANCELATION_SIGNAL_H_ -#define COMPONENTS_SYNC_BASE_CANCELATION_SIGNAL_H_ - -#include "base/synchronization/lock.h" - -namespace syncer { - -class CancelationObserver; - -// This class is used to allow one thread to request that another abort and -// return early. -// -// The signalling thread owns this class and my call Signal() at any time. -// After that call, this class' IsSignalled() will always return true. The -// intended use case is that the task intending to support early exit will -// periodically check the value of IsSignalled() to see if it should return -// early. -// -// The receiving task may also choose to register an CancelationObserver whose -// OnSignalReceived() method will be executed on the signaller's thread when -// Signal() is called. This may be used for sending an early Signal() to a -// WaitableEvent. The registration of the handler is necessarily racy. If -// Signal() is executes before TryRegisterHandler(), TryRegisterHandler() will -// not perform any registration and return false. That function's caller must -// handle this case. -// -// This class supports only one handler, though it could easily support multiple -// observers if we found a use case for such a feature. -class CancelationSignal { - public: - CancelationSignal(); - ~CancelationSignal(); - - // Tries to register a handler to be invoked when Signal() is called. - // - // If Signal() has already been called, returns false without registering - // the handler. Returns true when the registration is successful. - // - // If the registration was successful, the handler must be unregistered with - // UnregisterHandler before this CancelationSignal is destroyed. - bool TryRegisterHandler(CancelationObserver* handler); - - // Unregisters the abort handler. - void UnregisterHandler(CancelationObserver* handler); - - // Returns true if Signal() has been called. - bool IsSignalled(); - - // Sets the stop_requested_ flag and calls the OnSignalReceived() method of - // the registered handler, if there is one registered at the time. - // SignalReceived() will be called with the |signal_lock_| held. - void Signal(); - - private: - // Protects all members of this class. - base::Lock signal_lock_; - - // True if Signal() has been invoked. - bool signalled_; - - // The registered abort handler. May be null. - CancelationObserver* handler_; -}; - -} // namespace syncer - -#endif // COMPONENTS_SYNC_BASE_CANCELATION_SIGNAL_H_
diff --git a/components/sync/driver/glue/sync_engine_backend.h b/components/sync/driver/glue/sync_engine_backend.h index 90a35a2..4188bc2 100644 --- a/components/sync/driver/glue/sync_engine_backend.h +++ b/components/sync/driver/glue/sync_engine_backend.h
@@ -18,13 +18,13 @@ #include "base/sequence_checker.h" #include "components/invalidation/impl/invalidation_switches.h" #include "components/invalidation/public/invalidation.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/base/system_encryptor.h" #include "components/sync/driver/glue/sync_engine_impl.h" #include "components/sync/engine/model_type_configurer.h" #include "components/sync/engine/shutdown_reason.h" #include "components/sync/engine/sync_encryption_handler.h" #include "components/sync/engine/sync_status_observer.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "url/gurl.h" namespace syncer {
diff --git a/components/sync/driver/sync_internals_util.cc b/components/sync/driver/sync_internals_util.cc index dfc250a1..db8cd1c 100644 --- a/components/sync/driver/sync_internals_util.cc +++ b/components/sync/driver/sync_internals_util.cc
@@ -632,20 +632,17 @@ base::Value actionable_error(base::Value::Type::LIST); Stat<std::string> error_type("Error Type", kUninitialized); Stat<std::string> action("Action", kUninitialized); - Stat<std::string> url("URL", kUninitialized); Stat<std::string> description("Error Description", kUninitialized); if (actionable_error_detected) { error_type.Set( GetSyncErrorTypeString(full_status.sync_protocol_error.error_type)); action.Set(GetClientActionString(full_status.sync_protocol_error.action)); - url.Set(full_status.sync_protocol_error.url); description.Set(full_status.sync_protocol_error.error_description); } actionable_error.Append(error_type.ToValue()); actionable_error.Append(action.ToValue()); - actionable_error.Append(url.ToValue()); actionable_error.Append(description.ToValue()); about_info->SetKey("actionable_error", std::move(actionable_error));
diff --git a/components/sync/engine/net/http_bridge_unittest.cc b/components/sync/engine/net/http_bridge_unittest.cc index 2358a93..8878ff0 100644 --- a/components/sync/engine/net/http_bridge_unittest.cc +++ b/components/sync/engine/net/http_bridge_unittest.cc
@@ -18,7 +18,7 @@ #include "base/test/task_environment.h" #include "base/threading/thread.h" #include "build/build_config.h" -#include "components/sync/base/cancelation_signal.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "net/http/http_response_headers.h" #include "net/http/http_status_code.h" #include "net/test/embedded_test_server/embedded_test_server.h"
diff --git a/components/sync/base/cancelation_signal.cc b/components/sync/engine_impl/cancelation_signal.cc similarity index 67% rename from components/sync/base/cancelation_signal.cc rename to components/sync/engine_impl/cancelation_signal.cc index ca907d7..0efc405 100644 --- a/components/sync/base/cancelation_signal.cc +++ b/components/sync/engine_impl/cancelation_signal.cc
@@ -2,20 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/sync/base/cancelation_signal.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "base/check_op.h" -#include "components/sync/base/cancelation_observer.h" namespace syncer { -CancelationSignal::CancelationSignal() : signalled_(false), handler_(nullptr) {} +CancelationSignal::CancelationSignal() = default; CancelationSignal::~CancelationSignal() { DCHECK(!handler_); } -bool CancelationSignal::TryRegisterHandler(CancelationObserver* handler) { +bool CancelationSignal::TryRegisterHandler(Observer* handler) { base::AutoLock lock(signal_lock_); DCHECK(!handler_); @@ -26,7 +25,7 @@ return true; } -void CancelationSignal::UnregisterHandler(CancelationObserver* handler) { +void CancelationSignal::UnregisterHandler(Observer* handler) { base::AutoLock lock(signal_lock_); DCHECK_EQ(handler_, handler); handler_ = nullptr; @@ -43,7 +42,7 @@ signalled_ = true; if (handler_) { - handler_->OnSignalReceived(); + handler_->OnCancelationSignalReceived(); } }
diff --git a/components/sync/engine_impl/cancelation_signal.h b/components/sync/engine_impl/cancelation_signal.h new file mode 100644 index 0000000..f327396 --- /dev/null +++ b/components/sync/engine_impl/cancelation_signal.h
@@ -0,0 +1,80 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_SYNC_ENGINE_IMPL_CANCELATION_SIGNAL_H_ +#define COMPONENTS_SYNC_ENGINE_IMPL_CANCELATION_SIGNAL_H_ + +#include "base/synchronization/lock.h" + +namespace syncer { + +// This class is used to allow one thread to request that another abort and +// return early. +// +// The signalling thread owns this class and my call Signal() at any time. +// After that call, this class' IsSignalled() will always return true. The +// intended use case is that the task intending to support early exit will +// periodically check the value of IsSignalled() to see if it should return +// early. +// +// The receiving task may also choose to register an observer whose +// OnCancelationSignalReceived() method will be executed on the signaller's +// thread when Signal() is called. This may be used for sending an early +// Signal() to a WaitableEvent. The registration of the handler is necessarily +// racy. If Signal() is executes before TryRegisterHandler(), +// TryRegisterHandler() will not perform any registration and return false. That +// function's caller must handle this case. +// +// This class supports only one handler, though it could easily support multiple +// observers if we found a use case for such a feature. +class CancelationSignal { + public: + class Observer { + public: + Observer() = default; + virtual ~Observer() = default; + + // This may be called from a foreign thread while the CancelationSignal's + // lock is held. The callee should avoid performing slow or blocking + // operations. + virtual void OnCancelationSignalReceived() = 0; + }; + + CancelationSignal(); + ~CancelationSignal(); + + // Tries to register a handler to be invoked when Signal() is called. + // + // If Signal() has already been called, returns false without registering + // the handler. Returns true when the registration is successful. + // + // If the registration was successful, the handler must be unregistered with + // UnregisterHandler before this CancelationSignal is destroyed. + bool TryRegisterHandler(Observer* handler); + + // Unregisters the abort handler. + void UnregisterHandler(Observer* handler); + + // Returns true if Signal() has been called. + bool IsSignalled(); + + // Sets the stop_requested_ flag and calls the OnCancelationSignalReceived() + // method of the registered handler, if there is one registered at the time. + // SignalReceived() will be called with the |signal_lock_| held. + void Signal(); + + private: + // Protects all members of this class. + base::Lock signal_lock_; + + // True if Signal() has been invoked. + bool signalled_ = false; + + // The registered abort handler. May be null. + Observer* handler_ = nullptr; +}; + +} // namespace syncer + +#endif // COMPONENTS_SYNC_ENGINE_IMPL_CANCELATION_SIGNAL_H_
diff --git a/components/sync/base/cancelation_signal_unittest.cc b/components/sync/engine_impl/cancelation_signal_unittest.cc similarity index 92% rename from components/sync/base/cancelation_signal_unittest.cc rename to components/sync/engine_impl/cancelation_signal_unittest.cc index b41e364..f86de9281 100644 --- a/components/sync/base/cancelation_signal_unittest.cc +++ b/components/sync/engine_impl/cancelation_signal_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/sync/base/cancelation_signal.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "base/bind.h" #include "base/single_thread_task_runner.h" @@ -11,12 +11,11 @@ #include "base/threading/platform_thread.h" #include "base/threading/thread.h" #include "base/time/time.h" -#include "components/sync/base/cancelation_observer.h" #include "testing/gtest/include/gtest/gtest.h" namespace syncer { -class BlockingTask : public CancelationObserver { +class BlockingTask : public CancelationSignal::Observer { public: explicit BlockingTask(CancelationSignal* cancel_signal); ~BlockingTask() override; @@ -32,9 +31,9 @@ void Run(base::WaitableEvent* task_start_signal, base::WaitableEvent* task_done_signal); - // Implementation of CancelationObserver. + // Implementation of CancelationSignal::Observer. // Wakes up the thread blocked in Run(). - void OnSignalReceived() override; + void OnCancelationSignalReceived() override; // Checks if we ever did successfully start waiting for |event_|. Be careful // with this. The flag itself is thread-unsafe, and the event that flips it @@ -81,7 +80,7 @@ task_done_signal->Signal(); } -void BlockingTask::OnSignalReceived() { +void BlockingTask::OnCancelationSignalReceived() { event_.Signal(); } @@ -150,12 +149,13 @@ return !blocking_task_.WasStarted(); } -class FakeCancelationObserver : public CancelationObserver { - void OnSignalReceived() override {} +class FakeObserver : public CancelationSignal::Observer { + public: + void OnCancelationSignalReceived() override {} }; TEST(CancelationSignalTest_SingleThread, CheckFlags) { - FakeCancelationObserver observer; + FakeObserver observer; CancelationSignal signal; EXPECT_FALSE(signal.IsSignalled());
diff --git a/components/sync/engine_impl/model_type_registry_unittest.cc b/components/sync/engine_impl/model_type_registry_unittest.cc index 7b546c6..a62f3461 100644 --- a/components/sync/engine_impl/model_type_registry_unittest.cc +++ b/components/sync/engine_impl/model_type_registry_unittest.cc
@@ -10,9 +10,9 @@ #include "base/deferred_sequenced_task_runner.h" #include "base/test/gtest_util.h" #include "base/test/task_environment.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/engine/data_type_activation_response.h" #include "components/sync/engine/fake_model_type_processor.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/protocol/model_type_state.pb.h" #include "components/sync/test/engine/mock_nudge_handler.h" #include "components/sync/test/fake_sync_encryption_handler.h"
diff --git a/components/sync/engine_impl/model_type_worker.cc b/components/sync/engine_impl/model_type_worker.cc index cd9e5d20..daa700a 100644 --- a/components/sync/engine_impl/model_type_worker.cc +++ b/components/sync/engine_impl/model_type_worker.cc
@@ -19,7 +19,6 @@ #include "base/strings/stringprintf.h" #include "base/threading/thread_restrictions.h" #include "base/trace_event/memory_usage_estimator.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/base/client_tag_hash.h" #include "components/sync/base/data_type_histogram.h" #include "components/sync/base/hash_util.h" @@ -28,6 +27,7 @@ #include "components/sync/base/unique_position.h" #include "components/sync/engine/model_type_processor.h" #include "components/sync/engine_impl/bookmark_update_preprocessing.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/engine_impl/commit_contribution.h" #include "components/sync/engine_impl/commit_contribution_impl.h" #include "components/sync/engine_impl/cycle/entity_change_metric_recording.h" @@ -392,7 +392,7 @@ model_type_processor_->GetLocalChanges( max_entries, base::BindOnce(&GetLocalChangesRequest::SetResponse, request)); - request->WaitForResponse(); + request->WaitForResponseOrCancelation(); CommitRequestDataList response; if (!request->WasCancelled()) response = request->ExtractResponse(); @@ -632,11 +632,11 @@ GetLocalChangesRequest::~GetLocalChangesRequest() {} -void GetLocalChangesRequest::OnSignalReceived() { +void GetLocalChangesRequest::OnCancelationSignalReceived() { response_accepted_.Signal(); } -void GetLocalChangesRequest::WaitForResponse() { +void GetLocalChangesRequest::WaitForResponseOrCancelation() { if (!cancelation_signal_->TryRegisterHandler(this)) { return; }
diff --git a/components/sync/engine_impl/model_type_worker.h b/components/sync/engine_impl/model_type_worker.h index 4ff2648a..7d28ce2 100644 --- a/components/sync/engine_impl/model_type_worker.h +++ b/components/sync/engine_impl/model_type_worker.h
@@ -16,12 +16,12 @@ #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "base/synchronization/waitable_event.h" -#include "components/sync/base/cancelation_observer.h" #include "components/sync/base/model_type.h" #include "components/sync/base/passphrase_enums.h" #include "components/sync/engine/commit_and_get_updates_types.h" #include "components/sync/engine/commit_queue.h" #include "components/sync/engine/sync_encryption_handler.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/engine_impl/commit_contributor.h" #include "components/sync/engine_impl/nudge_handler.h" #include "components/sync/engine_impl/update_handler.h" @@ -252,30 +252,30 @@ // model_type_processor_->GetLocalChanges( // max_entries, // base::Bind(&GetLocalChangesRequest::SetResponse, request)); -// request->WaitForResponse(); +// request->WaitForResponseOrCancelation(); // CommitRequestDataList response; // if (!request->WasCancelled()) // response = request->ExtractResponse(); class GetLocalChangesRequest : public base::RefCountedThreadSafe<GetLocalChangesRequest>, - public CancelationObserver { + public CancelationSignal::Observer { public: explicit GetLocalChangesRequest(CancelationSignal* cancelation_signal); - // CancelationObserver implementation. - void OnSignalReceived() override; + // CancelationSignal::Observer implementation. + void OnCancelationSignalReceived() override; // Blocks current thread until either SetResponse is called or // cancelation_signal_ is signaled. - void WaitForResponse(); + void WaitForResponseOrCancelation(); - // SetResponse takes ownership of |local_changes| and unblocks WaitForResponse - // call. It is called by model type through callback passed to - // GetLocalChanges. + // SetResponse takes ownership of |local_changes| and unblocks + // WaitForResponseOrCancelation call. It is called by model type through + // callback passed to GetLocalChanges. void SetResponse(CommitRequestDataList&& local_changes); - // Checks if WaitForResponse was canceled through CancelationSignal. When - // returns true calling ExtractResponse is unsafe. + // Checks if WaitForResponseOrCancelation was canceled through + // CancelationSignal. When returns true calling ExtractResponse is unsafe. bool WasCancelled(); // Returns response set by SetResponse().
diff --git a/components/sync/engine_impl/model_type_worker_unittest.cc b/components/sync/engine_impl/model_type_worker_unittest.cc index 46729c15..5557ebd3 100644 --- a/components/sync/engine_impl/model_type_worker_unittest.cc +++ b/components/sync/engine_impl/model_type_worker_unittest.cc
@@ -14,10 +14,10 @@ #include "base/strings/stringprintf.h" #include "base/test/metrics/histogram_tester.h" #include "base/threading/thread.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/base/client_tag_hash.h" #include "components/sync/base/unique_position.h" #include "components/sync/engine/model_type_processor.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/engine_impl/commit_contribution.h" #include "components/sync/engine_impl/cycle/entity_change_metric_recording.h" #include "components/sync/engine_impl/cycle/status_controller.h" @@ -1672,7 +1672,8 @@ scoped_refptr<GetLocalChangesRequest> MakeRequest(); - void BlockingWaitForResponse(scoped_refptr<GetLocalChangesRequest> request); + void BlockingWaitForResponseOrCancelation( + scoped_refptr<GetLocalChangesRequest> request); void ScheduleBlockingWait(scoped_refptr<GetLocalChangesRequest> request); protected: @@ -1704,10 +1705,10 @@ return base::MakeRefCounted<GetLocalChangesRequest>(&cancelation_signal_); } -void GetLocalChangesRequestTest::BlockingWaitForResponse( +void GetLocalChangesRequestTest::BlockingWaitForResponseOrCancelation( scoped_refptr<GetLocalChangesRequest> request) { start_event_.Signal(); - request->WaitForResponse(); + request->WaitForResponseOrCancelation(); done_event_.Signal(); } @@ -1715,15 +1716,16 @@ scoped_refptr<GetLocalChangesRequest> request) { blocking_thread_.task_runner()->PostTask( FROM_HERE, - base::BindOnce(&GetLocalChangesRequestTest::BlockingWaitForResponse, - base::Unretained(this), request)); + base::BindOnce( + &GetLocalChangesRequestTest::BlockingWaitForResponseOrCancelation, + base::Unretained(this), request)); } // Tests that request doesn't block when cancelation signal is already signaled. TEST_F(GetLocalChangesRequestTest, CancelationSignaledBeforeRequest) { cancelation_signal_.Signal(); auto request = MakeRequest(); - request->WaitForResponse(); + request->WaitForResponseOrCancelation(); EXPECT_TRUE(request->WasCancelled()); }
diff --git a/components/sync/engine_impl/net/server_connection_manager.cc b/components/sync/engine_impl/net/server_connection_manager.cc index 3bb83cd2..3761f2d 100644 --- a/components/sync/engine_impl/net/server_connection_manager.cc +++ b/components/sync/engine_impl/net/server_connection_manager.cc
@@ -10,7 +10,7 @@ #include "base/metrics/histogram.h" #include "build/build_config.h" -#include "components/sync/base/cancelation_signal.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/engine_impl/net/url_translator.h" #include "components/sync/engine_impl/syncer.h" #include "components/sync/protocol/sync.pb.h"
diff --git a/components/sync/engine_impl/net/sync_server_connection_manager.cc b/components/sync/engine_impl/net/sync_server_connection_manager.cc index a8bc6819..a33458e 100644 --- a/components/sync/engine_impl/net/sync_server_connection_manager.cc +++ b/components/sync/engine_impl/net/sync_server_connection_manager.cc
@@ -10,10 +10,9 @@ #include "base/bind.h" #include "base/callback_helpers.h" -#include "components/sync/base/cancelation_observer.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/engine/net/http_post_provider_factory.h" #include "components/sync/engine/net/http_post_provider_interface.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "net/base/net_errors.h" #include "net/http/http_status_code.h" @@ -22,7 +21,7 @@ // This provides HTTP Post functionality through the interface provided // by the application hosting the syncer backend. -class Connection : public CancelationObserver { +class Connection : public CancelationSignal::Observer { public: // All pointers must not be null and must outlive this object. Connection(HttpPostProviderFactory* factory, @@ -35,8 +34,8 @@ bool ReadBufferResponse(std::string* buffer_out, HttpResponse* response); bool ReadDownloadResponse(HttpResponse* response, std::string* buffer_out); - // CancelationObserver overrides. - void OnSignalReceived() override; + // CancelationSignal::Observer overrides. + void OnCancelationSignalReceived() override; private: int ReadResponse(std::string* out_buffer, int length) const; @@ -154,7 +153,7 @@ return bytes_read; } -void Connection::OnSignalReceived() { +void Connection::OnCancelationSignalReceived() { DCHECK(post_provider_); post_provider_->Abort(); }
diff --git a/components/sync/engine_impl/net/sync_server_connection_manager_unittest.cc b/components/sync/engine_impl/net/sync_server_connection_manager_unittest.cc index 55d3d71..9217ca8 100644 --- a/components/sync/engine_impl/net/sync_server_connection_manager_unittest.cc +++ b/components/sync/engine_impl/net/sync_server_connection_manager_unittest.cc
@@ -11,9 +11,9 @@ #include "base/test/test_timeouts.h" #include "base/threading/thread.h" #include "base/time/time.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/engine/net/http_post_provider_factory.h" #include "components/sync/engine/net/http_post_provider_interface.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "net/base/net_errors.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/sync/engine_impl/sync_manager_impl.cc b/components/sync/engine_impl/sync_manager_impl.cc index c039572..1edc0ea 100644 --- a/components/sync/engine_impl/sync_manager_impl.cc +++ b/components/sync/engine_impl/sync_manager_impl.cc
@@ -15,7 +15,6 @@ #include "base/metrics/histogram_macros.h" #include "base/threading/sequenced_task_runner_handle.h" #include "base/values.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/base/invalidation_interface.h" #include "components/sync/base/model_type.h" #include "components/sync/engine/configure_reason.h" @@ -23,6 +22,7 @@ #include "components/sync/engine/engine_util.h" #include "components/sync/engine/net/http_post_provider_factory.h" #include "components/sync/engine/polling_constants.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/engine_impl/loopback_server/loopback_connection_manager.h" #include "components/sync/engine_impl/model_type_connector_proxy.h" #include "components/sync/engine_impl/net/sync_server_connection_manager.h"
diff --git a/components/sync/engine_impl/sync_manager_impl_unittest.cc b/components/sync/engine_impl/sync_manager_impl_unittest.cc index 20d3e631..ec5ca52 100644 --- a/components/sync/engine_impl/sync_manager_impl_unittest.cc +++ b/components/sync/engine_impl/sync_manager_impl_unittest.cc
@@ -21,7 +21,6 @@ #include "base/test/task_environment.h" #include "base/test/values_test_util.h" #include "base/values.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/base/client_tag_hash.h" #include "components/sync/base/extensions_activity.h" #include "components/sync/base/model_type.h" @@ -32,6 +31,7 @@ #include "components/sync/engine/net/http_post_provider_interface.h" #include "components/sync/engine/polling_constants.h" #include "components/sync/engine/test_engine_components_factory.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/engine_impl/cycle/sync_cycle.h" #include "components/sync/engine_impl/sync_scheduler.h" #include "components/sync/js/js_event_handler.h"
diff --git a/components/sync/engine_impl/sync_scheduler_impl_unittest.cc b/components/sync/engine_impl/sync_scheduler_impl_unittest.cc index 5100ee0..d933174 100644 --- a/components/sync/engine_impl/sync_scheduler_impl_unittest.cc +++ b/components/sync/engine_impl/sync_scheduler_impl_unittest.cc
@@ -18,13 +18,13 @@ #include "base/test/task_environment.h" #include "base/test/test_timeouts.h" #include "base/threading/sequenced_task_runner_handle.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/base/extensions_activity.h" #include "components/sync/base/model_type_test_util.h" #include "components/sync/engine/data_type_activation_response.h" #include "components/sync/engine/fake_model_type_processor.h" #include "components/sync/engine/sync_engine_switches.h" #include "components/sync/engine_impl/backoff_delay_provider.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/engine_impl/cycle/test_util.h" #include "components/sync/test/callback_counter.h" #include "components/sync/test/engine/mock_connection_manager.h"
diff --git a/components/sync/engine_impl/syncer.cc b/components/sync/engine_impl/syncer.cc index 7b696ec..e589567 100644 --- a/components/sync/engine_impl/syncer.cc +++ b/components/sync/engine_impl/syncer.cc
@@ -11,8 +11,8 @@ #include "base/logging.h" #include "base/metrics/histogram_functions.h" #include "base/trace_event/trace_event.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/engine/sync_engine_switches.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/engine_impl/commit.h" #include "components/sync/engine_impl/commit_processor.h" #include "components/sync/engine_impl/cycle/nudge_tracker.h"
diff --git a/components/sync/engine_impl/syncer_proto_util.cc b/components/sync/engine_impl/syncer_proto_util.cc index d0d032c..7bc3e28 100644 --- a/components/sync/engine_impl/syncer_proto_util.cc +++ b/components/sync/engine_impl/syncer_proto_util.cc
@@ -249,7 +249,6 @@ sync_protocol_error.error_type = PBErrorTypeToSyncProtocolErrorType(error.error_type()); sync_protocol_error.error_description = error.error_description(); - sync_protocol_error.url = error.url(); sync_protocol_error.action = PBActionToClientAction(error.action()); if (error.error_data_type_ids_size() > 0) {
diff --git a/components/sync/engine_impl/syncer_unittest.cc b/components/sync/engine_impl/syncer_unittest.cc index d5614f35..771ccb0 100644 --- a/components/sync/engine_impl/syncer_unittest.cc +++ b/components/sync/engine_impl/syncer_unittest.cc
@@ -25,13 +25,13 @@ #include "base/test/task_environment.h" #include "base/time/time.h" #include "build/build_config.h" -#include "components/sync/base/cancelation_signal.h" #include "components/sync/base/client_tag_hash.h" #include "components/sync/base/extensions_activity.h" #include "components/sync/base/time.h" #include "components/sync/engine/data_type_activation_response.h" #include "components/sync/engine/forwarding_model_type_processor.h" #include "components/sync/engine_impl/backoff_delay_provider.h" +#include "components/sync/engine_impl/cancelation_signal.h" #include "components/sync/engine_impl/cycle/mock_debug_info_getter.h" #include "components/sync/engine_impl/cycle/sync_cycle_context.h" #include "components/sync/engine_impl/net/server_connection_manager.h"
diff --git a/components/sync/model/data_type_activation_request.cc b/components/sync/model/data_type_activation_request.cc index db9d8c9..371c632c 100644 --- a/components/sync/model/data_type_activation_request.cc +++ b/components/sync/model/data_type_activation_request.cc
@@ -22,4 +22,8 @@ DataTypeActivationRequest& DataTypeActivationRequest::operator=( DataTypeActivationRequest&& request) = default; +bool DataTypeActivationRequest::IsValid() const { + return !error_handler.is_null(); +} + } // namespace syncer
diff --git a/components/sync/model/data_type_activation_request.h b/components/sync/model/data_type_activation_request.h index e7098e7a..06211ba6 100644 --- a/components/sync/model/data_type_activation_request.h +++ b/components/sync/model/data_type_activation_request.h
@@ -26,6 +26,8 @@ const DataTypeActivationRequest& request); DataTypeActivationRequest& operator=(DataTypeActivationRequest&& request); + bool IsValid() const; + ModelErrorHandler error_handler; CoreAccountId authenticated_account_id; std::string cache_guid;
diff --git a/components/sync/model_impl/client_tag_based_model_type_processor.cc b/components/sync/model_impl/client_tag_based_model_type_processor.cc index fec3dd6a..6a24ed2 100644 --- a/components/sync/model_impl/client_tag_based_model_type_processor.cc +++ b/components/sync/model_impl/client_tag_based_model_type_processor.cc
@@ -4,6 +4,7 @@ #include "components/sync/model_impl/client_tag_based_model_type_processor.h" +#include <set> #include <utility> #include <vector> @@ -29,6 +30,19 @@ const char kErrorSiteHistogramPrefix[] = "Sync.ModelTypeErrorSite."; +size_t CountDuplicateClientTags(const EntityMetadataMap& metadata_map) { + size_t count = 0u; + std::set<std::string> client_tag_hashes; + for (const auto& kv : metadata_map) { + const std::string& client_tag_hash = kv.second->client_tag_hash(); + if (client_tag_hashes.find(client_tag_hash) != client_tag_hashes.end()) { + count++; + } + client_tag_hashes.insert(client_tag_hash); + } + return count; +} + } // namespace ClientTagBasedModelTypeProcessor::ClientTagBasedModelTypeProcessor( @@ -58,7 +72,7 @@ StartCallback start_callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DVLOG(1) << "Sync is starting for " << ModelTypeToString(type_); - DCHECK(request.error_handler) << ModelTypeToString(type_); + DCHECK(request.IsValid()) << ModelTypeToString(type_); DCHECK(start_callback) << ModelTypeToString(type_); DCHECK(!start_callback_) << ModelTypeToString(type_); DCHECK(!IsConnected()) << ModelTypeToString(type_); @@ -93,8 +107,10 @@ if (batch->GetModelTypeState().initial_sync_done()) { EntityMetadataMap metadata_map(batch->TakeAllMetadata()); - entity_tracker_ = std::make_unique<ProcessorEntityTracker>( - batch->GetModelTypeState(), std::move(metadata_map)); + if (CheckForInvalidPersistedMetadata(metadata_map)) { + entity_tracker_ = std::make_unique<ProcessorEntityTracker>( + batch->GetModelTypeState(), std::move(metadata_map)); + } } else { // In older versions of the binary, commit-only types did not persist // initial_sync_done(). So this branch can be exercised for commit-only @@ -105,6 +121,7 @@ << ModelTypeToString(type_); } + DCHECK(model_ready_to_sync_); ConnectIfReady(); } @@ -127,7 +144,7 @@ return; } - CheckForInvalidPersistedMetadata(); + CheckForInvalidPersistedModelTypeState(); auto activation_response = std::make_unique<DataTypeActivationResponse>(); if (!entity_tracker_) { @@ -194,10 +211,7 @@ } case CLEAR_METADATA: { - ClearMetadataAndResetState(); - // The model is still ready to sync (with the same |bridge_|) - replay - // the initialization. - ModelReadyToSync(std::make_unique<MetadataBatch>()); + ClearAllTrackedMetadataAndResetState(); DCHECK(model_ready_to_sync_); break; } @@ -206,7 +220,7 @@ DCHECK(!IsConnected()); } -void ClientTagBasedModelTypeProcessor::ClearMetadataAndResetState() { +void ClientTagBasedModelTypeProcessor::ClearAllTrackedMetadataAndResetState() { std::unique_ptr<MetadataChangeList> change_list; // All changes before the initial sync is done are ignored and in fact they @@ -224,10 +238,33 @@ change_list->ClearModelTypeState(); } + ClearAllMetadataAndResetStateImpl(std::move(change_list)); +} + +void ClientTagBasedModelTypeProcessor::ClearAllProvidedMetadataAndResetState( + const EntityMetadataMap& metadata_map) { + std::unique_ptr<MetadataChangeList> change_list = + bridge_->CreateMetadataChangeList(); + for (const auto& kv : metadata_map) { + const std::string& storage_key = kv.first; + change_list->ClearMetadata(storage_key); + } + change_list->ClearModelTypeState(); + + ClearAllMetadataAndResetStateImpl(std::move(change_list)); +} + +void ClientTagBasedModelTypeProcessor::ClearAllMetadataAndResetStateImpl( + std::unique_ptr<MetadataChangeList> change_list) { bridge_->ApplyStopSyncChanges(std::move(change_list)); // Reset all the internal state of the processor. ResetState(CLEAR_METADATA); + + if (activation_request_.IsValid()) { + // If OnSyncStarting() already was called, notify the bridge again. + bridge_->OnSyncStarting(activation_request_); + } } bool ClientTagBasedModelTypeProcessor::IsTrackingMetadata() { @@ -285,7 +322,7 @@ // Shouldn't connect anymore. start_callback_.Reset(); - if (activation_request_.error_handler) { + if (activation_request_.IsValid()) { // Tell sync about the error. activation_request_.error_handler.Run(error); } @@ -1022,7 +1059,6 @@ case KEEP_METADATA: break; case CLEAR_METADATA: - model_ready_to_sync_ = false; entity_tracker_.reset(); break; } @@ -1095,50 +1131,66 @@ std::move(callback).Run(type_, std::move(all_nodes)); } -void ClientTagBasedModelTypeProcessor::CheckForInvalidPersistedMetadata() { +bool ClientTagBasedModelTypeProcessor::CheckForInvalidPersistedMetadata( + const EntityMetadataMap& metadata_map) { + size_t count_of_duplicates = CountDuplicateClientTags(metadata_map); + if (count_of_duplicates == 0u) + return true; + + // Metadata entities with duplicate client tag hashes most likely arise + // from metadata orphans; report their count to metrics. + for (size_t i = 0; i < count_of_duplicates; i++) { + UMA_HISTOGRAM_ENUMERATION("Sync.ModelTypeOrphanMetadata.ModelReadyToSync", + ModelTypeHistogramValue(type_)); + } + + ClearAllProvidedMetadataAndResetState(metadata_map); + // Not having `entity_tracker_` results in doing the initial sync again. + DCHECK(!entity_tracker_); + return false; +} + +void ClientTagBasedModelTypeProcessor:: + CheckForInvalidPersistedModelTypeState() { if (!entity_tracker_) { return; } - const sync_pb::ModelTypeState& model_type_state = entity_tracker_->model_type_state(); - const bool invalid_cache_guid = - model_type_state.cache_guid() != activation_request_.cache_guid; - const bool invalid_data_type_id = - model_type_state.progress_marker().data_type_id() != - GetSpecificsFieldNumberFromModelType(type_); - const bool invalid_account_id = - model_type_state.authenticated_account_id() != - activation_request_.authenticated_account_id.ToString(); - // Do not check for the authenticated_account_id since the cache GUID equality - // implies account ID equality (verified in ProfileSyncService). - // - // Check for invalid persisted metadata. - // TODO(crbug.com/1079314): add UMA for each case of inconsistent data. - if (!invalid_cache_guid && !invalid_data_type_id) { - if (invalid_account_id) { - sync_pb::ModelTypeState update_model_type_state = model_type_state; - update_model_type_state.set_authenticated_account_id( - activation_request_.authenticated_account_id.ToString()); - entity_tracker_->set_model_type_state(update_model_type_state); - } - return; + + // Check for a mismatch in authenticated account id. The id can change after + // restart (and this does not mean the account has changed, this is checked + // later here by cache_guid mismatch). Easy to fix in place. + if (model_type_state.authenticated_account_id() != + activation_request_.authenticated_account_id.ToString()) { + sync_pb::ModelTypeState update_model_type_state = model_type_state; + update_model_type_state.set_authenticated_account_id( + activation_request_.authenticated_account_id.ToString()); + entity_tracker_->set_model_type_state(update_model_type_state); } - // There is a mismatch between the cache guid or the data type id stored - // in |model_type_state_| and the one received from sync. This indicates + + // Check for deeper issues where we need to restart sync for this type. + const bool valid_cache_guid = + model_type_state.cache_guid() == activation_request_.cache_guid; + // Check for a mismatch between the cache guid or the data type id stored + // in |model_type_state_| and the one received from sync. A mismatch indicates // that the stored metadata are invalid (e.g. has been manipulated) and // don't belong to the current syncing client. - if (model_type_state.progress_marker().data_type_id() != - GetSpecificsFieldNumberFromModelType(type_)) { + const bool valid_data_type_id = + model_type_state.progress_marker().data_type_id() == + GetSpecificsFieldNumberFromModelType(type_); + if (valid_cache_guid && valid_data_type_id) { + return; + } + + // TODO(crbug.com/1079314): add UMA for each case of inconsistent data. + if (!valid_data_type_id) { UMA_HISTOGRAM_ENUMERATION("Sync.PersistedModelTypeIdMismatch", ModelTypeHistogramValue(type_)); } - ClearMetadataAndResetState(); - // The model is still ready to sync (with the same |bridge_|) - replay - // the initialization. - model_ready_to_sync_ = true; - // Notify the bridge sync is starting to simulate an enable event. - bridge_->OnSyncStarting(activation_request_); + + ClearAllTrackedMetadataAndResetState(); + // Not having `entity_tracker_` results in doing the initial sync again. DCHECK(!entity_tracker_); }
diff --git a/components/sync/model_impl/client_tag_based_model_type_processor.h b/components/sync/model_impl/client_tag_based_model_type_processor.h index 198584085..84307327 100644 --- a/components/sync/model_impl/client_tag_based_model_type_processor.h +++ b/components/sync/model_impl/client_tag_based_model_type_processor.h
@@ -128,10 +128,16 @@ friend class ModelTypeDebugInfo; friend class ClientTagBasedModelTypeProcessorTest; - // Clears all metadata and directs the bridge to clear the persisted metadata - // as well. In addition, it resets the state of the processor and clears all - // tracking maps such as |entities_| and |storage_key_to_tag_hash_|. - void ClearMetadataAndResetState(); + // Directs the bridge to clear the persisted metadata as known to the entity + // tracker / `metadata_map`. In addition, it resets the state of the processor + // incl. the entity tracker. + void ClearAllTrackedMetadataAndResetState(); + void ClearAllProvidedMetadataAndResetState( + const EntityMetadataMap& metadata_map); + // Implementation for the functions above, `change_list` is assumed to delete + // all known metadata. + void ClearAllMetadataAndResetStateImpl( + std::unique_ptr<MetadataChangeList> change_list); // Whether the processor is allowing changes to its model type. If this is // false, the bridge should not allow any changes to its data. @@ -214,9 +220,10 @@ void MergeDataWithMetadataForDebugging(AllNodesCallback callback, std::unique_ptr<DataBatch> batch); - // Checks for valid cache GUID and data type id. Resets state if metadata is - // invalid. - void CheckForInvalidPersistedMetadata(); + // Checks for valid persisted state. Resets state (incl. the persisted data) + // if it is invalid. + void CheckForInvalidPersistedModelTypeState(); + bool CheckForInvalidPersistedMetadata(const EntityMetadataMap& metadata_map); // Reports error and records a metric about |site| where the error occurred. void ReportErrorImpl(const ModelError& error, ErrorSite site);
diff --git a/components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc b/components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc index 1c59dd49..a886d33 100644 --- a/components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc +++ b/components/sync/model_impl/client_tag_based_model_type_processor_unittest.cc
@@ -2731,4 +2731,42 @@ ModelTypeForHistograms::kPreferences, 1); } +TEST_F(ClientTagBasedModelTypeProcessorTest, + ShouldResetForDuplicateClientTagHash) { + base::HistogramTester histogram_tester; + + const syncer::ClientTagHash kClientTagHash = + ClientTagHash::FromUnhashed(AUTOFILL, "tag"); + sync_pb::EntityMetadata entity_metadata1; + entity_metadata1.set_client_tag_hash(kClientTagHash.value()); + entity_metadata1.set_creation_time(0); + sync_pb::EntityMetadata entity_metadata2; + entity_metadata2.set_client_tag_hash(kClientTagHash.value()); + entity_metadata2.set_creation_time(0); + sync_pb::EntityMetadata entity_metadata3; + entity_metadata3.set_client_tag_hash(kClientTagHash.value()); + entity_metadata3.set_creation_time(0); + + db()->PutMetadata(kKey1, std::move(entity_metadata1)); + db()->PutMetadata(kKey2, std::move(entity_metadata2)); + db()->PutMetadata(kKey3, std::move(entity_metadata3)); + + InitializeToReadyState(); + + // With a client tag hash duplicate, metadata should have been cleared. + EXPECT_EQ(0U, db()->metadata_count()); + EXPECT_EQ(0U, ProcessorEntityCount()); + EXPECT_FALSE(type_processor()->IsTrackingMetadata()); + // Initial update. + worker()->UpdateFromServer(); + EXPECT_TRUE(type_processor()->IsTrackingMetadata()); + + // There were three entities with the same client-tag-hash which indicates + // that two of them were metadata oprhans. + histogram_tester.ExpectBucketCount( + "Sync.ModelTypeOrphanMetadata.ModelReadyToSync", + /*bucket=*/ModelTypeHistogramValue(GetModelType()), + /*count=*/2); +} + } // namespace syncer
diff --git a/components/sync/protocol/encryption.proto b/components/sync/protocol/encryption.proto index 418c8043..18ac6919 100644 --- a/components/sync/protocol/encryption.proto +++ b/components/sync/protocol/encryption.proto
@@ -30,5 +30,5 @@ // node. message EncryptedData { optional string key_name = 1; - optional string blob = 2; + optional string blob = 2; // base64-encoded. }
diff --git a/components/sync/protocol/proto_visitors.h b/components/sync/protocol/proto_visitors.h index 8777c7c..9a73b94b 100644 --- a/components/sync/protocol/proto_visitors.h +++ b/components/sync/protocol/proto_visitors.h
@@ -297,7 +297,6 @@ VISIT_PROTO_FIELDS(const sync_pb::ClientToServerResponse::Error& proto) { VISIT_ENUM(error_type); VISIT(error_description); - VISIT(url); VISIT_ENUM(action); }
diff --git a/components/sync/protocol/sync.proto b/components/sync/protocol/sync.proto index d557cfa..3aa822f 100644 --- a/components/sync/protocol/sync.proto +++ b/components/sync/protocol/sync.proto
@@ -968,7 +968,8 @@ message Error { optional SyncEnums.ErrorType error_type = 1 [default = UNKNOWN]; optional string error_description = 2; - optional string url = 3; + reserved 3; + reserved "url"; optional SyncEnums.Action action = 4 [default = UNKNOWN_ACTION]; // Currently meaningful if |error_type| is throttled or partial_failure.
diff --git a/components/sync/protocol/sync_protocol_error.cc b/components/sync/protocol/sync_protocol_error.cc index 0ba670cb..34f00dc 100644 --- a/components/sync/protocol/sync_protocol_error.cc +++ b/components/sync/protocol/sync_protocol_error.cc
@@ -57,7 +57,6 @@ auto value = std::make_unique<base::DictionaryValue>(); value->SetString("ErrorType", GetSyncErrorTypeString(error_type)); value->SetString("ErrorDescription", error_description); - value->SetString("url", url); value->SetString("action", GetClientActionString(action)); return value; }
diff --git a/components/sync/protocol/sync_protocol_error.h b/components/sync/protocol/sync_protocol_error.h index 79b08a1..f7f72c6 100644 --- a/components/sync/protocol/sync_protocol_error.h +++ b/components/sync/protocol/sync_protocol_error.h
@@ -73,7 +73,6 @@ struct SyncProtocolError { SyncProtocolErrorType error_type; std::string error_description; - std::string url; ClientAction action; ModelTypeSet error_data_types; SyncProtocolError();
diff --git a/components/sync/test/fake_server/fake_server.cc b/components/sync/test/fake_server/fake_server.cc index c421391..a09d330 100644 --- a/components/sync/test/fake_server/fake_server.cc +++ b/components/sync/test/fake_server/fake_server.cc
@@ -550,7 +550,6 @@ new sync_pb::ClientToServerResponse_Error(); error->set_error_type(error_type); error->set_error_description(description); - error->set_url(url); error->set_action(action); triggered_actionable_error_.reset(error); }
diff --git a/components/test/data/autofill_assistant/html/autofill_assistant_target_website.html b/components/test/data/autofill_assistant/html/autofill_assistant_target_website.html index 74b46a4..9e77f308 100644 --- a/components/test/data/autofill_assistant/html/autofill_assistant_target_website.html +++ b/components/test/data/autofill_assistant/html/autofill_assistant_target_website.html
@@ -137,7 +137,7 @@ <body onload="moveTouchAreaTwoAndThree()"> <!-- Touch areas can be accessed without needing scroll. --> <div> - <p id="touch_area_one" ontouchend="removeTouchArea('touch_area_one')" onmouseup="removeTouchArea('touch_area_one')"> + <p id="touch_area_one" ontouchend="removeTouchArea('touch_area_one')"> Touchable Area One</p> <br> </div> @@ -175,7 +175,7 @@ <br> </div> <div> - <p id="touch_area_six" ontouchend="removeTouchArea('touch_area_six')" onclick="removeTouchArea('touch_area_six')"> + <p id="touch_area_six" ontouchend="removeTouchArea('touch_area_six')"> Touchable Area Six</p> <br> </div>
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl.cc b/components/viz/service/display_embedder/skia_output_surface_impl.cc index ddc947f..4297765 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl.cc
@@ -143,18 +143,14 @@ } DCHECK(render_pass_image_cache_.empty()); - // Post a task to destroy |impl_on_gpu_| on the GPU thread and block until - // that is finished. - base::WaitableEvent event; + // Post a task to destroy |impl_on_gpu_| on the GPU thread. auto task = base::BindOnce( - [](std::unique_ptr<SkiaOutputSurfaceImplOnGpu> impl_on_gpu, - base::WaitableEvent* event) { - impl_on_gpu.reset(); - event->Signal(); - }, - std::move(impl_on_gpu_), &event); - ScheduleGpuTask(std::move(task), {}); - event.Wait(); + [](std::unique_ptr<SkiaOutputSurfaceImplOnGpu> impl_on_gpu) {}, + std::move(impl_on_gpu_)); + EnqueueGpuTask(std::move(task), {}, /*make_current=*/false, + /*need_framebuffer=*/false); + // Flush GPU tasks and block until all tasks are finished. + FlushGpuTasks(/*wait_for_finish=*/true); } gpu::SurfaceHandle SkiaOutputSurfaceImpl::GetSurfaceHandle() const { @@ -192,7 +188,8 @@ auto task = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::SetEnableDCLayers, base::Unretained(impl_on_gpu_.get()), enable); - ScheduleGpuTask(std::move(task), {}); + EnqueueGpuTask(std::move(task), {}, /*make_current=*/true, + /*need_framebuffer=*/false); } void SkiaOutputSurfaceImpl::EnsureBackbuffer() { @@ -247,7 +244,9 @@ base::Unretained(impl_on_gpu_.get()), size, device_scale_factor, color_space, format, use_stencil, GetDisplayTransform()); - ScheduleGpuTask(std::move(task), {}); + EnqueueGpuTask(std::move(task), {}, /*make_current=*/true, + /*need_framebuffer=*/!dependency_->IsOffscreen()); + FlushGpuTasks(/*wait_for_finish=*/false); color_space_ = color_space; is_hdr_ = color_space_.IsHDR(); @@ -412,7 +411,10 @@ base::BindOnce(&SkiaOutputSurfaceImplOnGpu::ReleaseImageContexts, base::Unretained(impl_on_gpu_.get()), std::move(image_contexts), sync_fence_release_); - gpu_task_scheduler_->ScheduleGpuTask(std::move(callback), {}); + EnqueueGpuTask(std::move(callback), {}, /*make_current=*/true, + /*need_framebuffer=*/false); + // Defer ReleaseImageContexts. + FlushGpuTasks(/*wait_for_finish=*/false); return sync_token; } @@ -465,9 +467,11 @@ // SkiaOutputSurfaceImpl::dtor. So it is safe to use base::Unretained. auto callback = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::SwapBuffers, base::Unretained(impl_on_gpu_.get()), - post_task_timestamp, std::move(frame), - std::move(deferred_framebuffer_draw_closure_)); - ScheduleGpuTask(std::move(callback), std::move(resource_sync_tokens_)); + post_task_timestamp, std::move(frame)); + EnqueueGpuTask(std::move(callback), std::move(resource_sync_tokens_), + /*make_current=*/true, + /*need_framebuffer=*/!dependency_->IsOffscreen()); + FlushGpuTasks(/*wait_for_finish=*/false); // Recreate |root_recorder_| after SwapBuffers has been scheduled on GPU // thread to save some time in BeginPaintCurrentFrame @@ -479,9 +483,10 @@ // PostTask to the GPU thread to deal with freeing resources and running // callbacks. auto task = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::SwapBuffersSkipped, - base::Unretained(impl_on_gpu_.get()), - std::move(deferred_framebuffer_draw_closure_)); - ScheduleGpuTask(std::move(task), std::move(resource_sync_tokens_)); + base::Unretained(impl_on_gpu_.get())); + EnqueueGpuTask(std::move(task), std::move(resource_sync_tokens_), + /*make_current=*/false, /*need_framebuffer=*/false); + FlushGpuTasks(/*wait_for_finish=*/false); // TODO(vasilyt): reuse root recorder RecreateRootRecorder(); @@ -495,7 +500,8 @@ auto callback = base::BindOnce( &SkiaOutputSurfaceImplOnGpu::ScheduleOutputSurfaceAsOverlay, base::Unretained(impl_on_gpu_.get()), std::move(output_surface_plane)); - ScheduleGpuTask(std::move(callback), {}); + EnqueueGpuTask(std::move(callback), {}, /*make_current=*/false, + /*need_framebuffer=*/false); } SkCanvas* SkiaOutputSurfaceImpl::BeginPaintRenderPass( @@ -555,7 +561,6 @@ base::OnceClosure on_finished) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(current_paint_); - DCHECK(!deferred_framebuffer_draw_closure_); // If current_render_pass_id_ is not null, we are painting a render pass. // Otherwise we are painting a frame. @@ -586,13 +591,16 @@ post_task_timestamp = base::TimeTicks::Now(); } - auto closure = + auto task = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::FinishPaintRenderPass, base::Unretained(impl_on_gpu_.get()), post_task_timestamp, current_paint_->render_pass_id(), std::move(ddl), std::move(images_in_current_paint_), resource_sync_tokens_, sync_fence_release_); - ScheduleGpuTask(std::move(closure), std::move(resource_sync_tokens_)); + EnqueueGpuTask(std::move(task), std::move(resource_sync_tokens_), + /*make_current=*/true, /*need_framebuffer=*/false); + // Maybe not flush here to avoid an extra MakeCurrent() call. + FlushGpuTasks(/*wait_for_finish=*/false); } else { // Draw on the root render pass. current_buffer_modified_ = true; @@ -605,12 +613,14 @@ overdraw_surface_recorder_.reset(); } - deferred_framebuffer_draw_closure_ = base::BindOnce( + auto task = base::BindOnce( &SkiaOutputSurfaceImplOnGpu::FinishPaintCurrentFrame, base::Unretained(impl_on_gpu_.get()), std::move(ddl), std::move(overdraw_ddl), std::move(images_in_current_paint_), resource_sync_tokens_, sync_fence_release_, std::move(on_finished), draw_rectangle_); + EnqueueGpuTask(std::move(task), std::move(resource_sync_tokens_), + /*make_current=*/true, /*need_framebuffer=*/true); draw_rectangle_.reset(); } images_in_current_paint_.clear(); @@ -677,7 +687,8 @@ base::BindOnce(&SkiaOutputSurfaceImplOnGpu::RemoveRenderPassResource, base::Unretained(impl_on_gpu_.get()), std::move(ids), std::move(image_contexts)); - ScheduleGpuTask(std::move(callback), {}); + EnqueueGpuTask(std::move(callback), {}, /*make_current=*/false, + /*need_framebuffer=*/false); } void SkiaOutputSurfaceImpl::CopyOutput( @@ -686,22 +697,11 @@ const gfx::ColorSpace& color_space, std::unique_ptr<CopyOutputRequest> request) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - - // Defer CopyOutput for root render pass with draw framebuffer to - // SwapBuffers() or SwapBuffersSkipped(). - if (!id) { - deferred_framebuffer_draw_closure_ = base::BindOnce( - &SkiaOutputSurfaceImplOnGpu::CopyOutput, - base::Unretained(impl_on_gpu_.get()), id, geometry, color_space, - std::move(request), std::move(deferred_framebuffer_draw_closure_)); - } else { - DCHECK(!deferred_framebuffer_draw_closure_); - auto callback = base::BindOnce( - base::IgnoreResult(&SkiaOutputSurfaceImplOnGpu::CopyOutput), - base::Unretained(impl_on_gpu_.get()), id, geometry, color_space, - std::move(request), base::OnceCallback<bool()>()); - ScheduleGpuTask(std::move(callback), std::move(resource_sync_tokens_)); - } + auto callback = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::CopyOutput, + base::Unretained(impl_on_gpu_.get()), id, + geometry, color_space, std::move(request)); + EnqueueGpuTask(std::move(callback), std::move(resource_sync_tokens_), + /*make_current=*/true, /*need_framebuffer=*/!id); } void SkiaOutputSurfaceImpl::ScheduleOverlays( @@ -711,7 +711,19 @@ base::BindOnce(&SkiaOutputSurfaceImplOnGpu::ScheduleOverlays, base::Unretained(impl_on_gpu_.get()), std::move(overlays), std::move(images_in_current_paint_)); - ScheduleGpuTask(std::move(task), std::move(sync_tokens)); +#if defined(OS_APPLE) + DCHECK_EQ(dependency_->gr_context_type(), gpu::GrContextType::kGL); + // If there are render pass overlays, then a gl context is needed for drawing + // the overlay render passes to a backing for being scanned out. + bool make_current = std::find_if(overlays.begin(), overlays.end(), + [](const CALayerOverlay& overlay) { + return !!overlay.ddl; + }) != overlays.end(); +#else + bool make_current = false; +#endif + EnqueueGpuTask(std::move(task), std::move(sync_tokens), make_current, + /*need_framebuffer=*/false); images_in_current_paint_.clear(); } @@ -724,7 +736,8 @@ void SkiaOutputSurfaceImpl::SetFrameRate(float frame_rate) { auto task = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::SetFrameRate, base::Unretained(impl_on_gpu_.get()), frame_rate); - ScheduleGpuTask(std::move(task), {}); + EnqueueGpuTask(std::move(task), {}, /*make_current=*/false, + /*need_framebuffer=*/false); } void SkiaOutputSurfaceImpl::SetCapabilitiesForTesting( @@ -735,7 +748,8 @@ auto callback = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::SetCapabilitiesForTesting, base::Unretained(impl_on_gpu_.get()), capabilities_); - ScheduleGpuTask(std::move(callback), {}); + EnqueueGpuTask(std::move(callback), {}, /*make_current=*/true, + /*need_framebuffer=*/false); } bool SkiaOutputSurfaceImpl::Initialize() { @@ -746,12 +760,12 @@ // This runner could be called from vsync or GPU thread after |this| is // destroyed. We post directly to display compositor thread to check // |weak_ptr_| as |dependency_| may have been destroyed. - GpuVSyncCallback vsync_callback_runner = #if defined(OS_ANDROID) - // Callback is never used on Android. Doesn't work with WebView because - // calling it bypasses SkiaOutputSurfaceDependency. - base::DoNothing(); + // Callback is never used on Android. Doesn't work with WebView because + // calling it bypasses SkiaOutputSurfaceDependency. + GpuVSyncCallback vsync_callback_runner = base::DoNothing(); #else + GpuVSyncCallback vsync_callback_runner = base::BindRepeating( [](scoped_refptr<base::SingleThreadTaskRunner> runner, base::WeakPtr<SkiaOutputSurfaceImpl> weak_ptr, @@ -763,13 +777,15 @@ base::ThreadTaskRunnerHandle::Get(), weak_ptr_); #endif - base::WaitableEvent event; bool result = false; - auto callback = base::BindOnce(&SkiaOutputSurfaceImpl::InitializeOnGpuThread, - base::Unretained(this), vsync_callback_runner, - &event, &result); - ScheduleGpuTask(std::move(callback), {}); - event.Wait(); + auto callback = + base::BindOnce(&SkiaOutputSurfaceImpl::InitializeOnGpuThread, + base::Unretained(this), vsync_callback_runner, &result); + EnqueueGpuTask(std::move(callback), {}, /*make_current=*/false, + /*need_framebuffer=*/false); + // |capabilities_| will be initialized in InitializeOnGpuThread(), so have to + // wait. + FlushGpuTasks(/*wait_for_finish=*/true); if (capabilities_.preserve_buffer_content && capabilities_.supports_post_sub_buffer) { @@ -791,14 +807,7 @@ void SkiaOutputSurfaceImpl::InitializeOnGpuThread( GpuVSyncCallback vsync_callback_runner, - base::WaitableEvent* event, bool* result) { - base::Optional<base::ScopedClosureRunner> scoped_runner; - if (event) { - scoped_runner.emplace( - base::BindOnce(&base::WaitableEvent::Signal, base::Unretained(event))); - } - auto did_swap_buffer_complete_callback = base::BindRepeating( &SkiaOutputSurfaceImpl::DidSwapBuffersComplete, weak_ptr_); auto buffer_presented_callback = @@ -959,20 +968,64 @@ void SkiaOutputSurfaceImpl::ScheduleGpuTaskForTesting( base::OnceClosure callback, std::vector<gpu::SyncToken> sync_tokens) { - ScheduleGpuTask(std::move(callback), std::move(sync_tokens)); + EnqueueGpuTask(std::move(callback), std::move(sync_tokens), + /*make_current=*/false, /*need_framebuffer=*/false); + FlushGpuTasks(/*wait_for_finish=*/false); } -void SkiaOutputSurfaceImpl::ScheduleGpuTask( - base::OnceClosure callback, - std::vector<gpu::SyncToken> sync_tokens) { - auto wrapped_closure = base::BindOnce( - [](base::OnceClosure callback) { +void SkiaOutputSurfaceImpl::EnqueueGpuTask( + GpuTask task, + std::vector<gpu::SyncToken> sync_tokens, + bool make_current, + bool need_framebuffer) { + gpu_tasks_.push_back(std::move(task)); + std::move(sync_tokens.begin(), sync_tokens.end(), + std::back_inserter(gpu_task_sync_tokens_)); + + // Set |make_current_|, so MakeCurrent() will be called before executing all + // enqueued GPU tasks. + make_current_ |= make_current; + need_framebuffer_ |= need_framebuffer; +} + +void SkiaOutputSurfaceImpl::FlushGpuTasks(bool wait_for_finish) { + // If |wait_for_finish| is true, a GPU task will be always scheduled to make + // sure all pending tasks are finished on the GPU thread. + if (gpu_tasks_.empty() && !wait_for_finish) + return; + + auto event = + wait_for_finish ? std::make_unique<base::WaitableEvent>() : nullptr; + + auto callback = base::BindOnce( + [](std::vector<GpuTask> tasks, base::WaitableEvent* event, + SkiaOutputSurfaceImplOnGpu* impl_on_gpu, bool need_framebuffer) { gpu::ContextUrl::SetActiveUrl(GetActiveUrl()); - std::move(callback).Run(); + // MakeCurrent() will mark context lost in SkiaOutputSurfaceImplOnGpu, + // if it fails. + if (impl_on_gpu) + impl_on_gpu->MakeCurrent(need_framebuffer); + // Each task can check SkiaOutputSurfaceImplOnGpu::contest_is_lost_ + // to detect errors. + for (auto& task : tasks) { + std::move(task).Run(); + } + if (event) + event->Signal(); }, - std::move(callback)); - gpu_task_scheduler_->ScheduleGpuTask(std::move(wrapped_closure), - std::move(sync_tokens)); + std::move(gpu_tasks_), event.get(), + make_current_ ? impl_on_gpu_.get() : nullptr, need_framebuffer_); + + gpu_task_scheduler_->ScheduleGpuTask(std::move(callback), + std::move(gpu_task_sync_tokens_)); + + make_current_ = false; + need_framebuffer_ = false; + gpu_task_sync_tokens_.clear(); + gpu_tasks_.clear(); + + if (event) + event->Wait(); } GrBackendFormat SkiaOutputSurfaceImpl::GetGrBackendFormatForTexture( @@ -1122,4 +1175,5 @@ void SkiaOutputSurfaceImpl::SetNeedsMeasureNextDrawLatency() { should_measure_next_post_task_ = true; } + } // namespace viz
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl.h b/components/viz/service/display_embedder/skia_output_surface_impl.h index 8452844..0e6b0c8 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl.h +++ b/components/viz/service/display_embedder/skia_output_surface_impl.h
@@ -26,10 +26,6 @@ #include "third_party/skia/include/core/SkSurfaceCharacterization.h" #include "third_party/skia/include/core/SkYUVAIndex.h" -namespace base { -class WaitableEvent; -} - namespace viz { class ImageContextImpl; @@ -164,7 +160,6 @@ private: bool Initialize(); void InitializeOnGpuThread(GpuVSyncCallback vsync_callback_runner, - base::WaitableEvent* event, bool* result); SkSurfaceCharacterization CreateSkSurfaceCharacterization( const gfx::Size& surface_size, @@ -179,8 +174,12 @@ // Provided as a callback for the GPU thread. void OnGpuVSync(base::TimeTicks timebase, base::TimeDelta interval); - void ScheduleGpuTask(base::OnceClosure callback, - std::vector<gpu::SyncToken> sync_tokens); + using GpuTask = base::OnceClosure; + void EnqueueGpuTask(GpuTask task, + std::vector<gpu::SyncToken> sync_tokens, + bool make_current, + bool need_framebuffer); + void FlushGpuTasks(bool wait_for_finish); GrBackendFormat GetGrBackendFormatForTexture( ResourceFormat resource_format, uint32_t gl_texture_target, @@ -292,9 +291,14 @@ bool should_measure_next_post_task_ = false; - // We defer the draw to the framebuffer until SwapBuffers or CopyOutput - // to avoid the expense of posting a task and calling MakeCurrent. - base::OnceCallback<bool()> deferred_framebuffer_draw_closure_; + // GPU tasks pending for flush. + std::vector<GpuTask> gpu_tasks_; + // GPU sync tokens which are depended by |gpu_tasks_|. + std::vector<gpu::SyncToken> gpu_task_sync_tokens_; + // True if _any_ of |gpu_tasks_| need a GL context. + bool make_current_ = false; + // True if _any_ of |gpu_tasks_| need to access the framebuffer. + bool need_framebuffer_ = false; bool use_damage_area_from_skia_output_device_ = false; // Damage area of the current buffer. Differ to the last submit buffer.
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc index 7a32e1c..51cb927 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -443,7 +443,7 @@ // |context_provider_| and clients want either the context to be lost or // made current on destruction. - if (MakeCurrent(false /* need_fbo0 */)) { + if (MakeCurrent(/*need_framebuffer=*/false)) { // This ensures any outstanding callbacks for promise images are // performed. gr_context()->flushAndSubmit(); @@ -464,7 +464,7 @@ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(gr_context()); - if (!MakeCurrent(!dependency_->IsOffscreen() /* need_fbo0 */)) + if (context_is_lost_) return; size_ = size; @@ -472,11 +472,10 @@ if (!output_device_->Reshape(size_, device_scale_factor, color_space, format, transform)) { MarkContextLost(CONTEXT_LOST_RESHAPE_FAILED); - return; } } -bool SkiaOutputSurfaceImplOnGpu::FinishPaintCurrentFrame( +void SkiaOutputSurfaceImplOnGpu::FinishPaintCurrentFrame( sk_sp<SkDeferredDisplayList> ddl, sk_sp<SkDeferredDisplayList> overdraw_ddl, std::vector<ImageContextImpl*> image_contexts, @@ -488,20 +487,19 @@ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(!scoped_output_device_paint_); - bool need_fbo0 = gl_surface_ && !gl_surface_->IsSurfaceless(); - if (!MakeCurrent(need_fbo0)) - return false; + if (context_is_lost_) + return; if (!ddl) { MarkContextLost(CONTEXT_LOST_UNKNOWN); - return false; + return; } if (draw_rectangle) { if (!output_device_->SetDrawRectangle(*draw_rectangle)) { MarkContextLost( ContextLostReason::CONTEXT_LOST_SET_DRAW_RECTANGLE_FAILED); - return false; + return; } } @@ -576,11 +574,10 @@ !(begin_semaphores.empty() && end_semaphores.empty())) { // TODO(penghuang): handle vulkan device lost. DLOG(ERROR) << "output_sk_surface()->flush() failed."; - return false; + return; } } ReleaseFenceSyncAndPushTextureUpdates(sync_fence_release); - return true; } void SkiaOutputSurfaceImplOnGpu::ScheduleOutputSurfaceAsOverlay( @@ -592,8 +589,7 @@ void SkiaOutputSurfaceImplOnGpu::SwapBuffers( base::TimeTicks post_task_timestamp, - OutputSurfaceFrame frame, - base::OnceCallback<bool()> deferred_framebuffer_draw_closure) { + OutputSurfaceFrame frame) { TRACE_EVENT0("viz", "SkiaOutputSurfaceImplOnGpu::SwapBuffers"); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); @@ -601,13 +597,12 @@ output_device_->SetDrawTimings(post_task_timestamp, base::TimeTicks::Now()); } - SwapBuffersInternal(std::move(deferred_framebuffer_draw_closure), &frame); + SwapBuffersInternal(&frame); } -void SkiaOutputSurfaceImplOnGpu::SwapBuffersSkipped( - base::OnceCallback<bool()> deferred_framebuffer_draw_closure) { +void SkiaOutputSurfaceImplOnGpu::SwapBuffersSkipped() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - SwapBuffersInternal(std::move(deferred_framebuffer_draw_closure)); + SwapBuffersInternal(); } void SkiaOutputSurfaceImplOnGpu::FinishPaintRenderPass( @@ -625,7 +620,7 @@ output_device_->SetDrawTimings(post_task_timestamp, base::TimeTicks::Now()); } - if (!MakeCurrent(false /* need_fbo0 */)) + if (context_is_lost_) return; if (!ddl) { @@ -707,38 +702,31 @@ FROM_HERE, base::BindOnce(std::move(callback), sync_token, is_lost)); } -bool SkiaOutputSurfaceImplOnGpu::CopyOutput( +void SkiaOutputSurfaceImplOnGpu::CopyOutput( AggregatedRenderPassId id, copy_output::RenderPassGeometry geometry, const gfx::ColorSpace& color_space, - std::unique_ptr<CopyOutputRequest> request, - base::OnceCallback<bool()> deferred_framebuffer_draw_closure) { + std::unique_ptr<CopyOutputRequest> request) { TRACE_EVENT0("viz", "SkiaOutputSurfaceImplOnGpu::CopyOutput"); // TODO(crbug.com/898595): Do this on the GPU instead of CPU with Vulkan. DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - if (deferred_framebuffer_draw_closure) { - // returns false if context not set to current, i.e lost - if (!std::move(deferred_framebuffer_draw_closure).Run()) - return false; - DCHECK(context_state_->IsCurrent(nullptr /* surface */)); - } else { - if (!MakeCurrent(true /* need_fbo0 */)) - return false; - } + if (context_is_lost_) + return; - bool from_fbo0 = !id; - DCHECK(scoped_output_device_paint_ || !from_fbo0); + bool from_framebuffer = !id; + DCHECK(scoped_output_device_paint_ || !from_framebuffer); - DCHECK(from_fbo0 || + DCHECK(from_framebuffer || offscreen_surfaces_.find(id) != offscreen_surfaces_.end()); - auto* surface = - from_fbo0 ? output_sk_surface() : offscreen_surfaces_[id].surface(); + auto* surface = from_framebuffer ? output_sk_surface() + : offscreen_surfaces_[id].surface(); // If a platform doesn't support RGBX_8888 format, we will use RGBA_8888 // instead. In this case, we need discard alpha channel (modify the alpha // value to 0xff, but keep other channel not changed). - bool need_discard_alpha = from_fbo0 && (output_device_->is_emulated_rgbx()); + bool need_discard_alpha = + from_framebuffer && (output_device_->is_emulated_rgbx()); if (need_discard_alpha) { base::Optional<gpu::raster::GrShaderCache::ScopedCacheUse> cache_use; if (dependency_->GetGrShaderCache()) { @@ -845,7 +833,7 @@ gpu::kNullSurfaceHandle, kUsage); if (!result) { DLOG(ERROR) << "Failed to create shared image."; - return false; + return; } auto representation = dependency_->GetSharedImageManager()->ProduceSkia( @@ -888,7 +876,7 @@ !(begin_semaphores.empty() && end_semaphores.empty())) { // TODO(penghuang): handle vulkan device lost. DLOG(ERROR) << "dest_surface->flush() failed."; - return false; + return; } auto release_callback = base::BindOnce( &SkiaOutputSurfaceImplOnGpu::DestroySharedImageOnImplThread, @@ -904,7 +892,6 @@ NOTREACHED(); } ScheduleCheckReadbackCompletion(); - return true; } void SkiaOutputSurfaceImplOnGpu::DestroySharedImageOnImplThread( @@ -978,7 +965,7 @@ DCHECK(!image_contexts.empty()); // The window could be destroyed already, and the MakeCurrent will fail with // an destroyed window, so MakeCurrent without requiring the fbo0. - if (!MakeCurrent(false /* need_fbo0 */)) { + if (context_is_lost_) { for (const auto& context : image_contexts) context->OnContextLost(); } @@ -991,20 +978,7 @@ SkiaOutputSurface::OverlayList overlays, std::vector<ImageContextImpl*> image_contexts) { #if defined(OS_APPLE) - DCHECK(context_state_->GrContextIsGL()); - - // If |image_contexts| is not empty, it means there is at least one render - // pass overlays - bool has_render_pass_overlays = - !image_contexts.empty() || - std::find_if(overlays.begin(), overlays.end(), - [](const CALayerOverlay& overlay) { - return !!overlay.ddl; - }) != overlays.end(); - - // If there are render pass overlays, then a gl context is needed for drawing - // the overlay render passes to a backing for being scanned out. - if (has_render_pass_overlays && !MakeCurrent(false /* need_fbo0 */)) + if (context_is_lost_) return; std::vector<GrBackendSemaphore> begin_semaphores; @@ -1056,7 +1030,7 @@ } void SkiaOutputSurfaceImplOnGpu::SetEnableDCLayers(bool enable) { - if (!MakeCurrent(false /* need_fbo0 */)) + if (context_is_lost_) return; output_device_->SetEnableDCLayers(enable); } @@ -1072,7 +1046,6 @@ void SkiaOutputSurfaceImplOnGpu::SetCapabilitiesForTesting( const OutputSurface::Capabilities& capabilities) { - MakeCurrent(false /* need_fbo0 */); // Check that we're using an offscreen surface. DCHECK(dependency_->IsOffscreen()); output_device_ = std::make_unique<SkiaOutputDeviceOffscreen>( @@ -1145,7 +1118,7 @@ if (!gl_surface_) return false; - if (MakeCurrent(true /* need_fbo0 */)) { + if (MakeCurrent(/*need_framebuffer=*/true)) { if (gl_surface_->IsSurfaceless()) { #if !defined(OS_WIN) output_device_ = std::make_unique<SkiaOutputDeviceBufferQueue>( @@ -1289,9 +1262,15 @@ return true; } -bool SkiaOutputSurfaceImplOnGpu::MakeCurrent(bool need_fbo0) { +bool SkiaOutputSurfaceImplOnGpu::MakeCurrent(bool need_framebuffer) { + // If GL is not being used or GLSurface is not surfaceless, we can ignore + // making current the GLSurface for better performance. + bool need_fbo0 = need_framebuffer && context_state_->GrContextIsGL() && + gl_surface_ && !gl_surface_->IsSurfaceless(); + // need_fbo0 implies need_gl too. bool need_gl = need_fbo0; + // Only make current with |gl_surface_|, if following operations will use // fbo0. auto* gl_surface = need_fbo0 ? gl_surface_.get() : nullptr; @@ -1304,6 +1283,13 @@ gpu::error::kLostContext, *context_state_->context_lost_reason())); return false; } + + // Some GLSurface implements OnMakeCurrent() to tracing current GLContext, + // even if framebuffer is not needed, we still call OnMakeCurrent() so + // GLSurface implementation will know the current GLContext. + if (gl_surface_ && !need_fbo0) + gl_surface_->OnMakeCurrent(context_state_->context()); + context_state_->set_need_context_state_reset(true); return true; } @@ -1342,20 +1328,12 @@ } void SkiaOutputSurfaceImplOnGpu::SwapBuffersInternal( - base::OnceCallback<bool()> deferred_framebuffer_draw_closure, OutputSurfaceFrame* frame) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(output_device_); - if (deferred_framebuffer_draw_closure) { - // Returns false if context not set to current, i.e lost - if (!std::move(deferred_framebuffer_draw_closure).Run()) - return; - DCHECK(context_state_->IsCurrent(nullptr /* surface */)); - } else { - if (!MakeCurrent(!dependency_->IsOffscreen() /* need_fbo0 */)) - return; - } + if (context_is_lost_) + return; ResetStateOfImages(); output_device_->PreGrContextSubmit(); @@ -1519,7 +1497,7 @@ // If there are no pending readback requests or we can't make the context // current then exit. There is no thing to do here. - if (num_readbacks_pending_ == 0 || !MakeCurrent(/*need_fbo0=*/false)) + if (num_readbacks_pending_ == 0 || !MakeCurrent(/*need_framebuffer=*/false)) return; gr_context()->checkAsyncWorkCompletion();
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h index 11231856..5a13f3a 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
@@ -119,7 +119,7 @@ gfx::BufferFormat format, bool use_stencil, gfx::OverlayTransform transform); - bool FinishPaintCurrentFrame(sk_sp<SkDeferredDisplayList> ddl, + void FinishPaintCurrentFrame(sk_sp<SkDeferredDisplayList> ddl, sk_sp<SkDeferredDisplayList> overdraw_ddl, std::vector<ImageContextImpl*> image_contexts, std::vector<gpu::SyncToken> sync_tokens, @@ -129,14 +129,11 @@ void ScheduleOutputSurfaceAsOverlay( const OverlayProcessorInterface::OutputSurfaceOverlayPlane& output_surface_plane); - void SwapBuffers( - base::TimeTicks post_task_timestamp, - OutputSurfaceFrame frame, - base::OnceCallback<bool()> deferred_framebuffer_draw_closure); + void SwapBuffers(base::TimeTicks post_task_timestamp, + OutputSurfaceFrame frame); // Runs |deferred_framebuffer_draw_closure| when SwapBuffers() or CopyOutput() // will not. - void SwapBuffersSkipped( - base::OnceCallback<bool()> deferred_framebuffer_draw_closure); + void SwapBuffersSkipped(); void EnsureBackbuffer() { output_device_->EnsureBackbuffer(); } void DiscardBackbuffer() { output_device_->DiscardBackbuffer(); } void FinishPaintRenderPass(base::TimeTicks post_task_timestamp, @@ -150,11 +147,10 @@ void RemoveRenderPassResource( std::vector<AggregatedRenderPassId> ids, std::vector<std::unique_ptr<ImageContextImpl>> image_contexts); - bool CopyOutput(AggregatedRenderPassId id, + void CopyOutput(AggregatedRenderPassId id, copy_output::RenderPassGeometry geometry, const gfx::ColorSpace& color_space, - std::unique_ptr<CopyOutputRequest> request, - base::OnceCallback<bool()> deferred_framebuffer_draw_closure); + std::unique_ptr<CopyOutputRequest> request); void BeginAccessImages(const std::vector<ImageContextImpl*>& image_contexts, std::vector<GrBackendSemaphore>* begin_semaphores, @@ -209,6 +205,10 @@ gpu::MemoryTracker* GetMemoryTracker() { return memory_tracker_; } + // Make context current for GL, and return false if the context is lost. + // It will do nothing when Vulkan is used. + bool MakeCurrent(bool need_framebuffer); + private: class OffscreenSurface; class DisplayContext; @@ -224,9 +224,6 @@ DidSwapBufferCompleteCallback GetDidSwapBuffersCompleteCallback(); - // Make context current for GL, and return false if the context is lost. - // It will do nothing when Vulkan is used. - bool MakeCurrent(bool need_fbo0); void MarkContextLost(ContextLostReason reason); void DestroySharedImageOnImplThread( @@ -239,9 +236,7 @@ void ReleaseFenceSyncAndPushTextureUpdates(uint64_t sync_fence_release); - void SwapBuffersInternal( - base::OnceCallback<bool()> deferred_framebuffer_draw_closure, - OutputSurfaceFrame* frame = nullptr); + void SwapBuffersInternal(OutputSurfaceFrame* frame = nullptr); GrDirectContext* gr_context() { return context_state_->gr_context(); }
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index 810e77d..e181d51 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -48,6 +48,7 @@ "//base:base_static", "//base:clang_profiling_buildflags", "//base/third_party/dynamic_annotations", + "//base/tracing/protos:chrome_track_event_resources", "//build:branding_buildflags", "//build:chromecast_buildflags", "//build:chromeos_buildflags",
diff --git a/content/browser/appcache/appcache_host.cc b/content/browser/appcache/appcache_host.cc index f5adfca..c1c7b6d 100644 --- a/content/browser/appcache/appcache_host.cc +++ b/content/browser/appcache/appcache_host.cc
@@ -402,22 +402,22 @@ std::unique_ptr<AppCacheRequestHandler> AppCacheHost::CreateRequestHandler( std::unique_ptr<AppCacheRequest> request, - blink::mojom::ResourceType resource_type, + network::mojom::RequestDestination request_destination, bool should_reset_appcache) { - if (AppCacheRequestHandler::IsMainResourceType(resource_type)) { + if (AppCacheRequestHandler::IsMainRequestDestination(request_destination)) { // Store the first party origin so that it can be used later in SelectCache // for checking whether the creation of the appcache is allowed. site_for_cookies_ = request->GetSiteForCookies(); site_for_cookies_initialized_ = true; top_frame_origin_ = request->GetTopFrameOrigin(); return base::WrapUnique(new AppCacheRequestHandler( - this, resource_type, should_reset_appcache, std::move(request))); + this, request_destination, should_reset_appcache, std::move(request))); } if ((associated_cache() && associated_cache()->is_complete()) || is_selection_pending()) { return base::WrapUnique(new AppCacheRequestHandler( - this, resource_type, should_reset_appcache, std::move(request))); + this, request_destination, should_reset_appcache, std::move(request))); } return nullptr; }
diff --git a/content/browser/appcache/appcache_host.h b/content/browser/appcache/appcache_host.h index ab8fd08..9778ab0 100644 --- a/content/browser/appcache/appcache_host.h +++ b/content/browser/appcache/appcache_host.h
@@ -130,7 +130,7 @@ // May return NULL if the request isn't subject to retrieval from an appache. std::unique_ptr<AppCacheRequestHandler> CreateRequestHandler( std::unique_ptr<AppCacheRequest> request, - blink::mojom::ResourceType resource_type, + network::mojom::RequestDestination request_destination, bool should_reset_appcache); // Support for devtools inspecting appcache resources.
diff --git a/content/browser/appcache/appcache_request.h b/content/browser/appcache/appcache_request.h index cf189e4..b4d5ab7 100644 --- a/content/browser/appcache/appcache_request.h +++ b/content/browser/appcache/appcache_request.h
@@ -58,8 +58,10 @@ // The HTTP headers of this request. const net::HttpRequestHeaders& GetHeaders() const { return request_.headers; } - // The resource type of this request. - int GetResourceType() const { return request_.resource_type; } + // The request destination of this request. + network::mojom::RequestDestination GetRequestDestination() const { + return request_.destination; + } // Returns true if the request was successful. bool IsSuccess() const;
diff --git a/content/browser/appcache/appcache_request_handler.cc b/content/browser/appcache/appcache_request_handler.cc index 7eefe8c..61b6d11 100644 --- a/content/browser/appcache/appcache_request_handler.cc +++ b/content/browser/appcache/appcache_request_handler.cc
@@ -36,11 +36,11 @@ AppCacheRequestHandler::AppCacheRequestHandler( AppCacheHost* host, - blink::mojom::ResourceType resource_type, + network::mojom::RequestDestination request_destination, bool should_reset_appcache, std::unique_ptr<AppCacheRequest> request) : host_(host), - resource_type_(resource_type), + request_destination_(request_destination), should_reset_appcache_(should_reset_appcache), is_waiting_for_cache_selection_(false), found_group_id_(0), @@ -225,8 +225,7 @@ base::WeakPtr<AppCacheHost> appcache_host) { std::unique_ptr<AppCacheRequestHandler> handler = appcache_host->CreateRequestHandler( - std::make_unique<AppCacheRequest>(request), - static_cast<blink::mojom::ResourceType>(request.resource_type), + std::make_unique<AppCacheRequest>(request), request.destination, request.should_reset_appcache); if (handler) handler->appcache_host_ = std::move(appcache_host); @@ -234,13 +233,13 @@ } // static -bool AppCacheRequestHandler::IsMainResourceType( - blink::mojom::ResourceType type) { +bool AppCacheRequestHandler::IsMainRequestDestination( + network::mojom::RequestDestination destination) { // This returns false for kWorker, which is typically considered a main // resource. In appcache, dedicated workers are treated as subresources of // their nearest ancestor frame's appcache host unlike shared workers. - return blink::IsResourceTypeFrame(type) || - type == blink::mojom::ResourceType::kSharedWorker; + return blink::IsRequestDestinationFrame(destination) || + destination == network::mojom::RequestDestination::kSharedWorker; } void AppCacheRequestHandler::OnDestructionImminent(AppCacheHost* host) { @@ -277,7 +276,7 @@ cache_id_ = cache_id; manifest_url_ = manifest_url; - if (blink::IsResourceTypeFrame(resource_type_) && + if (blink::IsRequestDestinationFrame(request_destination_) && !namespace_entry_url.is_empty()) host_->NotifyMainResourceIsNamespaceEntry(namespace_entry_url); @@ -323,7 +322,8 @@ host_->enable_cache_selection(true); const AppCacheHost* spawning_host = - (resource_type_ == blink::mojom::ResourceType::kSharedWorker) + (request_destination_ == + network::mojom::RequestDestination::kSharedWorker) ? host_ : host_->GetSpawningHost(); GURL preferred_manifest_url = spawning_host ? @@ -364,10 +364,11 @@ host_->top_frame_origin()); if (was_blocked_by_policy) { - if (blink::IsResourceTypeFrame(resource_type_)) { + if (blink::IsRequestDestinationFrame(request_destination_)) { host_->NotifyMainResourceBlocked(manifest_url); } else { - DCHECK_EQ(resource_type_, blink::mojom::ResourceType::kSharedWorker); + DCHECK_EQ(request_destination_, + network::mojom::RequestDestination::kSharedWorker); host_->OnContentBlocked(manifest_url); } DeliverNetworkResponse(); @@ -381,7 +382,7 @@ return; } - if (IsMainResourceType(resource_type_) && + if (IsMainRequestDestination(request_destination_) && cache_id != blink::mojom::kAppCacheNoCacheId) { // AppCacheHost loads and holds a reference to the main resource cache // for two reasons, firstly to preload the cache into the working set @@ -624,8 +625,8 @@ // In appcache, dedicated workers are treated as subresources of their nearest // ancestor frame's appcache host. On the other hand, dedicated workers need // their own subresource loader. - if (IsMainResourceType(resource_type_) || - resource_type_ == blink::mojom::ResourceType::kWorker) { + if (IsMainRequestDestination(request_destination_) || + request_destination_ == network::mojom::RequestDestination::kWorker) { should_create_subresource_loader_ = true; } return true;
diff --git a/content/browser/appcache/appcache_request_handler.h b/content/browser/appcache/appcache_request_handler.h index 98d19ce..e117fd3 100644 --- a/content/browser/appcache/appcache_request_handler.h +++ b/content/browser/appcache/appcache_request_handler.h
@@ -99,7 +99,8 @@ const network::ResourceRequest& request, base::WeakPtr<AppCacheHost> appcache_host); - static bool IsMainResourceType(blink::mojom::ResourceType type); + static bool IsMainRequestDestination( + network::mojom::RequestDestination destination); // Called by unittests to indicate that we are in test mode. static void SetRunningInTests(bool in_tests); @@ -111,7 +112,7 @@ // Callers should use AppCacheHost::CreateRequestHandler. AppCacheRequestHandler(AppCacheHost* host, - blink::mojom::ResourceType resource_type, + network::mojom::RequestDestination request_destination, bool should_reset_appcache, std::unique_ptr<AppCacheRequest> request); @@ -144,7 +145,7 @@ AppCacheStorage* storage() const; bool is_main_resource() const { - return IsMainResourceType(resource_type_); + return IsMainRequestDestination(request_destination_); } // These are called on each request intercept opportunity, by the various @@ -199,7 +200,7 @@ AppCacheHost* host_; // Frame vs subresource vs sharedworker loads are somewhat different. - blink::mojom::ResourceType resource_type_; + network::mojom::RequestDestination request_destination_; // True if corresponding AppCache group should be resetted before load. bool should_reset_appcache_;
diff --git a/content/browser/appcache/appcache_request_handler_unittest.cc b/content/browser/appcache/appcache_request_handler_unittest.cc index 2bf55da..f3d2ef5 100644 --- a/content/browser/appcache/appcache_request_handler_unittest.cc +++ b/content/browser/appcache/appcache_request_handler_unittest.cc
@@ -159,7 +159,7 @@ base::Unretained(this))); CreateRequestAndHandler(GURL("http://blah"), host_, - blink::mojom::ResourceType::kMainFrame); + network::mojom::RequestDestination::kDocument); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); @@ -200,7 +200,7 @@ base::Unretained(this))); CreateRequestAndHandler(GURL("http://blah"), host_, - blink::mojom::ResourceType::kMainFrame); + network::mojom::RequestDestination::kDocument); EXPECT_TRUE(handler_.get()); mock_storage()->SimulateFindMainResource( @@ -242,7 +242,7 @@ base::Unretained(this))); CreateRequestAndHandler(GURL("http://blah"), host_, - blink::mojom::ResourceType::kMainFrame); + network::mojom::RequestDestination::kDocument); EXPECT_TRUE(handler_.get()); mock_storage()->SimulateFindMainResource( @@ -309,7 +309,7 @@ base::Unretained(this))); CreateRequestAndHandler(GURL("http://blah/fallback-override"), host_, - blink::mojom::ResourceType::kMainFrame); + network::mojom::RequestDestination::kDocument); EXPECT_TRUE(handler_.get()); mock_storage()->SimulateFindMainResource( @@ -357,7 +357,7 @@ void SubResource_Miss_WithNoCacheSelected() { CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); // We avoid creating handler when possible, sub-resource requests are not // subject to retrieval from an appcache when there's no associated cache. EXPECT_FALSE(handler_.get()); @@ -373,7 +373,7 @@ host_->AssociateCompleteCache(MakeNewCache()); CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); @@ -398,7 +398,7 @@ host_->set_preferred_manifest_url(cache->owning_group()->manifest_url()); CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); EXPECT_TRUE(loader()); @@ -426,7 +426,7 @@ AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); EXPECT_TRUE(loader()); @@ -452,7 +452,7 @@ AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); EXPECT_FALSE(loader()); @@ -479,7 +479,7 @@ AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); EXPECT_FALSE(loader()); @@ -507,7 +507,7 @@ true); CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); EXPECT_FALSE(loader()); @@ -530,7 +530,7 @@ AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); mock_service_->EraseHost(host_->host_id()); @@ -551,7 +551,7 @@ host_->pending_selected_cache_id_ = 1; CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); @@ -578,7 +578,7 @@ AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); EXPECT_TRUE(loader()); @@ -602,7 +602,7 @@ host_->pending_selected_cache_id_ = 1; CreateRequestAndHandler(GURL("ftp://blah/"), host_, - blink::mojom::ResourceType::kSubResource); + network::mojom::RequestDestination::kEmpty); EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) EXPECT_FALSE(handler_->MaybeLoadResource(nullptr)); @@ -617,7 +617,7 @@ void CanceledRequest() { CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kMainFrame); + network::mojom::RequestDestination::kDocument); EXPECT_TRUE(handler_.get()); SetAppCacheURLLoader(handler_->MaybeLoadResource(nullptr)); @@ -640,7 +640,7 @@ base::Unretained(this))); CreateRequestAndHandler(GURL("http://blah/"), host_, - blink::mojom::ResourceType::kMainFrame); + network::mojom::RequestDestination::kDocument); EXPECT_TRUE(handler_.get()); mock_policy_->can_load_return_value_ = false; @@ -696,14 +696,14 @@ void CreateRequestAndHandler(const GURL& url, AppCacheHost* host, - blink::mojom::ResourceType resource_type) { + network::mojom::RequestDestination destination) { network::ResourceRequest resource_request; resource_request.url = url; resource_request.method = "GET"; auto request = std::make_unique<AppCacheRequest>(resource_request); request_ = request.get(); handler_ = - host->CreateRequestHandler(std::move(request), resource_type, false); + host->CreateRequestHandler(std::move(request), destination, false); } // Data members --------------------------------------------------
diff --git a/content/browser/appcache/appcache_storage_impl_unittest.cc b/content/browser/appcache/appcache_storage_impl_unittest.cc index 163dc54..6ec92be 100644 --- a/content/browser/appcache/appcache_storage_impl_unittest.cc +++ b/content/browser/appcache/appcache_storage_impl_unittest.cc
@@ -1650,7 +1650,7 @@ request.url = GetMockUrl("manifest"); handler_ = host2->CreateRequestHandler( std::make_unique<AppCacheRequest>(request), - blink::mojom::ResourceType::kMainFrame, false); + network::mojom::RequestDestination::kDocument, false); handler_->MaybeCreateLoader(request, nullptr, base::DoNothing(), base::DoNothing()); }
diff --git a/content/browser/appcache/appcache_subresource_url_factory.cc b/content/browser/appcache/appcache_subresource_url_factory.cc index b621303..9589fe30 100644 --- a/content/browser/appcache/appcache_subresource_url_factory.cc +++ b/content/browser/appcache/appcache_subresource_url_factory.cc
@@ -83,8 +83,7 @@ return; } handler_ = host_->CreateRequestHandler( - std::make_unique<AppCacheRequest>(request_), - static_cast<blink::mojom::ResourceType>(request_.resource_type), + std::make_unique<AppCacheRequest>(request_), request_.destination, request_.should_reset_appcache); if (!handler_) { CreateAndStartNetworkLoader();
diff --git a/content/browser/appcache/appcache_url_loader.cc b/content/browser/appcache/appcache_url_loader.cc index 8a5c090..a48b669 100644 --- a/content/browser/appcache/appcache_url_loader.cc +++ b/content/browser/appcache/appcache_url_loader.cc
@@ -197,10 +197,7 @@ mojo::SimpleWatcher::ArmingPolicy::MANUAL, base::SequencedTaskRunnerHandle::Get()), loader_callback_(std::move(loader_callback)), - appcache_request_(appcache_request->GetWeakPtr()), - is_main_resource_load_( - blink::IsResourceTypeFrame(static_cast<blink::mojom::ResourceType>( - appcache_request->GetResourceType()))) {} + appcache_request_(appcache_request->GetWeakPtr()) {} void AppCacheURLLoader::CallLoaderCallback(base::OnceClosure continuation) { DCHECK(loader_callback_);
diff --git a/content/browser/appcache/appcache_url_loader.h b/content/browser/appcache/appcache_url_loader.h index 4bc5307..c24eae06 100644 --- a/content/browser/appcache/appcache_url_loader.h +++ b/content/browser/appcache/appcache_url_loader.h
@@ -222,7 +222,6 @@ const base::WeakPtr<AppCacheRequest> appcache_request_; bool is_deleting_soon_ = false; - const bool is_main_resource_load_; SEQUENCE_CHECKER(sequence_checker_);
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc index 700b495..b39ca425 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -3476,6 +3476,10 @@ render_view_host_->OnFocus(); } +void RenderFrameHostImpl::TakeFocus(bool reverse) { + render_view_host_->OnTakeFocus(reverse); +} + void RenderFrameHostImpl::UpdateTargetURL( const GURL& url, blink::mojom::LocalMainFrameHost::UpdateTargetURLCallback callback) {
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h index fd2484e..77d7849d 100644 --- a/content/browser/renderer_host/render_frame_host_impl.h +++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -1690,6 +1690,7 @@ void TextAutosizerPageInfoChanged( blink::mojom::TextAutosizerPageInfoPtr page_info) override; void FocusPage() override; + void TakeFocus(bool reverse) override; void UpdateTargetURL(const GURL& url, blink::mojom::LocalMainFrameHost::UpdateTargetURLCallback callback) override;
diff --git a/content/browser/renderer_host/render_frame_proxy_host.cc b/content/browser/renderer_host/render_frame_proxy_host.cc index 1dee3929..6ee4667 100644 --- a/content/browser/renderer_host/render_frame_proxy_host.cc +++ b/content/browser/renderer_host/render_frame_proxy_host.cc
@@ -597,6 +597,10 @@ frame_tree_node_->current_frame_host()->FocusPage(); } +void RenderFrameProxyHost::TakeFocus(bool reverse) { + frame_tree_node_->current_frame_host()->TakeFocus(reverse); +} + void RenderFrameProxyHost::UpdateTargetURL( const GURL& url, blink::mojom::RemoteMainFrameHost::UpdateTargetURLCallback callback) {
diff --git a/content/browser/renderer_host/render_frame_proxy_host.h b/content/browser/renderer_host/render_frame_proxy_host.h index f42d058f..561b6209 100644 --- a/content/browser/renderer_host/render_frame_proxy_host.h +++ b/content/browser/renderer_host/render_frame_proxy_host.h
@@ -182,6 +182,7 @@ // blink::mojom::RemoteMainFrameHost overrides: void FocusPage() override; + void TakeFocus(bool reverse) override; void UpdateTargetURL( const GURL& url, blink::mojom::RemoteMainFrameHost::UpdateTargetURLCallback callback)
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc index 9076c76..6b2a2ef 100644 --- a/content/browser/renderer_host/render_view_host_impl.cc +++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -765,7 +765,6 @@ bool handled = true; IPC_BEGIN_MESSAGE_MAP(RenderViewHostImpl, msg) IPC_MESSAGE_HANDLER(ViewHostMsg_ShowWidget, OnShowWidget) - IPC_MESSAGE_HANDLER(ViewHostMsg_TakeFocus, OnTakeFocus) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP()
diff --git a/content/browser/tracing/tracing_controller_impl.cc b/content/browser/tracing/tracing_controller_impl.cc index 3afc6f8..151b81c 100644 --- a/content/browser/tracing/tracing_controller_impl.cc +++ b/content/browser/tracing/tracing_controller_impl.cc
@@ -22,6 +22,7 @@ #include "base/system/sys_info.h" #include "base/time/time.h" #include "base/trace_event/trace_config.h" +#include "base/tracing/protos/grit/tracing_proto_resources.h" #include "base/values.h" #include "build/build_config.h" #include "components/tracing/common/trace_startup_config.h" @@ -42,10 +43,14 @@ #include "net/base/network_change_notifier.h" #include "services/tracing/public/cpp/perfetto/perfetto_config.h" #include "services/tracing/public/cpp/perfetto/perfetto_traced_process.h" +#include "services/tracing/public/cpp/perfetto/trace_event_data_source.h" #include "services/tracing/public/cpp/trace_event_agent.h" #include "services/tracing/public/cpp/traced_process_impl.h" #include "services/tracing/public/cpp/tracing_features.h" #include "services/tracing/public/mojom/constants.mojom.h" +#include "third_party/perfetto/include/perfetto/protozero/message.h" +#include "third_party/perfetto/protos/perfetto/trace/extension_descriptor.pbzero.h" +#include "third_party/perfetto/protos/perfetto/trace/trace_packet.pbzero.h" #include "v8/include/v8-version-string.h" #if defined(OS_CHROMEOS) @@ -219,6 +224,9 @@ base::BindRepeating(&TracingDelegate::GenerateMetadataDict, base::Unretained(delegate_.get()))); } + tracing::TraceEventMetadataSource::GetInstance()->AddGeneratorFunction( + base::BindRepeating(&TracingControllerImpl::GenerateMetadataPacket, + base::Unretained(this))); #if defined(OS_ANDROID) tracing::PerfettoTracedProcess::Get()->AddDataSource( tracing::JavaHeapProfiler::GetInstance()); @@ -233,6 +241,23 @@ } } +void TracingControllerImpl::GenerateMetadataPacket( + perfetto::protos::pbzero::TracePacket* handle, + bool privacy_filtering_enabled) { + if (privacy_filtering_enabled) + return; + + auto* extension_descriptor = handle->BeginNestedMessage<protozero::Message>( + perfetto::protos::pbzero::TracePacket::kExtensionDescriptorFieldNumber); + scoped_refptr<base::RefCountedMemory> descriptor_bytes( + GetContentClient()->GetDataResourceBytes(chrome_track_event_descriptor)); + if (!descriptor_bytes) + return; + extension_descriptor->AppendBytes( + perfetto::protos::pbzero::ExtensionDescriptor::kExtensionSetFieldNumber, + descriptor_bytes->data(), descriptor_bytes->size()); +} + // Can be called on any thread. std::unique_ptr<base::DictionaryValue> TracingControllerImpl::GenerateMetadataDict() {
diff --git a/content/browser/tracing/tracing_controller_impl.h b/content/browser/tracing/tracing_controller_impl.h index 0c62e83..94e136b 100644 --- a/content/browser/tracing/tracing_controller_impl.h +++ b/content/browser/tracing/tracing_controller_impl.h
@@ -21,6 +21,14 @@ #include "mojo/public/cpp/system/data_pipe_drainer.h" #include "services/tracing/public/mojom/perfetto_service.mojom.h" +namespace perfetto { +namespace protos { +namespace pbzero { +class TracePacket; +} // namespace pbzero +} // namespace protos +} // namespace perfetto + namespace base { namespace trace_event { @@ -100,6 +108,8 @@ void AddAgents(); void ConnectToServiceIfNeeded(); std::unique_ptr<base::DictionaryValue> GenerateMetadataDict(); + void GenerateMetadataPacket(perfetto::protos::pbzero::TracePacket* packet, + bool privacy_filtering_enabled); // mojo::DataPipeDrainer::Client void OnDataAvailable(const void* data, size_t num_bytes) override;
diff --git a/content/common/view_messages.h b/content/common/view_messages.h index e83612118..cc9faca 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h
@@ -133,12 +133,6 @@ base::FilePath /* plugin_path */) #endif // BUILDFLAG(ENABLE_PLUGINS) -// When the renderer needs the browser to transfer focus cross-process on its -// behalf in the focus hierarchy. This may focus an element in the browser ui or -// a cross-process frame, as appropriate. -IPC_MESSAGE_ROUTED1(ViewHostMsg_TakeFocus, - bool /* reverse */) - // Adding a new message? Stick to the sort order above: first platform // independent ViewMsg, then ifdefs for platform specific ViewMsg, then platform // independent ViewHostMsg, then ifdefs for platform specific ViewHostMsg.
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn index df41cf9..dee5c1a8 100644 --- a/content/public/android/BUILD.gn +++ b/content/public/android/BUILD.gn
@@ -6,6 +6,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") import("//device/vr/buildflags/buildflags.gni") +import("//tools/grit/grit_rule.gni") android_aidl("common_aidl") { interface_file = "java/src/org/chromium/content/common/common.aidl"
diff --git a/content/renderer/media/renderer_webaudiodevice_impl.cc b/content/renderer/media/renderer_webaudiodevice_impl.cc index d63513de..8d119cfe 100644 --- a/content/renderer/media/renderer_webaudiodevice_impl.cc +++ b/content/renderer/media/renderer_webaudiodevice_impl.cc
@@ -161,6 +161,9 @@ // Specify the latency info to be passed to the browser side. sink_params_.set_latency_tag(latency); + + web_audio_dest_data_ = + blink::WebVector<float*>(static_cast<size_t>(sink_params_.channels())); } RendererWebAudioDeviceImpl::~RendererWebAudioDeviceImpl() { @@ -234,9 +237,9 @@ int prior_frames_skipped, media::AudioBus* dest) { // Wrap the output pointers using WebVector. - WebVector<float*> web_audio_dest_data(static_cast<size_t>(dest->channels())); + CHECK_EQ(dest->channels(), sink_params_.channels()); for (int i = 0; i < dest->channels(); ++i) - web_audio_dest_data[i] = dest->channel(i); + web_audio_dest_data_[i] = dest->channel(i); if (!delay.is_zero()) { // Zero values are send at the first call. // Substruct the bus duration to get hardware delay. @@ -246,7 +249,7 @@ DCHECK_GE(delay, base::TimeDelta()); client_callback_->Render( - web_audio_dest_data, dest->frames(), delay.InSecondsF(), + web_audio_dest_data_, dest->frames(), delay.InSecondsF(), (delay_timestamp - base::TimeTicks()).InSecondsF(), prior_frames_skipped); return dest->frames();
diff --git a/content/renderer/media/renderer_webaudiodevice_impl.h b/content/renderer/media/renderer_webaudiodevice_impl.h index d4a2f8b..b3ab2492 100644 --- a/content/renderer/media/renderer_webaudiodevice_impl.h +++ b/content/renderer/media/renderer_webaudiodevice_impl.h
@@ -19,6 +19,7 @@ #include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/public/platform/web_audio_device.h" #include "third_party/blink/public/platform/web_audio_latency_hint.h" +#include "third_party/blink/public/platform/web_vector.h" namespace base { class SingleThreadTaskRunner; @@ -97,6 +98,9 @@ // Weak reference to the callback into WebKit code. blink::WebAudioDevice::RenderCallback* const client_callback_; + // Used to wrap AudioBus to be passed into |client_callback_|. + blink::WebVector<float*> web_audio_dest_data_; + // To avoid the need for locking, ensure the control methods of the // blink::WebAudioDevice implementation are called on the same thread. base::ThreadChecker thread_checker_;
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index 76962d7..a1e1af1 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc
@@ -825,14 +825,6 @@ return renderer_preferences_.can_accept_load_drops; } -void RenderViewImpl::FocusNext() { - Send(new ViewHostMsg_TakeFocus(GetRoutingID(), false)); -} - -void RenderViewImpl::FocusPrevious() { - Send(new ViewHostMsg_TakeFocus(GetRoutingID(), true)); -} - void RenderViewImpl::DidUpdateMainFrameLayout() { for (auto& observer : observers_) observer.DidUpdateMainFrameLayout();
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h index 427d2004..f65e67d 100644 --- a/content/renderer/render_view_impl.h +++ b/content/renderer/render_view_impl.h
@@ -200,8 +200,6 @@ base::string16* sub_text, base::i18n::TextDirection sub_text_hint); bool AcceptsLoadDrops() override; - void FocusNext() override; - void FocusPrevious() override; bool CanUpdateLayout() override; void DidUpdateMainFrameLayout() override; blink::WebString AcceptLanguages() override;
diff --git a/gpu/command_buffer/service/external_vk_image_backing.cc b/gpu/command_buffer/service/external_vk_image_backing.cc index a5f0412..f32e613 100644 --- a/gpu/command_buffer/service/external_vk_image_backing.cc +++ b/gpu/command_buffer/service/external_vk_image_backing.cc
@@ -127,8 +127,9 @@ if (format != viz::ResourceFormat::BGRA_8888) return false; - const auto* version_info = context_state->real_context()->GetVersionInfo(); - const auto& ext = gl::g_current_gl_driver->ext; + auto* gl_context = context_state->real_context(); + const auto* version_info = gl_context->GetVersionInfo(); + const auto& ext = gl_context->GetCurrentGL()->Driver->ext; if (!ext.b_GL_EXT_texture_format_BGRA8888) return true;
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg index 888e03f..1c69b7b3 100644 --- a/infra/config/generated/cr-buildbucket.cfg +++ b/infra/config/generated/cr-buildbucket.cfg
@@ -25301,7 +25301,7 @@ cipd_version: "refs/heads/master" cmd: "recipes" } - properties: "{\"$build/goma\":{\"enable_ats\":true,\"jobs\":150,\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"tryserver.chromium.chromiumos\",\"recipe\":\"chromium_trybot\"}" + properties: "{\"$build/goma\":{\"enable_ats\":true,\"jobs\":300,\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"tryserver.chromium.chromiumos\",\"recipe\":\"chromium_trybot\"}" execution_timeout_secs: 14400 expiration_secs: 7200 caches {
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star index 59ea7df5..d768a53 100644 --- a/infra/config/subprojects/chromium/try.star +++ b/infra/config/subprojects/chromium/try.star
@@ -680,7 +680,7 @@ name = "linux-lacros-rel", cores = 16, ssd = True, - goma_jobs = goma.jobs.J150, + goma_jobs = goma.jobs.J300, main_list_view = "try", tryjob = try_.job(), )
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index a54180dc..7d4b51de 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -1768,6 +1768,9 @@ <message name="IDS_IOS_CONFIRM_PASSWORD_EDIT" desc="Confirm button inside confirmation alert when the user is trying to edit password [iOS only]" meaning="Save edited password"> Save Password </message> + <message name="IDS_IOS_USERNAME_ALREADY_USED" desc="Error description telling the user that entered username is already used for this site [iOS only]"> + You already saved this username for this site + </message> <message name="IDS_IOS_CANCEL_PASSWORD_EDIT" desc="Cancel button inside confirmation alert when the user is trying to edit password [iOS only]" meaning="Cancels editing"> Cancel </message>
diff --git a/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_USERNAME_ALREADY_USED.png.sha1 b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_USERNAME_ALREADY_USED.png.sha1 new file mode 100644 index 0000000..0120910 --- /dev/null +++ b/ios/chrome/app/strings/ios_strings_grd/IDS_IOS_USERNAME_ALREADY_USED.png.sha1
@@ -0,0 +1 @@ +9d3542f1ae57766f337355077cc49689482c2789 \ No newline at end of file
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb index 5e3c143..f6c5fc4 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_gu.xtb
@@ -69,6 +69,7 @@ <translation id="8240981428553046115">Chromium અપડેટ ચેક કરી શક્યું નથી. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation> <translation id="8252885722420466166">Chromium માં તમારા સ્થાન પર આધારિત બહેતર Google અનુભવ મેળવો.</translation> <translation id="8586442755830160949">કોપિરાઇટ <ph name="YEAR" /> The Chromium Authors. સર્વાધિકાર સુરક્ષિત.</translation> +<translation id="8663480472502753423">Chromium અપ ટૂ ડેટ રાખો</translation> <translation id="8776843108004031667">Chromiumમાંથી આ એકાઉન્ટ અને સાચવવામાં ન આવ્યો હોય એવો કોઈપણ ડેટા કાઢી નાખવામાં આવશે.</translation> <translation id="9022552996538154597">Chromium માં સાઇન ઇન કરો</translation> <translation id="9089354809943900324">Chromium જૂનું થઈ ગયું છે</translation>
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_iw.xtb index 722f58c..c206d67d88 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_iw.xtb
@@ -14,7 +14,7 @@ <ph name="BEGIN_LINK" />למידע נוסף<ph name="END_LINK" /></translation> <translation id="2006345422933397527">Chromium לא הצליח לחפש עדכונים. יש לבדוק את החיבור לאינטרנט.</translation> <translation id="2075400798887076382">גש מכאן אל הכרטיסיות שפתחת במחשב. פתח את Chromium במחשב, עבור אל התפריט ובחר באפשרות 'היכנס אל Chromium…'</translation> -<translation id="2168108852149185974">תוספים מסוימים גורמים ל-Chromium לקרוס. הסר אותם:</translation> +<translation id="2168108852149185974">תוספים מסוימים גורמים ל-Chromium לקרוס. יש להסיר אותם:</translation> <translation id="2178608107313874732">Chromium לא יכול להשתמש עכשיו במצלמה</translation> <translation id="2195025571279539885">רוצה ש-Chromium יציע בפעם הבאה לתרגם דפים ב<ph name="LANGUAGE_NAME" /> מאתר זה?</translation> <translation id="2590893390871230428">סנכרון נתוני Chromium שלך</translation> @@ -60,7 +60,7 @@ <translation id="766897673682622022">הסיסמה שלך נחשפה בעקבות פרצה באבטחת מידע. ההמלצה של Chromium היא לשנות את הסיסמה עכשיו.</translation> <translation id="7674213385180944843">עבור אל 'הגדרות' > 'פרטיות' > 'מצלמה' > Chromium והפעל את המצלמה.</translation> <translation id="7746854981345936341">טיפ למשתמשי Chromium. חלק מהלחצנים נמצאים עכשיו בחלק התחתון של המסך, כמו 'הקודם', 'קדימה' ו'חיפוש'.</translation> -<translation id="786327964234957808">אתה עובר מחשבון סינכרון <ph name="USER_EMAIL1" /> אל <ph name="USER_EMAIL2" />. נתוני Chromium הקיימים שלך מנוהלים על-ידי <ph name="DOMAIN" />. פעולה זו תמחק את הנתונים שלך מהמכשיר הזה, אבל הם יישארו ב-<ph name="USER_EMAIL1" />.</translation> +<translation id="786327964234957808">מתבצע מעבר מחשבון סנכרון <ph name="USER_EMAIL1" /> אל <ph name="USER_EMAIL2" />. נתוני Chromium הקיימים שלך מנוהלים על-ידי <ph name="DOMAIN" />. פעולה זו תמחק את הנתונים שלך מהמכשיר הזה, אבל הם יישארו ב-<ph name="USER_EMAIL1" />.</translation> <translation id="7890287942691234100">התחלת השימוש בסורק של Chromium</translation> <translation id="8013573822802650211">כדי לראות את הכרטיסיות שלך מכל מקום שבו פתחת את Chromium יש להיכנס לחשבון בכל המכשירים</translation> <translation id="8073677936375100957">למחוק את נתוני Chromium שלך מהמכשיר הזה?</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb index 3953270..6cb7871e 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_gu.xtb
@@ -55,6 +55,7 @@ <translation id="6648150602980899529">તમે <ph name="DOMAIN" /> દ્વારા મેનેજ એકાઉન્ટમાં સાઇન ઇન કરી રહ્યાં છો અને તમારા Chrome ડેટા પર એનું એડમિન નિયંત્રણ આપી રહ્યાં છો. તમારો ડેટા આ એકાઉન્ટ સાથે કાયમીરૂપે જોડાયેલું રહેશે. Chromeમાંથી સાઇન આઉટ કરવાનું આ ડિવાઇસ પરથી તમારો ડેટા ડિલીટ કરશે, પરંતુ એ તમારા Google એકાઉન્ટમાં સ્ટોર રહેશે.</translation> <translation id="6676840375528380067">આ ડિવાઇસમાંથી તમારા Chrome ડેટાને સાફ કરીએ?</translation> <translation id="6822673484890854830">Chrome બધા પાસવર્ડ ચેક કરી શક્યું નથી. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation> +<translation id="7124339256045485976">Chrome અપ ટૂ ડેટ રાખો</translation> <translation id="7161390184744336561">Google Chrome જૂનું થઈ ગયું છે</translation> <translation id="7165736900384873061">Google Chrome QR સ્કૅનરને ઉપયોગમાં લેવાનું શરૂ કરો</translation> <translation id="7172660552945675509">ટિપ: <ph name="BEGIN_LINK" />Chrome ને તમારા ડૉક પર ખસેડો<ph name="END_LINK" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_iw.xtb index 253c34e..9c5c3a6 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_iw.xtb
@@ -20,7 +20,7 @@ <translation id="2919738076569633423">השימוש ב-Chrome מהווה הסכמה ל<ph name="BEGIN_LINK_TOS" />תנאים ולהגבלות<ph name="END_LINK_TOS" />.</translation> <translation id="3030414234702425231">יציאה מחשבון שמנוהל על ידי <ph name="SIGNOUT_MANAGED_DOMAIN" /> תגרום למחיקת נתוני Chrome שלך מהמכשיר הזה. הנתונים האלה יישארו בחשבון Google שלך.</translation> <translation id="3148688391461398285">תיהנה מחוויה משופרת ב-Chrome בהתבסס על המיקום שלך.</translation> -<translation id="3167189358072330585">החשבון שלך לא פועל ב-Google Chrome. פנה אל מנהל הדומיין או השתמש בחשבון Google רגיל כדי להיכנס לחשבון.</translation> +<translation id="3167189358072330585">החשבון שלך לא פועל ב-Google Chrome. יש לפנות אל מנהל הדומיין או להשתמש בחשבון Google רגיל כדי להיכנס לחשבון.</translation> <translation id="3173834708294760622">דף Google Chrome</translation> <translation id="3196546062792660320">Chromium מאפשר גישה לחשבונות באינטרנט וכך חוסך לך זמן. ניתן להוסיף או להסיר חשבונות בקטע 'הגדרות'.</translation> <translation id="3282568296779691940">כניסה ל-Chrome</translation> @@ -44,7 +44,7 @@ <translation id="5162467219239570114">Chrome אינו מעודכן. אם אין עדכון זמין ב-<ph name="BEGIN_LINK" />App Store<ph name="END_LINK" />, ייתכן שהמכשיר שלך אינו תומך עוד בגרסאות חדשות של Chrome.</translation> <translation id="5389212809648216794">Google Chrome לא יכול להשתמש במצלמה כי אפליקציה אחרת משתמשת בה</translation> <translation id="5639704535586432836">עבור אל 'הגדרות' > 'פרטיות' > 'מצלמה' > Google Chrome והפעל את המצלמה.</translation> -<translation id="5642200033778930880">Google Chrome אינו יכול להשתמש במצלמה במצב תצוגה מפוצלת</translation> +<translation id="5642200033778930880">Google Chrome לא יכול להשתמש במצלמה במצב תצוגה מפוצלת</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="571296537125272375">Chrome לא יכול לחפש עדכונים</translation> <translation id="5854621639439811139">טיפ למשתמשי Chrome. חלק מהלחצנים נמצאים עכשיו בחלק התחתון של המסך, כמו 'הקודם', 'קדימה' ו'חיפוש'.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb index 0dce23b..10986bd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -61,6 +61,7 @@ <translation id="1545749641540134597">QR કોડ સ્કેન કરો</translation> <translation id="1552525382687785070">સિંક કરવાનું તમારા વ્યવસ્થાપક દ્વારા બંધ કરવામાં આવ્યું છે</translation> <translation id="1554477036522844996">નવી વિંડો</translation> +<translation id="1580715474678097352">જોખમકારક વેબસાઇટથી સુરક્ષિત રહો</translation> <translation id="1580783302095112590">મેઇલ મોકલ્યો છે.</translation> <translation id="1582732959743469162">આનાથી તમારું હાલનું ડાઉનલોડ આગળ વધતું અટકી જશે.</translation> <translation id="1605405588277479165">બંધ - આનો સુઝાવ આપવામાં આવતો નથી</translation> @@ -728,6 +729,7 @@ <translation id="9087108903408689779">Chrome દ્વારા સૂચિત પાસવર્ડ:</translation> <translation id="9094033019050270033">પાસવર્ડ અપડેટ કરો</translation> <translation id="9100610230175265781">પાસફ્રેઝ આવશ્યક છે</translation> +<translation id="9107664647686727385">ચેડાં કરાયેલા પાસવર્ડ ચેક કરો</translation> <translation id="9137526406337347448">Google સેવાઓ</translation> <translation id="9148126808321036104">ફરીથી સાઇન ઇન કરો </translation> <translation id="9152539721251340337">QR કોડ બનાવો</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb index eab622f4..ecb0455 100644 --- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -51,7 +51,7 @@ <translation id="1436290164580597469">יש להזין את ביטוי הסיסמה כדי להפעיל את הסנכרון.</translation> <translation id="1449835205994625556">הסתר סיסמה</translation> <translation id="145015347812617860"><ph name="COUNT" /> פריטים</translation> -<translation id="1491277525950327607">הקש פעמיים כדי להחליף את מצב ההגדרה</translation> +<translation id="1491277525950327607">יש ללחוץ פעמיים כדי להחליף את מצב ההגדרה</translation> <translation id="1509486075633541495">כניסה לאתר</translation> <translation id="1509960214886564027">ייתכן שהתכונות של חלק גדול מהאתרים לא יפעלו כראוי</translation> <translation id="152234381334907219">פריטים שאף פעם לא נשמרו</translation> @@ -169,7 +169,7 @@ <translation id="2830972654601096923">ניהול כתובות...</translation> <translation id="2834956026595107950"><ph name="TITLE" />, <ph name="STATE" />, <ph name="URL" /></translation> <translation id="2840687315230832938">ההגדרה הראשונית של הסנכרון לא הושלמה</translation> -<translation id="2843803966603263712">אפס את הגדרות Google Translate</translation> +<translation id="2843803966603263712">איפוס ההגדרות של Google Translate</translation> <translation id="2858204748079866344">כדי לשמור על הפרטיות שלך, מערכת Chrome לא ממלאת באופן אוטומטי את הסיסמה שלך בשדה הזה.</translation> <translation id="285960592395650245">נסה שוב להוריד</translation> <translation id="2870560284913253234">אתר</translation> @@ -296,7 +296,7 @@ <translation id="4263576668337963058">הצגה של פעולות זמינות בדף</translation> <translation id="4267380167363222949">הכרטיסייה הבאה</translation> <translation id="4272631900155121838">כדי לסרוק את קוד ה-QR, הפעל את המצלמה דרך ההגדרות</translation> -<translation id="4276041135170112053">לפתרון הבעיה עכשיו.</translation> +<translation id="4276041135170112053">לפתרון הבעיה</translation> <translation id="4277990410970811858">גלישה בטוחה</translation> <translation id="4281844954008187215">תנאי שירות</translation> <translation id="430793432425771671">סנכרון הכל</translation> @@ -333,7 +333,7 @@ הנתונים שלך מוצפנים באמצעות ביטוי הסיסמה לסנכרון. יש להזין אותו כדי להתחיל בסנכרון.</translation> <translation id="4689564913179979534">ניהול אמצעי תשלום...</translation> -<translation id="473775607612524610">עדכן</translation> +<translation id="473775607612524610">עדכון</translation> <translation id="4747097190499141774">הצפנה באמצעות ביטוי סיסמה לא כוללת אמצעי תשלום וכתובות מ-Google Pay. רק מי שיודע את ביטוי הסיסמה שלך יכול לקרוא את הנתונים המוצפנים. ביטוי הסיסמה לא נשלח אל Google והיא אינה מאחסנת אותו. אם שוכחים את ביטוי הסיסמה או רוצים לשנות את ההגדרה הזו, צריך לאפס את הסנכרון. <ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /></translation> <translation id="4751645464639803239">כרטיסייה חדשה לגלישה בסתר</translation> <translation id="4758977202923349869">יש למקם את כרטיס האשראי בתוך המסגרת הזו</translation>
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_check_manager.h b/ios/chrome/browser/passwords/ios_chrome_password_check_manager.h index a03756f..92a34d2 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_check_manager.h +++ b/ios/chrome/browser/passwords/ios_chrome_password_check_manager.h
@@ -66,6 +66,9 @@ GetCompromisedCredentials() const; password_manager::SavedPasswordsPresenter::SavedPasswordsView + GetAllCredentials() const; + + password_manager::SavedPasswordsPresenter::SavedPasswordsView GetSavedPasswordsFor( const password_manager::CredentialWithPassword& credential) const;
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_check_manager.mm b/ios/chrome/browser/passwords/ios_chrome_password_check_manager.mm index 2c14bbb3..175fe722 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_check_manager.mm +++ b/ios/chrome/browser/passwords/ios_chrome_password_check_manager.mm
@@ -152,6 +152,11 @@ } password_manager::SavedPasswordsPresenter::SavedPasswordsView +IOSChromePasswordCheckManager::GetAllCredentials() const { + return saved_passwords_presenter_.GetSavedPasswords(); +} + +password_manager::SavedPasswordsPresenter::SavedPasswordsView IOSChromePasswordCheckManager::GetSavedPasswordsFor( const CredentialWithPassword& credential) const { return insecure_credentials_manager_.GetSavedPasswordsFor(credential);
diff --git a/ios/chrome/browser/prerender/preload_controller.mm b/ios/chrome/browser/prerender/preload_controller.mm index d9dccad7..52cc7cb 100644 --- a/ios/chrome/browser/prerender/preload_controller.mm +++ b/ios/chrome/browser/prerender/preload_controller.mm
@@ -146,7 +146,7 @@ // Used to enable the workaround for a WebKit crash, see crbug.com/1032928. const base::Feature kPreloadDelayWebStateReset{ - "PreloadDelayWebStateReset", base::FEATURE_DISABLED_BY_DEFAULT}; + "PreloadDelayWebStateReset", base::FEATURE_ENABLED_BY_DEFAULT}; } // namespace
diff --git a/ios/chrome/browser/ui/settings/password/password_details/BUILD.gn b/ios/chrome/browser/ui/settings/password/password_details/BUILD.gn index 0d440a26..589c334 100644 --- a/ios/chrome/browser/ui/settings/password/password_details/BUILD.gn +++ b/ios/chrome/browser/ui/settings/password/password_details/BUILD.gn
@@ -72,6 +72,7 @@ "//ios/chrome/browser/ui/table_view/cells:cells_constants", "//ios/chrome/browser/ui/util", "//ios/chrome/common/ui/colors", + "//ios/chrome/common/ui/elements:popover_label_view_controller", "//ios/chrome/common/ui/reauthentication", "//ios/chrome/common/ui/util", "//ui/base",
diff --git a/ios/chrome/browser/ui/settings/password/password_details/password_details_mediator.mm b/ios/chrome/browser/ui/settings/password/password_details/password_details_mediator.mm index f36a2e8..6b155c2 100644 --- a/ios/chrome/browser/ui/settings/password/password_details/password_details_mediator.mm +++ b/ios/chrome/browser/ui/settings/password/password_details/password_details_mediator.mm
@@ -28,6 +28,9 @@ std::unique_ptr<PasswordCheckObserverBridge> _passwordCheckObserver; } +// List of the usernames for the same domain. +@property(nonatomic, strong) NSSet<NSString*>* usernamesWithSameDomain; + @end @implementation PasswordDetailsMediator @@ -40,6 +43,16 @@ _password = passwordForm; _passwordCheckObserver.reset( new PasswordCheckObserverBridge(self, manager)); + NSMutableSet<NSString*>* usernames = [[NSMutableSet alloc] init]; + auto forms = manager->GetAllCredentials(); + for (const auto& form : forms) { + if (form.signon_realm == passwordForm.signon_realm) { + [usernames addObject:base::SysUTF16ToNSString(form.username_value)]; + } + } + [usernames + removeObject:base::SysUTF16ToNSString(passwordForm.username_value)]; + _usernamesWithSameDomain = usernames; } return self; } @@ -73,6 +86,12 @@ [self fetchPasswordWith:_manager->GetCompromisedCredentials()]; } +- (BOOL)isUsernameReused:(NSString*)newUsername { + // It is more efficient to check set of the usernames for the same origin + // instead of delegating this to the |_manager|. + return [self.usernamesWithSameDomain containsObject:newUsername]; +} + #pragma mark - PasswordCheckObserver - (void)passwordCheckStateDidChange:(PasswordCheckState)state {
diff --git a/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller.mm b/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller.mm index 3762a0e2..64ddef90 100644 --- a/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller.mm
@@ -23,11 +23,13 @@ #import "ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller_delegate.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item.h" +#import "ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item_delegate.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #include "ios/chrome/browser/ui/ui_feature_flags.h" #include "ios/chrome/browser/ui/util/uikit_ui_util.h" #import "ios/chrome/common/ui/colors/UIColor+cr_semantic_colors.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/elements/popover_label_view_controller.h" #import "ios/chrome/common/ui/reauthentication/reauthentication_module.h" #include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_strings.h" @@ -68,7 +70,7 @@ } // namespace -@interface PasswordDetailsTableViewController () +@interface PasswordDetailsTableViewController () <TableViewTextEditItemDelegate> // Password which is shown on the screen. @property(nonatomic, strong) PasswordDetails* password; @@ -82,6 +84,10 @@ // The text item related to the password value. @property(nonatomic, strong) TableViewTextEditItem* passwordTextItem; +// The view used to anchor error alert which is shown for the username. This is +// image icon in the |usernameTextItem| cell. +@property(nonatomic, weak) UIView* usernameErrorAnchorView; + @end @implementation PasswordDetailsTableViewController @@ -193,12 +199,15 @@ item.textFieldName = l10n_util::GetNSString(IDS_IOS_SHOW_PASSWORD_VIEW_USERNAME); item.textFieldValue = self.password.username; - if (base::FeatureList::IsEnabled( + // If password is missing (federated credential) don't allow to edit username. + if ([self.password.password length] && + base::FeatureList::IsEnabled( password_manager::features::kEditPasswordsInSettings)) { item.textFieldEnabled = self.tableView.editing; item.hideIcon = !self.tableView.editing; item.autoCapitalizationType = UITextAutocapitalizationTypeNone; item.returnKeyType = UIReturnKeyDone; + item.delegate = self; } else { item.textFieldEnabled = NO; item.hideIcon = YES; @@ -219,6 +228,7 @@ item.autoCapitalizationType = UITextAutocapitalizationTypeNone; item.keyboardType = UIKeyboardTypeURL; item.returnKeyType = UIReturnKeyDone; + item.delegate = self; // During editing password is exposed so eye icon shouldn't be shown. if (!self.tableView.editing) { @@ -357,6 +367,11 @@ TableViewTextEditCell* textFieldCell = base::mac::ObjCCastStrict<TableViewTextEditCell>(cell); textFieldCell.textField.delegate = self; + [textFieldCell.identifyingIconButton + addTarget:self + action:@selector(didTapUsernameErrorInfo:) + forControlEvents:UIControlEventTouchUpInside]; + self.usernameErrorAnchorView = textFieldCell.iconView; break; } case ItemTypePassword: { @@ -401,7 +416,35 @@ [self reloadData]; } -#pragma mark - Private +#pragma mark - TableViewTextEditItemDelegate + +- (void)tableViewItemDidBeginEditing:(TableViewTextEditItem*)tableViewItem { + [self reconfigureCellsForItems:@[ + self.usernameTextItem, self.passwordTextItem + ]]; +} + +- (void)tableViewItemDidChange:(TableViewTextEditItem*)tableViewItem { + BOOL isInputValid = YES; + + if (tableViewItem == self.usernameTextItem) { + isInputValid = [self checkIfValidUsername]; + } + + self.navigationItem.rightBarButtonItem.enabled = isInputValid; +} + +- (void)tableViewItemDidEndEditing:(TableViewTextEditItem*)tableViewItem { + // Check if the item is equal to the current username or password item as when + // editing finished reloadData is called. + if (tableViewItem == self.usernameTextItem) { + [self reconfigureCellsForItems:@[ self.usernameTextItem ]]; + } else if (tableViewItem == self.passwordTextItem) { + [self reconfigureCellsForItems:@[ self.passwordTextItem ]]; + } +} + +#pragma mark - SettingsRootTableViewController // Called when user tapped Delete button during editing. It means presented // password should be deleted. @@ -419,6 +462,8 @@ return !self.editing; } +#pragma mark - Private + // Applies tint colour and resizes image. - (UIImage*)getCompromisedIcon { UIImage* image = [UIImage imageNamed:@"settings_unsafe_state"]; @@ -562,6 +607,22 @@ } } +// Checks if the username is valid and updates item accordingly. +- (BOOL)checkIfValidUsername { + DCHECK(self.password.username); + NSString* newUsernameValue = self.usernameTextItem.textFieldValue; + BOOL usernameChanged = + ![newUsernameValue isEqualToString:self.password.username]; + BOOL showUsernameAlreadyUsed = + usernameChanged && [self.delegate isUsernameReused:newUsernameValue]; + + self.usernameTextItem.hasValidText = !showUsernameAlreadyUsed; + self.usernameTextItem.identifyingIconEnabled = showUsernameAlreadyUsed; + + [self reconfigureCellsForItems:@[ self.usernameTextItem ]]; + return !showUsernameAlreadyUsed; +} + #pragma mark - Actions // Called when the user tapped on the show/hide button near password. @@ -578,6 +639,33 @@ } } +// Called when the user tap error info icon in the username input. +- (void)didTapUsernameErrorInfo:(UIButton*)buttonView { + NSString* text = l10n_util::GetNSString(IDS_IOS_USERNAME_ALREADY_USED); + + NSAttributedString* attributedText = [[NSAttributedString alloc] + initWithString:text + attributes:@{ + NSForegroundColorAttributeName : + [UIColor colorNamed:kTextSecondaryColor], + NSFontAttributeName : + [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline] + }]; + + PopoverLabelViewController* errorInfoPopover = + [[PopoverLabelViewController alloc] + initWithPrimaryAttributedString:attributedText + secondaryAttributedString:nil]; + + errorInfoPopover.popoverPresentationController.sourceView = + self.usernameErrorAnchorView; + errorInfoPopover.popoverPresentationController.sourceRect = + self.usernameErrorAnchorView.bounds; + errorInfoPopover.popoverPresentationController.permittedArrowDirections = + UIPopoverArrowDirectionAny; + [self presentViewController:errorInfoPopover animated:YES completion:nil]; +} + // Returns an array of UIMenuItems to display in a context menu on the site // cell. - (NSArray*)getMenuItemsFor:(NSInteger)itemType {
diff --git a/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller_delegate.h b/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller_delegate.h index 4567e4f7..56865d1 100644 --- a/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller_delegate.h +++ b/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller_delegate.h
@@ -15,6 +15,9 @@ (PasswordDetailsTableViewController*)viewController didEditPasswordDetails:(PasswordDetails*)password; +// Checks if the username is reused for the same domain. +- (BOOL)isUsernameReused:(NSString*)newUsername; + @end #endif // IOS_CHROME_BROWSER_UI_SETTINGS_PASSWORD_PASSWORD_DETAILS_PASSWORD_DETAILS_TABLE_VIEW_CONTROLLER_DELEGATE_H_
diff --git a/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller_unittest.mm index 7ed6a32..345027e 100644 --- a/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/password/password_details/password_details_table_view_controller_unittest.mm
@@ -89,6 +89,10 @@ self.password = password; } +- (BOOL)isUsernameReused:(NSString*)newUsername { + return NO; +} + @end @interface FakeSnackbarImplementation : NSObject <SnackbarCommands>
diff --git a/ios/chrome/browser/ui/settings/password/passwords_settings_egtest.mm b/ios/chrome/browser/ui/settings/password/passwords_settings_egtest.mm index 180cec2..9611647 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_settings_egtest.mm +++ b/ios/chrome/browser/ui/settings/password/passwords_settings_egtest.mm
@@ -53,6 +53,7 @@ using chrome_test_util::SettingsDoneButton; using chrome_test_util::SettingsMenuBackButton; using chrome_test_util::TurnSettingsSwitchOn; +using chrome_test_util::TextFieldForCellWithLabelId; namespace { @@ -135,23 +136,17 @@ // Matcher for the Copy site button in Password Details view. id<GREYMatcher> PasswordDetailWebsite() { - return grey_allOf( - grey_accessibilityID(GetTextFieldForID(IDS_IOS_SHOW_PASSWORD_VIEW_SITE)), - grey_kindOfClassName(@"UITextField"), nil); + return TextFieldForCellWithLabelId(IDS_IOS_SHOW_PASSWORD_VIEW_SITE); } // Matcher for the Copy username button in Password Details view. id<GREYMatcher> PasswordDetailUsername() { - return grey_allOf(grey_accessibilityID( - GetTextFieldForID(IDS_IOS_SHOW_PASSWORD_VIEW_USERNAME)), - grey_kindOfClassName(@"UITextField"), nil); + return TextFieldForCellWithLabelId(IDS_IOS_SHOW_PASSWORD_VIEW_USERNAME); } // Matcher for the Copy password button in Password Details view. id<GREYMatcher> PasswordDetailPassword() { - return grey_allOf(grey_accessibilityID( - GetTextFieldForID(IDS_IOS_SHOW_PASSWORD_VIEW_PASSWORD)), - grey_kindOfClassName(@"UITextField"), nil); + return TextFieldForCellWithLabelId(IDS_IOS_SHOW_PASSWORD_VIEW_PASSWORD); } // Matcher for the Show password button in Password Details view. @@ -316,7 +311,8 @@ // TODO(crbug.com/1075494): Remove this once feature is launched. config.features_enabled.push_back(password_manager::features::kPasswordCheck); - if ([self isRunningTest:@selector(testEditUsername)]) { + if ([self isRunningTest:@selector(testEditUsername)] || + [self isRunningTest:@selector(testEditUsernameFails)]) { config.features_enabled.push_back( password_manager::features::kEditPasswordsInSettings); } @@ -761,11 +757,6 @@ // Checks that attempts to copy the password via the context menu item provide // an appropriate feedback. - (void)testCopyPasswordMenuItem { - if (![ChromeEarlGrey isIPadIdiom]) { - // TODO(crbug.com/1109644): Enable the test on iPhone once the bug is fixed. - EARL_GREY_TEST_DISABLED(@"Disabled for iPhone."); - } - // Saving a form is needed for using the "password details" view. SaveExamplePasswordForm(); @@ -1491,4 +1482,53 @@ performAction:grey_tap()]; } +// Checks that attempts to edit a username to a value which is already used for +// the same domain fails. +- (void)testEditUsernameFails { + GREYAssert( + [PasswordSettingsAppInterface saveExamplePassword:@"concrete password" + userName:@"concrete username1" + origin:@"https://example.com"], + @"Stored form was not found in the PasswordStore results."); + + GREYAssert( + [PasswordSettingsAppInterface saveExamplePassword:@"concrete password" + userName:@"concrete username2" + origin:@"https://example.com"], + @"Stored form was not found in the PasswordStore results."); + + OpenPasswordSettings(); + + [GetInteractionForPasswordEntry(@"example.com, concrete username1") + performAction:grey_tap()]; + + // Check the snackbar in case of successful reauthentication. + [PasswordSettingsAppInterface setUpMockReauthenticationModule]; + [PasswordSettingsAppInterface mockReauthenticationModuleExpectedResult: + ReauthenticationResult::kSuccess]; + + TapEdit(); + + [[EarlGrey selectElementWithMatcher:PasswordDetailUsername()] + assertWithMatcher:grey_textFieldValue(@"concrete username1")]; + + [[EarlGrey selectElementWithMatcher:PasswordDetailUsername()] + performAction:grey_clearText()]; + + [[EarlGrey selectElementWithMatcher:PasswordDetailUsername()] + performAction:grey_typeText(@"concrete username2")]; + + [[EarlGrey selectElementWithMatcher:NavigationBarDoneButton()] + assertWithMatcher:grey_allOf(grey_sufficientlyVisible(), + grey_not(grey_enabled()), nil)]; + + [[EarlGrey selectElementWithMatcher:SettingsMenuBackButton()] + performAction:grey_tap()]; + + [[EarlGrey selectElementWithMatcher:SettingsMenuBackButton()] + performAction:grey_tap()]; + [[EarlGrey selectElementWithMatcher:SettingsDoneButton()] + performAction:grey_tap()]; +} + @end
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.h b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.h index cb7b3479..c72251f6 100644 --- a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.h +++ b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.h
@@ -24,6 +24,10 @@ extern NSString* const kPlusSignCellBackgroundColor; extern NSString* const kPlusSignCellBackgroundDarkColor; +// The height of the BVC that remains visible after transitioning from thumb +// strip to tab grid. +extern const CGFloat kBVCHeightTabGrid; + // GridLayout. // Extra-small screens require a slightly different layout configuration (e.g., // margins) even though they may be categorized into the same size class as
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm index 585ad0d1..9668d98 100644 --- a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm +++ b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm
@@ -24,6 +24,10 @@ NSString* const kPlusSignCellBackgroundDarkColor = @"plus_sign_grid_cell_background_dark_color"; +// The height of the BVC that remains visible after transitioning from thumb +// strip to tab grid. +const CGFloat kBVCHeightTabGrid = 108.0f; + // Definition of limited width for applicable size classes. The first refers to // the horizontal size class; the second to the vertical. const CGFloat kGridLayoutCompactCompactLimitedWidth = 666.0f;
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_layout.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_layout.mm index b8f579d..facb23b9 100644 --- a/ios/chrome/browser/ui/tab_grid/grid/grid_layout.mm +++ b/ios/chrome/browser/ui/tab_grid/grid/grid_layout.mm
@@ -6,6 +6,7 @@ #import "ios/chrome/browser/ui/tab_grid/grid/grid_constants.h" #import "ios/chrome/browser/ui/tab_grid/grid/reordering_layout_util.h" +#import "ios/chrome/browser/ui/thumb_strip/thumb_strip_feature.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -63,6 +64,13 @@ self.sectionInset = kGridLayoutInsetsRegularRegular; self.minimumLineSpacing = kGridLayoutLineSpacingRegularRegular; } + if (IsThumbStripEnabled()) { + // When the thumb strip feature is enabled, increase the bottom inset to + // account for the bvc on the bottom of the screen. + UIEdgeInsets sectionInset = self.sectionInset; + sectionInset.bottom += kBVCHeightTabGrid; + self.sectionInset = sectionInset; + } } @end
diff --git a/ios/chrome/browser/ui/tab_grid/grid/horizontal_layout.mm b/ios/chrome/browser/ui/tab_grid/grid/horizontal_layout.mm index 16c5265..90cf8fed7 100644 --- a/ios/chrome/browser/ui/tab_grid/grid/horizontal_layout.mm +++ b/ios/chrome/browser/ui/tab_grid/grid/horizontal_layout.mm
@@ -30,7 +30,7 @@ self.itemSize = kGridCellSizeSmall; CGFloat height = CGRectGetHeight(self.collectionView.bounds); CGFloat spacing = kGridLayoutLineSpacingCompactCompactLimitedWidth; - CGFloat topInset = spacing - kGridCellSelectionRingGapWidth - + CGFloat topInset = spacing + kGridCellSelectionRingGapWidth + kGridCellSelectionRingTintWidth; self.sectionInset = UIEdgeInsets{ topInset, spacing, height - self.itemSize.height - 2 * topInset, spacing};
diff --git a/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm b/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm index 5b54ed6a..8cc87362 100644 --- a/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm +++ b/ios/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
@@ -547,6 +547,9 @@ CGFloat bottomInset = self.configuration == TabGridConfigurationBottomToolbar ? self.bottomToolbar.intrinsicContentSize.height : 0; + if (IsThumbStripEnabled()) { + bottomInset += self.topToolbar.intrinsicContentSize.height; + } CGFloat topInset = IsThumbStripEnabled() ? 0 : self.topToolbar.intrinsicContentSize.height; UIEdgeInsets inset = UIEdgeInsetsMake(topInset, 0, bottomInset, 0);
diff --git a/ios/chrome/browser/ui/thumb_strip/BUILD.gn b/ios/chrome/browser/ui/thumb_strip/BUILD.gn index 34b0d8d..5da5ea03 100644 --- a/ios/chrome/browser/ui/thumb_strip/BUILD.gn +++ b/ios/chrome/browser/ui/thumb_strip/BUILD.gn
@@ -14,6 +14,7 @@ "//base", "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/gestures", + "//ios/chrome/browser/ui/tab_grid/grid:grid_ui_constants", ] configs += [ "//build/config/compiler:enable_arc" ] }
diff --git a/ios/chrome/browser/ui/thumb_strip/thumb_strip_coordinator.mm b/ios/chrome/browser/ui/thumb_strip/thumb_strip_coordinator.mm index 8d68a200..412f6d0 100644 --- a/ios/chrome/browser/ui/thumb_strip/thumb_strip_coordinator.mm +++ b/ios/chrome/browser/ui/thumb_strip/thumb_strip_coordinator.mm
@@ -5,6 +5,7 @@ #import "ios/chrome/browser/ui/thumb_strip/thumb_strip_coordinator.h" #import "ios/chrome/browser/ui/gestures/view_revealing_vertical_pan_handler.h" +#import "ios/chrome/browser/ui/tab_grid/grid/grid_constants.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -14,11 +15,6 @@ // Height of the view that is revealed. The thumb strip has a height equal to a // small grid cell + edge insets (top and bottm) from thumb strip layout. const CGFloat kThumbStripHeight = 168.0f + 22.0f + 22.0f; -// The height of the BVC that remains visible after transitioning from thumb -// strip to tab grid. -// TODO(crbug.com/1123048): Change this hardcoded number into a value calculated -// by the runtime toolbar height and any other inputs. -const CGFloat kBVCHeightTabGrid = 108.0f; } // namespace @interface ThumbStripCoordinator () <ViewRevealingVerticalPanHandlerDelegate>
diff --git a/remoting/resources/BUILD.gn b/remoting/resources/BUILD.gn index b0ba1bf..9868456 100644 --- a/remoting/resources/BUILD.gn +++ b/remoting/resources/BUILD.gn
@@ -5,10 +5,6 @@ import("//remoting/remoting_locales.gni") import("//tools/grit/grit_rule.gni") -if (is_android) { - import("//build/config/android/rules.gni") -} - group("resources") { public_deps = [ ":copy_locales",
diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc index 9c1e99cf..2998219 100644 --- a/services/network/restricted_cookie_manager.cc +++ b/services/network/restricted_cookie_manager.cc
@@ -385,7 +385,7 @@ GURL::SchemeIsCryptographic(origin_.scheme()) ? net::CookieSourceScheme::kSecure : net::CookieSourceScheme::kNonSecure; - auto sanitized_cookie = std::make_unique<net::CanonicalCookie>( + auto sanitized_cookie = net::CanonicalCookie::FromStorage( cookie.Name(), cookie.Value(), cookie.Domain(), cookie.Path(), now, cookie.ExpiryDate(), now, cookie.IsSecure(), cookie.IsHttpOnly(), cookie.SameSite(), cookie.Priority(), source_scheme);
diff --git a/services/tracing/perfetto/privacy_filtered_fields-inl.h b/services/tracing/perfetto/privacy_filtered_fields-inl.h index a7bcc238..acfac3ce 100644 --- a/services/tracing/perfetto/privacy_filtered_fields-inl.h +++ b/services/tracing/perfetto/privacy_filtered_fields-inl.h
@@ -175,10 +175,15 @@ constexpr MessageInfo kChromeMojoEventInfo = {kChromeMojoEventInfoIndices, nullptr}; +// Proto Message: ChromeRendererSchedulerState +constexpr int kChromeRendererSchedulerStateIndices[] = {1, -1}; +constexpr MessageInfo kChromeRendererSchedulerState = { + kChromeRendererSchedulerStateIndices, nullptr}; + // Proto Message: TrackEvent constexpr int kTrackEventIndices[] = {1, 2, 3, 5, 6, 9, 10, 11, 12, 16, 17, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 38, -1}; + 31, 32, 33, 34, 35, 38, 40, -1}; constexpr MessageInfo const* kTrackEventComplexMessages[] = { nullptr, nullptr, @@ -203,7 +208,8 @@ &kSourceLocation, nullptr, &kChromeMessagePump, - &kChromeMojoEventInfo}; + &kChromeMojoEventInfo, + &kChromeRendererSchedulerState}; constexpr MessageInfo kTrackEvent = {kTrackEventIndices, kTrackEventComplexMessages};
diff --git a/services/tracing/public/cpp/perfetto/trace_event_data_source.cc b/services/tracing/public/cpp/perfetto/trace_event_data_source.cc index 9824aa6..185a5da 100644 --- a/services/tracing/public/cpp/perfetto/trace_event_data_source.cc +++ b/services/tracing/public/cpp/perfetto/trace_event_data_source.cc
@@ -48,6 +48,7 @@ #include "services/tracing/public/mojom/constants.mojom.h" #include "third_party/perfetto/include/perfetto/ext/tracing/core/shared_memory_arbiter.h" #include "third_party/perfetto/include/perfetto/ext/tracing/core/trace_writer.h" +#include "third_party/perfetto/include/perfetto/protozero/message.h" #include "third_party/perfetto/include/perfetto/tracing/track.h" #include "third_party/perfetto/include/perfetto/tracing/track_event_interned_data_index.h" #include "third_party/perfetto/protos/perfetto/trace/chrome/chrome_metadata.pbzero.h" @@ -170,6 +171,13 @@ GenerateMetadataFromGenerator(generator); } +void TraceEventMetadataSource::AddGeneratorFunction( + PacketGeneratorFunction generator) { + DCHECK(origin_task_runner_->RunsTasksInCurrentSequence()); + packet_generator_functions_.push_back(generator); + GenerateMetadataPacket(generator); +} + std::unique_ptr<base::DictionaryValue> TraceEventMetadataSource::GenerateTraceConfigMetadataDict() { AutoLockWithDeferredTaskPosting lock(lock_); @@ -211,6 +219,22 @@ generator.Run(chrome_metadata, privacy_filtering_enabled_); } +void TraceEventMetadataSource::GenerateMetadataPacket( + const TraceEventMetadataSource::PacketGeneratorFunction& generator) { + DCHECK(origin_task_runner_->RunsTasksInCurrentSequence()); + perfetto::TraceWriter::TracePacketHandle trace_packet; + { + AutoLockWithDeferredTaskPosting lock(lock_); + if (!emit_metadata_at_start_ || !trace_writer_) + return; + trace_packet = trace_writer_->NewTracePacket(); + } + trace_packet->set_timestamp( + TRACE_TIME_TICKS_NOW().since_origin().InNanoseconds()); + trace_packet->set_timestamp_clock_id(kTraceClockId); + generator.Run(trace_packet.get(), privacy_filtering_enabled_); +} + void TraceEventMetadataSource::GenerateJsonMetadataFromGenerator( const TraceEventMetadataSource::JsonMetadataGeneratorFunction& generator, ChromeEventBundle* event_bundle) { @@ -288,16 +312,29 @@ json_generators, std::unique_ptr< std::vector<TraceEventMetadataSource::MetadataGeneratorFunction>> - proto_generators) { + proto_generators, + std::unique_ptr< + std::vector<TraceEventMetadataSource::PacketGeneratorFunction>> + packet_generators) { DCHECK(origin_task_runner_->RunsTasksInCurrentSequence()); - TracePacketHandle trace_packet; + + perfetto::TraceWriter* trace_writer; bool privacy_filtering_enabled; { AutoLockWithDeferredTaskPosting lock(lock_); - trace_packet = trace_writer_->NewTracePacket(); + trace_writer = trace_writer_.get(); privacy_filtering_enabled = privacy_filtering_enabled_; } + for (auto& generator : *packet_generators) { + TracePacketHandle generator_trace_packet = trace_writer->NewTracePacket(); + generator_trace_packet->set_timestamp( + TRACE_TIME_TICKS_NOW().since_origin().InNanoseconds()); + generator_trace_packet->set_timestamp_clock_id(kTraceClockId); + generator.Run(generator_trace_packet.get(), privacy_filtering_enabled); + } + + TracePacketHandle trace_packet = trace_writer_->NewTracePacket(); trace_packet->set_timestamp( TRACE_TIME_TICKS_NOW().since_origin().InNanoseconds()); trace_packet->set_timestamp_clock_id(kTraceClockId); @@ -324,6 +361,8 @@ std::make_unique<std::vector<JsonMetadataGeneratorFunction>>(); auto proto_generators = std::make_unique<std::vector<MetadataGeneratorFunction>>(); + auto packet_generators = + std::make_unique<std::vector<PacketGeneratorFunction>>(); { AutoLockWithDeferredTaskPosting lock(lock_); privacy_filtering_enabled_ = @@ -338,6 +377,7 @@ emit_metadata_at_start_ = true; *json_generators = json_generator_functions_; *proto_generators = generator_functions_; + *packet_generators = packet_generator_functions_; break; } case TraceRecordMode::RECORD_CONTINUOUSLY: @@ -353,7 +393,8 @@ FROM_HERE, base::BindOnce(&TraceEventMetadataSource::GenerateMetadata, base::Unretained(this), std::move(json_generators), - std::move(proto_generators))); + std::move(proto_generators), + std::move(packet_generators))); } void TraceEventMetadataSource::StopTracing( @@ -371,9 +412,13 @@ auto proto_generators = std::make_unique<std::vector<MetadataGeneratorFunction>>(); *proto_generators = generator_functions_; + auto packet_generators = + std::make_unique<std::vector<PacketGeneratorFunction>>(); + *packet_generators = packet_generator_functions_; maybe_generate_task = base::BindOnce( &TraceEventMetadataSource::GenerateMetadata, base::Unretained(this), - std::move(json_generators), std::move(proto_generators)); + std::move(json_generators), std::move(proto_generators), + std::move(packet_generators)); } } // Even when not generating metadata, make sure the metadata generate task
diff --git a/services/tracing/public/cpp/perfetto/trace_event_data_source.h b/services/tracing/public/cpp/perfetto/trace_event_data_source.h index 020080f..a319cbc 100644 --- a/services/tracing/public/cpp/perfetto/trace_event_data_source.h +++ b/services/tracing/public/cpp/perfetto/trace_event_data_source.h
@@ -71,12 +71,17 @@ perfetto::protos::pbzero::ChromeMetadataPacket*, bool /* privacy_filtering_enabled */)>; + using PacketGeneratorFunction = + base::RepeatingCallback<void(perfetto::protos::pbzero::TracePacket*, + bool /* privacy_filtering_enabled */)>; + // Any callbacks passed here will be called when tracing. Note that if tracing // is enabled while calling this method, the callback may be invoked // directly. void AddGeneratorFunction(JsonMetadataGeneratorFunction generator); // Same as above, but for filling in proto format. void AddGeneratorFunction(MetadataGeneratorFunction generator); + void AddGeneratorFunction(PacketGeneratorFunction generator); // For background tracing, the legacy crash uploader needs // metadata fields to be uploaded as POST args in addition to being // embedded in the trace. TODO(oysteine): Remove when only the @@ -102,18 +107,26 @@ void GenerateMetadata( std::unique_ptr<std::vector<JsonMetadataGeneratorFunction>> json_generators, - std::unique_ptr<std::vector<MetadataGeneratorFunction>> proto_generators); + std::unique_ptr<std::vector<MetadataGeneratorFunction>> proto_generators, + std::unique_ptr<std::vector<PacketGeneratorFunction>> packet_generators); void GenerateMetadataFromGenerator( const MetadataGeneratorFunction& generator); void GenerateJsonMetadataFromGenerator( const JsonMetadataGeneratorFunction& generator, perfetto::protos::pbzero::ChromeEventBundle* event_bundle); + void GenerateMetadataPacket( + const TraceEventMetadataSource::PacketGeneratorFunction& generator); std::unique_ptr<base::DictionaryValue> GenerateTraceConfigMetadataDict(); // All members are protected by |lock_|. + // TODO(crbug.com/1138893): Change annotations to GUARDED_BY base::Lock lock_; - std::vector<JsonMetadataGeneratorFunction> json_generator_functions_; - std::vector<MetadataGeneratorFunction> generator_functions_; + std::vector<JsonMetadataGeneratorFunction> json_generator_functions_ + GUARDED_BY_FIXME(lock_); + std::vector<MetadataGeneratorFunction> generator_functions_ + GUARDED_BY_FIXME(lock_); + std::vector<PacketGeneratorFunction> packet_generator_functions_ + GUARDED_BY_FIXME(lock_); const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 42a454f..0ab1f19 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -7355,55 +7355,6 @@ ] } ], - "VideoCaptureService": [ - { - "platforms": [ - "linux", - "mac", - "windows", - "ios" - ], - "experiments": [ - { - "name": "Enabled2", - "enable_features": [ - "MojoVideoCapture" - ] - } - ] - } - ], - "VideoCaptureServiceAndroid": [ - { - "platforms": [ - "android", - "android_weblayer" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MojoVideoCapture" - ] - } - ] - } - ], - "VideoCaptureServiceChromeOS": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "MojoVideoCapture" - ] - } - ] - } - ], "VideoToolboxVp9Decoding": [ { "platforms": [
diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blink/public/mojom/frame/frame.mojom index 7f65ebef..b15ff0a9 100644 --- a/third_party/blink/public/mojom/frame/frame.mojom +++ b/third_party/blink/public/mojom/frame/frame.mojom
@@ -988,6 +988,11 @@ // Asks the browser process to activate the page associated to the main frame. FocusPage(); + // Asks the browser to transfer focus cross-process on behalf of the renderer + // in the focus hierarchy. This may focus an element in the browser ui or a + // cross-process frame, as appropriate. + TakeFocus(bool reverse); + // Notifies the browser that we want to show a destination url for a potential // action (e.g. when the user is hovering over a link). Implementation of this // method will reply back to the renderer once the target URL gets received, @@ -1001,6 +1006,11 @@ // Asks the browser process to activate the page associated to the main frame. FocusPage(); + // Asks the browser to transfer focus cross-process on behalf of the renderer + // in the focus hierarchy. This may focus an element in the browser ui or a + // cross-process frame, as appropriate. + TakeFocus(bool reverse); + // Notifies the browser that we want to show a destination url for a potential // action (e.g. when the user is hovering over a link). Implementation of this // method will reply back to the renderer once the target URL gets received,
diff --git a/third_party/blink/public/mojom/web_feature/web_feature.mojom b/third_party/blink/public/mojom/web_feature/web_feature.mojom index 0039739f..0255e8a 100644 --- a/third_party/blink/public/mojom/web_feature/web_feature.mojom +++ b/third_party/blink/public/mojom/web_feature/web_feature.mojom
@@ -2873,7 +2873,7 @@ kV8Touch_Force_AttributeGetter = 3542, kWebGLRenderingContextMakeXRCompatible = 3543, kV8WebGLCompressedTextureASTC_GetSupportedProfiles_Method = 3544, - kIdentifiabilityStudyReserved3545 = 3545, + kHTMLCanvasGetContext = 3545, kV8BeforeInstallPromptEvent_Platforms_AttributeGetter = 3546, kIdentifiabilityStudyReserved3547 = 3547, kIdentifiabilityStudyReserved3548 = 3548,
diff --git a/third_party/blink/public/strings/translations/blink_strings_gu.xtb b/third_party/blink/public/strings/translations/blink_strings_gu.xtb index 0e95347..d1e6a8c 100644 --- a/third_party/blink/public/strings/translations/blink_strings_gu.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_gu.xtb
@@ -30,6 +30,7 @@ <translation id="1806710327868736751">ચેતવણી_સંવાદ</translation> <translation id="1821985195704844674">ટ્રી ગ્રિડ</translation> <translation id="1822429046913737220">AM/PM</translation> +<translation id="1823704031293214298">પેજ ફૂટર</translation> <translation id="1832974991323546415">રિમોટ ઉપકરણ પર ચલાવો</translation> <translation id="190587075670221089">ડિલીટ કરો</translation> <translation id="1907737156431278478">ઉદાહરણ</translation> @@ -105,6 +106,7 @@ <translation id="4201051445878709314">પાછળનો મહિનો બતાવો</translation> <translation id="421884353938374759">રંગ ચૂંટનાર</translation> <translation id="4248100235867064564">મેનૂ બાર</translation> +<translation id="4293574643247337246">પેજ હેડર</translation> <translation id="4360991593054037559">કૃપા કરીને એક માન્ય મૂલ્ય દાખલ કરો. બે નિકટતમ માન્ય મૂલ્યો <ph name="VALID_VALUE_LOW" /> અને <ph name="VALID_VALUE_HIGHER" /> છે.</translation> <translation id="4384583879834880242">પ્રશ્ન અને જવાબ</translation> <translation id="4444765639179266822">આવું બોલતા જણાય છે: <ph name="OCR_TEXT" /></translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_iw.xtb b/third_party/blink/public/strings/translations/blink_strings_iw.xtb index c6bd989..f8ac5f2 100644 --- a/third_party/blink/public/strings/translations/blink_strings_iw.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_iw.xtb
@@ -6,7 +6,7 @@ <translation id="1088086359088493902">שניות</translation> <translation id="1142001580032786438">הצגת בוחר השבוע</translation> <translation id="1171774979989969504">הזן כתובת אימייל.</translation> -<translation id="1178581264944972037">השהה</translation> +<translation id="1178581264944972037">השהיה</translation> <translation id="1188858454923323853">משלים</translation> <translation id="1206619573307042055">marquee</translation> <translation id="1206693055195146388">מחוון</translation> @@ -137,7 +137,7 @@ <translation id="5090250355906949916">מחוון זמן הסרטון</translation> <translation id="5093189678851173835">ציטוט בראש ספר</translation> <translation id="509897012892853729">הערוץ הכחול</translation> -<translation id="5117590920725113268">הצג את החודש הבא</translation> +<translation id="5117590920725113268">הצגת החודש הבא</translation> <translation id="512758898067543763">כותרת שורה</translation> <translation id="5143125788380636750">אפילוג</translation> <translation id="5164977714490026579">הערך חייב להיות גדול מ-<ph name="MINIMUM" /> או שווה לו.</translation>
diff --git a/third_party/blink/public/web/web_view_client.h b/third_party/blink/public/web/web_view_client.h index ba91a2d..ef0b8fae 100644 --- a/third_party/blink/public/web/web_view_client.h +++ b/third_party/blink/public/web/web_view_client.h
@@ -105,11 +105,6 @@ // navigation. virtual bool AcceptsLoadDrops() { return true; } - // Take focus away from the WebView by focusing an adjacent UI element - // in the containing window. - virtual void FocusNext() {} - virtual void FocusPrevious() {} - // Called to check if layout update should be processed. virtual bool CanUpdateLayout() { return false; }
diff --git a/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc b/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc index 5103c28..41f6319 100644 --- a/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc +++ b/third_party/blink/renderer/bindings/core/v8/worker_or_worklet_script_controller.cc
@@ -329,20 +329,10 @@ // Use default ReferrerScriptInfo here, as // - A work{er,let} script doesn't have a nonce, and // - a work{er,let} script is always "not parser inserted". - // TODO(crbug/1114988): After crbug/1114988 is fixed, this can be the - // default ScriptFetchOptions(). Currently the default ScriptFetchOptions() - // is not used because it has CredentialsMode::kOmit. - // TODO(crbug/1114989): Plumb this from ClassicScript. - ScriptFetchOptions script_fetch_options( - String(), IntegrityMetadataSet(), String(), - ParserDisposition::kNotParserInserted, - network::mojom::CredentialsMode::kSameOrigin, - network::mojom::ReferrerPolicy::kDefault, - mojom::blink::FetchImportanceMode::kImportanceAuto); - + // TODO(crbug/1114989): Plumb ScriptFetchOptions from ClassicScript. ScriptEvaluationResult result = V8ScriptRunner::CompileAndRunScript( isolate_, script_state_, global_scope_, source_code, base_url, - sanitize_script_errors, script_fetch_options, v8_cache_options, + sanitize_script_errors, ScriptFetchOptions(), v8_cache_options, std::move(rethrow_errors)); if (result.GetResultType() == ScriptEvaluationResult::ResultType::kAborted)
diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn index 32ac81cf..9e002d9a 100644 --- a/third_party/blink/renderer/core/BUILD.gn +++ b/third_party/blink/renderer/core/BUILD.gn
@@ -7,13 +7,60 @@ import("//build/config/dcheck_always_on.gni") import("//build/config/ui.gni") import("//build/toolchain/toolchain.gni") +import("//printing/buildflags/buildflags.gni") import("//testing/libfuzzer/fuzzer_test.gni") import("//third_party/blink/renderer/bindings/bindings.gni") import("//third_party/blink/renderer/bindings/modules/v8/generated.gni") import("//third_party/blink/renderer/bindings/scripts/scripts.gni") import("//third_party/blink/renderer/build/scripts/scripts.gni") import("//third_party/blink/renderer/config.gni") +import("//third_party/blink/renderer/core/accessibility/build.gni") +import("//third_party/blink/renderer/core/animation/build.gni") +import("//third_party/blink/renderer/core/animation_frame/build.gni") +import("//third_party/blink/renderer/core/aom/build.gni") +import("//third_party/blink/renderer/core/clipboard/build.gni") +import("//third_party/blink/renderer/core/content_capture/build.gni") +import("//third_party/blink/renderer/core/context_features/build.gni") import("//third_party/blink/renderer/core/core.gni") +import("//third_party/blink/renderer/core/css/build.gni") +import("//third_party/blink/renderer/core/display_lock/build.gni") +import("//third_party/blink/renderer/core/dom/build.gni") +import("//third_party/blink/renderer/core/editing/build.gni") +import("//third_party/blink/renderer/core/events/build.gni") +import("//third_party/blink/renderer/core/execution_context/build.gni") +import("//third_party/blink/renderer/core/feature_policy/build.gni") +import("//third_party/blink/renderer/core/fetch/build.gni") +import("//third_party/blink/renderer/core/fileapi/build.gni") +import("//third_party/blink/renderer/core/frame/build.gni") +import("//third_party/blink/renderer/core/fullscreen/build.gni") +import("//third_party/blink/renderer/core/geometry/build.gni") +import("//third_party/blink/renderer/core/html/build.gni") +import("//third_party/blink/renderer/core/imagebitmap/build.gni") +import("//third_party/blink/renderer/core/input/build.gni") +import("//third_party/blink/renderer/core/inspector/build.gni") +import("//third_party/blink/renderer/core/intersection_observer/build.gni") +import("//third_party/blink/renderer/core/layout/build.gni") +import("//third_party/blink/renderer/core/loader/build.gni") +import("//third_party/blink/renderer/core/mathml/build.gni") +import("//third_party/blink/renderer/core/messaging/build.gni") +import("//third_party/blink/renderer/core/mojo/build.gni") +import("//third_party/blink/renderer/core/offscreencanvas/build.gni") +import("//third_party/blink/renderer/core/origin_trials/build.gni") +import("//third_party/blink/renderer/core/page/build.gni") +import("//third_party/blink/renderer/core/paint/build.gni") +import("//third_party/blink/renderer/core/resize_observer/build.gni") +import("//third_party/blink/renderer/core/script/build.gni") +import("//third_party/blink/renderer/core/scroll/build.gni") +import("//third_party/blink/renderer/core/streams/build.gni") +import("//third_party/blink/renderer/core/style/build.gni") +import("//third_party/blink/renderer/core/svg/build.gni") +import("//third_party/blink/renderer/core/timezone/build.gni") +import("//third_party/blink/renderer/core/timing/build.gni") +import("//third_party/blink/renderer/core/trustedtypes/build.gni") +import("//third_party/blink/renderer/core/url/build.gni") +import("//third_party/blink/renderer/core/workers/build.gni") +import("//third_party/blink/renderer/core/xml/build.gni") +import("//third_party/blink/renderer/core/xmlhttprequest/build.gni") import("//third_party/blink/renderer/modules/modules_idl_files.gni") import("//third_party/blink/renderer/platform/platform_generated.gni") import("//third_party/protobuf/proto_library.gni") @@ -117,94 +164,136 @@ ] } -# Note that this is a source set rather than a group, even though it has no -# sources. A group would implicitly forward all direct dependent configs -# through it, but we want to keep our internal targets' public_configs private -# and only forward some of them. component("core") { output_name = "blink_core" visibility = [] # Allow re-assignment of list. visibility = [ "//third_party/blink/*" ] - # If you create a new subdirectory, make a new BUILD file for that directory - # and reference it in the deps below rather than adding the sources here. sources = [ "core_initializer.cc", "core_initializer.h", ] + # If you create a new subdirectory 'foo', make 'foo/build.gni' to define + # blink_core_sources_foo, and include it here. Add any dependencies in the + # deps section below. For unit tests, do the same thing in the "unit_tests" + # component. If the directory contains sources that should be compiled with + # extra optimization flags, see the "core_hot" target below. + sources += rebase_path(blink_core_sources_accessibility, "", "accessibility") + sources += + rebase_path(blink_core_sources_animation_frame, "", "animation_frame") + sources += rebase_path(blink_core_sources_aom, "", "aom") + sources += rebase_path(blink_core_sources_clipboard, "", "clipboard") + sources += + rebase_path(blink_core_sources_content_capture, "", "content_capture") + sources += + rebase_path(blink_core_sources_context_features, "", "context_features") + sources += rebase_path(blink_core_sources_css, "", "css") + sources += rebase_path(blink_core_sources_display_lock, "", "display_lock") + sources += rebase_path(blink_core_sources_dom, "", "dom") + sources += rebase_path(blink_core_sources_editing, "", "editing") + sources += rebase_path(blink_core_sources_events, "", "events") + sources += + rebase_path(blink_core_sources_execution_context, "", "execution_context") + sources += + rebase_path(blink_core_sources_feature_policy, "", "feature_policy") + sources += rebase_path(blink_core_sources_fetch, "", "fetch") + sources += rebase_path(blink_core_sources_fileapi, "", "fileapi") + sources += rebase_path(blink_core_sources_frame, "", "frame") + sources += rebase_path(blink_core_sources_fullscreen, "", "fullscreen") + sources += rebase_path(blink_core_sources_geometry, "", "geometry") + sources += rebase_path(blink_core_sources_html, "", "html") + sources += rebase_path(blink_core_sources_imagebitmap, "", "imagebitmap") + sources += rebase_path(blink_core_sources_input, "", "input") + sources += rebase_path(blink_core_sources_inspector, "", "inspector") + sources += rebase_path(blink_core_sources_intersection_observer, + "", + "intersection_observer") + sources += rebase_path(blink_core_sources_layout, "", "layout") + sources += rebase_path(blink_core_sources_loader, "", "loader") + sources += rebase_path(blink_core_sources_mathml, "", "mathml") + sources += rebase_path(blink_core_sources_messaging, "", "messaging") + sources += rebase_path(blink_core_sources_mojo, "", "mojo") + sources += + rebase_path(blink_core_sources_offscreencanvas, "", "offscreencanvas") + sources += rebase_path(blink_core_sources_origin_trials, "", "origin_trials") + sources += rebase_path(blink_core_sources_page, "", "page") + sources += rebase_path(blink_core_sources_paint, "", "paint") + sources += + rebase_path(blink_core_sources_resize_observer, "", "resize_observer") + sources += rebase_path(blink_core_sources_script, "", "script") + sources += rebase_path(blink_core_sources_scroll, "", "scroll") + sources += rebase_path(blink_core_sources_streams, "", "streams") + sources += rebase_path(blink_core_sources_style, "", "style") + sources += rebase_path(blink_core_sources_svg, "", "svg") + sources += rebase_path(blink_core_sources_timezone, "", "timezone") + sources += rebase_path(blink_core_sources_timing, "", "timing") + sources += rebase_path(blink_core_sources_trustedtypes, "", "trustedtypes") + sources += rebase_path(blink_core_sources_url, "", "url") + sources += rebase_path(blink_core_sources_workers, "", "workers") + sources += rebase_path(blink_core_sources_xml, "", "xml") + sources += + rebase_path(blink_core_sources_xmlhttprequest, "", "xmlhttprequest") + configs -= core_config_remove configs += core_config_add public_deps = [ ":core_generated", + ":core_hot", "//skia", "//third_party/blink/public/mojom:mojom_broadcastchannel_bindings_blink", + "//third_party/blink/public/mojom:mojom_core_blink", "//third_party/blink/renderer/bindings/core/v8", - "//third_party/blink/renderer/core/accessibility", + "//third_party/blink/renderer/bindings/core/v8:bindings_core_v8_generated", "//third_party/blink/renderer/core/animation", - "//third_party/blink/renderer/core/animation_frame", - "//third_party/blink/renderer/core/aom", - "//third_party/blink/renderer/core/clipboard", - "//third_party/blink/renderer/core/content_capture", - "//third_party/blink/renderer/core/context_features", - "//third_party/blink/renderer/core/css", - "//third_party/blink/renderer/core/display_lock", - "//third_party/blink/renderer/core/dom", - "//third_party/blink/renderer/core/editing", - "//third_party/blink/renderer/core/events", - "//third_party/blink/renderer/core/execution_context", "//third_party/blink/renderer/core/exported", - "//third_party/blink/renderer/core/feature_policy", - "//third_party/blink/renderer/core/fetch", - "//third_party/blink/renderer/core/fileapi", - "//third_party/blink/renderer/core/frame", - "//third_party/blink/renderer/core/fullscreen", - "//third_party/blink/renderer/core/geometry", - "//third_party/blink/renderer/core/html", - "//third_party/blink/renderer/core/html/parser:parser", - "//third_party/blink/renderer/core/imagebitmap", - "//third_party/blink/renderer/core/input", - "//third_party/blink/renderer/core/inspector", - "//third_party/blink/renderer/core/intersection_observer", - "//third_party/blink/renderer/core/layout", - "//third_party/blink/renderer/core/layout/svg:svg_layout", - "//third_party/blink/renderer/core/loader", - "//third_party/blink/renderer/core/mathml", - "//third_party/blink/renderer/core/messaging", - "//third_party/blink/renderer/core/mojo", - "//third_party/blink/renderer/core/offscreencanvas", - "//third_party/blink/renderer/core/origin_trials", - "//third_party/blink/renderer/core/page", - "//third_party/blink/renderer/core/paint", "//third_party/blink/renderer/core/probe", - "//third_party/blink/renderer/core/resize_observer", - "//third_party/blink/renderer/core/script", - "//third_party/blink/renderer/core/scroll", - "//third_party/blink/renderer/core/streams", - "//third_party/blink/renderer/core/style:rendering", - "//third_party/blink/renderer/core/style:svg_style", - "//third_party/blink/renderer/core/svg", - "//third_party/blink/renderer/core/timezone", - "//third_party/blink/renderer/core/timing", - "//third_party/blink/renderer/core/trustedtypes", "//third_party/blink/renderer/core/typed_arrays", - "//third_party/blink/renderer/core/url", - "//third_party/blink/renderer/core/workers", - "//third_party/blink/renderer/core/xml", - "//third_party/blink/renderer/core/xmlhttprequest", + "//third_party/blink/renderer/platform", + "//ui/base/cursor:cursor_base", "//url", "//v8", ] deps = [ "//components/paint_preview/common", + "//gpu/config", + "//mojo/public/cpp/bindings:bindings", + "//mojo/public/cpp/system", + "//printing/buildflags", + "//services/metrics/public/cpp:metrics_cpp", + "//services/metrics/public/cpp:ukm_builders", + "//services/metrics/public/mojom", + "//services/service_manager/public/cpp", + "//skia", + "//skia:skcms", + "//third_party/blink/public:buildflags", + "//third_party/blink/public:resources", "//third_party/blink/public/common", + "//third_party/blink/public/strings", + "//third_party/blink/renderer/core/typed_arrays:typed_arrays", + "//third_party/blink/renderer/core/xml:xpath_generated", "//third_party/blink/renderer/platform", "//third_party/blink/renderer/platform/wtf", + "//ui/accessibility:ax_base", + "//ui/base/cursor:cursor_base", + "//ui/base/cursor/mojom:cursor_type_blink", + "//ui/base/dragdrop/mojom:mojom_blink", + "//ui/gfx:geometry_skia", + "//ui/gfx/geometry", ] - allow_circular_includes_from = [ "//third_party/blink/renderer/core/xml:xml" ] + if (is_mac) { + deps += [ "//ui/base/mojom" ] + } + + if (enable_basic_printing) { + deps += [ "//printing" ] + } + + allow_circular_includes_from = + [ "//third_party/blink/renderer/core/xml:xpath_generated" ] public_configs = [ ":core_include_dirs" ] @@ -216,6 +305,23 @@ } } +# Certain sources should be compiled with heavy optimization enabled. +# Define them in 'foo/build.gni' as blink_core_hot_sources_foo, and include it +# here. +blink_core_sources("core_hot") { + sources = [] + sources += rebase_path(blink_core_hot_sources_dom, "", "dom") + sources += rebase_path(blink_core_hot_sources_html, "", "html") + + # TODO(ajwong) this is of mirror + # https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/core.gni;l=26 + # to undo the configs which is fragile. Find a better way. + if (is_android && !is_debug) { + configs -= [ "//build/config/compiler:default_optimization" ] + configs += [ "//build/config/compiler:optimize_max" ] + } +} + source_set("testing") { testonly = true @@ -1445,6 +1551,18 @@ "xml/xpath_functions_test.cc", ] + # If you create a new subdirectory 'foo' that contains unit tets, list them in + # 'foo/build.gni' to define blink_core_tests_foo, and add any dependencies in + # the deps section below. + sources += rebase_path(blink_core_tests_accessibility, "", "accessibility") + sources += rebase_path(blink_core_tests_animation, "", "animation") + sources += rebase_path(blink_core_tests_clipboard, "", "clipboard") + sources += rebase_path(blink_core_tests_css, "", "css") + sources += rebase_path(blink_core_tests_editing, "", "editing") + sources += rebase_path(blink_core_tests_fileapi, "", "fileapi") + sources += rebase_path(blink_core_tests_html, "", "html") + sources += rebase_path(blink_core_tests_style, "", "style") + if (is_debug || dcheck_always_on) { sources += [ "exported/web_disallow_transition_scope_test.cc" ] } @@ -1460,18 +1578,17 @@ ":unit_test_support", "//components/paint_preview/common:common", "//mojo/public/cpp/system", + "//services/network/trust_tokens:test_support", "//skia", "//skia:skcms", "//testing/gmock", "//testing/gtest", - "//third_party/blink/renderer/core/accessibility:unit_tests", - "//third_party/blink/renderer/core/animation:unit_tests", - "//third_party/blink/renderer/core/clipboard:unit_tests", - "//third_party/blink/renderer/core/css:unit_tests", - "//third_party/blink/renderer/core/editing:unit_tests", - "//third_party/blink/renderer/core/fileapi:unit_tests", - "//third_party/blink/renderer/core/html:unit_tests", - "//third_party/blink/renderer/core/style:unit_tests", + "//third_party/blink/renderer/controller:blink_bindings_test_sources", + "//third_party/blink/renderer/core", + "//third_party/blink/renderer/core:testing", + "//third_party/blink/renderer/core:unit_test_support", + "//third_party/blink/renderer/platform:test_support", + "//ui/accessibility:ax_base", "//ui/base/cursor:cursor_base", "//ui/base/cursor/mojom:cursor_type_blink", ]
diff --git a/third_party/blink/renderer/core/accessibility/BUILD.gn b/third_party/blink/renderer/core/accessibility/BUILD.gn deleted file mode 100644 index 486039fa..0000000 --- a/third_party/blink/renderer/core/accessibility/BUILD.gn +++ /dev/null
@@ -1,33 +0,0 @@ -# Copyright 2018 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("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("accessibility") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "ax_context.cc", - "ax_context.h", - "ax_object_cache.cc", - "ax_object_cache.h", - "ax_object_cache_base.h", - "axid.h", - "blink_ax_event_intent.cc", - "blink_ax_event_intent.h", - "scoped_blink_ax_event_intent.cc", - "scoped_blink_ax_event_intent.h", - ] - - deps = [ "//ui/accessibility:ax_base" ] -} - -blink_core_tests("unit_tests") { - sources = [ - "blink_ax_event_intent_test.cc", - "scoped_blink_ax_event_intent_test.cc", - ] - - deps = [ "//ui/accessibility:ax_base" ] -}
diff --git a/third_party/blink/renderer/core/accessibility/build.gni b/third_party/blink/renderer/core/accessibility/build.gni new file mode 100644 index 0000000..ccefd9ef5 --- /dev/null +++ b/third_party/blink/renderer/core/accessibility/build.gni
@@ -0,0 +1,21 @@ +# 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. + +blink_core_sources_accessibility = [ + "ax_context.cc", + "ax_context.h", + "ax_object_cache.cc", + "ax_object_cache.h", + "ax_object_cache_base.h", + "axid.h", + "blink_ax_event_intent.cc", + "blink_ax_event_intent.h", + "scoped_blink_ax_event_intent.cc", + "scoped_blink_ax_event_intent.h", +] + +blink_core_tests_accessibility = [ + "blink_ax_event_intent_test.cc", + "scoped_blink_ax_event_intent_test.cc", +]
diff --git a/third_party/blink/renderer/core/animation/BUILD.gn b/third_party/blink/renderer/core/animation/BUILD.gn index 4e9ff87..78eac0a 100644 --- a/third_party/blink/renderer/core/animation/BUILD.gn +++ b/third_party/blink/renderer/core/animation/BUILD.gn
@@ -280,36 +280,3 @@ deps = [ ":buildflags" ] } - -blink_core_tests("unit_tests") { - sources = [ - "animation_effect_test.cc", - "animation_input_helpers_test.cc", - "animation_sim_test.cc", - "animation_test.cc", - "animation_test_helpers.cc", - "animation_test_helpers.h", - "animation_time_delta_test.cc", - "animation_utils_test.cc", - "compositor_animations_test.cc", - "css/css_animations_test.cc", - "css/css_transition_data_test.cc", - "document_animations_test.cc", - "document_timeline_test.cc", - "effect_input_test.cc", - "effect_stack_test.cc", - "interpolable_value_test.cc", - "interpolation_effect_test.cc", - "keyframe_effect_model_test.cc", - "keyframe_effect_test.cc", - "list_interpolation_functions_test.cc", - "property_handle_test.cc", - "scroll_timeline_offset_test.cc", - "scroll_timeline_test.cc", - "scroll_timeline_util_test.cc", - "svg_number_interpolation_type_test.cc", - "timing_calculations_test.cc", - "timing_input_test.cc", - "timing_test.cc", - ] -}
diff --git a/third_party/blink/renderer/core/animation/build.gni b/third_party/blink/renderer/core/animation/build.gni new file mode 100644 index 0000000..14a0c456 --- /dev/null +++ b/third_party/blink/renderer/core/animation/build.gni
@@ -0,0 +1,34 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_tests_animation = [ + "animation_effect_test.cc", + "animation_input_helpers_test.cc", + "animation_sim_test.cc", + "animation_test.cc", + "animation_test_helpers.cc", + "animation_test_helpers.h", + "animation_time_delta_test.cc", + "animation_utils_test.cc", + "compositor_animations_test.cc", + "css/css_animations_test.cc", + "css/css_transition_data_test.cc", + "document_animations_test.cc", + "document_timeline_test.cc", + "effect_input_test.cc", + "effect_stack_test.cc", + "interpolable_value_test.cc", + "interpolation_effect_test.cc", + "keyframe_effect_model_test.cc", + "keyframe_effect_test.cc", + "list_interpolation_functions_test.cc", + "property_handle_test.cc", + "scroll_timeline_offset_test.cc", + "scroll_timeline_test.cc", + "scroll_timeline_util_test.cc", + "svg_number_interpolation_type_test.cc", + "timing_calculations_test.cc", + "timing_input_test.cc", + "timing_test.cc", +]
diff --git a/third_party/blink/renderer/core/animation_frame/BUILD.gn b/third_party/blink/renderer/core/animation_frame/BUILD.gn deleted file mode 100644 index 1aef374..0000000 --- a/third_party/blink/renderer/core/animation_frame/BUILD.gn +++ /dev/null
@@ -1,15 +0,0 @@ -# Copyright 2019 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("animation_frame") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "worker_animation_frame_provider.cc", - "worker_animation_frame_provider.h", - ] - deps = [ "//mojo/public/cpp/bindings:bindings" ] -}
diff --git a/third_party/blink/renderer/core/animation_frame/build.gni b/third_party/blink/renderer/core/animation_frame/build.gni new file mode 100644 index 0000000..8aface1 --- /dev/null +++ b/third_party/blink/renderer/core/animation_frame/build.gni
@@ -0,0 +1,8 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_sources_animation_frame = [ + "worker_animation_frame_provider.cc", + "worker_animation_frame_provider.h", +]
diff --git a/third_party/blink/renderer/core/aom/BUILD.gn b/third_party/blink/renderer/core/aom/BUILD.gn deleted file mode 100644 index 4c96c06..0000000 --- a/third_party/blink/renderer/core/aom/BUILD.gn +++ /dev/null
@@ -1,18 +0,0 @@ -# Copyright 2018 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("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("aom") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "accessible_node.cc", - "accessible_node.h", - "accessible_node_list.cc", - "accessible_node_list.h", - "computed_accessible_node.cc", - "computed_accessible_node.h", - ] -}
diff --git a/third_party/blink/renderer/core/aom/build.gni b/third_party/blink/renderer/core/aom/build.gni new file mode 100644 index 0000000..d0f88f9b --- /dev/null +++ b/third_party/blink/renderer/core/aom/build.gni
@@ -0,0 +1,12 @@ +# 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. + +blink_core_sources_aom = [ + "accessible_node.cc", + "accessible_node.h", + "accessible_node_list.cc", + "accessible_node_list.h", + "computed_accessible_node.cc", + "computed_accessible_node.h", +]
diff --git a/third_party/blink/renderer/core/clipboard/BUILD.gn b/third_party/blink/renderer/core/clipboard/BUILD.gn deleted file mode 100644 index 3fccedf..0000000 --- a/third_party/blink/renderer/core/clipboard/BUILD.gn +++ /dev/null
@@ -1,45 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("clipboard") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "clipboard_mime_types.cc", - "clipboard_mime_types.h", - "clipboard_utilities.cc", - "clipboard_utilities.h", - "data_object.cc", - "data_object.h", - "data_object_item.cc", - "data_object_item.h", - "data_transfer.cc", - "data_transfer.h", - "data_transfer_access_policy.h", - "data_transfer_item.cc", - "data_transfer_item.h", - "data_transfer_item_list.cc", - "data_transfer_item_list.h", - "dragged_isolated_file_system.cc", - "dragged_isolated_file_system.h", - "paste_mode.h", - "raw_system_clipboard.cc", - "raw_system_clipboard.h", - "system_clipboard.cc", - "system_clipboard.h", - ] - - if (is_win) { - sources += [ "clipboard_utilities_win.cc" ] - } -} - -blink_core_tests("unit_tests") { - sources = [ - "data_object_test.cc", - "data_transfer_test.cc", - ] -}
diff --git a/third_party/blink/renderer/core/clipboard/build.gni b/third_party/blink/renderer/core/clipboard/build.gni new file mode 100644 index 0000000..65a04dc --- /dev/null +++ b/third_party/blink/renderer/core/clipboard/build.gni
@@ -0,0 +1,37 @@ +# 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. + +blink_core_sources_clipboard = [ + "clipboard_mime_types.cc", + "clipboard_mime_types.h", + "clipboard_utilities.cc", + "clipboard_utilities.h", + "data_object.cc", + "data_object.h", + "data_object_item.cc", + "data_object_item.h", + "data_transfer.cc", + "data_transfer.h", + "data_transfer_access_policy.h", + "data_transfer_item.cc", + "data_transfer_item.h", + "data_transfer_item_list.cc", + "data_transfer_item_list.h", + "dragged_isolated_file_system.cc", + "dragged_isolated_file_system.h", + "paste_mode.h", + "raw_system_clipboard.cc", + "raw_system_clipboard.h", + "system_clipboard.cc", + "system_clipboard.h", +] + +if (is_win) { + blink_core_sources_clipboard += [ "clipboard_utilities_win.cc" ] +} + +blink_core_tests_clipboard = [ + "data_object_test.cc", + "data_transfer_test.cc", +]
diff --git a/third_party/blink/renderer/core/content_capture/BUILD.gn b/third_party/blink/renderer/core/content_capture/BUILD.gn deleted file mode 100644 index e496c5a..0000000 --- a/third_party/blink/renderer/core/content_capture/BUILD.gn +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2019 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("content_capture") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "content_capture_manager.cc", - "content_capture_manager.h", - "content_capture_task.cc", - "content_capture_task.h", - "content_capture_task_histogram_reporter.cc", - "content_capture_task_histogram_reporter.h", - "content_holder.cc", - "content_holder.h", - "task_session.cc", - "task_session.h", - ] -}
diff --git a/third_party/blink/renderer/core/content_capture/build.gni b/third_party/blink/renderer/core/content_capture/build.gni new file mode 100644 index 0000000..b0e016c0 --- /dev/null +++ b/third_party/blink/renderer/core/content_capture/build.gni
@@ -0,0 +1,16 @@ +# 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. + +blink_core_sources_content_capture = [ + "content_capture_manager.cc", + "content_capture_manager.h", + "content_capture_task.cc", + "content_capture_task.h", + "content_capture_task_histogram_reporter.cc", + "content_capture_task_histogram_reporter.h", + "content_holder.cc", + "content_holder.h", + "task_session.cc", + "task_session.h", +]
diff --git a/third_party/blink/renderer/core/context_features/BUILD.gn b/third_party/blink/renderer/core/context_features/BUILD.gn deleted file mode 100644 index 07f962e0..0000000 --- a/third_party/blink/renderer/core/context_features/BUILD.gn +++ /dev/null
@@ -1,14 +0,0 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("context_features") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "context_feature_settings.cc", - "context_feature_settings.h", - ] -}
diff --git a/third_party/blink/renderer/core/context_features/build.gni b/third_party/blink/renderer/core/context_features/build.gni new file mode 100644 index 0000000..cff8bf90 --- /dev/null +++ b/third_party/blink/renderer/core/context_features/build.gni
@@ -0,0 +1,8 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_sources_context_features = [ + "context_feature_settings.cc", + "context_feature_settings.h", +]
diff --git a/third_party/blink/renderer/core/css/BUILD.gn b/third_party/blink/renderer/core/css/BUILD.gn deleted file mode 100644 index a694146..0000000 --- a/third_party/blink/renderer/core/css/BUILD.gn +++ /dev/null
@@ -1,705 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("css") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "abstract_property_set_css_style_declaration.cc", - "abstract_property_set_css_style_declaration.h", - "active_style_sheets.cc", - "active_style_sheets.h", - "basic_shape_functions.cc", - "basic_shape_functions.h", - "binary_data_font_face_source.cc", - "binary_data_font_face_source.h", - "computed_style_css_value_mapping.cc", - "computed_style_css_value_mapping.h", - "css_axis_value.cc", - "css_axis_value.h", - "css_basic_shape_values.cc", - "css_basic_shape_values.h", - "css_border_image.cc", - "css_border_image.h", - "css_border_image_slice_value.cc", - "css_border_image_slice_value.h", - "css_color_value.cc", - "css_color_value.h", - "css_computed_style_declaration.cc", - "css_computed_style_declaration.h", - "css_condition_rule.cc", - "css_condition_rule.h", - "css_content_distribution_value.cc", - "css_content_distribution_value.h", - "css_counter_value.cc", - "css_counter_value.h", - "css_crossfade_value.cc", - "css_crossfade_value.h", - "css_cursor_image_value.cc", - "css_cursor_image_value.h", - "css_custom_font_data.h", - "css_custom_ident_value.cc", - "css_custom_ident_value.h", - "css_custom_property_declaration.cc", - "css_custom_property_declaration.h", - "css_default_style_sheets.cc", - "css_default_style_sheets.h", - "css_element_offset_value.cc", - "css_element_offset_value.h", - "css_font_face.cc", - "css_font_face.h", - "css_font_face_rule.cc", - "css_font_face_rule.h", - "css_font_face_source.cc", - "css_font_face_source.h", - "css_font_face_src_value.cc", - "css_font_face_src_value.h", - "css_font_family_value.cc", - "css_font_family_value.h", - "css_font_feature_value.cc", - "css_font_feature_value.h", - "css_font_selector.cc", - "css_font_selector.h", - "css_font_style_range_value.cc", - "css_font_style_range_value.h", - "css_font_variation_value.cc", - "css_font_variation_value.h", - "css_function_value.cc", - "css_function_value.h", - "css_global_rule_set.cc", - "css_global_rule_set.h", - "css_gradient_value.cc", - "css_gradient_value.h", - "css_grid_auto_repeat_value.cc", - "css_grid_auto_repeat_value.h", - "css_grid_integer_repeat_value.cc", - "css_grid_integer_repeat_value.h", - "css_grid_line_names_value.cc", - "css_grid_line_names_value.h", - "css_grid_template_areas_value.cc", - "css_grid_template_areas_value.h", - "css_grouping_rule.cc", - "css_grouping_rule.h", - "css_id_selector_value.cc", - "css_id_selector_value.h", - "css_identifier_value.cc", - "css_identifier_value.h", - "css_image_generator_value.cc", - "css_image_generator_value.h", - "css_image_set_value.cc", - "css_image_set_value.h", - "css_image_value.cc", - "css_image_value.h", - "css_import_rule.cc", - "css_import_rule.h", - "css_inherited_value.cc", - "css_inherited_value.h", - "css_initial_color_value.cc", - "css_initial_color_value.h", - "css_initial_value.cc", - "css_initial_value.h", - "css_invalid_variable_value.cc", - "css_invalid_variable_value.h", - "css_keyframe_rule.cc", - "css_keyframe_rule.h", - "css_keyframe_shorthand_value.cc", - "css_keyframe_shorthand_value.h", - "css_keyframes_rule.cc", - "css_keyframes_rule.h", - "css_layout_function_value.cc", - "css_layout_function_value.h", - "css_light_dark_value_pair.cc", - "css_light_dark_value_pair.h", - "css_markup.cc", - "css_markup.h", - "css_math_expression_node.cc", - "css_math_expression_node.h", - "css_math_function_value.cc", - "css_math_function_value.h", - "css_math_operator.cc", - "css_math_operator.h", - "css_media_rule.cc", - "css_media_rule.h", - "css_namespace_rule.cc", - "css_namespace_rule.h", - "css_numeric_literal_value.cc", - "css_numeric_literal_value.h", - "css_origin_clean.h", - "css_page_rule.cc", - "css_page_rule.h", - "css_paint_image_generator.cc", - "css_paint_image_generator.h", - "css_paint_value.cc", - "css_paint_value.h", - "css_path_value.cc", - "css_path_value.h", - "css_pending_substitution_value.cc", - "css_pending_substitution_value.h", - "css_primitive_value.cc", - "css_primitive_value.h", - "css_primitive_value_mappings.h", - "css_property_equality.cc", - "css_property_equality.h", - "css_property_id_templates.h", - "css_property_name.cc", - "css_property_name.h", - "css_property_rule.cc", - "css_property_rule.h", - "css_property_source_data.cc", - "css_property_source_data.h", - "css_property_value.cc", - "css_property_value.h", - "css_property_value_set.cc", - "css_property_value_set.h", - "css_quad_value.cc", - "css_quad_value.h", - "css_ray_value.cc", - "css_ray_value.h", - "css_reflect_value.cc", - "css_reflect_value.h", - "css_reflection_direction.h", - "css_resolution_units.h", - "css_resource_fetch_restriction.h", - "css_revert_value.cc", - "css_revert_value.h", - "css_rule.cc", - "css_rule.h", - "css_rule_list.h", - "css_scroll_timeline_rule.cc", - "css_scroll_timeline_rule.h", - "css_segmented_font_face.cc", - "css_segmented_font_face.h", - "css_selector.cc", - "css_selector.h", - "css_selector_list.cc", - "css_selector_list.h", - "css_selector_watch.cc", - "css_selector_watch.h", - "css_shadow_value.cc", - "css_shadow_value.h", - "css_string_value.cc", - "css_string_value.h", - "css_style_declaration.cc", - "css_style_declaration.h", - "css_style_rule.cc", - "css_style_rule.h", - "css_style_sheet.cc", - "css_style_sheet.h", - "css_supports_rule.cc", - "css_supports_rule.h", - "css_syntax_component.h", - "css_syntax_definition.cc", - "css_syntax_definition.h", - "css_syntax_string_parser.cc", - "css_syntax_string_parser.h", - "css_timing_function_value.cc", - "css_timing_function_value.h", - "css_to_length_conversion_data.cc", - "css_to_length_conversion_data.h", - "css_unicode_range_value.cc", - "css_unicode_range_value.h", - "css_unset_value.cc", - "css_unset_value.h", - "css_uri_value.cc", - "css_uri_value.h", - "css_value.cc", - "css_value.h", - "css_value_id_mappings.h", - "css_value_list.cc", - "css_value_list.h", - "css_value_pair.cc", - "css_value_pair.h", - "css_value_pool.cc", - "css_value_pool.h", - "css_variable_data.cc", - "css_variable_data.h", - "css_variable_reference_value.cc", - "css_variable_reference_value.h", - "cssom/computed_style_property_map.cc", - "cssom/computed_style_property_map.h", - "cssom/cross_thread_color_value.cc", - "cssom/cross_thread_color_value.h", - "cssom/cross_thread_keyword_value.cc", - "cssom/cross_thread_keyword_value.h", - "cssom/cross_thread_style_value.h", - "cssom/cross_thread_unit_value.cc", - "cssom/cross_thread_unit_value.h", - "cssom/cross_thread_unparsed_value.cc", - "cssom/cross_thread_unparsed_value.h", - "cssom/cross_thread_unsupported_value.cc", - "cssom/cross_thread_unsupported_value.h", - "cssom/css_keyword_value.cc", - "cssom/css_keyword_value.h", - "cssom/css_math_invert.cc", - "cssom/css_math_invert.h", - "cssom/css_math_max.cc", - "cssom/css_math_max.h", - "cssom/css_math_min.cc", - "cssom/css_math_min.h", - "cssom/css_math_negate.cc", - "cssom/css_math_negate.h", - "cssom/css_math_product.cc", - "cssom/css_math_product.h", - "cssom/css_math_sum.cc", - "cssom/css_math_sum.h", - "cssom/css_math_value.cc", - "cssom/css_math_value.h", - "cssom/css_matrix_component.cc", - "cssom/css_matrix_component.h", - "cssom/css_numeric_value.cc", - "cssom/css_numeric_value.h", - "cssom/css_numeric_value_type.cc", - "cssom/css_numeric_value_type.h", - "cssom/css_perspective.cc", - "cssom/css_perspective.h", - "cssom/css_position_value.cc", - "cssom/css_position_value.h", - "cssom/css_resource_value.h", - "cssom/css_rotate.cc", - "cssom/css_rotate.h", - "cssom/css_scale.cc", - "cssom/css_scale.h", - "cssom/css_skew.cc", - "cssom/css_skew.h", - "cssom/css_skew_x.cc", - "cssom/css_skew_x.h", - "cssom/css_skew_y.cc", - "cssom/css_skew_y.h", - "cssom/css_style_image_value.cc", - "cssom/css_style_image_value.h", - "cssom/css_style_value.cc", - "cssom/css_style_value.h", - "cssom/css_style_variable_reference_value.cc", - "cssom/css_style_variable_reference_value.h", - "cssom/css_transform_component.cc", - "cssom/css_transform_component.h", - "cssom/css_transform_value.cc", - "cssom/css_transform_value.h", - "cssom/css_translate.cc", - "cssom/css_translate.h", - "cssom/css_unit_value.cc", - "cssom/css_unit_value.h", - "cssom/css_unit_values.h", - "cssom/css_unparsed_value.cc", - "cssom/css_unparsed_value.h", - "cssom/css_unsupported_color_value.cc", - "cssom/css_unsupported_color_value.h", - "cssom/css_unsupported_style_value.cc", - "cssom/css_unsupported_style_value.h", - "cssom/css_url_image_value.cc", - "cssom/css_url_image_value.h", - "cssom/cssom_keywords.h", - "cssom/cssom_types.h", - "cssom/declared_style_property_map.cc", - "cssom/declared_style_property_map.h", - "cssom/element_computed_style_map.h", - "cssom/inline_style_property_map.cc", - "cssom/inline_style_property_map.h", - "cssom/paint_worklet_deferred_image.cc", - "cssom/paint_worklet_deferred_image.h", - "cssom/paint_worklet_input.cc", - "cssom/paint_worklet_input.h", - "cssom/paint_worklet_style_property_map.cc", - "cssom/paint_worklet_style_property_map.h", - "cssom/prepopulated_computed_style_property_map.cc", - "cssom/prepopulated_computed_style_property_map.h", - "cssom/style_property_map.cc", - "cssom/style_property_map.h", - "cssom/style_property_map_read_only.h", - "cssom/style_property_map_read_only_main_thread.cc", - "cssom/style_property_map_read_only_main_thread.h", - "cssom/style_value_factory.cc", - "cssom/style_value_factory.h", - "document_style_environment_variables.cc", - "document_style_environment_variables.h", - "document_style_sheet_collection.cc", - "document_style_sheet_collection.h", - "document_style_sheet_collector.cc", - "document_style_sheet_collector.h", - "dom_window_css.cc", - "dom_window_css.h", - "element_rule_collector.cc", - "element_rule_collector.h", - "font_display.cc", - "font_display.h", - "font_face.cc", - "font_face.h", - "font_face_cache.cc", - "font_face_cache.h", - "font_face_set.cc", - "font_face_set.h", - "font_face_set_document.cc", - "font_face_set_document.h", - "font_face_set_load_event.cc", - "font_face_set_load_event.h", - "font_face_set_worker.cc", - "font_face_set_worker.h", - "font_face_source.cc", - "font_face_source.h", - "font_size_functions.cc", - "font_size_functions.h", - "hash_tools.h", - "inline_css_style_declaration.cc", - "inline_css_style_declaration.h", - "invalidation/invalidation_flags.cc", - "invalidation/invalidation_flags.h", - "invalidation/invalidation_set.cc", - "invalidation/invalidation_set.h", - "invalidation/node_invalidation_sets.h", - "invalidation/pending_invalidations.cc", - "invalidation/pending_invalidations.h", - "invalidation/style_invalidator.cc", - "invalidation/style_invalidator.h", - "keyframe_style_rule_css_style_declaration.cc", - "keyframe_style_rule_css_style_declaration.h", - "layout_tree_rebuild_root.cc", - "layout_tree_rebuild_root.h", - "local_font_face_source.cc", - "local_font_face_source.h", - "media_feature_overrides.cc", - "media_feature_overrides.h", - "media_list.cc", - "media_list.h", - "media_query.cc", - "media_query.h", - "media_query_evaluator.cc", - "media_query_evaluator.h", - "media_query_exp.cc", - "media_query_exp.h", - "media_query_list.cc", - "media_query_list.h", - "media_query_list_event.h", - "media_query_list_listener.cc", - "media_query_list_listener.h", - "media_query_matcher.cc", - "media_query_matcher.h", - "media_value_change.h", - "media_values.cc", - "media_values.h", - "media_values_cached.cc", - "media_values_cached.h", - "media_values_dynamic.cc", - "media_values_dynamic.h", - "media_values_initial_viewport.cc", - "media_values_initial_viewport.h", - "offscreen_font_selector.cc", - "offscreen_font_selector.h", - "page_rule_collector.cc", - "page_rule_collector.h", - "parser/at_rule_descriptor_parser.cc", - "parser/at_rule_descriptor_parser.h", - "parser/css_at_rule_id.cc", - "parser/css_at_rule_id.h", - "parser/css_lazy_parsing_state.cc", - "parser/css_lazy_parsing_state.h", - "parser/css_lazy_property_parser_impl.cc", - "parser/css_lazy_property_parser_impl.h", - "parser/css_parser.cc", - "parser/css_parser.h", - "parser/css_parser_context.cc", - "parser/css_parser_context.h", - "parser/css_parser_fast_paths.cc", - "parser/css_parser_fast_paths.h", - "parser/css_parser_idioms.cc", - "parser/css_parser_idioms.h", - "parser/css_parser_impl.cc", - "parser/css_parser_impl.h", - "parser/css_parser_local_context.cc", - "parser/css_parser_local_context.h", - "parser/css_parser_mode.h", - "parser/css_parser_observer.h", - "parser/css_parser_selector.cc", - "parser/css_parser_selector.h", - "parser/css_parser_token.cc", - "parser/css_parser_token.h", - "parser/css_parser_token_range.cc", - "parser/css_parser_token_range.h", - "parser/css_parser_token_stream.cc", - "parser/css_parser_token_stream.h", - "parser/css_property_parser.cc", - "parser/css_property_parser.h", - "parser/css_selector_parser.cc", - "parser/css_selector_parser.h", - "parser/css_supports_parser.cc", - "parser/css_supports_parser.h", - "parser/css_tokenized_value.h", - "parser/css_tokenizer.cc", - "parser/css_tokenizer.h", - "parser/css_tokenizer_input_stream.cc", - "parser/css_tokenizer_input_stream.h", - "parser/css_variable_parser.cc", - "parser/css_variable_parser.h", - "parser/font_variant_east_asian_parser.h", - "parser/font_variant_ligatures_parser.h", - "parser/font_variant_numeric_parser.h", - "parser/media_query_block_watcher.cc", - "parser/media_query_block_watcher.h", - "parser/media_query_parser.cc", - "parser/media_query_parser.h", - "parser/sizes_attribute_parser.cc", - "parser/sizes_attribute_parser.h", - "parser/sizes_math_function_parser.cc", - "parser/sizes_math_function_parser.h", - "part_names.cc", - "part_names.h", - "properties/computed_style_utils.cc", - "properties/computed_style_utils.h", - "properties/css_bitset.h", - "properties/css_direction_aware_resolver.cc", - "properties/css_direction_aware_resolver.h", - "properties/css_exposure.h", - "properties/css_parsing_utils.cc", - "properties/css_parsing_utils.h", - "properties/css_property.cc", - "properties/css_property.h", - "properties/css_property_ref.cc", - "properties/css_property_ref.h", - "properties/css_unresolved_property.cc", - "properties/css_unresolved_property.h", - "properties/longhand.h", - "properties/longhands/custom_property.cc", - "properties/longhands/custom_property.h", - "properties/longhands/longhands_custom.cc", - "properties/longhands/variable.cc", - "properties/longhands/variable.h", - "properties/shorthand.h", - "properties/shorthands/shorthands_custom.cc", - "properties/style_building_utils.h", - "property_registration.cc", - "property_registration.h", - "property_registry.cc", - "property_registry.h", - "property_set_css_style_declaration.cc", - "property_set_css_style_declaration.h", - "pseudo_style_request.h", - "remote_font_face_source.cc", - "remote_font_face_source.h", - "resolver/cascade_expansion.cc", - "resolver/cascade_expansion.h", - "resolver/cascade_filter.h", - "resolver/cascade_interpolations.h", - "resolver/cascade_map.cc", - "resolver/cascade_map.h", - "resolver/cascade_origin.h", - "resolver/cascade_priority.h", - "resolver/cascade_resolver.cc", - "resolver/cascade_resolver.h", - "resolver/css_to_style_map.cc", - "resolver/css_to_style_map.h", - "resolver/element_resolve_context.cc", - "resolver/element_resolve_context.h", - "resolver/element_style_resources.cc", - "resolver/element_style_resources.h", - "resolver/filter_operation_resolver.cc", - "resolver/filter_operation_resolver.h", - "resolver/font_builder.cc", - "resolver/font_builder.h", - "resolver/font_style_resolver.cc", - "resolver/font_style_resolver.h", - "resolver/match_request.h", - "resolver/match_result.cc", - "resolver/match_result.h", - "resolver/matched_properties_cache.cc", - "resolver/matched_properties_cache.h", - "resolver/media_query_result.h", - "resolver/scoped_style_resolver.cc", - "resolver/scoped_style_resolver.h", - "resolver/selector_filter_parent_scope.cc", - "resolver/selector_filter_parent_scope.h", - "resolver/style_adjuster.cc", - "resolver/style_adjuster.h", - "resolver/style_builder.cc", - "resolver/style_builder.h", - "resolver/style_builder_converter.cc", - "resolver/style_builder_converter.h", - "resolver/style_cascade.cc", - "resolver/style_cascade.h", - "resolver/style_resolver.cc", - "resolver/style_resolver.h", - "resolver/style_resolver_state.cc", - "resolver/style_resolver_state.h", - "resolver/style_resolver_stats.cc", - "resolver/style_resolver_stats.h", - "resolver/style_rule_usage_tracker.cc", - "resolver/style_rule_usage_tracker.h", - "resolver/transform_builder.cc", - "resolver/transform_builder.h", - "resolver/viewport_style_resolver.cc", - "resolver/viewport_style_resolver.h", - "rule_feature_set.cc", - "rule_feature_set.h", - "rule_set.cc", - "rule_set.h", - "select_rule_feature_set.cc", - "select_rule_feature_set.h", - "selector_checker.cc", - "selector_checker.h", - "selector_filter.cc", - "selector_filter.h", - "selector_query.cc", - "selector_query.h", - "shadow_tree_style_sheet_collection.cc", - "shadow_tree_style_sheet_collection.h", - "style_attribute_mutation_scope.cc", - "style_attribute_mutation_scope.h", - "style_auto_color.h", - "style_change_reason.cc", - "style_change_reason.h", - "style_color.cc", - "style_color.h", - "style_element.cc", - "style_element.h", - "style_engine.cc", - "style_engine.h", - "style_engine_context.cc", - "style_engine_context.h", - "style_environment_variables.cc", - "style_environment_variables.h", - "style_invalidation_root.cc", - "style_invalidation_root.h", - "style_media.cc", - "style_media.h", - "style_property_serializer.cc", - "style_property_serializer.h", - "style_property_shorthand_custom.cc", - "style_recalc.cc", - "style_recalc.h", - "style_recalc_root.cc", - "style_recalc_root.h", - "style_rule.cc", - "style_rule.h", - "style_rule_css_style_declaration.cc", - "style_rule_css_style_declaration.h", - "style_rule_import.cc", - "style_rule_import.h", - "style_rule_keyframe.cc", - "style_rule_keyframe.h", - "style_rule_namespace.h", - "style_sheet.cc", - "style_sheet.h", - "style_sheet_candidate.cc", - "style_sheet_candidate.h", - "style_sheet_collection.cc", - "style_sheet_collection.h", - "style_sheet_contents.cc", - "style_sheet_contents.h", - "style_sheet_list.cc", - "style_sheet_list.h", - "style_traversal_root.cc", - "style_traversal_root.h", - "tree_scope_style_sheet_collection.cc", - "tree_scope_style_sheet_collection.h", - "vision_deficiency.cc", - "vision_deficiency.h", - "zoom_adjusted_pixel_value.h", - ] -} - -blink_core_tests("unit_tests") { - sources = [ - "active_style_sheets_test.cc", - "affected_by_pseudo_test.cc", - "computed_style_css_value_mapping_test.cc", - "css_computed_style_declaration_test.cc", - "css_element_offset_value_test.cc", - "css_font_face_source_test.cc", - "css_gradient_value_test.cc", - "css_id_selector_value_test.cc", - "css_invalid_variable_value_test.cc", - "css_light_dark_value_pair_test.cc", - "css_math_expression_node_test.cc", - "css_page_rule_test.cc", - "css_paint_value_test.cc", - "css_primitive_value_test.cc", - "css_property_name_test.cc", - "css_property_value_set_test.cc", - "css_selector_test.cc", - "css_selector_watch_test.cc", - "css_style_declaration_test.cc", - "css_style_sheet_test.cc", - "css_syntax_string_parser_test.cc", - "cssom/computed_style_property_map_test.cc", - "cssom/cross_thread_style_value_test.cc", - "cssom/css_math_invert_test.cc", - "cssom/css_math_negate_test.cc", - "cssom/css_numeric_value_type_test.cc", - "cssom/css_resource_value_test.cc", - "cssom/css_style_image_value_test.cc", - "cssom/css_unit_value_test.cc", - "cssom/css_unparsed_value_test.cc", - "cssom/css_unsupported_color_value_test.cc", - "cssom/inline_style_property_map_test.cc", - "cssom/paint_worklet_style_property_map_test.cc", - "cssom/prepopulated_computed_style_property_map_test.cc", - "cssom/style_property_map_test.cc", - "drag_update_test.cc", - "font_face_cache_test.cc", - "font_size_functions_test.cc", - "font_update_invalidation_test.cc", - "invalidation/invalidation_set_test.cc", - "invalidation/pending_invalidations_test.cc", - "invalidation/style_invalidator_test.cc", - "media_feature_overrides_test.cc", - "media_query_evaluator_test.cc", - "media_query_list_test.cc", - "media_query_matcher_test.cc", - "media_query_set_test.cc", - "media_values_initial_viewport_test.cc", - "media_values_test.cc", - "parser/css_lazy_parsing_test.cc", - "parser/css_parser_fast_paths_test.cc", - "parser/css_parser_impl_test.cc", - "parser/css_parser_local_context_test.cc", - "parser/css_parser_token_stream_test.cc", - "parser/css_parser_token_test.cc", - "parser/css_property_parser_test.cc", - "parser/css_selector_parser_test.cc", - "parser/css_supports_parser_test.cc", - "parser/css_tokenizer_test.cc", - "parser/media_condition_test.cc", - "parser/sizes_attribute_parser_test.cc", - "parser/sizes_math_function_parser_test.cc", - "properties/computed_style_utils_test.cc", - "properties/css_bitset_test.cc", - "properties/css_exposure_test.cc", - "properties/css_parsing_utils_test.cc", - "properties/css_property_ref_test.cc", - "properties/css_property_test.cc", - "properties/longhands/custom_property_test.cc", - "property_registry_test.cc", - "resolver/cascade_expansion_test.cc", - "resolver/cascade_filter_test.cc", - "resolver/cascade_interpolations_test.cc", - "resolver/cascade_map_test.cc", - "resolver/cascade_priority_test.cc", - "resolver/css_variable_data_test.cc", - "resolver/font_builder_test.cc", - "resolver/font_style_resolver_test.cc", - "resolver/match_result_test.cc", - "resolver/matched_properties_cache_test.cc", - "resolver/selector_filter_parent_scope_test.cc", - "resolver/style_adjuster_test.cc", - "resolver/style_builder_test.cc", - "resolver/style_cascade_test.cc", - "resolver/style_resolver_state_test.cc", - "resolver/style_resolver_test.cc", - "rule_feature_set_test.cc", - "rule_set_test.cc", - "selector_checker_test.cc", - "selector_query_test.cc", - "style_element_test.cc", - "style_engine_test.cc", - "style_environment_variables_test.cc", - "style_rule_test.cc", - "style_sheet_contents_test.cc", - "style_traversal_root_test.cc", - "threaded/css_parser_threaded_test.cc", - "threaded/css_to_length_conversion_data_threaded_test.cc", - "threaded/filter_operation_resolver_threaded_test.cc", - "threaded/font_object_threaded_test.cc", - "threaded/text_renderer_threaded_test.cc", - ] -}
diff --git a/third_party/blink/renderer/core/css/build.gni b/third_party/blink/renderer/core/css/build.gni new file mode 100644 index 0000000..cbbf49a --- /dev/null +++ b/third_party/blink/renderer/core/css/build.gni
@@ -0,0 +1,697 @@ +# 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. + +blink_core_sources_css = [ + "abstract_property_set_css_style_declaration.cc", + "abstract_property_set_css_style_declaration.h", + "active_style_sheets.cc", + "active_style_sheets.h", + "basic_shape_functions.cc", + "basic_shape_functions.h", + "binary_data_font_face_source.cc", + "binary_data_font_face_source.h", + "computed_style_css_value_mapping.cc", + "computed_style_css_value_mapping.h", + "css_axis_value.cc", + "css_axis_value.h", + "css_basic_shape_values.cc", + "css_basic_shape_values.h", + "css_border_image.cc", + "css_border_image.h", + "css_border_image_slice_value.cc", + "css_border_image_slice_value.h", + "css_color_value.cc", + "css_color_value.h", + "css_computed_style_declaration.cc", + "css_computed_style_declaration.h", + "css_condition_rule.cc", + "css_condition_rule.h", + "css_content_distribution_value.cc", + "css_content_distribution_value.h", + "css_counter_value.cc", + "css_counter_value.h", + "css_crossfade_value.cc", + "css_crossfade_value.h", + "css_cursor_image_value.cc", + "css_cursor_image_value.h", + "css_custom_font_data.h", + "css_custom_ident_value.cc", + "css_custom_ident_value.h", + "css_custom_property_declaration.cc", + "css_custom_property_declaration.h", + "css_default_style_sheets.cc", + "css_default_style_sheets.h", + "css_element_offset_value.cc", + "css_element_offset_value.h", + "css_font_face.cc", + "css_font_face.h", + "css_font_face_rule.cc", + "css_font_face_rule.h", + "css_font_face_source.cc", + "css_font_face_source.h", + "css_font_face_src_value.cc", + "css_font_face_src_value.h", + "css_font_family_value.cc", + "css_font_family_value.h", + "css_font_feature_value.cc", + "css_font_feature_value.h", + "css_font_selector.cc", + "css_font_selector.h", + "css_font_style_range_value.cc", + "css_font_style_range_value.h", + "css_font_variation_value.cc", + "css_font_variation_value.h", + "css_function_value.cc", + "css_function_value.h", + "css_global_rule_set.cc", + "css_global_rule_set.h", + "css_gradient_value.cc", + "css_gradient_value.h", + "css_grid_auto_repeat_value.cc", + "css_grid_auto_repeat_value.h", + "css_grid_integer_repeat_value.cc", + "css_grid_integer_repeat_value.h", + "css_grid_line_names_value.cc", + "css_grid_line_names_value.h", + "css_grid_template_areas_value.cc", + "css_grid_template_areas_value.h", + "css_grouping_rule.cc", + "css_grouping_rule.h", + "css_id_selector_value.cc", + "css_id_selector_value.h", + "css_identifier_value.cc", + "css_identifier_value.h", + "css_image_generator_value.cc", + "css_image_generator_value.h", + "css_image_set_value.cc", + "css_image_set_value.h", + "css_image_value.cc", + "css_image_value.h", + "css_import_rule.cc", + "css_import_rule.h", + "css_inherited_value.cc", + "css_inherited_value.h", + "css_initial_color_value.cc", + "css_initial_color_value.h", + "css_initial_value.cc", + "css_initial_value.h", + "css_invalid_variable_value.cc", + "css_invalid_variable_value.h", + "css_keyframe_rule.cc", + "css_keyframe_rule.h", + "css_keyframe_shorthand_value.cc", + "css_keyframe_shorthand_value.h", + "css_keyframes_rule.cc", + "css_keyframes_rule.h", + "css_layout_function_value.cc", + "css_layout_function_value.h", + "css_light_dark_value_pair.cc", + "css_light_dark_value_pair.h", + "css_markup.cc", + "css_markup.h", + "css_math_expression_node.cc", + "css_math_expression_node.h", + "css_math_function_value.cc", + "css_math_function_value.h", + "css_math_operator.cc", + "css_math_operator.h", + "css_media_rule.cc", + "css_media_rule.h", + "css_namespace_rule.cc", + "css_namespace_rule.h", + "css_numeric_literal_value.cc", + "css_numeric_literal_value.h", + "css_origin_clean.h", + "css_page_rule.cc", + "css_page_rule.h", + "css_paint_image_generator.cc", + "css_paint_image_generator.h", + "css_paint_value.cc", + "css_paint_value.h", + "css_path_value.cc", + "css_path_value.h", + "css_pending_substitution_value.cc", + "css_pending_substitution_value.h", + "css_primitive_value.cc", + "css_primitive_value.h", + "css_primitive_value_mappings.h", + "css_property_equality.cc", + "css_property_equality.h", + "css_property_id_templates.h", + "css_property_name.cc", + "css_property_name.h", + "css_property_rule.cc", + "css_property_rule.h", + "css_property_source_data.cc", + "css_property_source_data.h", + "css_property_value.cc", + "css_property_value.h", + "css_property_value_set.cc", + "css_property_value_set.h", + "css_quad_value.cc", + "css_quad_value.h", + "css_ray_value.cc", + "css_ray_value.h", + "css_reflect_value.cc", + "css_reflect_value.h", + "css_reflection_direction.h", + "css_resolution_units.h", + "css_resource_fetch_restriction.h", + "css_revert_value.cc", + "css_revert_value.h", + "css_rule.cc", + "css_rule.h", + "css_rule_list.h", + "css_scroll_timeline_rule.cc", + "css_scroll_timeline_rule.h", + "css_segmented_font_face.cc", + "css_segmented_font_face.h", + "css_selector.cc", + "css_selector.h", + "css_selector_list.cc", + "css_selector_list.h", + "css_selector_watch.cc", + "css_selector_watch.h", + "css_shadow_value.cc", + "css_shadow_value.h", + "css_string_value.cc", + "css_string_value.h", + "css_style_declaration.cc", + "css_style_declaration.h", + "css_style_rule.cc", + "css_style_rule.h", + "css_style_sheet.cc", + "css_style_sheet.h", + "css_supports_rule.cc", + "css_supports_rule.h", + "css_syntax_component.h", + "css_syntax_definition.cc", + "css_syntax_definition.h", + "css_syntax_string_parser.cc", + "css_syntax_string_parser.h", + "css_timing_function_value.cc", + "css_timing_function_value.h", + "css_to_length_conversion_data.cc", + "css_to_length_conversion_data.h", + "css_unicode_range_value.cc", + "css_unicode_range_value.h", + "css_unset_value.cc", + "css_unset_value.h", + "css_uri_value.cc", + "css_uri_value.h", + "css_value.cc", + "css_value.h", + "css_value_id_mappings.h", + "css_value_list.cc", + "css_value_list.h", + "css_value_pair.cc", + "css_value_pair.h", + "css_value_pool.cc", + "css_value_pool.h", + "css_variable_data.cc", + "css_variable_data.h", + "css_variable_reference_value.cc", + "css_variable_reference_value.h", + "cssom/computed_style_property_map.cc", + "cssom/computed_style_property_map.h", + "cssom/cross_thread_color_value.cc", + "cssom/cross_thread_color_value.h", + "cssom/cross_thread_keyword_value.cc", + "cssom/cross_thread_keyword_value.h", + "cssom/cross_thread_style_value.h", + "cssom/cross_thread_unit_value.cc", + "cssom/cross_thread_unit_value.h", + "cssom/cross_thread_unparsed_value.cc", + "cssom/cross_thread_unparsed_value.h", + "cssom/cross_thread_unsupported_value.cc", + "cssom/cross_thread_unsupported_value.h", + "cssom/css_keyword_value.cc", + "cssom/css_keyword_value.h", + "cssom/css_math_invert.cc", + "cssom/css_math_invert.h", + "cssom/css_math_max.cc", + "cssom/css_math_max.h", + "cssom/css_math_min.cc", + "cssom/css_math_min.h", + "cssom/css_math_negate.cc", + "cssom/css_math_negate.h", + "cssom/css_math_product.cc", + "cssom/css_math_product.h", + "cssom/css_math_sum.cc", + "cssom/css_math_sum.h", + "cssom/css_math_value.cc", + "cssom/css_math_value.h", + "cssom/css_matrix_component.cc", + "cssom/css_matrix_component.h", + "cssom/css_numeric_value.cc", + "cssom/css_numeric_value.h", + "cssom/css_numeric_value_type.cc", + "cssom/css_numeric_value_type.h", + "cssom/css_perspective.cc", + "cssom/css_perspective.h", + "cssom/css_position_value.cc", + "cssom/css_position_value.h", + "cssom/css_resource_value.h", + "cssom/css_rotate.cc", + "cssom/css_rotate.h", + "cssom/css_scale.cc", + "cssom/css_scale.h", + "cssom/css_skew.cc", + "cssom/css_skew.h", + "cssom/css_skew_x.cc", + "cssom/css_skew_x.h", + "cssom/css_skew_y.cc", + "cssom/css_skew_y.h", + "cssom/css_style_image_value.cc", + "cssom/css_style_image_value.h", + "cssom/css_style_value.cc", + "cssom/css_style_value.h", + "cssom/css_style_variable_reference_value.cc", + "cssom/css_style_variable_reference_value.h", + "cssom/css_transform_component.cc", + "cssom/css_transform_component.h", + "cssom/css_transform_value.cc", + "cssom/css_transform_value.h", + "cssom/css_translate.cc", + "cssom/css_translate.h", + "cssom/css_unit_value.cc", + "cssom/css_unit_value.h", + "cssom/css_unit_values.h", + "cssom/css_unparsed_value.cc", + "cssom/css_unparsed_value.h", + "cssom/css_unsupported_color_value.cc", + "cssom/css_unsupported_color_value.h", + "cssom/css_unsupported_style_value.cc", + "cssom/css_unsupported_style_value.h", + "cssom/css_url_image_value.cc", + "cssom/css_url_image_value.h", + "cssom/cssom_keywords.h", + "cssom/cssom_types.h", + "cssom/declared_style_property_map.cc", + "cssom/declared_style_property_map.h", + "cssom/element_computed_style_map.h", + "cssom/inline_style_property_map.cc", + "cssom/inline_style_property_map.h", + "cssom/paint_worklet_deferred_image.cc", + "cssom/paint_worklet_deferred_image.h", + "cssom/paint_worklet_input.cc", + "cssom/paint_worklet_input.h", + "cssom/paint_worklet_style_property_map.cc", + "cssom/paint_worklet_style_property_map.h", + "cssom/prepopulated_computed_style_property_map.cc", + "cssom/prepopulated_computed_style_property_map.h", + "cssom/style_property_map.cc", + "cssom/style_property_map.h", + "cssom/style_property_map_read_only.h", + "cssom/style_property_map_read_only_main_thread.cc", + "cssom/style_property_map_read_only_main_thread.h", + "cssom/style_value_factory.cc", + "cssom/style_value_factory.h", + "document_style_environment_variables.cc", + "document_style_environment_variables.h", + "document_style_sheet_collection.cc", + "document_style_sheet_collection.h", + "document_style_sheet_collector.cc", + "document_style_sheet_collector.h", + "dom_window_css.cc", + "dom_window_css.h", + "element_rule_collector.cc", + "element_rule_collector.h", + "font_display.cc", + "font_display.h", + "font_face.cc", + "font_face.h", + "font_face_cache.cc", + "font_face_cache.h", + "font_face_set.cc", + "font_face_set.h", + "font_face_set_document.cc", + "font_face_set_document.h", + "font_face_set_load_event.cc", + "font_face_set_load_event.h", + "font_face_set_worker.cc", + "font_face_set_worker.h", + "font_face_source.cc", + "font_face_source.h", + "font_size_functions.cc", + "font_size_functions.h", + "hash_tools.h", + "inline_css_style_declaration.cc", + "inline_css_style_declaration.h", + "invalidation/invalidation_flags.cc", + "invalidation/invalidation_flags.h", + "invalidation/invalidation_set.cc", + "invalidation/invalidation_set.h", + "invalidation/node_invalidation_sets.h", + "invalidation/pending_invalidations.cc", + "invalidation/pending_invalidations.h", + "invalidation/style_invalidator.cc", + "invalidation/style_invalidator.h", + "keyframe_style_rule_css_style_declaration.cc", + "keyframe_style_rule_css_style_declaration.h", + "layout_tree_rebuild_root.cc", + "layout_tree_rebuild_root.h", + "local_font_face_source.cc", + "local_font_face_source.h", + "media_feature_overrides.cc", + "media_feature_overrides.h", + "media_list.cc", + "media_list.h", + "media_query.cc", + "media_query.h", + "media_query_evaluator.cc", + "media_query_evaluator.h", + "media_query_exp.cc", + "media_query_exp.h", + "media_query_list.cc", + "media_query_list.h", + "media_query_list_event.h", + "media_query_list_listener.cc", + "media_query_list_listener.h", + "media_query_matcher.cc", + "media_query_matcher.h", + "media_value_change.h", + "media_values.cc", + "media_values.h", + "media_values_cached.cc", + "media_values_cached.h", + "media_values_dynamic.cc", + "media_values_dynamic.h", + "media_values_initial_viewport.cc", + "media_values_initial_viewport.h", + "offscreen_font_selector.cc", + "offscreen_font_selector.h", + "page_rule_collector.cc", + "page_rule_collector.h", + "parser/at_rule_descriptor_parser.cc", + "parser/at_rule_descriptor_parser.h", + "parser/css_at_rule_id.cc", + "parser/css_at_rule_id.h", + "parser/css_lazy_parsing_state.cc", + "parser/css_lazy_parsing_state.h", + "parser/css_lazy_property_parser_impl.cc", + "parser/css_lazy_property_parser_impl.h", + "parser/css_parser.cc", + "parser/css_parser.h", + "parser/css_parser_context.cc", + "parser/css_parser_context.h", + "parser/css_parser_fast_paths.cc", + "parser/css_parser_fast_paths.h", + "parser/css_parser_idioms.cc", + "parser/css_parser_idioms.h", + "parser/css_parser_impl.cc", + "parser/css_parser_impl.h", + "parser/css_parser_local_context.cc", + "parser/css_parser_local_context.h", + "parser/css_parser_mode.h", + "parser/css_parser_observer.h", + "parser/css_parser_selector.cc", + "parser/css_parser_selector.h", + "parser/css_parser_token.cc", + "parser/css_parser_token.h", + "parser/css_parser_token_range.cc", + "parser/css_parser_token_range.h", + "parser/css_parser_token_stream.cc", + "parser/css_parser_token_stream.h", + "parser/css_property_parser.cc", + "parser/css_property_parser.h", + "parser/css_selector_parser.cc", + "parser/css_selector_parser.h", + "parser/css_supports_parser.cc", + "parser/css_supports_parser.h", + "parser/css_tokenized_value.h", + "parser/css_tokenizer.cc", + "parser/css_tokenizer.h", + "parser/css_tokenizer_input_stream.cc", + "parser/css_tokenizer_input_stream.h", + "parser/css_variable_parser.cc", + "parser/css_variable_parser.h", + "parser/font_variant_east_asian_parser.h", + "parser/font_variant_ligatures_parser.h", + "parser/font_variant_numeric_parser.h", + "parser/media_query_block_watcher.cc", + "parser/media_query_block_watcher.h", + "parser/media_query_parser.cc", + "parser/media_query_parser.h", + "parser/sizes_attribute_parser.cc", + "parser/sizes_attribute_parser.h", + "parser/sizes_math_function_parser.cc", + "parser/sizes_math_function_parser.h", + "part_names.cc", + "part_names.h", + "properties/computed_style_utils.cc", + "properties/computed_style_utils.h", + "properties/css_bitset.h", + "properties/css_direction_aware_resolver.cc", + "properties/css_direction_aware_resolver.h", + "properties/css_exposure.h", + "properties/css_parsing_utils.cc", + "properties/css_parsing_utils.h", + "properties/css_property.cc", + "properties/css_property.h", + "properties/css_property_ref.cc", + "properties/css_property_ref.h", + "properties/css_unresolved_property.cc", + "properties/css_unresolved_property.h", + "properties/longhand.h", + "properties/longhands/custom_property.cc", + "properties/longhands/custom_property.h", + "properties/longhands/longhands_custom.cc", + "properties/longhands/variable.cc", + "properties/longhands/variable.h", + "properties/shorthand.h", + "properties/shorthands/shorthands_custom.cc", + "properties/style_building_utils.h", + "property_registration.cc", + "property_registration.h", + "property_registry.cc", + "property_registry.h", + "property_set_css_style_declaration.cc", + "property_set_css_style_declaration.h", + "pseudo_style_request.h", + "remote_font_face_source.cc", + "remote_font_face_source.h", + "resolver/cascade_expansion.cc", + "resolver/cascade_expansion.h", + "resolver/cascade_filter.h", + "resolver/cascade_interpolations.h", + "resolver/cascade_map.cc", + "resolver/cascade_map.h", + "resolver/cascade_origin.h", + "resolver/cascade_priority.h", + "resolver/cascade_resolver.cc", + "resolver/cascade_resolver.h", + "resolver/css_to_style_map.cc", + "resolver/css_to_style_map.h", + "resolver/element_resolve_context.cc", + "resolver/element_resolve_context.h", + "resolver/element_style_resources.cc", + "resolver/element_style_resources.h", + "resolver/filter_operation_resolver.cc", + "resolver/filter_operation_resolver.h", + "resolver/font_builder.cc", + "resolver/font_builder.h", + "resolver/font_style_resolver.cc", + "resolver/font_style_resolver.h", + "resolver/match_request.h", + "resolver/match_result.cc", + "resolver/match_result.h", + "resolver/matched_properties_cache.cc", + "resolver/matched_properties_cache.h", + "resolver/media_query_result.h", + "resolver/scoped_style_resolver.cc", + "resolver/scoped_style_resolver.h", + "resolver/selector_filter_parent_scope.cc", + "resolver/selector_filter_parent_scope.h", + "resolver/style_adjuster.cc", + "resolver/style_adjuster.h", + "resolver/style_builder.cc", + "resolver/style_builder.h", + "resolver/style_builder_converter.cc", + "resolver/style_builder_converter.h", + "resolver/style_cascade.cc", + "resolver/style_cascade.h", + "resolver/style_resolver.cc", + "resolver/style_resolver.h", + "resolver/style_resolver_state.cc", + "resolver/style_resolver_state.h", + "resolver/style_resolver_stats.cc", + "resolver/style_resolver_stats.h", + "resolver/style_rule_usage_tracker.cc", + "resolver/style_rule_usage_tracker.h", + "resolver/transform_builder.cc", + "resolver/transform_builder.h", + "resolver/viewport_style_resolver.cc", + "resolver/viewport_style_resolver.h", + "rule_feature_set.cc", + "rule_feature_set.h", + "rule_set.cc", + "rule_set.h", + "select_rule_feature_set.cc", + "select_rule_feature_set.h", + "selector_checker.cc", + "selector_checker.h", + "selector_filter.cc", + "selector_filter.h", + "selector_query.cc", + "selector_query.h", + "shadow_tree_style_sheet_collection.cc", + "shadow_tree_style_sheet_collection.h", + "style_attribute_mutation_scope.cc", + "style_attribute_mutation_scope.h", + "style_auto_color.h", + "style_change_reason.cc", + "style_change_reason.h", + "style_color.cc", + "style_color.h", + "style_element.cc", + "style_element.h", + "style_engine.cc", + "style_engine.h", + "style_engine_context.cc", + "style_engine_context.h", + "style_environment_variables.cc", + "style_environment_variables.h", + "style_invalidation_root.cc", + "style_invalidation_root.h", + "style_media.cc", + "style_media.h", + "style_property_serializer.cc", + "style_property_serializer.h", + "style_property_shorthand_custom.cc", + "style_recalc.cc", + "style_recalc.h", + "style_recalc_root.cc", + "style_recalc_root.h", + "style_rule.cc", + "style_rule.h", + "style_rule_css_style_declaration.cc", + "style_rule_css_style_declaration.h", + "style_rule_import.cc", + "style_rule_import.h", + "style_rule_keyframe.cc", + "style_rule_keyframe.h", + "style_rule_namespace.h", + "style_sheet.cc", + "style_sheet.h", + "style_sheet_candidate.cc", + "style_sheet_candidate.h", + "style_sheet_collection.cc", + "style_sheet_collection.h", + "style_sheet_contents.cc", + "style_sheet_contents.h", + "style_sheet_list.cc", + "style_sheet_list.h", + "style_traversal_root.cc", + "style_traversal_root.h", + "tree_scope_style_sheet_collection.cc", + "tree_scope_style_sheet_collection.h", + "vision_deficiency.cc", + "vision_deficiency.h", + "zoom_adjusted_pixel_value.h", +] + +blink_core_tests_css = [ + "active_style_sheets_test.cc", + "affected_by_pseudo_test.cc", + "computed_style_css_value_mapping_test.cc", + "css_computed_style_declaration_test.cc", + "css_element_offset_value_test.cc", + "css_font_face_source_test.cc", + "css_gradient_value_test.cc", + "css_id_selector_value_test.cc", + "css_invalid_variable_value_test.cc", + "css_light_dark_value_pair_test.cc", + "css_math_expression_node_test.cc", + "css_page_rule_test.cc", + "css_paint_value_test.cc", + "css_primitive_value_test.cc", + "css_property_name_test.cc", + "css_property_value_set_test.cc", + "css_selector_test.cc", + "css_selector_watch_test.cc", + "css_style_declaration_test.cc", + "css_style_sheet_test.cc", + "css_syntax_string_parser_test.cc", + "cssom/computed_style_property_map_test.cc", + "cssom/cross_thread_style_value_test.cc", + "cssom/css_math_invert_test.cc", + "cssom/css_math_negate_test.cc", + "cssom/css_numeric_value_type_test.cc", + "cssom/css_resource_value_test.cc", + "cssom/css_style_image_value_test.cc", + "cssom/css_unit_value_test.cc", + "cssom/css_unparsed_value_test.cc", + "cssom/css_unsupported_color_value_test.cc", + "cssom/inline_style_property_map_test.cc", + "cssom/paint_worklet_style_property_map_test.cc", + "cssom/prepopulated_computed_style_property_map_test.cc", + "cssom/style_property_map_test.cc", + "drag_update_test.cc", + "font_face_cache_test.cc", + "font_size_functions_test.cc", + "font_update_invalidation_test.cc", + "invalidation/invalidation_set_test.cc", + "invalidation/pending_invalidations_test.cc", + "invalidation/style_invalidator_test.cc", + "media_feature_overrides_test.cc", + "media_query_evaluator_test.cc", + "media_query_list_test.cc", + "media_query_matcher_test.cc", + "media_query_set_test.cc", + "media_values_initial_viewport_test.cc", + "media_values_test.cc", + "parser/css_lazy_parsing_test.cc", + "parser/css_parser_fast_paths_test.cc", + "parser/css_parser_impl_test.cc", + "parser/css_parser_local_context_test.cc", + "parser/css_parser_token_stream_test.cc", + "parser/css_parser_token_test.cc", + "parser/css_property_parser_test.cc", + "parser/css_selector_parser_test.cc", + "parser/css_supports_parser_test.cc", + "parser/css_tokenizer_test.cc", + "parser/media_condition_test.cc", + "parser/sizes_attribute_parser_test.cc", + "parser/sizes_math_function_parser_test.cc", + "properties/computed_style_utils_test.cc", + "properties/css_bitset_test.cc", + "properties/css_exposure_test.cc", + "properties/css_parsing_utils_test.cc", + "properties/css_property_ref_test.cc", + "properties/css_property_test.cc", + "properties/longhands/custom_property_test.cc", + "property_registry_test.cc", + "resolver/cascade_expansion_test.cc", + "resolver/cascade_filter_test.cc", + "resolver/cascade_interpolations_test.cc", + "resolver/cascade_map_test.cc", + "resolver/cascade_priority_test.cc", + "resolver/css_variable_data_test.cc", + "resolver/font_builder_test.cc", + "resolver/font_style_resolver_test.cc", + "resolver/match_result_test.cc", + "resolver/matched_properties_cache_test.cc", + "resolver/selector_filter_parent_scope_test.cc", + "resolver/style_adjuster_test.cc", + "resolver/style_builder_test.cc", + "resolver/style_cascade_test.cc", + "resolver/style_resolver_state_test.cc", + "resolver/style_resolver_test.cc", + "rule_feature_set_test.cc", + "rule_set_test.cc", + "selector_checker_test.cc", + "selector_query_test.cc", + "style_element_test.cc", + "style_engine_test.cc", + "style_environment_variables_test.cc", + "style_rule_test.cc", + "style_sheet_contents_test.cc", + "style_traversal_root_test.cc", + "threaded/css_parser_threaded_test.cc", + "threaded/css_to_length_conversion_data_threaded_test.cc", + "threaded/filter_operation_resolver_threaded_test.cc", + "threaded/font_object_threaded_test.cc", + "threaded/text_renderer_threaded_test.cc", +]
diff --git a/third_party/blink/renderer/core/css/rule_feature_set_test.cc b/third_party/blink/renderer/core/css/rule_feature_set_test.cc index 1bd43c3..6270de9c 100644 --- a/third_party/blink/renderer/core/css/rule_feature_set_test.cc +++ b/third_party/blink/renderer/core/css/rule_feature_set_test.cc
@@ -1566,6 +1566,7 @@ {":is(.a, *) .b", ".a .b, * .b"}, {":is(.a + .b, .c) *", ".a + .b *, .c *"}, {":is(.a + *, .c) *", ".a + * *, .c *"}, + {".a + .b + .c:is(*)", ".a + .b + .c"}, // TODO(andruud): At the time of writing these :not() tests, we only // support a single simple selector inside :not(). When a complex selector // list is supported, some refs should be rewritten to be less strange. @@ -1582,6 +1583,20 @@ // as a single :not() level in terms of invalidation: {".a :not(:is(:not(.b), .c))", ".a :not(.b), .a :not(.c)"}, {":not(:is(:not(.a), .b)) .c", ":not(.a) .c, :not(.b) .c"}, + {".a :is(:hover)", ".a :hover"}, + {":is(:hover) .a", ":hover .a"}, + {"button:is(:hover, :focus)", "button:hover, button:focus"}, + {".a :is(.b, :hover)", ".a .b, .a :hover"}, + {".a + :is(:hover) + .c", ".a + :hover + .c"}, + {".a + :is(.b, :hover) + .c", ".a + .b + .c, .a + :hover + .c"}, + {":is(ol, li)::before", "ol::before, li::before"}, + {":is(.a + .b, .c)::before", ".a + .b::before, .c::before"}, + {":is(ol, li)::-internal-input-suggested", + "ol::-internal-input-suggested, li::-internal-input-suggested"}, + {":is([foo], [bar])", "[foo], [bar]"}, + {".a :is([foo], [bar])", ".a [foo], .a [bar]"}, + {":is([foo], [bar]) .a", "[foo] .a, [bar] .a"}, + {":is([a], [b]) :is([c], [d])", "[a] [c], [a] [d], [b] [c], [b] [d]"}, // clang-format on };
diff --git a/third_party/blink/renderer/core/display_lock/BUILD.gn b/third_party/blink/renderer/core/display_lock/BUILD.gn deleted file mode 100644 index d70b8cd..0000000 --- a/third_party/blink/renderer/core/display_lock/BUILD.gn +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2018 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("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("display_lock") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "display_lock_context.cc", - "display_lock_context.h", - "display_lock_document_state.cc", - "display_lock_document_state.h", - "display_lock_utilities.cc", - "display_lock_utilities.h", - ] - - public_deps = [ - "//third_party/blink/renderer/bindings/core/v8:bindings_core_v8_generated", - ] -}
diff --git a/third_party/blink/renderer/core/display_lock/build.gni b/third_party/blink/renderer/core/display_lock/build.gni new file mode 100644 index 0000000..a1c3c5e --- /dev/null +++ b/third_party/blink/renderer/core/display_lock/build.gni
@@ -0,0 +1,12 @@ +# 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. + +blink_core_sources_display_lock = [ + "display_lock_context.cc", + "display_lock_context.h", + "display_lock_document_state.cc", + "display_lock_document_state.h", + "display_lock_utilities.cc", + "display_lock_utilities.h", +]
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn deleted file mode 100644 index 13b08b8..0000000 --- a/third_party/blink/renderer/core/dom/BUILD.gn +++ /dev/null
@@ -1,329 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/config/compiler/compiler.gni") -import("//third_party/blink/renderer/core/core.gni") - -# This target always builds with -O2. Hot path functions that are sensitive -# to the difference between optimiation profiles should be placed here. -# -# Some functions are extremely sensitive to the optimizer profile setting on -# architectures like ARM32. For example, in ARM32 using -Oz instead of -O2 -# results in different choices for inlining, loop vectorization, and register -# spilling that can yield 10%-15% regressions in blink_perf benchmarks. -# -# In element.cc, the regressions are caused by just a small set of hot path -# functions. -# -# Unfortunately selective annotation of optimizations (eg ALWAYS_INLINE, or -# #prgama clang loop) have been unsuccessful at bridging the performance gap -# and applying -O2 wholesale to all of element.o creates a very large binary -# size increase (83k) without additional performance gains over just building -# a small set of hotpath functions with -O2. -# -# If adding more translations units, the convention is, for a given foo.cc -# file, create a foo-hot.cc file which can hold any functions that require -# -O2 optimiziation. If there is common inlined implementations, put this in -# foo-inl.h and include that in both foo.cc and foo-hot.cc. -blink_core_sources("dom_hotpath") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "element-hot.cc", - "element-inl.h", - ] - - # TODO(ajwong) this is of mirror https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/core.gni;l=26 - # to undo the configs which is fragile. Find a better way. - if (is_android && !is_debug) { - configs -= [ "//build/config/compiler:default_optimization" ] - configs += [ "//build/config/compiler:optimize_max" ] - } -} - -blink_core_sources("dom") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "abort_controller.cc", - "abort_controller.h", - "abort_signal.cc", - "abort_signal.h", - "attr.cc", - "attr.h", - "attribute.h", - "attribute_collection.h", - "beforeunload_event_listener.cc", - "beforeunload_event_listener.h", - "cdata_section.cc", - "cdata_section.h", - "character_data.cc", - "character_data.h", - "child_frame_disconnector.cc", - "child_frame_disconnector.h", - "child_list_mutation_scope.cc", - "child_list_mutation_scope.h", - "child_node.h", - "child_node_list.cc", - "child_node_list.h", - "class_collection.cc", - "class_collection.h", - "collection_index_cache.h", - "comment.cc", - "comment.h", - "container_node.cc", - "container_node.h", - "context_features.cc", - "context_features.h", - "context_features_client_impl.cc", - "context_features_client_impl.h", - "create_element_flags.h", - "dataset_dom_string_map.cc", - "dataset_dom_string_map.h", - "decoded_data_document_parser.cc", - "decoded_data_document_parser.h", - "distributed_nodes.cc", - "distributed_nodes.h", - "document.cc", - "document.h", - "document_and_element_event_handlers.h", - "document_data.h", - "document_encoding_data.cc", - "document_encoding_data.h", - "document_fragment.cc", - "document_fragment.h", - "document_init.cc", - "document_init.h", - "document_lifecycle.cc", - "document_lifecycle.h", - "document_or_shadow_root.h", - "document_parser.cc", - "document_parser.h", - "document_parser_client.h", - "document_parser_timing.cc", - "document_parser_timing.h", - "document_statistics_collector.cc", - "document_statistics_collector.h", - "document_timing.cc", - "document_timing.h", - "document_type.cc", - "document_type.h", - "dom_exception.cc", - "dom_exception.h", - "dom_high_res_time_stamp.h", - "dom_implementation.cc", - "dom_implementation.h", - "dom_node_ids.cc", - "dom_node_ids.h", - "dom_string_list.cc", - "dom_string_list.h", - "dom_string_map.cc", - "dom_string_map.h", - "dom_time_stamp.h", - "dom_token_list.cc", - "dom_token_list.h", - "element.cc", - "element.h", - "element_data.cc", - "element_data.h", - "element_data_cache.cc", - "element_data_cache.h", - "element_rare_data.cc", - "element_rare_data.h", - "element_traversal.h", - "empty_node_list.cc", - "empty_node_list.h", - "events/add_event_listener_options_defaults.h", - "events/add_event_listener_options_resolved.cc", - "events/add_event_listener_options_resolved.h", - "events/custom_event.cc", - "events/custom_event.h", - "events/event.cc", - "events/event.h", - "events/event_dispatch_forbidden_scope.cc", - "events/event_dispatch_forbidden_scope.h", - "events/event_dispatch_result.h", - "events/event_dispatcher.cc", - "events/event_dispatcher.h", - "events/event_listener.h", - "events/event_listener_map.cc", - "events/event_listener_map.h", - "events/event_path.cc", - "events/event_path.h", - "events/event_queue.cc", - "events/event_queue.h", - "events/event_target.cc", - "events/event_target.h", - "events/event_target_impl.cc", - "events/event_target_impl.h", - "events/native_event_listener.h", - "events/node_event_context.cc", - "events/node_event_context.h", - "events/registered_event_listener.cc", - "events/registered_event_listener.h", - "events/scoped_event_queue.cc", - "events/scoped_event_queue.h", - "events/simulated_click_options.h", - "events/tree_scope_event_context.cc", - "events/tree_scope_event_context.h", - "events/window_event_context.cc", - "events/window_event_context.h", - "first_letter_pseudo_element.cc", - "first_letter_pseudo_element.h", - "flat_tree_node_data.cc", - "flat_tree_node_data.h", - "flat_tree_traversal.cc", - "flat_tree_traversal.h", - "flat_tree_traversal_forbidden_scope.h", - "focus_params.h", - "frame_request_callback_collection.cc", - "frame_request_callback_collection.h", - "global_event_handlers.h", - "icon_url.cc", - "icon_url.h", - "id_target_observer.cc", - "id_target_observer.h", - "id_target_observer_registry.cc", - "id_target_observer_registry.h", - "idle_deadline.cc", - "idle_deadline.h", - "ignore_opens_during_unload_count_incrementer.h", - "increment_load_event_delay_count.cc", - "increment_load_event_delay_count.h", - "iterator.h", - "layout_tree_builder.cc", - "layout_tree_builder.h", - "layout_tree_builder_traversal.cc", - "layout_tree_builder_traversal.h", - "live_node_list.cc", - "live_node_list.h", - "live_node_list_base.cc", - "live_node_list_base.h", - "live_node_list_registry.cc", - "live_node_list_registry.h", - "mutation_observer.cc", - "mutation_observer.h", - "mutation_observer_interest_group.cc", - "mutation_observer_interest_group.h", - "mutation_observer_registration.cc", - "mutation_observer_registration.h", - "mutation_record.cc", - "mutation_record.h", - "name_node_list.cc", - "name_node_list.h", - "named_node_map.cc", - "named_node_map.h", - "names_map.cc", - "names_map.h", - "node.cc", - "node.h", - "node_child_removal_tracker.cc", - "node_child_removal_tracker.h", - "node_computed_style.h", - "node_iterator.cc", - "node_iterator.h", - "node_iterator_base.cc", - "node_iterator_base.h", - "node_list.h", - "node_lists_node_data.cc", - "node_lists_node_data.h", - "node_rare_data.cc", - "node_rare_data.h", - "node_traversal.cc", - "node_traversal.h", - "node_traversal_strategy.h", - "node_with_index.h", - "non_document_type_child_node.h", - "non_element_parent_node.h", - "nth_index_cache.cc", - "nth_index_cache.h", - "parent_node.h", - "parser_content_policy.h", - "presentation_attribute_style.cc", - "presentation_attribute_style.h", - "processing_instruction.cc", - "processing_instruction.h", - "pseudo_element.cc", - "pseudo_element.h", - "pseudo_element_data.h", - "qualified_name.cc", - "qualified_name.h", - "range.cc", - "range.h", - "range_boundary_point.h", - "raw_data_document_parser.h", - "scoped_window_focus_allowed_indicator.h", - "scriptable_document_parser.cc", - "scriptable_document_parser.h", - "scripted_animation_controller.cc", - "scripted_animation_controller.h", - "scripted_idle_task_controller.cc", - "scripted_idle_task_controller.h", - "shadow_root.cc", - "shadow_root.h", - "shadow_root_v0.cc", - "shadow_root_v0.h", - "sink_document.cc", - "sink_document.h", - "slot_assignment.cc", - "slot_assignment.h", - "slot_assignment_engine.cc", - "slot_assignment_engine.h", - "slot_assignment_recalc_forbidden_scope.h", - "space_split_string.cc", - "space_split_string.h", - "static_node_list.h", - "static_range.cc", - "static_range.h", - "synchronous_mutation_observer.cc", - "synchronous_mutation_observer.h", - "tag_collection.cc", - "tag_collection.h", - "task_type_traits.h", - "template_content_document_fragment.h", - "text.cc", - "text.h", - "text_link_colors.cc", - "text_link_colors.h", - "throw_on_dynamic_markup_insertion_count_incrementer.h", - "transform_source.h", - "transform_source_libxslt.cc", - "traversal_range.h", - "tree_ordered_list.cc", - "tree_ordered_list.h", - "tree_ordered_map.cc", - "tree_ordered_map.h", - "tree_scope.cc", - "tree_scope.h", - "tree_scope_adopter.cc", - "tree_scope_adopter.h", - "tree_walker.cc", - "tree_walker.h", - "user_action_element_set.cc", - "user_action_element_set.h", - "v0_insertion_point.cc", - "v0_insertion_point.h", - "visited_link_state.cc", - "visited_link_state.h", - "weak_identifier_map.h", - "whitespace_attacher.cc", - "whitespace_attacher.h", - "xml_document.cc", - "xml_document.h", - ] - - public_deps = [ - "//third_party/blink/public/mojom:mojom_core_blink", - - # Needed to generate included files, e.g. add_event_listener_options.h - "//third_party/blink/renderer/bindings/core/v8:bindings_core_v8_generated", - ] - - deps = [ - ":dom_hotpath", - "//services/metrics/public/cpp:metrics_cpp", - "//services/metrics/public/cpp:ukm_builders", - "//services/metrics/public/mojom", - ] -}
diff --git a/third_party/blink/renderer/core/dom/build.gni b/third_party/blink/renderer/core/dom/build.gni new file mode 100644 index 0000000..cfee197 --- /dev/null +++ b/third_party/blink/renderer/core/dom/build.gni
@@ -0,0 +1,299 @@ +# 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. + +import("//build/config/compiler/compiler.gni") + +# This target always builds with -O2. Hot path functions that are sensitive +# to the difference between optimiation profiles should be placed here. +# +# Some functions are extremely sensitive to the optimizer profile setting on +# architectures like ARM32. For example, in ARM32 using -Oz instead of -O2 +# results in different choices for inlining, loop vectorization, and register +# spilling that can yield 10%-15% regressions in blink_perf benchmarks. +# +# In element.cc, the regressions are caused by just a small set of hot path +# functions. +# +# Unfortunately selective annotation of optimizations (eg ALWAYS_INLINE, or +# #prgama clang loop) have been unsuccessful at bridging the performance gap +# and applying -O2 wholesale to all of element.o creates a very large binary +# size increase (83k) without additional performance gains over just building +# a small set of hotpath functions with -O2. +# +# If adding more translations units, the convention is, for a given foo.cc +# file, create a foo-hot.cc file which can hold any functions that require +# -O2 optimiziation. If there is common inlined implementations, put this in +# foo-inl.h and include that in both foo.cc and foo-hot.cc. +blink_core_hot_sources_dom = [ + "element-hot.cc", + "element-inl.h", +] + +blink_core_sources_dom = [ + "abort_controller.cc", + "abort_controller.h", + "abort_signal.cc", + "abort_signal.h", + "attr.cc", + "attr.h", + "attribute.h", + "attribute_collection.h", + "beforeunload_event_listener.cc", + "beforeunload_event_listener.h", + "cdata_section.cc", + "cdata_section.h", + "character_data.cc", + "character_data.h", + "child_frame_disconnector.cc", + "child_frame_disconnector.h", + "child_list_mutation_scope.cc", + "child_list_mutation_scope.h", + "child_node.h", + "child_node_list.cc", + "child_node_list.h", + "class_collection.cc", + "class_collection.h", + "collection_index_cache.h", + "comment.cc", + "comment.h", + "container_node.cc", + "container_node.h", + "context_features.cc", + "context_features.h", + "context_features_client_impl.cc", + "context_features_client_impl.h", + "create_element_flags.h", + "dataset_dom_string_map.cc", + "dataset_dom_string_map.h", + "decoded_data_document_parser.cc", + "decoded_data_document_parser.h", + "distributed_nodes.cc", + "distributed_nodes.h", + "document.cc", + "document.h", + "document_and_element_event_handlers.h", + "document_data.h", + "document_encoding_data.cc", + "document_encoding_data.h", + "document_fragment.cc", + "document_fragment.h", + "document_init.cc", + "document_init.h", + "document_lifecycle.cc", + "document_lifecycle.h", + "document_or_shadow_root.h", + "document_parser.cc", + "document_parser.h", + "document_parser_client.h", + "document_parser_timing.cc", + "document_parser_timing.h", + "document_statistics_collector.cc", + "document_statistics_collector.h", + "document_timing.cc", + "document_timing.h", + "document_type.cc", + "document_type.h", + "dom_exception.cc", + "dom_exception.h", + "dom_high_res_time_stamp.h", + "dom_implementation.cc", + "dom_implementation.h", + "dom_node_ids.cc", + "dom_node_ids.h", + "dom_string_list.cc", + "dom_string_list.h", + "dom_string_map.cc", + "dom_string_map.h", + "dom_time_stamp.h", + "dom_token_list.cc", + "dom_token_list.h", + "element.cc", + "element.h", + "element_data.cc", + "element_data.h", + "element_data_cache.cc", + "element_data_cache.h", + "element_rare_data.cc", + "element_rare_data.h", + "element_traversal.h", + "empty_node_list.cc", + "empty_node_list.h", + "events/add_event_listener_options_defaults.h", + "events/add_event_listener_options_resolved.cc", + "events/add_event_listener_options_resolved.h", + "events/custom_event.cc", + "events/custom_event.h", + "events/event.cc", + "events/event.h", + "events/event_dispatch_forbidden_scope.cc", + "events/event_dispatch_forbidden_scope.h", + "events/event_dispatch_result.h", + "events/event_dispatcher.cc", + "events/event_dispatcher.h", + "events/event_listener.h", + "events/event_listener_map.cc", + "events/event_listener_map.h", + "events/event_path.cc", + "events/event_path.h", + "events/event_queue.cc", + "events/event_queue.h", + "events/event_target.cc", + "events/event_target.h", + "events/event_target_impl.cc", + "events/event_target_impl.h", + "events/native_event_listener.h", + "events/node_event_context.cc", + "events/node_event_context.h", + "events/registered_event_listener.cc", + "events/registered_event_listener.h", + "events/scoped_event_queue.cc", + "events/scoped_event_queue.h", + "events/simulated_click_options.h", + "events/tree_scope_event_context.cc", + "events/tree_scope_event_context.h", + "events/window_event_context.cc", + "events/window_event_context.h", + "first_letter_pseudo_element.cc", + "first_letter_pseudo_element.h", + "flat_tree_node_data.cc", + "flat_tree_node_data.h", + "flat_tree_traversal.cc", + "flat_tree_traversal.h", + "flat_tree_traversal_forbidden_scope.h", + "focus_params.h", + "frame_request_callback_collection.cc", + "frame_request_callback_collection.h", + "global_event_handlers.h", + "icon_url.cc", + "icon_url.h", + "id_target_observer.cc", + "id_target_observer.h", + "id_target_observer_registry.cc", + "id_target_observer_registry.h", + "idle_deadline.cc", + "idle_deadline.h", + "ignore_opens_during_unload_count_incrementer.h", + "increment_load_event_delay_count.cc", + "increment_load_event_delay_count.h", + "iterator.h", + "layout_tree_builder.cc", + "layout_tree_builder.h", + "layout_tree_builder_traversal.cc", + "layout_tree_builder_traversal.h", + "live_node_list.cc", + "live_node_list.h", + "live_node_list_base.cc", + "live_node_list_base.h", + "live_node_list_registry.cc", + "live_node_list_registry.h", + "mutation_observer.cc", + "mutation_observer.h", + "mutation_observer_interest_group.cc", + "mutation_observer_interest_group.h", + "mutation_observer_registration.cc", + "mutation_observer_registration.h", + "mutation_record.cc", + "mutation_record.h", + "name_node_list.cc", + "name_node_list.h", + "named_node_map.cc", + "named_node_map.h", + "names_map.cc", + "names_map.h", + "node.cc", + "node.h", + "node_child_removal_tracker.cc", + "node_child_removal_tracker.h", + "node_computed_style.h", + "node_iterator.cc", + "node_iterator.h", + "node_iterator_base.cc", + "node_iterator_base.h", + "node_list.h", + "node_lists_node_data.cc", + "node_lists_node_data.h", + "node_rare_data.cc", + "node_rare_data.h", + "node_traversal.cc", + "node_traversal.h", + "node_traversal_strategy.h", + "node_with_index.h", + "non_document_type_child_node.h", + "non_element_parent_node.h", + "nth_index_cache.cc", + "nth_index_cache.h", + "parent_node.h", + "parser_content_policy.h", + "presentation_attribute_style.cc", + "presentation_attribute_style.h", + "processing_instruction.cc", + "processing_instruction.h", + "pseudo_element.cc", + "pseudo_element.h", + "pseudo_element_data.h", + "qualified_name.cc", + "qualified_name.h", + "range.cc", + "range.h", + "range_boundary_point.h", + "raw_data_document_parser.h", + "scoped_window_focus_allowed_indicator.h", + "scriptable_document_parser.cc", + "scriptable_document_parser.h", + "scripted_animation_controller.cc", + "scripted_animation_controller.h", + "scripted_idle_task_controller.cc", + "scripted_idle_task_controller.h", + "shadow_root.cc", + "shadow_root.h", + "shadow_root_v0.cc", + "shadow_root_v0.h", + "sink_document.cc", + "sink_document.h", + "slot_assignment.cc", + "slot_assignment.h", + "slot_assignment_engine.cc", + "slot_assignment_engine.h", + "slot_assignment_recalc_forbidden_scope.h", + "space_split_string.cc", + "space_split_string.h", + "static_node_list.h", + "static_range.cc", + "static_range.h", + "synchronous_mutation_observer.cc", + "synchronous_mutation_observer.h", + "tag_collection.cc", + "tag_collection.h", + "task_type_traits.h", + "template_content_document_fragment.h", + "text.cc", + "text.h", + "text_link_colors.cc", + "text_link_colors.h", + "throw_on_dynamic_markup_insertion_count_incrementer.h", + "transform_source.h", + "transform_source_libxslt.cc", + "traversal_range.h", + "tree_ordered_list.cc", + "tree_ordered_list.h", + "tree_ordered_map.cc", + "tree_ordered_map.h", + "tree_scope.cc", + "tree_scope.h", + "tree_scope_adopter.cc", + "tree_scope_adopter.h", + "tree_walker.cc", + "tree_walker.h", + "user_action_element_set.cc", + "user_action_element_set.h", + "v0_insertion_point.cc", + "v0_insertion_point.h", + "visited_link_state.cc", + "visited_link_state.h", + "weak_identifier_map.h", + "whitespace_attacher.cc", + "whitespace_attacher.h", + "xml_document.cc", + "xml_document.h", +]
diff --git a/third_party/blink/renderer/core/editing/BUILD.gn b/third_party/blink/renderer/core/editing/BUILD.gn deleted file mode 100644 index dc7cf8c2f..0000000 --- a/third_party/blink/renderer/core/editing/BUILD.gn +++ /dev/null
@@ -1,466 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("editing") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "bidi_adjustment.cc", - "bidi_adjustment.h", - "caret_display_item_client.cc", - "caret_display_item_client.h", - "commands/append_node_command.cc", - "commands/append_node_command.h", - "commands/apply_block_element_command.cc", - "commands/apply_block_element_command.h", - "commands/apply_style_command.cc", - "commands/apply_style_command.h", - "commands/break_blockquote_command.cc", - "commands/break_blockquote_command.h", - "commands/clipboard_commands.cc", - "commands/clipboard_commands.h", - "commands/composite_edit_command.cc", - "commands/composite_edit_command.h", - "commands/create_link_command.cc", - "commands/create_link_command.h", - "commands/delete_from_text_node_command.cc", - "commands/delete_from_text_node_command.h", - "commands/delete_selection_command.cc", - "commands/delete_selection_command.h", - "commands/delete_selection_options.cc", - "commands/delete_selection_options.h", - "commands/document_exec_command.cc", - "commands/drag_and_drop_command.cc", - "commands/drag_and_drop_command.h", - "commands/edit_command.cc", - "commands/edit_command.h", - "commands/editing_command_type.h", - "commands/editing_commands_utilities.cc", - "commands/editing_commands_utilities.h", - "commands/editing_state.cc", - "commands/editing_state.h", - "commands/editor_command.cc", - "commands/editor_command.h", - "commands/editor_command_names.h", - "commands/format_block_command.cc", - "commands/format_block_command.h", - "commands/indent_outdent_command.cc", - "commands/indent_outdent_command.h", - "commands/insert_commands.cc", - "commands/insert_commands.h", - "commands/insert_incremental_text_command.cc", - "commands/insert_incremental_text_command.h", - "commands/insert_into_text_node_command.cc", - "commands/insert_into_text_node_command.h", - "commands/insert_line_break_command.cc", - "commands/insert_line_break_command.h", - "commands/insert_list_command.cc", - "commands/insert_list_command.h", - "commands/insert_node_before_command.cc", - "commands/insert_node_before_command.h", - "commands/insert_paragraph_separator_command.cc", - "commands/insert_paragraph_separator_command.h", - "commands/insert_text_command.cc", - "commands/insert_text_command.h", - "commands/merge_identical_elements_command.cc", - "commands/merge_identical_elements_command.h", - "commands/move_commands.cc", - "commands/move_commands.h", - "commands/remove_css_property_command.cc", - "commands/remove_css_property_command.h", - "commands/remove_format_command.cc", - "commands/remove_format_command.h", - "commands/remove_node_command.cc", - "commands/remove_node_command.h", - "commands/remove_node_preserving_children_command.cc", - "commands/remove_node_preserving_children_command.h", - "commands/replace_node_with_span_command.cc", - "commands/replace_node_with_span_command.h", - "commands/replace_selection_command.cc", - "commands/replace_selection_command.h", - "commands/selection_for_undo_step.cc", - "commands/selection_for_undo_step.h", - "commands/set_character_data_command.cc", - "commands/set_character_data_command.h", - "commands/set_node_attribute_command.cc", - "commands/set_node_attribute_command.h", - "commands/simplify_markup_command.cc", - "commands/simplify_markup_command.h", - "commands/smart_replace.h", - "commands/smart_replace_icu.cc", - "commands/split_element_command.cc", - "commands/split_element_command.h", - "commands/split_text_node_command.cc", - "commands/split_text_node_command.h", - "commands/split_text_node_containing_element_command.cc", - "commands/split_text_node_containing_element_command.h", - "commands/style_commands.cc", - "commands/style_commands.h", - "commands/typing_command.cc", - "commands/typing_command.h", - "commands/undo_stack.cc", - "commands/undo_stack.h", - "commands/undo_step.cc", - "commands/undo_step.h", - "commands/unlink_command.cc", - "commands/unlink_command.h", - "commands/wrap_contents_in_dummy_span_command.cc", - "commands/wrap_contents_in_dummy_span_command.h", - "compute_layer_selection.cc", - "compute_layer_selection.h", - "dom_selection.cc", - "dom_selection.h", - "drag_caret.cc", - "drag_caret.h", - "editing_behavior.cc", - "editing_behavior.h", - "editing_boundary.h", - "editing_strategy.cc", - "editing_strategy.h", - "editing_style.cc", - "editing_style.h", - "editing_style_utilities.cc", - "editing_style_utilities.h", - "editing_tri_state.h", - "editing_utilities.cc", - "editing_utilities.h", - "editor.cc", - "editor.h", - "editor_key_bindings.cc", - "element_inner_text.cc", - "ephemeral_range.cc", - "ephemeral_range.h", - "finder/find_buffer.cc", - "finder/find_buffer.h", - "finder/find_in_page_coordinates.cc", - "finder/find_in_page_coordinates.h", - "finder/find_task_controller.cc", - "finder/find_task_controller.h", - "finder/text_finder.cc", - "finder/text_finder.h", - "forward.h", - "frame_caret.cc", - "frame_caret.h", - "frame_selection.cc", - "frame_selection.h", - "granularity_strategy.cc", - "granularity_strategy.h", - "ime/edit_context.cc", - "ime/edit_context.h", - "ime/ime_text_span.cc", - "ime/ime_text_span.h", - "ime/ime_text_span_vector_builder.cc", - "ime/ime_text_span_vector_builder.h", - "ime/input_method_controller.cc", - "ime/input_method_controller.h", - "ime/text_format_update_event.cc", - "ime/text_format_update_event.h", - "ime/text_update_event.cc", - "ime/text_update_event.h", - "inline_box_position.cc", - "inline_box_position.h", - "iterators/backwards_character_iterator.cc", - "iterators/backwards_character_iterator.h", - "iterators/bit_stack.cc", - "iterators/bit_stack.h", - "iterators/character_iterator.cc", - "iterators/character_iterator.h", - "iterators/fully_clipped_state_stack.cc", - "iterators/fully_clipped_state_stack.h", - "iterators/simplified_backwards_text_iterator.cc", - "iterators/simplified_backwards_text_iterator.h", - "iterators/text_iterator.cc", - "iterators/text_iterator.h", - "iterators/text_iterator_behavior.cc", - "iterators/text_iterator_behavior.h", - "iterators/text_iterator_text_node_handler.cc", - "iterators/text_iterator_text_node_handler.h", - "iterators/text_iterator_text_state.cc", - "iterators/text_iterator_text_state.h", - "iterators/text_searcher_icu.cc", - "iterators/text_searcher_icu.h", - "kill_ring.h", - "layout_selection.cc", - "layout_selection.h", - "local_caret_rect.cc", - "local_caret_rect.h", - "markers/active_suggestion_marker.cc", - "markers/active_suggestion_marker.h", - "markers/active_suggestion_marker_list_impl.cc", - "markers/active_suggestion_marker_list_impl.h", - "markers/composition_marker.cc", - "markers/composition_marker.h", - "markers/composition_marker_list_impl.cc", - "markers/composition_marker_list_impl.h", - "markers/document_marker.cc", - "markers/document_marker.h", - "markers/document_marker_controller.cc", - "markers/document_marker_controller.h", - "markers/document_marker_list.cc", - "markers/document_marker_list.h", - "markers/grammar_marker.cc", - "markers/grammar_marker.h", - "markers/grammar_marker_list_impl.cc", - "markers/grammar_marker_list_impl.h", - "markers/sorted_document_marker_list_editor.cc", - "markers/sorted_document_marker_list_editor.h", - "markers/spell_check_marker.cc", - "markers/spell_check_marker.h", - "markers/spell_check_marker_list_impl.cc", - "markers/spell_check_marker_list_impl.h", - "markers/spelling_marker.cc", - "markers/spelling_marker.h", - "markers/spelling_marker_list_impl.cc", - "markers/spelling_marker_list_impl.h", - "markers/styleable_marker.cc", - "markers/styleable_marker.h", - "markers/suggestion_marker.cc", - "markers/suggestion_marker.h", - "markers/suggestion_marker_list_impl.cc", - "markers/suggestion_marker_list_impl.h", - "markers/suggestion_marker_properties.cc", - "markers/suggestion_marker_properties.h", - "markers/suggestion_marker_replacement_scope.cc", - "markers/suggestion_marker_replacement_scope.h", - "markers/text_fragment_marker.cc", - "markers/text_fragment_marker.h", - "markers/text_fragment_marker_list_impl.cc", - "markers/text_fragment_marker_list_impl.h", - "markers/text_marker_base.cc", - "markers/text_marker_base.h", - "markers/text_marker_base_list_impl.cc", - "markers/text_marker_base_list_impl.h", - "markers/text_match_marker.cc", - "markers/text_match_marker.h", - "markers/text_match_marker_list_impl.cc", - "markers/text_match_marker_list_impl.h", - "markers/unsorted_document_marker_list_editor.cc", - "markers/unsorted_document_marker_list_editor.h", - "ng_flat_tree_shorthands.cc", - "ng_flat_tree_shorthands.h", - "plain_text_range.cc", - "plain_text_range.h", - "position.cc", - "position.h", - "position_iterator.cc", - "position_iterator.h", - "position_with_affinity.cc", - "position_with_affinity.h", - "relocatable_position.cc", - "relocatable_position.h", - "reveal_selection_scope.cc", - "reveal_selection_scope.h", - "selection_adjuster.cc", - "selection_adjuster.h", - "selection_controller.cc", - "selection_controller.h", - "selection_editor.cc", - "selection_editor.h", - "selection_modifier.cc", - "selection_modifier.h", - "selection_modifier_line.cc", - "selection_strategy.h", - "selection_template.cc", - "selection_template.h", - "selection_type.h", - "serializers/create_markup_options.cc", - "serializers/create_markup_options.h", - "serializers/html_interchange.cc", - "serializers/html_interchange.h", - "serializers/markup_accumulator.cc", - "serializers/markup_accumulator.h", - "serializers/markup_formatter.cc", - "serializers/markup_formatter.h", - "serializers/serialization.cc", - "serializers/serialization.h", - "serializers/styled_markup_accumulator.cc", - "serializers/styled_markup_accumulator.h", - "serializers/styled_markup_serializer.cc", - "serializers/styled_markup_serializer.h", - "serializers/text_offset.cc", - "serializers/text_offset.h", - "set_selection_options.cc", - "set_selection_options.h", - "spellcheck/cold_mode_spell_check_requester.cc", - "spellcheck/cold_mode_spell_check_requester.h", - "spellcheck/hot_mode_spell_check_requester.cc", - "spellcheck/hot_mode_spell_check_requester.h", - "spellcheck/idle_spell_check_controller.cc", - "spellcheck/idle_spell_check_controller.h", - "spellcheck/spell_check_requester.cc", - "spellcheck/spell_check_requester.h", - "spellcheck/spell_checker.cc", - "spellcheck/spell_checker.h", - "spellcheck/text_checking.h", - "spellcheck/text_checking_paragraph.cc", - "spellcheck/text_checking_paragraph.h", - "state_machines/backspace_state_machine.cc", - "state_machines/backspace_state_machine.h", - "state_machines/backward_code_point_state_machine.cc", - "state_machines/backward_code_point_state_machine.h", - "state_machines/backward_grapheme_boundary_state_machine.cc", - "state_machines/backward_grapheme_boundary_state_machine.h", - "state_machines/forward_code_point_state_machine.cc", - "state_machines/forward_code_point_state_machine.h", - "state_machines/forward_grapheme_boundary_state_machine.cc", - "state_machines/forward_grapheme_boundary_state_machine.h", - "state_machines/state_machine_util.cc", - "state_machines/state_machine_util.h", - "state_machines/text_segmentation_machine_state.cc", - "state_machines/text_segmentation_machine_state.h", - "suggestion/text_suggestion_backend_impl.cc", - "suggestion/text_suggestion_backend_impl.h", - "suggestion/text_suggestion_controller.cc", - "suggestion/text_suggestion_controller.h", - "suggestion/text_suggestion_info.h", - "surrounding_text.cc", - "surrounding_text.h", - "text_affinity.cc", - "text_affinity.h", - "text_granularity.h", - "text_offset_mapping.cc", - "text_offset_mapping.h", - "text_segments.cc", - "text_segments.h", - "visible_position.cc", - "visible_position.h", - "visible_selection.cc", - "visible_selection.h", - "visible_units.cc", - "visible_units.h", - "visible_units_line.cc", - "visible_units_paragraph.cc", - "visible_units_sentence.cc", - "visible_units_word.cc", - ] - - if (is_mac) { - sources += [ - "commands/smart_replace_cf.cc", - "kill_ring_mac.mm", - "substring_util.h", - "substring_util.mm", - ] - } else { - sources += [ "kill_ring_none.cc" ] - } -} - -source_set("unit_tests") { - testonly = true - sources = [ - "commands/apply_block_element_command_test.cc", - "commands/apply_style_command_test.cc", - "commands/composite_edit_command_test.cc", - "commands/delete_selection_command_test.cc", - "commands/editing_command_test.cc", - "commands/editing_commands_utilities_test.cc", - "commands/insert_incremental_text_command_test.cc", - "commands/insert_list_command_test.cc", - "commands/insert_paragraph_separator_command_test.cc", - "commands/insert_text_command_test.cc", - "commands/move_commands_test.cc", - "commands/replace_selection_command_test.cc", - "commands/set_character_data_command_test.cc", - "commands/split_text_node_command_test.cc", - "commands/typing_command_test.cc", - "compute_layer_selection_test.cc", - "editing_strategy_test.cc", - "editing_style_test.cc", - "editing_utilities_test.cc", - "editor_test.cc", - "element_inner_text_test.cc", - "ephemeral_range_test.cc", - "finder/find_buffer_test.cc", - "frame_caret_test.cc", - "frame_selection_test.cc", - "granularity_strategy_test.cc", - "hit_testing_bidi_test.cc", - "ime/ime_text_span_test.cc", - "ime/input_method_controller_test.cc", - "inline_box_position_test.cc", - "iterators/character_iterator_test.cc", - "iterators/simplified_backwards_text_iterator_test.cc", - "iterators/text_iterator_behavior_test.cc", - "iterators/text_iterator_test.cc", - "iterators/text_searcher_icu_test.cc", - "layout_selection_test.cc", - "local_caret_rect_bidi_test.cc", - "local_caret_rect_test.cc", - "markers/active_suggestion_marker_list_impl_test.cc", - "markers/active_suggestion_marker_test.cc", - "markers/composition_marker_list_impl_test.cc", - "markers/composition_marker_test.cc", - "markers/document_marker_controller_test.cc", - "markers/document_marker_test.cc", - "markers/grammar_marker_list_impl_test.cc", - "markers/grammar_marker_test.cc", - "markers/sorted_document_marker_list_editor_test.cc", - "markers/spelling_marker_list_impl_test.cc", - "markers/spelling_marker_test.cc", - "markers/suggestion_marker_list_impl_test.cc", - "markers/suggestion_marker_test.cc", - "markers/text_fragment_marker_list_impl_test.cc", - "markers/text_match_marker_list_impl_test.cc", - "markers/unsorted_document_marker_list_editor_test.cc", - "plain_text_range_test.cc", - "position_iterator_test.cc", - "position_test.cc", - "position_with_affinity_test.cc", - "relocatable_position_test.cc", - "selection_adjuster_test.cc", - "selection_controller_test.cc", - "selection_modifier_test.cc", - "selection_template_test.cc", - "serializers/serialization_test.cc", - "serializers/styled_markup_serializer_test.cc", - "set_selection_options_test.cc", - "spellcheck/idle_spell_check_controller_test.cc", - "spellcheck/spell_check_test_base.cc", - "spellcheck/spell_check_test_base.h", - "spellcheck/spell_checker_test.cc", - "state_machines/backspace_state_machine_test.cc", - "state_machines/backward_code_point_state_machine_test.cc", - "state_machines/backward_grapheme_boundary_state_machine_test.cc", - "state_machines/forward_code_point_state_machine_test.cc", - "state_machines/forward_grapheme_boundary_state_machine_test.cc", - "state_machines/state_machine_test_util.cc", - "state_machines/state_machine_test_util.h", - "state_machines/state_machine_util_test.cc", - "suggestion/text_suggestion_controller_test.cc", - "surrounding_text_test.cc", - "testing/editing_test_base.cc", - "testing/editing_test_base.h", - "testing/editing_test_base_test.cc", - "testing/selection_sample.cc", - "testing/selection_sample.h", - "testing/selection_sample_test.cc", - "text_offset_mapping_test.cc", - "visible_position_test.cc", - "visible_selection_test.cc", - "visible_units_line_test.cc", - "visible_units_paragraph_test.cc", - "visible_units_sentence_test.cc", - "visible_units_test.cc", - "visible_units_word_test.cc", - ] - - if (is_mac) { - sources += [ "substring_util_test.mm" ] - } - - configs += [ - "//third_party/blink/renderer/core:blink_core_pch", - "//third_party/blink/renderer:config", - "//third_party/blink/renderer:inside_blink", - ] - - deps = [ - "//testing/gmock", - "//testing/gtest", - "//third_party/blink/renderer/core", - ] -}
diff --git a/third_party/blink/renderer/core/editing/build.gni b/third_party/blink/renderer/core/editing/build.gni new file mode 100644 index 0000000..2b30d73 --- /dev/null +++ b/third_party/blink/renderer/core/editing/build.gni
@@ -0,0 +1,445 @@ +# 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. + +blink_core_sources_editing = [ + "bidi_adjustment.cc", + "bidi_adjustment.h", + "caret_display_item_client.cc", + "caret_display_item_client.h", + "commands/append_node_command.cc", + "commands/append_node_command.h", + "commands/apply_block_element_command.cc", + "commands/apply_block_element_command.h", + "commands/apply_style_command.cc", + "commands/apply_style_command.h", + "commands/break_blockquote_command.cc", + "commands/break_blockquote_command.h", + "commands/clipboard_commands.cc", + "commands/clipboard_commands.h", + "commands/composite_edit_command.cc", + "commands/composite_edit_command.h", + "commands/create_link_command.cc", + "commands/create_link_command.h", + "commands/delete_from_text_node_command.cc", + "commands/delete_from_text_node_command.h", + "commands/delete_selection_command.cc", + "commands/delete_selection_command.h", + "commands/delete_selection_options.cc", + "commands/delete_selection_options.h", + "commands/document_exec_command.cc", + "commands/drag_and_drop_command.cc", + "commands/drag_and_drop_command.h", + "commands/edit_command.cc", + "commands/edit_command.h", + "commands/editing_command_type.h", + "commands/editing_commands_utilities.cc", + "commands/editing_commands_utilities.h", + "commands/editing_state.cc", + "commands/editing_state.h", + "commands/editor_command.cc", + "commands/editor_command.h", + "commands/editor_command_names.h", + "commands/format_block_command.cc", + "commands/format_block_command.h", + "commands/indent_outdent_command.cc", + "commands/indent_outdent_command.h", + "commands/insert_commands.cc", + "commands/insert_commands.h", + "commands/insert_incremental_text_command.cc", + "commands/insert_incremental_text_command.h", + "commands/insert_into_text_node_command.cc", + "commands/insert_into_text_node_command.h", + "commands/insert_line_break_command.cc", + "commands/insert_line_break_command.h", + "commands/insert_list_command.cc", + "commands/insert_list_command.h", + "commands/insert_node_before_command.cc", + "commands/insert_node_before_command.h", + "commands/insert_paragraph_separator_command.cc", + "commands/insert_paragraph_separator_command.h", + "commands/insert_text_command.cc", + "commands/insert_text_command.h", + "commands/merge_identical_elements_command.cc", + "commands/merge_identical_elements_command.h", + "commands/move_commands.cc", + "commands/move_commands.h", + "commands/remove_css_property_command.cc", + "commands/remove_css_property_command.h", + "commands/remove_format_command.cc", + "commands/remove_format_command.h", + "commands/remove_node_command.cc", + "commands/remove_node_command.h", + "commands/remove_node_preserving_children_command.cc", + "commands/remove_node_preserving_children_command.h", + "commands/replace_node_with_span_command.cc", + "commands/replace_node_with_span_command.h", + "commands/replace_selection_command.cc", + "commands/replace_selection_command.h", + "commands/selection_for_undo_step.cc", + "commands/selection_for_undo_step.h", + "commands/set_character_data_command.cc", + "commands/set_character_data_command.h", + "commands/set_node_attribute_command.cc", + "commands/set_node_attribute_command.h", + "commands/simplify_markup_command.cc", + "commands/simplify_markup_command.h", + "commands/smart_replace.h", + "commands/smart_replace_icu.cc", + "commands/split_element_command.cc", + "commands/split_element_command.h", + "commands/split_text_node_command.cc", + "commands/split_text_node_command.h", + "commands/split_text_node_containing_element_command.cc", + "commands/split_text_node_containing_element_command.h", + "commands/style_commands.cc", + "commands/style_commands.h", + "commands/typing_command.cc", + "commands/typing_command.h", + "commands/undo_stack.cc", + "commands/undo_stack.h", + "commands/undo_step.cc", + "commands/undo_step.h", + "commands/unlink_command.cc", + "commands/unlink_command.h", + "commands/wrap_contents_in_dummy_span_command.cc", + "commands/wrap_contents_in_dummy_span_command.h", + "compute_layer_selection.cc", + "compute_layer_selection.h", + "dom_selection.cc", + "dom_selection.h", + "drag_caret.cc", + "drag_caret.h", + "editing_behavior.cc", + "editing_behavior.h", + "editing_boundary.h", + "editing_strategy.cc", + "editing_strategy.h", + "editing_style.cc", + "editing_style.h", + "editing_style_utilities.cc", + "editing_style_utilities.h", + "editing_tri_state.h", + "editing_utilities.cc", + "editing_utilities.h", + "editor.cc", + "editor.h", + "editor_key_bindings.cc", + "element_inner_text.cc", + "ephemeral_range.cc", + "ephemeral_range.h", + "finder/find_buffer.cc", + "finder/find_buffer.h", + "finder/find_in_page_coordinates.cc", + "finder/find_in_page_coordinates.h", + "finder/find_task_controller.cc", + "finder/find_task_controller.h", + "finder/text_finder.cc", + "finder/text_finder.h", + "forward.h", + "frame_caret.cc", + "frame_caret.h", + "frame_selection.cc", + "frame_selection.h", + "granularity_strategy.cc", + "granularity_strategy.h", + "ime/edit_context.cc", + "ime/edit_context.h", + "ime/ime_text_span.cc", + "ime/ime_text_span.h", + "ime/ime_text_span_vector_builder.cc", + "ime/ime_text_span_vector_builder.h", + "ime/input_method_controller.cc", + "ime/input_method_controller.h", + "ime/text_format_update_event.cc", + "ime/text_format_update_event.h", + "ime/text_update_event.cc", + "ime/text_update_event.h", + "inline_box_position.cc", + "inline_box_position.h", + "iterators/backwards_character_iterator.cc", + "iterators/backwards_character_iterator.h", + "iterators/bit_stack.cc", + "iterators/bit_stack.h", + "iterators/character_iterator.cc", + "iterators/character_iterator.h", + "iterators/fully_clipped_state_stack.cc", + "iterators/fully_clipped_state_stack.h", + "iterators/simplified_backwards_text_iterator.cc", + "iterators/simplified_backwards_text_iterator.h", + "iterators/text_iterator.cc", + "iterators/text_iterator.h", + "iterators/text_iterator_behavior.cc", + "iterators/text_iterator_behavior.h", + "iterators/text_iterator_text_node_handler.cc", + "iterators/text_iterator_text_node_handler.h", + "iterators/text_iterator_text_state.cc", + "iterators/text_iterator_text_state.h", + "iterators/text_searcher_icu.cc", + "iterators/text_searcher_icu.h", + "kill_ring.h", + "layout_selection.cc", + "layout_selection.h", + "local_caret_rect.cc", + "local_caret_rect.h", + "markers/active_suggestion_marker.cc", + "markers/active_suggestion_marker.h", + "markers/active_suggestion_marker_list_impl.cc", + "markers/active_suggestion_marker_list_impl.h", + "markers/composition_marker.cc", + "markers/composition_marker.h", + "markers/composition_marker_list_impl.cc", + "markers/composition_marker_list_impl.h", + "markers/document_marker.cc", + "markers/document_marker.h", + "markers/document_marker_controller.cc", + "markers/document_marker_controller.h", + "markers/document_marker_list.cc", + "markers/document_marker_list.h", + "markers/grammar_marker.cc", + "markers/grammar_marker.h", + "markers/grammar_marker_list_impl.cc", + "markers/grammar_marker_list_impl.h", + "markers/sorted_document_marker_list_editor.cc", + "markers/sorted_document_marker_list_editor.h", + "markers/spell_check_marker.cc", + "markers/spell_check_marker.h", + "markers/spell_check_marker_list_impl.cc", + "markers/spell_check_marker_list_impl.h", + "markers/spelling_marker.cc", + "markers/spelling_marker.h", + "markers/spelling_marker_list_impl.cc", + "markers/spelling_marker_list_impl.h", + "markers/styleable_marker.cc", + "markers/styleable_marker.h", + "markers/suggestion_marker.cc", + "markers/suggestion_marker.h", + "markers/suggestion_marker_list_impl.cc", + "markers/suggestion_marker_list_impl.h", + "markers/suggestion_marker_properties.cc", + "markers/suggestion_marker_properties.h", + "markers/suggestion_marker_replacement_scope.cc", + "markers/suggestion_marker_replacement_scope.h", + "markers/text_fragment_marker.cc", + "markers/text_fragment_marker.h", + "markers/text_fragment_marker_list_impl.cc", + "markers/text_fragment_marker_list_impl.h", + "markers/text_marker_base.cc", + "markers/text_marker_base.h", + "markers/text_marker_base_list_impl.cc", + "markers/text_marker_base_list_impl.h", + "markers/text_match_marker.cc", + "markers/text_match_marker.h", + "markers/text_match_marker_list_impl.cc", + "markers/text_match_marker_list_impl.h", + "markers/unsorted_document_marker_list_editor.cc", + "markers/unsorted_document_marker_list_editor.h", + "ng_flat_tree_shorthands.cc", + "ng_flat_tree_shorthands.h", + "plain_text_range.cc", + "plain_text_range.h", + "position.cc", + "position.h", + "position_iterator.cc", + "position_iterator.h", + "position_with_affinity.cc", + "position_with_affinity.h", + "relocatable_position.cc", + "relocatable_position.h", + "reveal_selection_scope.cc", + "reveal_selection_scope.h", + "selection_adjuster.cc", + "selection_adjuster.h", + "selection_controller.cc", + "selection_controller.h", + "selection_editor.cc", + "selection_editor.h", + "selection_modifier.cc", + "selection_modifier.h", + "selection_modifier_line.cc", + "selection_strategy.h", + "selection_template.cc", + "selection_template.h", + "selection_type.h", + "serializers/create_markup_options.cc", + "serializers/create_markup_options.h", + "serializers/html_interchange.cc", + "serializers/html_interchange.h", + "serializers/markup_accumulator.cc", + "serializers/markup_accumulator.h", + "serializers/markup_formatter.cc", + "serializers/markup_formatter.h", + "serializers/serialization.cc", + "serializers/serialization.h", + "serializers/styled_markup_accumulator.cc", + "serializers/styled_markup_accumulator.h", + "serializers/styled_markup_serializer.cc", + "serializers/styled_markup_serializer.h", + "serializers/text_offset.cc", + "serializers/text_offset.h", + "set_selection_options.cc", + "set_selection_options.h", + "spellcheck/cold_mode_spell_check_requester.cc", + "spellcheck/cold_mode_spell_check_requester.h", + "spellcheck/hot_mode_spell_check_requester.cc", + "spellcheck/hot_mode_spell_check_requester.h", + "spellcheck/idle_spell_check_controller.cc", + "spellcheck/idle_spell_check_controller.h", + "spellcheck/spell_check_requester.cc", + "spellcheck/spell_check_requester.h", + "spellcheck/spell_checker.cc", + "spellcheck/spell_checker.h", + "spellcheck/text_checking.h", + "spellcheck/text_checking_paragraph.cc", + "spellcheck/text_checking_paragraph.h", + "state_machines/backspace_state_machine.cc", + "state_machines/backspace_state_machine.h", + "state_machines/backward_code_point_state_machine.cc", + "state_machines/backward_code_point_state_machine.h", + "state_machines/backward_grapheme_boundary_state_machine.cc", + "state_machines/backward_grapheme_boundary_state_machine.h", + "state_machines/forward_code_point_state_machine.cc", + "state_machines/forward_code_point_state_machine.h", + "state_machines/forward_grapheme_boundary_state_machine.cc", + "state_machines/forward_grapheme_boundary_state_machine.h", + "state_machines/state_machine_util.cc", + "state_machines/state_machine_util.h", + "state_machines/text_segmentation_machine_state.cc", + "state_machines/text_segmentation_machine_state.h", + "suggestion/text_suggestion_backend_impl.cc", + "suggestion/text_suggestion_backend_impl.h", + "suggestion/text_suggestion_controller.cc", + "suggestion/text_suggestion_controller.h", + "suggestion/text_suggestion_info.h", + "surrounding_text.cc", + "surrounding_text.h", + "text_affinity.cc", + "text_affinity.h", + "text_granularity.h", + "text_offset_mapping.cc", + "text_offset_mapping.h", + "text_segments.cc", + "text_segments.h", + "visible_position.cc", + "visible_position.h", + "visible_selection.cc", + "visible_selection.h", + "visible_units.cc", + "visible_units.h", + "visible_units_line.cc", + "visible_units_paragraph.cc", + "visible_units_sentence.cc", + "visible_units_word.cc", +] + +if (is_mac) { + blink_core_sources_editing += [ + "commands/smart_replace_cf.cc", + "kill_ring_mac.mm", + "substring_util.h", + "substring_util.mm", + ] +} else { + blink_core_sources_editing += [ "kill_ring_none.cc" ] +} + +blink_core_tests_editing = [ + "commands/apply_block_element_command_test.cc", + "commands/apply_style_command_test.cc", + "commands/composite_edit_command_test.cc", + "commands/delete_selection_command_test.cc", + "commands/editing_command_test.cc", + "commands/editing_commands_utilities_test.cc", + "commands/insert_incremental_text_command_test.cc", + "commands/insert_list_command_test.cc", + "commands/insert_paragraph_separator_command_test.cc", + "commands/insert_text_command_test.cc", + "commands/move_commands_test.cc", + "commands/replace_selection_command_test.cc", + "commands/set_character_data_command_test.cc", + "commands/split_text_node_command_test.cc", + "commands/typing_command_test.cc", + "compute_layer_selection_test.cc", + "editing_strategy_test.cc", + "editing_style_test.cc", + "editing_utilities_test.cc", + "editor_test.cc", + "element_inner_text_test.cc", + "ephemeral_range_test.cc", + "finder/find_buffer_test.cc", + "frame_caret_test.cc", + "frame_selection_test.cc", + "granularity_strategy_test.cc", + "hit_testing_bidi_test.cc", + "ime/ime_text_span_test.cc", + "ime/input_method_controller_test.cc", + "inline_box_position_test.cc", + "iterators/character_iterator_test.cc", + "iterators/simplified_backwards_text_iterator_test.cc", + "iterators/text_iterator_behavior_test.cc", + "iterators/text_iterator_test.cc", + "iterators/text_searcher_icu_test.cc", + "layout_selection_test.cc", + "local_caret_rect_bidi_test.cc", + "local_caret_rect_test.cc", + "markers/active_suggestion_marker_list_impl_test.cc", + "markers/active_suggestion_marker_test.cc", + "markers/composition_marker_list_impl_test.cc", + "markers/composition_marker_test.cc", + "markers/document_marker_controller_test.cc", + "markers/document_marker_test.cc", + "markers/grammar_marker_list_impl_test.cc", + "markers/grammar_marker_test.cc", + "markers/sorted_document_marker_list_editor_test.cc", + "markers/spelling_marker_list_impl_test.cc", + "markers/spelling_marker_test.cc", + "markers/suggestion_marker_list_impl_test.cc", + "markers/suggestion_marker_test.cc", + "markers/text_fragment_marker_list_impl_test.cc", + "markers/text_match_marker_list_impl_test.cc", + "markers/unsorted_document_marker_list_editor_test.cc", + "plain_text_range_test.cc", + "position_iterator_test.cc", + "position_test.cc", + "position_with_affinity_test.cc", + "relocatable_position_test.cc", + "selection_adjuster_test.cc", + "selection_controller_test.cc", + "selection_modifier_test.cc", + "selection_template_test.cc", + "serializers/serialization_test.cc", + "serializers/styled_markup_serializer_test.cc", + "set_selection_options_test.cc", + "spellcheck/idle_spell_check_controller_test.cc", + "spellcheck/spell_check_test_base.cc", + "spellcheck/spell_check_test_base.h", + "spellcheck/spell_checker_test.cc", + "state_machines/backspace_state_machine_test.cc", + "state_machines/backward_code_point_state_machine_test.cc", + "state_machines/backward_grapheme_boundary_state_machine_test.cc", + "state_machines/forward_code_point_state_machine_test.cc", + "state_machines/forward_grapheme_boundary_state_machine_test.cc", + "state_machines/state_machine_test_util.cc", + "state_machines/state_machine_test_util.h", + "state_machines/state_machine_util_test.cc", + "suggestion/text_suggestion_controller_test.cc", + "surrounding_text_test.cc", + "testing/editing_test_base.cc", + "testing/editing_test_base.h", + "testing/editing_test_base_test.cc", + "testing/selection_sample.cc", + "testing/selection_sample.h", + "testing/selection_sample_test.cc", + "text_offset_mapping_test.cc", + "visible_position_test.cc", + "visible_selection_test.cc", + "visible_units_line_test.cc", + "visible_units_paragraph_test.cc", + "visible_units_sentence_test.cc", + "visible_units_test.cc", + "visible_units_word_test.cc", +] + +if (is_mac) { + blink_core_tests_editing += [ "substring_util_test.mm" ] +}
diff --git a/third_party/blink/renderer/core/editing/visible_units_line_test.cc b/third_party/blink/renderer/core/editing/visible_units_line_test.cc index 3d9c9f3..dff4176 100644 --- a/third_party/blink/renderer/core/editing/visible_units_line_test.cc +++ b/third_party/blink/renderer/core/editing/visible_units_line_test.cc
@@ -714,6 +714,86 @@ StartOfLine(CreateVisiblePositionInFlatTree(*seven, 1)).DeepEquivalent()); } +TEST_P(ParameterizedVisibleUnitsLineTest, EndOfLineWithBidi) { + LoadAhem(); + InsertStyleElement("p { font: 30px/3 Ahem; }"); + + EXPECT_EQ( + "<p dir=\"ltr\"><bdo dir=\"ltr\">ab cd ef|</bdo></p>", + TestEndOfLine("<p dir=\"ltr\"><bdo dir=\"ltr\">a|b cd ef</bdo></p>")) + << "LTR LTR"; + EXPECT_EQ( + "<p dir=\"ltr\"><bdo dir=\"rtl\">ab cd ef|</bdo></p>", + TestEndOfLine("<p dir=\"ltr\"><bdo dir=\"rtl\">a|b cd ef</bdo></p>")) + << "LTR RTL"; + EXPECT_EQ( + "<p dir=\"rtl\"><bdo dir=\"ltr\">ab cd ef|</bdo></p>", + TestEndOfLine("<p dir=\"rtl\"><bdo dir=\"ltr\">a|b cd ef</bdo></p>")) + << "RTL LTR"; + EXPECT_EQ( + "<p dir=\"rtl\"><bdo dir=\"rtl\">ab cd ef|</bdo></p>", + TestEndOfLine("<p dir=\"rtl\"><bdo dir=\"rtl\">a|b cd ef</bdo></p>")) + << "RTL RTL"; +} + +// http://crbug.com/1136740 +TEST_P(ParameterizedVisibleUnitsLineTest, EndOfLineWithHangingSpace) { + LoadAhem(); + InsertStyleElement( + "p {" + "font: 30px/3 Ahem;" + "overflow-wrap: break-word;" + "white-space: pre-wrap;" + "width: 4ch;" + "}"); + + // _____ _=Space + // abcd + // efgh + EXPECT_EQ("<p> |abcdefgh</p>", TestEndOfLine("<p>| abcdefgh</p>")); + EXPECT_EQ("<p> |abcdefgh</p>", TestEndOfLine("<p> | abcdefgh</p>")); + EXPECT_EQ("<p> |abcdefgh</p>", TestEndOfLine("<p> | abcdefgh</p>")); + EXPECT_EQ("<p> |abcdefgh</p>", TestEndOfLine("<p> | abcdefgh</p>")); + EXPECT_EQ("<p> |abcdefgh</p>", TestEndOfLine("<p> | abcdefgh</p>")); + EXPECT_EQ("<p> abcd|efgh</p>", TestEndOfLine("<p> |abcdefgh</p>")); + EXPECT_EQ("<p> abcd|efgh</p>", TestEndOfLine("<p> a|bcdefgh</p>")); + + // __x__ _=Space + // abcd + // efgh + EXPECT_EQ("<p> x |abcdefgh</p>", TestEndOfLine("<p>| x abcdefgh</p>")); + EXPECT_EQ("<p> x |abcdefgh</p>", TestEndOfLine("<p> | x abcdefgh</p>")); + EXPECT_EQ("<p> x |abcdefgh</p>", TestEndOfLine("<p> x| abcdefgh</p>")); + EXPECT_EQ("<p> x |abcdefgh</p>", TestEndOfLine("<p> x| abcdefgh</p>")); + EXPECT_EQ("<p> x abcd|efgh</p>", TestEndOfLine("<p> x |abcdefgh</p>")); + EXPECT_EQ("<p> x abcd|efgh</p>", TestEndOfLine("<p> x a|bcdefgh</p>")); +} + +TEST_P(ParameterizedVisibleUnitsLineTest, EndOfLineWithPositionRelative) { + LoadAhem(); + InsertStyleElement( + "b { position:relative; left: 30px; }" + "p { font: 30px/3 Ahem; }"); + + EXPECT_EQ("<p>ab <b>cd</b> <b>ef|</b></p>", + TestEndOfLine("<p>a|b <b>cd</b> <b>ef</b></p>")); + // Note: legacy result is wrong. See EndOfLineWithBidi. + EXPECT_EQ( + LayoutNGEnabled() + ? "<p><bdo dir=\"rtl\">ab <b>cd</b> <b>ef|</b></bdo></p>" + : "<p><bdo dir=\"rtl\">ab |<b>cd</b> <b>ef</b></bdo></p>", + TestEndOfLine("<p><bdo dir=\"rtl\">a|b <b>cd</b> <b>ef</b></bdo></p>")); + EXPECT_EQ("<p dir=\"rtl\">ab <b>cd</b> <b>ef|</b></p>", + TestEndOfLine("<p dir=\"rtl\">a|b <b>cd</b> <b>ef</b></p>")); + // Note: legacy result is wrong. See EndOfLineWithBidi. + EXPECT_EQ( + LayoutNGEnabled() + ? "<p dir=\"rtl\"><bdo dir=\"rtl\">ab <b>cd</b> <b>ef|</b></bdo></p>" + : "<p dir=\"rtl\"><bdo dir=\"rtl\">ab |<b>cd</b> <b>ef</b></bdo></p>", + TestEndOfLine( + "<p dir=\"rtl\"><bdo dir=\"rtl\">a|b <b>cd</b> <b>ef</b></bdo></p>")); +} + TEST_P(ParameterizedVisibleUnitsLineTest, EndOfLineWithSoftLineWrap3) { LoadAhem(); InsertStyleElement(
diff --git a/third_party/blink/renderer/core/events/BUILD.gn b/third_party/blink/renderer/core/events/BUILD.gn deleted file mode 100644 index de905ca..0000000 --- a/third_party/blink/renderer/core/events/BUILD.gn +++ /dev/null
@@ -1,97 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("events") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "after_print_event.h", - "animation_event.cc", - "animation_event.h", - "animation_playback_event.cc", - "animation_playback_event.h", - "application_cache_error_event.cc", - "application_cache_error_event.h", - "before_create_policy_event.cc", - "before_create_policy_event.h", - "before_print_event.h", - "before_text_inserted_event.cc", - "before_text_inserted_event.h", - "before_unload_event.cc", - "before_unload_event.h", - "clipboard_event.cc", - "clipboard_event.h", - "composition_event.cc", - "composition_event.h", - "current_input_event.cc", - "current_input_event.h", - "drag_event.cc", - "drag_event.h", - "error_event.cc", - "error_event.h", - "event_factory.h", - "event_util.cc", - "event_util.h", - "focus_event.cc", - "focus_event.h", - "gesture_event.cc", - "gesture_event.h", - "hash_change_event.h", - "input_event.cc", - "input_event.h", - "keyboard_event.cc", - "keyboard_event.h", - "message_event.cc", - "message_event.h", - "mouse_event.cc", - "mouse_event.h", - "mutation_event.cc", - "mutation_event.h", - "navigator_events.cc", - "navigator_events.h", - "overscroll_event.cc", - "overscroll_event.h", - "page_transition_event.cc", - "page_transition_event.h", - "pointer_event.cc", - "pointer_event.h", - "pointer_event_factory.cc", - "pointer_event_factory.h", - "pointer_event_util.cc", - "pointer_event_util.h", - "pop_state_event.cc", - "pop_state_event.h", - "progress_event.cc", - "progress_event.h", - "promise_rejection_event.cc", - "promise_rejection_event.h", - "resource_progress_event.cc", - "resource_progress_event.h", - "security_policy_violation_event.cc", - "security_policy_violation_event.h", - "text_event.cc", - "text_event.h", - "text_event_input_type.h", - "touch_event.cc", - "touch_event.h", - "touch_event_context.cc", - "touch_event_context.h", - "transition_event.cc", - "transition_event.h", - "ui_event.cc", - "ui_event.h", - "ui_event_with_key_state.cc", - "ui_event_with_key_state.h", - "visual_viewport_resize_event.cc", - "visual_viewport_resize_event.h", - "visual_viewport_scroll_event.cc", - "visual_viewport_scroll_event.h", - "web_input_event_conversion.cc", - "web_input_event_conversion.h", - "wheel_event.cc", - "wheel_event.h", - ] -}
diff --git a/third_party/blink/renderer/core/events/build.gni b/third_party/blink/renderer/core/events/build.gni new file mode 100644 index 0000000..a111c9f --- /dev/null +++ b/third_party/blink/renderer/core/events/build.gni
@@ -0,0 +1,91 @@ +# 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. + +blink_core_sources_events = [ + "after_print_event.h", + "animation_event.cc", + "animation_event.h", + "animation_playback_event.cc", + "animation_playback_event.h", + "application_cache_error_event.cc", + "application_cache_error_event.h", + "before_create_policy_event.cc", + "before_create_policy_event.h", + "before_print_event.h", + "before_text_inserted_event.cc", + "before_text_inserted_event.h", + "before_unload_event.cc", + "before_unload_event.h", + "clipboard_event.cc", + "clipboard_event.h", + "composition_event.cc", + "composition_event.h", + "current_input_event.cc", + "current_input_event.h", + "drag_event.cc", + "drag_event.h", + "error_event.cc", + "error_event.h", + "event_factory.h", + "event_util.cc", + "event_util.h", + "focus_event.cc", + "focus_event.h", + "gesture_event.cc", + "gesture_event.h", + "hash_change_event.h", + "input_event.cc", + "input_event.h", + "keyboard_event.cc", + "keyboard_event.h", + "message_event.cc", + "message_event.h", + "mouse_event.cc", + "mouse_event.h", + "mutation_event.cc", + "mutation_event.h", + "navigator_events.cc", + "navigator_events.h", + "overscroll_event.cc", + "overscroll_event.h", + "page_transition_event.cc", + "page_transition_event.h", + "pointer_event.cc", + "pointer_event.h", + "pointer_event_factory.cc", + "pointer_event_factory.h", + "pointer_event_util.cc", + "pointer_event_util.h", + "pop_state_event.cc", + "pop_state_event.h", + "progress_event.cc", + "progress_event.h", + "promise_rejection_event.cc", + "promise_rejection_event.h", + "resource_progress_event.cc", + "resource_progress_event.h", + "security_policy_violation_event.cc", + "security_policy_violation_event.h", + "text_event.cc", + "text_event.h", + "text_event_input_type.h", + "touch_event.cc", + "touch_event.h", + "touch_event_context.cc", + "touch_event_context.h", + "transition_event.cc", + "transition_event.h", + "ui_event.cc", + "ui_event.h", + "ui_event_with_key_state.cc", + "ui_event_with_key_state.h", + "visual_viewport_resize_event.cc", + "visual_viewport_resize_event.h", + "visual_viewport_scroll_event.cc", + "visual_viewport_scroll_event.h", + "web_input_event_conversion.cc", + "web_input_event_conversion.h", + "wheel_event.cc", + "wheel_event.h", +]
diff --git a/third_party/blink/renderer/core/execution_context/BUILD.gn b/third_party/blink/renderer/core/execution_context/BUILD.gn deleted file mode 100644 index b6d2c486..0000000 --- a/third_party/blink/renderer/core/execution_context/BUILD.gn +++ /dev/null
@@ -1,32 +0,0 @@ -# Copyright 2018 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("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("execution_context") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "agent.cc", - "agent.h", - "agent_metrics_collector.cc", - "agent_metrics_collector.h", - "execution_context.cc", - "execution_context.h", - "execution_context_lifecycle_observer.cc", - "execution_context_lifecycle_observer.h", - "execution_context_lifecycle_state_observer.cc", - "execution_context_lifecycle_state_observer.h", - "remote_security_context.cc", - "remote_security_context.h", - "security_context.cc", - "security_context.h", - "security_context_init.cc", - "security_context_init.h", - "window_agent.cc", - "window_agent.h", - "window_agent_factory.cc", - "window_agent_factory.h", - ] -}
diff --git a/third_party/blink/renderer/core/execution_context/build.gni b/third_party/blink/renderer/core/execution_context/build.gni new file mode 100644 index 0000000..85f3a39d --- /dev/null +++ b/third_party/blink/renderer/core/execution_context/build.gni
@@ -0,0 +1,26 @@ +# 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. + +blink_core_sources_execution_context = [ + "agent.cc", + "agent.h", + "agent_metrics_collector.cc", + "agent_metrics_collector.h", + "execution_context.cc", + "execution_context.h", + "execution_context_lifecycle_observer.cc", + "execution_context_lifecycle_observer.h", + "execution_context_lifecycle_state_observer.cc", + "execution_context_lifecycle_state_observer.h", + "remote_security_context.cc", + "remote_security_context.h", + "security_context.cc", + "security_context.h", + "security_context_init.cc", + "security_context_init.h", + "window_agent.cc", + "window_agent.h", + "window_agent_factory.cc", + "window_agent_factory.h", +]
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc index 2d883c2..88cacb46 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -3455,6 +3455,16 @@ } } +void WebViewImpl::TakeFocus(bool reverse) { + if (GetPage()->MainFrame()->IsLocalFrame()) { + DCHECK(local_main_frame_host_remote_); + local_main_frame_host_remote_->TakeFocus(reverse); + } else { + DCHECK(remote_main_frame_host_remote_); + remote_main_frame_host_remote_->TakeFocus(reverse); + } +} + void WebViewImpl::UpdateTargetURL(const WebURL& url, const WebURL& fallback_url) { KURL latest_url = KURL(url.IsEmpty() ? fallback_url : url);
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_party/blink/renderer/core/exported/web_view_impl.h index 6d041042..e0ee27e2 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.h +++ b/third_party/blink/renderer/core/exported/web_view_impl.h
@@ -482,6 +482,10 @@ // Asks the browser process to activate this web view. void Focus(); + // Asks the browser process to take focus away from the WebView by focusing an + // adjacent UI element in the containing window. + void TakeFocus(bool reverse); + // This method is used for testing. // Resizes the unscaled (page scale = 1.0) visual viewport. Normally the // unscaled visual viewport is the same size as the main frame. The passed
diff --git a/third_party/blink/renderer/core/feature_policy/BUILD.gn b/third_party/blink/renderer/core/feature_policy/BUILD.gn deleted file mode 100644 index 279aa6ee..0000000 --- a/third_party/blink/renderer/core/feature_policy/BUILD.gn +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2018 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("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("feature_policy") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "document_policy_parser.cc", - "document_policy_parser.h", - "dom_feature_policy.cc", - "dom_feature_policy.h", - "feature_policy_parser.cc", - "feature_policy_parser.h", - "iframe_policy.h", - "layout_animations_policy.cc", - "layout_animations_policy.h", - "policy_helper.h", - ] -}
diff --git a/third_party/blink/renderer/core/feature_policy/build.gni b/third_party/blink/renderer/core/feature_policy/build.gni new file mode 100644 index 0000000..4023e9c --- /dev/null +++ b/third_party/blink/renderer/core/feature_policy/build.gni
@@ -0,0 +1,16 @@ +# 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. + +blink_core_sources_feature_policy = [ + "document_policy_parser.cc", + "document_policy_parser.h", + "dom_feature_policy.cc", + "dom_feature_policy.h", + "feature_policy_parser.cc", + "feature_policy_parser.h", + "iframe_policy.h", + "layout_animations_policy.cc", + "layout_animations_policy.h", + "policy_helper.h", +]
diff --git a/third_party/blink/renderer/core/fetch/BUILD.gn b/third_party/blink/renderer/core/fetch/BUILD.gn deleted file mode 100644 index 0dcbaad..0000000 --- a/third_party/blink/renderer/core/fetch/BUILD.gn +++ /dev/null
@@ -1,54 +0,0 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("fetch") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "blob_bytes_consumer.cc", - "blob_bytes_consumer.h", - "body.cc", - "body.h", - "body_stream_buffer.cc", - "body_stream_buffer.h", - "bytes_consumer_tee.cc", - "bytes_consumer_tee.h", - "bytes_uploader.cc", - "bytes_uploader.h", - "fetch_data_loader.cc", - "fetch_data_loader.h", - "fetch_header_list.cc", - "fetch_header_list.h", - "fetch_manager.cc", - "fetch_manager.h", - "fetch_request_data.cc", - "fetch_request_data.h", - "fetch_response_data.cc", - "fetch_response_data.h", - "form_data_bytes_consumer.cc", - "form_data_bytes_consumer.h", - "global_fetch.cc", - "global_fetch.h", - "headers.cc", - "headers.h", - "multipart_parser.cc", - "multipart_parser.h", - "place_holder_bytes_consumer.cc", - "place_holder_bytes_consumer.h", - "readable_stream_bytes_consumer.cc", - "readable_stream_bytes_consumer.h", - "request.cc", - "request.h", - "response.cc", - "response.h", - "trust_token_issuance_authorization.cc", - "trust_token_issuance_authorization.h", - "trust_token_to_mojom.cc", - "trust_token_to_mojom.h", - ] - - public_deps = [ "//third_party/blink/renderer/platform" ] -}
diff --git a/third_party/blink/renderer/core/fetch/build.gni b/third_party/blink/renderer/core/fetch/build.gni new file mode 100644 index 0000000..bd826574 --- /dev/null +++ b/third_party/blink/renderer/core/fetch/build.gni
@@ -0,0 +1,46 @@ +# 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. + +blink_core_sources_fetch = [ + "blob_bytes_consumer.cc", + "blob_bytes_consumer.h", + "body.cc", + "body.h", + "body_stream_buffer.cc", + "body_stream_buffer.h", + "bytes_consumer_tee.cc", + "bytes_consumer_tee.h", + "bytes_uploader.cc", + "bytes_uploader.h", + "fetch_data_loader.cc", + "fetch_data_loader.h", + "fetch_header_list.cc", + "fetch_header_list.h", + "fetch_manager.cc", + "fetch_manager.h", + "fetch_request_data.cc", + "fetch_request_data.h", + "fetch_response_data.cc", + "fetch_response_data.h", + "form_data_bytes_consumer.cc", + "form_data_bytes_consumer.h", + "global_fetch.cc", + "global_fetch.h", + "headers.cc", + "headers.h", + "multipart_parser.cc", + "multipart_parser.h", + "place_holder_bytes_consumer.cc", + "place_holder_bytes_consumer.h", + "readable_stream_bytes_consumer.cc", + "readable_stream_bytes_consumer.h", + "request.cc", + "request.h", + "response.cc", + "response.h", + "trust_token_issuance_authorization.cc", + "trust_token_issuance_authorization.h", + "trust_token_to_mojom.cc", + "trust_token_to_mojom.h", +]
diff --git a/third_party/blink/renderer/core/fileapi/BUILD.gn b/third_party/blink/renderer/core/fileapi/BUILD.gn deleted file mode 100644 index 42468d8..0000000 --- a/third_party/blink/renderer/core/fileapi/BUILD.gn +++ /dev/null
@@ -1,53 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("fileapi") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "blob.cc", - "blob.h", - "file.cc", - "file.h", - "file_error.cc", - "file_error.h", - "file_list.cc", - "file_list.h", - "file_reader.cc", - "file_reader.h", - "file_reader_loader.cc", - "file_reader_loader.h", - "file_reader_loader_client.h", - "file_reader_sync.cc", - "file_reader_sync.h", - "public_url_manager.cc", - "public_url_manager.h", - "url_file_api.cc", - "url_file_api.h", - "url_registry.h", - ] -} - -source_set("unit_tests") { - testonly = true - sources = [ - "file_list_test.cc", - "file_test.cc", - "public_url_manager_test.cc", - ] - - configs += [ - "//third_party/blink/renderer/core:blink_core_pch", - "//third_party/blink/renderer:config", - "//third_party/blink/renderer:inside_blink", - ] - - deps = [ - "//testing/gmock", - "//testing/gtest", - "//third_party/blink/renderer/core", - ] -}
diff --git a/third_party/blink/renderer/core/fileapi/build.gni b/third_party/blink/renderer/core/fileapi/build.gni new file mode 100644 index 0000000..71aa468 --- /dev/null +++ b/third_party/blink/renderer/core/fileapi/build.gni
@@ -0,0 +1,32 @@ +# 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. + +blink_core_sources_fileapi = [ + "blob.cc", + "blob.h", + "file.cc", + "file.h", + "file_error.cc", + "file_error.h", + "file_list.cc", + "file_list.h", + "file_reader.cc", + "file_reader.h", + "file_reader_loader.cc", + "file_reader_loader.h", + "file_reader_loader_client.h", + "file_reader_sync.cc", + "file_reader_sync.h", + "public_url_manager.cc", + "public_url_manager.h", + "url_file_api.cc", + "url_file_api.h", + "url_registry.h", +] + +blink_core_tests_fileapi = [ + "file_list_test.cc", + "file_test.cc", + "public_url_manager_test.cc", +]
diff --git a/third_party/blink/renderer/core/frame/BUILD.gn b/third_party/blink/renderer/core/frame/BUILD.gn deleted file mode 100644 index ac98b4e..0000000 --- a/third_party/blink/renderer/core/frame/BUILD.gn +++ /dev/null
@@ -1,246 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//printing/buildflags/buildflags.gni") -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("frame") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "ad_tracker.cc", - "ad_tracker.h", - "bar_prop.cc", - "bar_prop.h", - "browser_controls.cc", - "browser_controls.h", - "coop_access_violation_report_body.cc", - "coop_access_violation_report_body.h", - "csp/content_security_policy.cc", - "csp/content_security_policy.h", - "csp/csp_directive.h", - "csp/csp_directive_list.cc", - "csp/csp_directive_list.h", - "csp/csp_source.cc", - "csp/csp_source.h", - "csp/csp_violation_report_body.cc", - "csp/csp_violation_report_body.h", - "csp/execution_context_csp_delegate.cc", - "csp/execution_context_csp_delegate.h", - "csp/media_list_directive.cc", - "csp/media_list_directive.h", - "csp/navigation_initiator_impl.cc", - "csp/navigation_initiator_impl.h", - "csp/require_trusted_types_for_directive.cc", - "csp/require_trusted_types_for_directive.h", - "csp/source_list_directive.cc", - "csp/source_list_directive.h", - "csp/string_list_directive.cc", - "csp/string_list_directive.h", - "dactyloscoper.cc", - "dactyloscoper.h", - "deprecated_schedule_style_recalc_during_layout.cc", - "deprecated_schedule_style_recalc_during_layout.h", - "deprecation.cc", - "deprecation.h", - "deprecation_report_body.cc", - "deprecation_report_body.h", - "device_single_window_event_controller.cc", - "device_single_window_event_controller.h", - "display_cutout_client_impl.cc", - "display_cutout_client_impl.h", - "document_policy_violation_report_body.cc", - "document_policy_violation_report_body.h", - "dom_timer.cc", - "dom_timer.h", - "dom_timer_coordinator.cc", - "dom_timer_coordinator.h", - "dom_visual_viewport.cc", - "dom_visual_viewport.h", - "dom_window.cc", - "dom_window.h", - "embedded_content_view.cc", - "embedded_content_view.h", - "event_handler_registry.cc", - "event_handler_registry.h", - "external.h", - "feature_policy_violation_report_body.cc", - "feature_policy_violation_report_body.h", - "find_in_page.cc", - "find_in_page.h", - "fragment_directive.h", - "frame.cc", - "frame.h", - "frame_client.h", - "frame_console.cc", - "frame_console.h", - "frame_lifecycle.cc", - "frame_lifecycle.h", - "frame_overlay.cc", - "frame_overlay.h", - "frame_owner.h", - "frame_serializer.cc", - "frame_serializer.h", - "frame_serializer_delegate_impl.cc", - "frame_serializer_delegate_impl.h", - "frame_types.h", - "frame_view.cc", - "frame_view.h", - "frame_view_auto_size_info.cc", - "frame_view_auto_size_info.h", - "fullscreen_controller.cc", - "fullscreen_controller.h", - "history.cc", - "history.h", - "intervention.cc", - "intervention.h", - "intervention_report_body.cc", - "intervention_report_body.h", - "layout_subtree_root_list.cc", - "layout_subtree_root_list.h", - "local_dom_window.cc", - "local_dom_window.h", - "local_frame.cc", - "local_frame.h", - "local_frame_client.h", - "local_frame_ukm_aggregator.cc", - "local_frame_ukm_aggregator.h", - "local_frame_view.cc", - "local_frame_view.h", - "location.cc", - "location.h", - "location_report_body.cc", - "location_report_body.h", - "navigation_rate_limiter.cc", - "navigation_rate_limiter.h", - "navigator.cc", - "navigator.h", - "navigator_concurrent_hardware.cc", - "navigator_concurrent_hardware.h", - "navigator_device_memory.cc", - "navigator_device_memory.h", - "navigator_id.cc", - "navigator_id.h", - "navigator_language.cc", - "navigator_language.h", - "navigator_on_line.h", - "navigator_scheduling.cc", - "navigator_scheduling.h", - "navigator_ua.cc", - "navigator_ua.h", - "navigator_ua_data.cc", - "navigator_ua_data.h", - "navigator_user_activation.cc", - "navigator_user_activation.h", - "opened_frame_tracker.cc", - "opened_frame_tracker.h", - "overlay_interstitial_ad_detector.cc", - "overlay_interstitial_ad_detector.h", - "page_dismissal_scope.cc", - "page_dismissal_scope.h", - "page_scale_constraints.cc", - "page_scale_constraints.h", - "page_scale_constraints_set.cc", - "page_scale_constraints_set.h", - "pausable_script_executor.cc", - "pausable_script_executor.h", - "performance_monitor.cc", - "performance_monitor.h", - "picture_in_picture_controller.cc", - "picture_in_picture_controller.h", - "platform_event_controller.cc", - "platform_event_controller.h", - "platform_event_dispatcher.cc", - "platform_event_dispatcher.h", - "remote_dom_window.cc", - "remote_dom_window.h", - "remote_frame.cc", - "remote_frame.h", - "remote_frame_client.h", - "remote_frame_client_impl.cc", - "remote_frame_client_impl.h", - "remote_frame_owner.cc", - "remote_frame_owner.h", - "remote_frame_view.cc", - "remote_frame_view.h", - "report.cc", - "report.h", - "report_body.cc", - "report_body.h", - "reporting_context.cc", - "reporting_context.h", - "reporting_observer.cc", - "reporting_observer.h", - "resize_viewport_anchor.cc", - "resize_viewport_anchor.h", - "root_frame_viewport.cc", - "root_frame_viewport.h", - "rotation_viewport_anchor.cc", - "rotation_viewport_anchor.h", - "sandbox_flags.cc", - "sandbox_flags.h", - "savable_resources.cc", - "savable_resources.h", - "scheduling.cc", - "scheduling.h", - "screen.cc", - "screen.h", - "screen_metrics_emulator.cc", - "screen_metrics_emulator.h", - "settings.cc", - "settings.h", - "settings_delegate.cc", - "settings_delegate.h", - "smart_clip.cc", - "smart_clip.h", - "sticky_ad_detector.cc", - "sticky_ad_detector.h", - "test_report_body.cc", - "test_report_body.h", - "use_counter_helper.cc", - "use_counter_helper.h", - "user_activation.cc", - "user_activation.h", - "viewport_data.cc", - "viewport_data.h", - "virtual_keyboard_overlay_changed_observer.cc", - "virtual_keyboard_overlay_changed_observer.h", - "visual_viewport.cc", - "visual_viewport.h", - "web_feature.h", - "web_feature_forward.h", - "web_frame_serializer_impl.cc", - "web_frame_serializer_impl.h", - "web_frame_widget_base.cc", - "web_frame_widget_base.h", - "web_frame_widget_impl.cc", - "web_frame_widget_impl.h", - "web_local_frame_impl.cc", - "web_local_frame_impl.h", - "web_view_frame_widget.cc", - "web_view_frame_widget.h", - "window_event_handlers.h", - "window_or_worker_global_scope.cc", - "window_or_worker_global_scope.h", - ] - - deps = [ - "//printing/buildflags", - "//skia", - "//ui/accessibility:ax_base", - "//ui/base/cursor:cursor_base", - "//ui/base/cursor/mojom:cursor_type_blink", - "//ui/base/dragdrop/mojom:mojom_blink", - "//ui/gfx:geometry_skia", - "//ui/gfx/geometry", - ] - - if (is_mac) { - deps += [ "//ui/base/mojom" ] - } - - if (enable_basic_printing) { - deps += [ "//printing" ] - } -}
diff --git a/third_party/blink/renderer/core/frame/build.gni b/third_party/blink/renderer/core/frame/build.gni new file mode 100644 index 0000000..04e76b9 --- /dev/null +++ b/third_party/blink/renderer/core/frame/build.gni
@@ -0,0 +1,220 @@ +# 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. + +blink_core_sources_frame = [ + "ad_tracker.cc", + "ad_tracker.h", + "bar_prop.cc", + "bar_prop.h", + "browser_controls.cc", + "browser_controls.h", + "coop_access_violation_report_body.cc", + "coop_access_violation_report_body.h", + "csp/content_security_policy.cc", + "csp/content_security_policy.h", + "csp/csp_directive.h", + "csp/csp_directive_list.cc", + "csp/csp_directive_list.h", + "csp/csp_source.cc", + "csp/csp_source.h", + "csp/csp_violation_report_body.cc", + "csp/csp_violation_report_body.h", + "csp/execution_context_csp_delegate.cc", + "csp/execution_context_csp_delegate.h", + "csp/media_list_directive.cc", + "csp/media_list_directive.h", + "csp/navigation_initiator_impl.cc", + "csp/navigation_initiator_impl.h", + "csp/require_trusted_types_for_directive.cc", + "csp/require_trusted_types_for_directive.h", + "csp/source_list_directive.cc", + "csp/source_list_directive.h", + "csp/string_list_directive.cc", + "csp/string_list_directive.h", + "dactyloscoper.cc", + "dactyloscoper.h", + "deprecated_schedule_style_recalc_during_layout.cc", + "deprecated_schedule_style_recalc_during_layout.h", + "deprecation.cc", + "deprecation.h", + "deprecation_report_body.cc", + "deprecation_report_body.h", + "device_single_window_event_controller.cc", + "device_single_window_event_controller.h", + "display_cutout_client_impl.cc", + "display_cutout_client_impl.h", + "document_policy_violation_report_body.cc", + "document_policy_violation_report_body.h", + "dom_timer.cc", + "dom_timer.h", + "dom_timer_coordinator.cc", + "dom_timer_coordinator.h", + "dom_visual_viewport.cc", + "dom_visual_viewport.h", + "dom_window.cc", + "dom_window.h", + "embedded_content_view.cc", + "embedded_content_view.h", + "event_handler_registry.cc", + "event_handler_registry.h", + "external.h", + "feature_policy_violation_report_body.cc", + "feature_policy_violation_report_body.h", + "find_in_page.cc", + "find_in_page.h", + "fragment_directive.h", + "frame.cc", + "frame.h", + "frame_client.h", + "frame_console.cc", + "frame_console.h", + "frame_lifecycle.cc", + "frame_lifecycle.h", + "frame_overlay.cc", + "frame_overlay.h", + "frame_owner.h", + "frame_serializer.cc", + "frame_serializer.h", + "frame_serializer_delegate_impl.cc", + "frame_serializer_delegate_impl.h", + "frame_types.h", + "frame_view.cc", + "frame_view.h", + "frame_view_auto_size_info.cc", + "frame_view_auto_size_info.h", + "fullscreen_controller.cc", + "fullscreen_controller.h", + "history.cc", + "history.h", + "intervention.cc", + "intervention.h", + "intervention_report_body.cc", + "intervention_report_body.h", + "layout_subtree_root_list.cc", + "layout_subtree_root_list.h", + "local_dom_window.cc", + "local_dom_window.h", + "local_frame.cc", + "local_frame.h", + "local_frame_client.h", + "local_frame_ukm_aggregator.cc", + "local_frame_ukm_aggregator.h", + "local_frame_view.cc", + "local_frame_view.h", + "location.cc", + "location.h", + "location_report_body.cc", + "location_report_body.h", + "navigation_rate_limiter.cc", + "navigation_rate_limiter.h", + "navigator.cc", + "navigator.h", + "navigator_concurrent_hardware.cc", + "navigator_concurrent_hardware.h", + "navigator_device_memory.cc", + "navigator_device_memory.h", + "navigator_id.cc", + "navigator_id.h", + "navigator_language.cc", + "navigator_language.h", + "navigator_on_line.h", + "navigator_scheduling.cc", + "navigator_scheduling.h", + "navigator_ua.cc", + "navigator_ua.h", + "navigator_ua_data.cc", + "navigator_ua_data.h", + "navigator_user_activation.cc", + "navigator_user_activation.h", + "opened_frame_tracker.cc", + "opened_frame_tracker.h", + "overlay_interstitial_ad_detector.cc", + "overlay_interstitial_ad_detector.h", + "page_dismissal_scope.cc", + "page_dismissal_scope.h", + "page_scale_constraints.cc", + "page_scale_constraints.h", + "page_scale_constraints_set.cc", + "page_scale_constraints_set.h", + "pausable_script_executor.cc", + "pausable_script_executor.h", + "performance_monitor.cc", + "performance_monitor.h", + "picture_in_picture_controller.cc", + "picture_in_picture_controller.h", + "platform_event_controller.cc", + "platform_event_controller.h", + "platform_event_dispatcher.cc", + "platform_event_dispatcher.h", + "remote_dom_window.cc", + "remote_dom_window.h", + "remote_frame.cc", + "remote_frame.h", + "remote_frame_client.h", + "remote_frame_client_impl.cc", + "remote_frame_client_impl.h", + "remote_frame_owner.cc", + "remote_frame_owner.h", + "remote_frame_view.cc", + "remote_frame_view.h", + "report.cc", + "report.h", + "report_body.cc", + "report_body.h", + "reporting_context.cc", + "reporting_context.h", + "reporting_observer.cc", + "reporting_observer.h", + "resize_viewport_anchor.cc", + "resize_viewport_anchor.h", + "root_frame_viewport.cc", + "root_frame_viewport.h", + "rotation_viewport_anchor.cc", + "rotation_viewport_anchor.h", + "sandbox_flags.cc", + "sandbox_flags.h", + "savable_resources.cc", + "savable_resources.h", + "scheduling.cc", + "scheduling.h", + "screen.cc", + "screen.h", + "screen_metrics_emulator.cc", + "screen_metrics_emulator.h", + "settings.cc", + "settings.h", + "settings_delegate.cc", + "settings_delegate.h", + "smart_clip.cc", + "smart_clip.h", + "sticky_ad_detector.cc", + "sticky_ad_detector.h", + "test_report_body.cc", + "test_report_body.h", + "use_counter_helper.cc", + "use_counter_helper.h", + "user_activation.cc", + "user_activation.h", + "viewport_data.cc", + "viewport_data.h", + "virtual_keyboard_overlay_changed_observer.cc", + "virtual_keyboard_overlay_changed_observer.h", + "visual_viewport.cc", + "visual_viewport.h", + "web_feature.h", + "web_feature_forward.h", + "web_frame_serializer_impl.cc", + "web_frame_serializer_impl.h", + "web_frame_widget_base.cc", + "web_frame_widget_base.h", + "web_frame_widget_impl.cc", + "web_frame_widget_impl.h", + "web_local_frame_impl.cc", + "web_local_frame_impl.h", + "web_view_frame_widget.cc", + "web_view_frame_widget.h", + "window_event_handlers.h", + "window_or_worker_global_scope.cc", + "window_or_worker_global_scope.h", +]
diff --git a/third_party/blink/renderer/core/fullscreen/BUILD.gn b/third_party/blink/renderer/core/fullscreen/BUILD.gn deleted file mode 100644 index 38b1c30b..0000000 --- a/third_party/blink/renderer/core/fullscreen/BUILD.gn +++ /dev/null
@@ -1,22 +0,0 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("fullscreen") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "document_fullscreen.cc", - "document_fullscreen.h", - "element_fullscreen.cc", - "element_fullscreen.h", - "fullscreen.cc", - "fullscreen.h", - "fullscreen_request_type.cc", - "fullscreen_request_type.h", - "scoped_allow_fullscreen.cc", - "scoped_allow_fullscreen.h", - ] -}
diff --git a/third_party/blink/renderer/core/fullscreen/build.gni b/third_party/blink/renderer/core/fullscreen/build.gni new file mode 100644 index 0000000..fe0dec58 --- /dev/null +++ b/third_party/blink/renderer/core/fullscreen/build.gni
@@ -0,0 +1,16 @@ +# 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. + +blink_core_sources_fullscreen = [ + "document_fullscreen.cc", + "document_fullscreen.h", + "element_fullscreen.cc", + "element_fullscreen.h", + "fullscreen.cc", + "fullscreen.h", + "fullscreen_request_type.cc", + "fullscreen_request_type.h", + "scoped_allow_fullscreen.cc", + "scoped_allow_fullscreen.h", +]
diff --git a/third_party/blink/renderer/core/geometry/BUILD.gn b/third_party/blink/renderer/core/geometry/BUILD.gn deleted file mode 100644 index 36cb113..0000000 --- a/third_party/blink/renderer/core/geometry/BUILD.gn +++ /dev/null
@@ -1,29 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("geometry") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "dom_matrix.cc", - "dom_matrix.h", - "dom_matrix_read_only.cc", - "dom_matrix_read_only.h", - "dom_point.cc", - "dom_point.h", - "dom_point_read_only.cc", - "dom_point_read_only.h", - "dom_quad.cc", - "dom_quad.h", - "dom_rect.cc", - "dom_rect.h", - "dom_rect_list.cc", - "dom_rect_list.h", - "dom_rect_read_only.cc", - "dom_rect_read_only.h", - "geometry_util.h", - ] -}
diff --git a/third_party/blink/renderer/core/geometry/build.gni b/third_party/blink/renderer/core/geometry/build.gni new file mode 100644 index 0000000..fc82d99 --- /dev/null +++ b/third_party/blink/renderer/core/geometry/build.gni
@@ -0,0 +1,23 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_sources_geometry = [ + "dom_matrix.cc", + "dom_matrix.h", + "dom_matrix_read_only.cc", + "dom_matrix_read_only.h", + "dom_point.cc", + "dom_point.h", + "dom_point_read_only.cc", + "dom_point_read_only.h", + "dom_quad.cc", + "dom_quad.h", + "dom_rect.cc", + "dom_rect.h", + "dom_rect_list.cc", + "dom_rect_list.h", + "dom_rect_read_only.cc", + "dom_rect_read_only.h", + "geometry_util.h", +]
diff --git a/third_party/blink/renderer/core/html/BUILD.gn b/third_party/blink/renderer/core/html/BUILD.gn deleted file mode 100644 index fd48a2b..0000000 --- a/third_party/blink/renderer/core/html/BUILD.gn +++ /dev/null
@@ -1,707 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("html") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "anchor_element_metrics.cc", - "anchor_element_metrics.h", - "anchor_element_metrics_sender.cc", - "anchor_element_metrics_sender.h", - "canvas/canvas_async_blob_creator.cc", - "canvas/canvas_async_blob_creator.h", - "canvas/canvas_context_creation_attributes_core.cc", - "canvas/canvas_context_creation_attributes_core.h", - "canvas/canvas_draw_listener.cc", - "canvas/canvas_draw_listener.h", - "canvas/canvas_font_cache.cc", - "canvas/canvas_font_cache.h", - "canvas/canvas_image_source.h", - "canvas/canvas_rendering_context.cc", - "canvas/canvas_rendering_context.h", - "canvas/canvas_rendering_context_factory.h", - "canvas/canvas_rendering_context_host.cc", - "canvas/canvas_rendering_context_host.h", - "canvas/html_canvas_element.cc", - "canvas/html_canvas_element.h", - "canvas/image_data.cc", - "canvas/image_data.h", - "canvas/image_element_base.cc", - "canvas/image_element_base.h", - "canvas/text_metrics.cc", - "canvas/text_metrics.h", - "canvas/ukm_parameters.h", - "collection_items_cache.h", - "collection_type.h", - "cross_origin_attribute.cc", - "cross_origin_attribute.h", - "custom/ce_reactions_scope.cc", - "custom/ce_reactions_scope.h", - "custom/custom_element.cc", - "custom/custom_element.h", - "custom/custom_element_definition.cc", - "custom/custom_element_definition.h", - "custom/custom_element_definition_builder.h", - "custom/custom_element_descriptor.h", - "custom/custom_element_descriptor_hash.h", - "custom/custom_element_reaction.cc", - "custom/custom_element_reaction.h", - "custom/custom_element_reaction_factory.cc", - "custom/custom_element_reaction_factory.h", - "custom/custom_element_reaction_queue.cc", - "custom/custom_element_reaction_queue.h", - "custom/custom_element_reaction_stack.cc", - "custom/custom_element_reaction_stack.h", - "custom/custom_element_registry.cc", - "custom/custom_element_registry.h", - "custom/custom_element_upgrade_sorter.cc", - "custom/custom_element_upgrade_sorter.h", - "custom/element_internals.cc", - "custom/element_internals.h", - "custom/v0_custom_element.cc", - "custom/v0_custom_element.h", - "custom/v0_custom_element_async_import_microtask_queue.cc", - "custom/v0_custom_element_async_import_microtask_queue.h", - "custom/v0_custom_element_callback_invocation.cc", - "custom/v0_custom_element_callback_invocation.h", - "custom/v0_custom_element_callback_queue.cc", - "custom/v0_custom_element_callback_queue.h", - "custom/v0_custom_element_definition.cc", - "custom/v0_custom_element_definition.h", - "custom/v0_custom_element_descriptor.h", - "custom/v0_custom_element_descriptor_hash.h", - "custom/v0_custom_element_exception.cc", - "custom/v0_custom_element_exception.h", - "custom/v0_custom_element_lifecycle_callbacks.h", - "custom/v0_custom_element_microtask_dispatcher.cc", - "custom/v0_custom_element_microtask_dispatcher.h", - "custom/v0_custom_element_microtask_import_step.cc", - "custom/v0_custom_element_microtask_import_step.h", - "custom/v0_custom_element_microtask_queue_base.cc", - "custom/v0_custom_element_microtask_queue_base.h", - "custom/v0_custom_element_microtask_resolution_step.cc", - "custom/v0_custom_element_microtask_resolution_step.h", - "custom/v0_custom_element_microtask_run_queue.cc", - "custom/v0_custom_element_microtask_run_queue.h", - "custom/v0_custom_element_microtask_step.h", - "custom/v0_custom_element_observer.cc", - "custom/v0_custom_element_observer.h", - "custom/v0_custom_element_processing_stack.cc", - "custom/v0_custom_element_processing_stack.h", - "custom/v0_custom_element_processing_step.h", - "custom/v0_custom_element_registration_context.cc", - "custom/v0_custom_element_registration_context.h", - "custom/v0_custom_element_registry.cc", - "custom/v0_custom_element_registry.h", - "custom/v0_custom_element_scheduler.cc", - "custom/v0_custom_element_scheduler.h", - "custom/v0_custom_element_sync_microtask_queue.cc", - "custom/v0_custom_element_sync_microtask_queue.h", - "custom/v0_custom_element_upgrade_candidate_map.cc", - "custom/v0_custom_element_upgrade_candidate_map.h", - "document_all_name_collection.cc", - "document_all_name_collection.h", - "document_name_collection.cc", - "document_name_collection.h", - "forms/base_button_input_type.cc", - "forms/base_button_input_type.h", - "forms/base_checkable_input_type.cc", - "forms/base_checkable_input_type.h", - "forms/base_temporal_input_type.cc", - "forms/base_temporal_input_type.h", - "forms/base_text_input_type.cc", - "forms/base_text_input_type.h", - "forms/button_input_type.cc", - "forms/button_input_type.h", - "forms/checkbox_input_type.cc", - "forms/checkbox_input_type.h", - "forms/chooser_only_temporal_input_type_view.cc", - "forms/chooser_only_temporal_input_type_view.h", - "forms/chooser_resource_loader.cc", - "forms/chooser_resource_loader.h", - "forms/clear_button_element.cc", - "forms/clear_button_element.h", - "forms/color_chooser.cc", - "forms/color_chooser.h", - "forms/color_chooser_client.cc", - "forms/color_chooser_client.h", - "forms/color_chooser_popup_ui_controller.cc", - "forms/color_chooser_popup_ui_controller.h", - "forms/color_chooser_ui_controller.cc", - "forms/color_chooser_ui_controller.h", - "forms/color_input_type.cc", - "forms/color_input_type.h", - "forms/date_input_type.cc", - "forms/date_input_type.h", - "forms/date_time_chooser.cc", - "forms/date_time_chooser.h", - "forms/date_time_chooser_client.cc", - "forms/date_time_chooser_client.h", - "forms/date_time_chooser_impl.cc", - "forms/date_time_chooser_impl.h", - "forms/date_time_edit_element.cc", - "forms/date_time_edit_element.h", - "forms/date_time_field_element.cc", - "forms/date_time_field_element.h", - "forms/date_time_field_elements.cc", - "forms/date_time_field_elements.h", - "forms/date_time_fields_state.cc", - "forms/date_time_fields_state.h", - "forms/date_time_local_input_type.cc", - "forms/date_time_local_input_type.h", - "forms/date_time_numeric_field_element.cc", - "forms/date_time_numeric_field_element.h", - "forms/date_time_symbolic_field_element.cc", - "forms/date_time_symbolic_field_element.h", - "forms/email_input_type.cc", - "forms/email_input_type.h", - "forms/external_date_time_chooser.cc", - "forms/external_date_time_chooser.h", - "forms/external_popup_menu.cc", - "forms/external_popup_menu.h", - "forms/file_chooser.cc", - "forms/file_chooser.h", - "forms/file_input_type.cc", - "forms/file_input_type.h", - "forms/form_associated.h", - "forms/form_controller.cc", - "forms/form_controller.h", - "forms/form_data.cc", - "forms/form_data.h", - "forms/form_data_event.cc", - "forms/form_data_event.h", - "forms/hidden_input_type.cc", - "forms/hidden_input_type.h", - "forms/html_button_element.cc", - "forms/html_button_element.h", - "forms/html_data_list_element.cc", - "forms/html_data_list_element.h", - "forms/html_data_list_options_collection.h", - "forms/html_field_set_element.cc", - "forms/html_field_set_element.h", - "forms/html_form_control_element.cc", - "forms/html_form_control_element.h", - "forms/html_form_control_element_with_state.cc", - "forms/html_form_control_element_with_state.h", - "forms/html_form_controls_collection.cc", - "forms/html_form_controls_collection.h", - "forms/html_form_element.cc", - "forms/html_form_element.h", - "forms/html_input_element.cc", - "forms/html_input_element.h", - "forms/html_label_element.cc", - "forms/html_label_element.h", - "forms/html_legend_element.cc", - "forms/html_legend_element.h", - "forms/html_opt_group_element.cc", - "forms/html_opt_group_element.h", - "forms/html_option_element.cc", - "forms/html_option_element.h", - "forms/html_options_collection.cc", - "forms/html_options_collection.h", - "forms/html_output_element.cc", - "forms/html_output_element.h", - "forms/html_select_element.cc", - "forms/html_select_element.h", - "forms/html_text_area_element.cc", - "forms/html_text_area_element.h", - "forms/image_input_type.cc", - "forms/image_input_type.h", - "forms/input_type.cc", - "forms/input_type.h", - "forms/input_type_view.cc", - "forms/input_type_view.h", - "forms/internal_popup_menu.cc", - "forms/internal_popup_menu.h", - "forms/keyboard_clickable_input_type_view.cc", - "forms/keyboard_clickable_input_type_view.h", - "forms/labels_node_list.cc", - "forms/labels_node_list.h", - "forms/listed_element.cc", - "forms/listed_element.h", - "forms/menu_list_inner_element.cc", - "forms/menu_list_inner_element.h", - "forms/month_input_type.cc", - "forms/month_input_type.h", - "forms/multiple_fields_temporal_input_type_view.cc", - "forms/multiple_fields_temporal_input_type_view.h", - "forms/number_input_type.cc", - "forms/number_input_type.h", - "forms/option_list.cc", - "forms/option_list.h", - "forms/password_input_type.cc", - "forms/password_input_type.h", - "forms/picker_indicator_element.cc", - "forms/picker_indicator_element.h", - "forms/popup_menu.h", - "forms/radio_button_group_scope.cc", - "forms/radio_button_group_scope.h", - "forms/radio_input_type.cc", - "forms/radio_input_type.h", - "forms/radio_node_list.cc", - "forms/radio_node_list.h", - "forms/range_input_type.cc", - "forms/range_input_type.h", - "forms/reset_input_type.cc", - "forms/reset_input_type.h", - "forms/search_input_type.cc", - "forms/search_input_type.h", - "forms/select_type.cc", - "forms/select_type.h", - "forms/slider_thumb_element.cc", - "forms/slider_thumb_element.h", - "forms/slider_track_element.cc", - "forms/slider_track_element.h", - "forms/spin_button_element.cc", - "forms/spin_button_element.h", - "forms/step_range.cc", - "forms/step_range.h", - "forms/submit_event.cc", - "forms/submit_event.h", - "forms/submit_input_type.cc", - "forms/submit_input_type.h", - "forms/telephone_input_type.cc", - "forms/telephone_input_type.h", - "forms/text_control_element.cc", - "forms/text_control_element.h", - "forms/text_control_inner_elements.cc", - "forms/text_control_inner_elements.h", - "forms/text_field_input_type.cc", - "forms/text_field_input_type.h", - "forms/text_input_type.cc", - "forms/text_input_type.h", - "forms/time_input_type.cc", - "forms/time_input_type.h", - "forms/type_ahead.cc", - "forms/type_ahead.h", - "forms/url_input_type.cc", - "forms/url_input_type.h", - "forms/validity_state.cc", - "forms/validity_state.h", - "forms/week_input_type.cc", - "forms/week_input_type.h", - "html_all_collection.cc", - "html_all_collection.h", - "html_anchor_element.cc", - "html_anchor_element.h", - "html_area_element.cc", - "html_area_element.h", - "html_base_element.cc", - "html_base_element.h", - "html_bdi_element.h", - "html_body_element.cc", - "html_body_element.h", - "html_br_element.cc", - "html_br_element.h", - "html_collection.cc", - "html_collection.h", - "html_content_element.cc", - "html_content_element.h", - "html_data_element.cc", - "html_data_element.h", - "html_details_element.cc", - "html_details_element.h", - "html_dialog_element.cc", - "html_dialog_element.h", - "html_dimension.cc", - "html_dimension.h", - "html_directory_element.cc", - "html_directory_element.h", - "html_div_element.cc", - "html_div_element.h", - "html_dlist_element.cc", - "html_dlist_element.h", - "html_document.cc", - "html_document.h", - "html_element.cc", - "html_element.h", - "html_embed_element.cc", - "html_embed_element.h", - "html_font_element.cc", - "html_font_element.h", - "html_frame_element.cc", - "html_frame_element.h", - "html_frame_element_base.cc", - "html_frame_element_base.h", - "html_frame_owner_element.cc", - "html_frame_owner_element.h", - "html_frame_set_element.cc", - "html_frame_set_element.h", - "html_head_element.cc", - "html_head_element.h", - "html_heading_element.cc", - "html_heading_element.h", - "html_hr_element.cc", - "html_hr_element.h", - "html_html_element.cc", - "html_html_element.h", - "html_iframe_element.cc", - "html_iframe_element.h", - "html_iframe_element_sandbox.cc", - "html_iframe_element_sandbox.h", - "html_image_element.cc", - "html_image_element.h", - "html_image_fallback_helper.cc", - "html_image_fallback_helper.h", - "html_image_loader.cc", - "html_image_loader.h", - "html_li_element.cc", - "html_li_element.h", - "html_link_element.cc", - "html_link_element.h", - "html_map_element.cc", - "html_map_element.h", - "html_marquee_element.cc", - "html_marquee_element.h", - "html_menu_element.cc", - "html_menu_element.h", - "html_meta_element.cc", - "html_meta_element.h", - "html_meter_element.cc", - "html_meter_element.h", - "html_mod_element.cc", - "html_mod_element.h", - "html_name_collection.cc", - "html_name_collection.h", - "html_no_embed_element.cc", - "html_no_embed_element.h", - "html_no_script_element.cc", - "html_no_script_element.h", - "html_object_element.cc", - "html_object_element.h", - "html_olist_element.cc", - "html_olist_element.h", - "html_paragraph_element.cc", - "html_paragraph_element.h", - "html_param_element.cc", - "html_param_element.h", - "html_picture_element.cc", - "html_picture_element.h", - "html_plugin_element.cc", - "html_plugin_element.h", - "html_pre_element.cc", - "html_pre_element.h", - "html_progress_element.cc", - "html_progress_element.h", - "html_quote_element.cc", - "html_quote_element.h", - "html_rt_element.cc", - "html_rt_element.h", - "html_ruby_element.cc", - "html_ruby_element.h", - "html_script_element.cc", - "html_script_element.h", - "html_shadow_element.cc", - "html_shadow_element.h", - "html_slot_element.cc", - "html_slot_element.h", - "html_source_element.cc", - "html_source_element.h", - "html_span_element.cc", - "html_span_element.h", - "html_style_element.cc", - "html_style_element.h", - "html_summary_element.cc", - "html_summary_element.h", - "html_table_caption_element.cc", - "html_table_caption_element.h", - "html_table_cell_element.cc", - "html_table_cell_element.h", - "html_table_col_element.cc", - "html_table_col_element.h", - "html_table_element.cc", - "html_table_element.h", - "html_table_part_element.cc", - "html_table_part_element.h", - "html_table_row_element.cc", - "html_table_row_element.h", - "html_table_rows_collection.cc", - "html_table_rows_collection.h", - "html_table_section_element.cc", - "html_table_section_element.h", - "html_tag_collection.cc", - "html_tag_collection.h", - "html_template_element.cc", - "html_template_element.h", - "html_time_element.cc", - "html_time_element.h", - "html_title_element.cc", - "html_title_element.h", - "html_ulist_element.cc", - "html_ulist_element.h", - "html_unknown_element.cc", - "html_unknown_element.h", - "html_view_source_document.cc", - "html_view_source_document.h", - "html_wbr_element.cc", - "html_wbr_element.h", - "image_document.cc", - "image_document.h", - "imports/html_import.cc", - "imports/html_import.h", - "imports/html_import_child.cc", - "imports/html_import_child.h", - "imports/html_import_child_client.h", - "imports/html_import_loader.cc", - "imports/html_import_loader.h", - "imports/html_import_state.h", - "imports/html_import_state_resolver.cc", - "imports/html_import_state_resolver.h", - "imports/html_import_tree_root.cc", - "imports/html_import_tree_root.h", - "imports/html_imports_controller.cc", - "imports/html_imports_controller.h", - "imports/link_import.cc", - "imports/link_import.h", - "lazy_load_frame_observer.cc", - "lazy_load_frame_observer.h", - "lazy_load_image_observer.cc", - "lazy_load_image_observer.h", - "link_manifest.cc", - "link_manifest.h", - "link_rel_attribute.cc", - "link_rel_attribute.h", - "link_resource.cc", - "link_resource.h", - "link_style.cc", - "link_style.h", - "link_web_bundle.cc", - "link_web_bundle.h", - "list_item_ordinal.cc", - "list_item_ordinal.h", - "loading_attribute.cc", - "loading_attribute.h", - "media/autoplay_policy.cc", - "media/autoplay_policy.h", - "media/autoplay_uma_helper.cc", - "media/autoplay_uma_helper.h", - "media/html_audio_element.cc", - "media/html_audio_element.h", - "media/html_media_element.cc", - "media/html_media_element.h", - "media/html_media_element_controls_list.cc", - "media/html_media_element_controls_list.h", - "media/html_video_element.cc", - "media/html_video_element.h", - "media/media_controls.cc", - "media/media_controls.h", - "media/media_custom_controls_fullscreen_detector.cc", - "media/media_custom_controls_fullscreen_detector.h", - "media/media_document.cc", - "media/media_document.h", - "media/media_element_parser_helpers.cc", - "media/media_element_parser_helpers.h", - "media/media_error.h", - "media/media_fragment_uri_parser.cc", - "media/media_fragment_uri_parser.h", - "media/media_remoting_interstitial.cc", - "media/media_remoting_interstitial.h", - "media/media_source_attachment.cc", - "media/media_source_attachment.h", - "media/media_source_registry.h", - "media/media_source_tracer.cc", - "media/media_source_tracer.h", - "media/picture_in_picture_interstitial.cc", - "media/picture_in_picture_interstitial.h", - "media/remote_playback_controller.cc", - "media/remote_playback_controller.h", - "media/remote_playback_observer.h", - "media/video_frame_callback_requester.cc", - "media/video_frame_callback_requester.h", - "media/video_wake_lock.cc", - "media/video_wake_lock.h", - "plugin_document.cc", - "plugin_document.h", - "portal/document_portals.cc", - "portal/document_portals.h", - "portal/dom_window_portal_host.cc", - "portal/dom_window_portal_host.h", - "portal/html_portal_element.cc", - "portal/html_portal_element.h", - "portal/portal_activate_event.cc", - "portal/portal_activate_event.h", - "portal/portal_activation_delegate.cc", - "portal/portal_activation_delegate.h", - "portal/portal_contents.cc", - "portal/portal_contents.h", - "portal/portal_host.cc", - "portal/portal_host.h", - "portal/portal_post_message_helper.cc", - "portal/portal_post_message_helper.h", - "rel_list.cc", - "rel_list.h", - "shadow/details_marker_control.cc", - "shadow/details_marker_control.h", - "shadow/progress_shadow_element.cc", - "shadow/progress_shadow_element.h", - "shadow/shadow_element_utils.cc", - "shadow/shadow_element_utils.h", - "table_constants.h", - "text_document.cc", - "text_document.h", - "time_ranges.cc", - "time_ranges.h", - "track/audio_track.cc", - "track/audio_track.h", - "track/audio_track_list.cc", - "track/audio_track_list.h", - "track/automatic_track_selection.cc", - "track/automatic_track_selection.h", - "track/cue_timeline.cc", - "track/cue_timeline.h", - "track/html_track_element.cc", - "track/html_track_element.h", - "track/inband_text_track.cc", - "track/inband_text_track.h", - "track/loadable_text_track.cc", - "track/loadable_text_track.h", - "track/text_track.cc", - "track/text_track.h", - "track/text_track_container.cc", - "track/text_track_container.h", - "track/text_track_cue.cc", - "track/text_track_cue.h", - "track/text_track_cue_list.cc", - "track/text_track_cue_list.h", - "track/text_track_kind_user_preference.h", - "track/text_track_list.cc", - "track/text_track_list.h", - "track/track_base.cc", - "track/track_base.h", - "track/track_event.cc", - "track/track_event.h", - "track/track_list_base.h", - "track/video_track.cc", - "track/video_track.h", - "track/video_track_list.cc", - "track/video_track_list.h", - "track/vtt/buffered_line_reader.cc", - "track/vtt/buffered_line_reader.h", - "track/vtt/vtt_cue.cc", - "track/vtt/vtt_cue.h", - "track/vtt/vtt_element.cc", - "track/vtt/vtt_element.h", - "track/vtt/vtt_parser.cc", - "track/vtt/vtt_parser.h", - "track/vtt/vtt_region.cc", - "track/vtt/vtt_region.h", - "track/vtt/vtt_scanner.cc", - "track/vtt/vtt_scanner.h", - "track/vtt/vtt_token.h", - "track/vtt/vtt_tokenizer.cc", - "track/vtt/vtt_tokenizer.h", - "trust_token_attribute_parsing.cc", - "trust_token_attribute_parsing.h", - "window_name_collection.cc", - "window_name_collection.h", - ] - - deps = [ - "//services/metrics/public/cpp:metrics_cpp", - "//skia:skcms", - "//third_party/blink/public/strings", - "//third_party/blink/renderer/core/html/parser:parser", - ] -} - -blink_core_tests("unit_tests") { - sources = [ - "anchor_element_metrics_sender_test.cc", - "anchor_element_metrics_test.cc", - "canvas/canvas_async_blob_creator_test.cc", - "canvas/canvas_font_cache_test.cc", - "canvas/html_canvas_element_test.cc", - "canvas/image_data_test.cc", - "custom/custom_element_definition_test.cc", - "custom/custom_element_descriptor_test.cc", - "custom/custom_element_reaction_queue_test.cc", - "custom/custom_element_reaction_stack_test.cc", - "custom/custom_element_reaction_test_helpers.h", - "custom/custom_element_registry_test.cc", - "custom/custom_element_test.cc", - "custom/custom_element_test_helpers.cc", - "custom/custom_element_test_helpers.h", - "custom/custom_element_upgrade_sorter_test.cc", - "forms/email_input_type_test.cc", - "forms/external_date_time_chooser_test.cc", - "forms/external_popup_menu_test.cc", - "forms/file_input_type_test.cc", - "forms/form_controller_test.cc", - "forms/form_data_test.cc", - "forms/html_data_list_element_test.cc", - "forms/html_form_control_element_test.cc", - "forms/html_form_element_test.cc", - "forms/html_input_element_test.cc", - "forms/html_output_element_test.cc", - "forms/html_select_element_test.cc", - "forms/html_text_area_element_test.cc", - "forms/internal_popup_menu_test.cc", - "forms/option_list_test.cc", - "forms/password_input_type_test.cc", - "forms/step_range_test.cc", - "forms/text_control_element_test.cc", - "forms/type_ahead_test.cc", - "html_content_element_test.cc", - "html_dimension_test.cc", - "html_element_test.cc", - "html_embed_element_test.cc", - "html_frame_element_test.cc", - "html_iframe_element_test.cc", - "html_image_element_test.cc", - "html_link_element_sizes_attribute_test.cc", - "html_link_element_test.cc", - "html_meta_element_test.cc", - "html_object_element_test.cc", - "html_plugin_element_test.cc", - "html_script_element_test.cc", - "html_slot_element_test.cc", - "html_table_row_element_test.cc", - "html_view_source_document_test.cc", - "image_document_test.cc", - "imports/html_import_sheets_test.cc", - "lazy_load_frame_observer_test.cc", - "lazy_load_image_observer_test.cc", - "link_element_loading_test.cc", - "link_rel_attribute_test.cc", - "link_web_bundle_test.cc", - "media/autoplay_uma_helper_test.cc", - "media/html_media_element_event_listeners_test.cc", - "media/html_media_element_test.cc", - "media/html_video_element_persistent_test.cc", - "media/html_video_element_test.cc", - "media/media_custom_controls_fullscreen_detector_test.cc", - "media/video_auto_fullscreen_test.cc", - "media/video_filling_viewport_test.cc", - "media/video_wake_lock_test.cc", - "parser/atomic_html_token_test.cc", - "parser/compact_html_token_test.cc", - "parser/html_document_parser_loading_test.cc", - "parser/html_document_parser_test.cc", - "parser/html_entity_parser_test.cc", - "parser/html_parser_idioms_test.cc", - "parser/html_parser_metrics_test.cc", - "parser/html_preload_scanner_document_test.cc", - "parser/html_preload_scanner_test.cc", - "parser/html_resource_preloader_test.cc", - "parser/html_srcset_parser_test.cc", - "parser/html_tokenizer_test.cc", - "parser/html_tree_builder_simulator_test.cc", - "parser/html_view_source_parser_test.cc", - "parser/text_resource_decoder_builder_test.cc", - "parser/text_resource_decoder_test.cc", - "portal/html_portal_element_test.cc", - "shadow/progress_shadow_element_test.cc", - "subresource_redirect_test.cc", - "time_ranges_test.cc", - "track/text_track_list_test.cc", - "track/vtt/buffered_line_reader_test.cc", - "track/vtt/vtt_scanner_test.cc", - "trust_token_attribute_parsing_test.cc", - ] - - deps = [ "//services/network/trust_tokens:test_support" ] -}
diff --git a/third_party/blink/renderer/core/html/build.gni b/third_party/blink/renderer/core/html/build.gni new file mode 100644 index 0000000..3c21f5c6 --- /dev/null +++ b/third_party/blink/renderer/core/html/build.gni
@@ -0,0 +1,764 @@ +# 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. + +blink_core_sources_html = [ + "anchor_element_metrics.cc", + "anchor_element_metrics.h", + "anchor_element_metrics_sender.cc", + "anchor_element_metrics_sender.h", + "canvas/canvas_async_blob_creator.cc", + "canvas/canvas_async_blob_creator.h", + "canvas/canvas_context_creation_attributes_core.cc", + "canvas/canvas_context_creation_attributes_core.h", + "canvas/canvas_draw_listener.cc", + "canvas/canvas_draw_listener.h", + "canvas/canvas_font_cache.cc", + "canvas/canvas_font_cache.h", + "canvas/canvas_image_source.h", + "canvas/canvas_rendering_context.cc", + "canvas/canvas_rendering_context.h", + "canvas/canvas_rendering_context_factory.h", + "canvas/canvas_rendering_context_host.cc", + "canvas/canvas_rendering_context_host.h", + "canvas/html_canvas_element.cc", + "canvas/html_canvas_element.h", + "canvas/image_data.cc", + "canvas/image_data.h", + "canvas/image_element_base.cc", + "canvas/image_element_base.h", + "canvas/text_metrics.cc", + "canvas/text_metrics.h", + "canvas/ukm_parameters.h", + "collection_items_cache.h", + "collection_type.h", + "cross_origin_attribute.cc", + "cross_origin_attribute.h", + "custom/ce_reactions_scope.cc", + "custom/ce_reactions_scope.h", + "custom/custom_element.cc", + "custom/custom_element.h", + "custom/custom_element_definition.cc", + "custom/custom_element_definition.h", + "custom/custom_element_definition_builder.h", + "custom/custom_element_descriptor.h", + "custom/custom_element_descriptor_hash.h", + "custom/custom_element_reaction.cc", + "custom/custom_element_reaction.h", + "custom/custom_element_reaction_factory.cc", + "custom/custom_element_reaction_factory.h", + "custom/custom_element_reaction_queue.cc", + "custom/custom_element_reaction_queue.h", + "custom/custom_element_reaction_stack.cc", + "custom/custom_element_reaction_stack.h", + "custom/custom_element_registry.cc", + "custom/custom_element_registry.h", + "custom/custom_element_upgrade_sorter.cc", + "custom/custom_element_upgrade_sorter.h", + "custom/element_internals.cc", + "custom/element_internals.h", + "custom/v0_custom_element.cc", + "custom/v0_custom_element.h", + "custom/v0_custom_element_async_import_microtask_queue.cc", + "custom/v0_custom_element_async_import_microtask_queue.h", + "custom/v0_custom_element_callback_invocation.cc", + "custom/v0_custom_element_callback_invocation.h", + "custom/v0_custom_element_callback_queue.cc", + "custom/v0_custom_element_callback_queue.h", + "custom/v0_custom_element_definition.cc", + "custom/v0_custom_element_definition.h", + "custom/v0_custom_element_descriptor.h", + "custom/v0_custom_element_descriptor_hash.h", + "custom/v0_custom_element_exception.cc", + "custom/v0_custom_element_exception.h", + "custom/v0_custom_element_lifecycle_callbacks.h", + "custom/v0_custom_element_microtask_dispatcher.cc", + "custom/v0_custom_element_microtask_dispatcher.h", + "custom/v0_custom_element_microtask_import_step.cc", + "custom/v0_custom_element_microtask_import_step.h", + "custom/v0_custom_element_microtask_queue_base.cc", + "custom/v0_custom_element_microtask_queue_base.h", + "custom/v0_custom_element_microtask_resolution_step.cc", + "custom/v0_custom_element_microtask_resolution_step.h", + "custom/v0_custom_element_microtask_run_queue.cc", + "custom/v0_custom_element_microtask_run_queue.h", + "custom/v0_custom_element_microtask_step.h", + "custom/v0_custom_element_observer.cc", + "custom/v0_custom_element_observer.h", + "custom/v0_custom_element_processing_stack.cc", + "custom/v0_custom_element_processing_stack.h", + "custom/v0_custom_element_processing_step.h", + "custom/v0_custom_element_registration_context.cc", + "custom/v0_custom_element_registration_context.h", + "custom/v0_custom_element_registry.cc", + "custom/v0_custom_element_registry.h", + "custom/v0_custom_element_scheduler.cc", + "custom/v0_custom_element_scheduler.h", + "custom/v0_custom_element_sync_microtask_queue.cc", + "custom/v0_custom_element_sync_microtask_queue.h", + "custom/v0_custom_element_upgrade_candidate_map.cc", + "custom/v0_custom_element_upgrade_candidate_map.h", + "document_all_name_collection.cc", + "document_all_name_collection.h", + "document_name_collection.cc", + "document_name_collection.h", + "forms/base_button_input_type.cc", + "forms/base_button_input_type.h", + "forms/base_checkable_input_type.cc", + "forms/base_checkable_input_type.h", + "forms/base_temporal_input_type.cc", + "forms/base_temporal_input_type.h", + "forms/base_text_input_type.cc", + "forms/base_text_input_type.h", + "forms/button_input_type.cc", + "forms/button_input_type.h", + "forms/checkbox_input_type.cc", + "forms/checkbox_input_type.h", + "forms/chooser_only_temporal_input_type_view.cc", + "forms/chooser_only_temporal_input_type_view.h", + "forms/chooser_resource_loader.cc", + "forms/chooser_resource_loader.h", + "forms/clear_button_element.cc", + "forms/clear_button_element.h", + "forms/color_chooser.cc", + "forms/color_chooser.h", + "forms/color_chooser_client.cc", + "forms/color_chooser_client.h", + "forms/color_chooser_popup_ui_controller.cc", + "forms/color_chooser_popup_ui_controller.h", + "forms/color_chooser_ui_controller.cc", + "forms/color_chooser_ui_controller.h", + "forms/color_input_type.cc", + "forms/color_input_type.h", + "forms/date_input_type.cc", + "forms/date_input_type.h", + "forms/date_time_chooser.cc", + "forms/date_time_chooser.h", + "forms/date_time_chooser_client.cc", + "forms/date_time_chooser_client.h", + "forms/date_time_chooser_impl.cc", + "forms/date_time_chooser_impl.h", + "forms/date_time_edit_element.cc", + "forms/date_time_edit_element.h", + "forms/date_time_field_element.cc", + "forms/date_time_field_element.h", + "forms/date_time_field_elements.cc", + "forms/date_time_field_elements.h", + "forms/date_time_fields_state.cc", + "forms/date_time_fields_state.h", + "forms/date_time_local_input_type.cc", + "forms/date_time_local_input_type.h", + "forms/date_time_numeric_field_element.cc", + "forms/date_time_numeric_field_element.h", + "forms/date_time_symbolic_field_element.cc", + "forms/date_time_symbolic_field_element.h", + "forms/email_input_type.cc", + "forms/email_input_type.h", + "forms/external_date_time_chooser.cc", + "forms/external_date_time_chooser.h", + "forms/external_popup_menu.cc", + "forms/external_popup_menu.h", + "forms/file_chooser.cc", + "forms/file_chooser.h", + "forms/file_input_type.cc", + "forms/file_input_type.h", + "forms/form_associated.h", + "forms/form_controller.cc", + "forms/form_controller.h", + "forms/form_data.cc", + "forms/form_data.h", + "forms/form_data_event.cc", + "forms/form_data_event.h", + "forms/hidden_input_type.cc", + "forms/hidden_input_type.h", + "forms/html_button_element.cc", + "forms/html_button_element.h", + "forms/html_data_list_element.cc", + "forms/html_data_list_element.h", + "forms/html_data_list_options_collection.h", + "forms/html_field_set_element.cc", + "forms/html_field_set_element.h", + "forms/html_form_control_element.cc", + "forms/html_form_control_element.h", + "forms/html_form_control_element_with_state.cc", + "forms/html_form_control_element_with_state.h", + "forms/html_form_controls_collection.cc", + "forms/html_form_controls_collection.h", + "forms/html_form_element.cc", + "forms/html_form_element.h", + "forms/html_input_element.cc", + "forms/html_input_element.h", + "forms/html_label_element.cc", + "forms/html_label_element.h", + "forms/html_legend_element.cc", + "forms/html_legend_element.h", + "forms/html_opt_group_element.cc", + "forms/html_opt_group_element.h", + "forms/html_option_element.cc", + "forms/html_option_element.h", + "forms/html_options_collection.cc", + "forms/html_options_collection.h", + "forms/html_output_element.cc", + "forms/html_output_element.h", + "forms/html_select_element.cc", + "forms/html_select_element.h", + "forms/html_text_area_element.cc", + "forms/html_text_area_element.h", + "forms/image_input_type.cc", + "forms/image_input_type.h", + "forms/input_type.cc", + "forms/input_type.h", + "forms/input_type_view.cc", + "forms/input_type_view.h", + "forms/internal_popup_menu.cc", + "forms/internal_popup_menu.h", + "forms/keyboard_clickable_input_type_view.cc", + "forms/keyboard_clickable_input_type_view.h", + "forms/labels_node_list.cc", + "forms/labels_node_list.h", + "forms/listed_element.cc", + "forms/listed_element.h", + "forms/menu_list_inner_element.cc", + "forms/menu_list_inner_element.h", + "forms/month_input_type.cc", + "forms/month_input_type.h", + "forms/multiple_fields_temporal_input_type_view.cc", + "forms/multiple_fields_temporal_input_type_view.h", + "forms/number_input_type.cc", + "forms/number_input_type.h", + "forms/option_list.cc", + "forms/option_list.h", + "forms/password_input_type.cc", + "forms/password_input_type.h", + "forms/picker_indicator_element.cc", + "forms/picker_indicator_element.h", + "forms/popup_menu.h", + "forms/radio_button_group_scope.cc", + "forms/radio_button_group_scope.h", + "forms/radio_input_type.cc", + "forms/radio_input_type.h", + "forms/radio_node_list.cc", + "forms/radio_node_list.h", + "forms/range_input_type.cc", + "forms/range_input_type.h", + "forms/reset_input_type.cc", + "forms/reset_input_type.h", + "forms/search_input_type.cc", + "forms/search_input_type.h", + "forms/select_type.cc", + "forms/select_type.h", + "forms/slider_thumb_element.cc", + "forms/slider_thumb_element.h", + "forms/slider_track_element.cc", + "forms/slider_track_element.h", + "forms/spin_button_element.cc", + "forms/spin_button_element.h", + "forms/step_range.cc", + "forms/step_range.h", + "forms/submit_event.cc", + "forms/submit_event.h", + "forms/submit_input_type.cc", + "forms/submit_input_type.h", + "forms/telephone_input_type.cc", + "forms/telephone_input_type.h", + "forms/text_control_element.cc", + "forms/text_control_element.h", + "forms/text_control_inner_elements.cc", + "forms/text_control_inner_elements.h", + "forms/text_field_input_type.cc", + "forms/text_field_input_type.h", + "forms/text_input_type.cc", + "forms/text_input_type.h", + "forms/time_input_type.cc", + "forms/time_input_type.h", + "forms/type_ahead.cc", + "forms/type_ahead.h", + "forms/url_input_type.cc", + "forms/url_input_type.h", + "forms/validity_state.cc", + "forms/validity_state.h", + "forms/week_input_type.cc", + "forms/week_input_type.h", + "html_all_collection.cc", + "html_all_collection.h", + "html_anchor_element.cc", + "html_anchor_element.h", + "html_area_element.cc", + "html_area_element.h", + "html_base_element.cc", + "html_base_element.h", + "html_bdi_element.h", + "html_body_element.cc", + "html_body_element.h", + "html_br_element.cc", + "html_br_element.h", + "html_collection.cc", + "html_collection.h", + "html_content_element.cc", + "html_content_element.h", + "html_data_element.cc", + "html_data_element.h", + "html_details_element.cc", + "html_details_element.h", + "html_dialog_element.cc", + "html_dialog_element.h", + "html_dimension.cc", + "html_dimension.h", + "html_directory_element.cc", + "html_directory_element.h", + "html_div_element.cc", + "html_div_element.h", + "html_dlist_element.cc", + "html_dlist_element.h", + "html_document.cc", + "html_document.h", + "html_element.cc", + "html_element.h", + "html_embed_element.cc", + "html_embed_element.h", + "html_font_element.cc", + "html_font_element.h", + "html_frame_element.cc", + "html_frame_element.h", + "html_frame_element_base.cc", + "html_frame_element_base.h", + "html_frame_owner_element.cc", + "html_frame_owner_element.h", + "html_frame_set_element.cc", + "html_frame_set_element.h", + "html_head_element.cc", + "html_head_element.h", + "html_heading_element.cc", + "html_heading_element.h", + "html_hr_element.cc", + "html_hr_element.h", + "html_html_element.cc", + "html_html_element.h", + "html_iframe_element.cc", + "html_iframe_element.h", + "html_iframe_element_sandbox.cc", + "html_iframe_element_sandbox.h", + "html_image_element.cc", + "html_image_element.h", + "html_image_fallback_helper.cc", + "html_image_fallback_helper.h", + "html_image_loader.cc", + "html_image_loader.h", + "html_li_element.cc", + "html_li_element.h", + "html_link_element.cc", + "html_link_element.h", + "html_map_element.cc", + "html_map_element.h", + "html_marquee_element.cc", + "html_marquee_element.h", + "html_menu_element.cc", + "html_menu_element.h", + "html_meta_element.cc", + "html_meta_element.h", + "html_meter_element.cc", + "html_meter_element.h", + "html_mod_element.cc", + "html_mod_element.h", + "html_name_collection.cc", + "html_name_collection.h", + "html_no_embed_element.cc", + "html_no_embed_element.h", + "html_no_script_element.cc", + "html_no_script_element.h", + "html_object_element.cc", + "html_object_element.h", + "html_olist_element.cc", + "html_olist_element.h", + "html_paragraph_element.cc", + "html_paragraph_element.h", + "html_param_element.cc", + "html_param_element.h", + "html_picture_element.cc", + "html_picture_element.h", + "html_plugin_element.cc", + "html_plugin_element.h", + "html_pre_element.cc", + "html_pre_element.h", + "html_progress_element.cc", + "html_progress_element.h", + "html_quote_element.cc", + "html_quote_element.h", + "html_rt_element.cc", + "html_rt_element.h", + "html_ruby_element.cc", + "html_ruby_element.h", + "html_script_element.cc", + "html_script_element.h", + "html_shadow_element.cc", + "html_shadow_element.h", + "html_slot_element.cc", + "html_slot_element.h", + "html_source_element.cc", + "html_source_element.h", + "html_span_element.cc", + "html_span_element.h", + "html_style_element.cc", + "html_style_element.h", + "html_summary_element.cc", + "html_summary_element.h", + "html_table_caption_element.cc", + "html_table_caption_element.h", + "html_table_cell_element.cc", + "html_table_cell_element.h", + "html_table_col_element.cc", + "html_table_col_element.h", + "html_table_element.cc", + "html_table_element.h", + "html_table_part_element.cc", + "html_table_part_element.h", + "html_table_row_element.cc", + "html_table_row_element.h", + "html_table_rows_collection.cc", + "html_table_rows_collection.h", + "html_table_section_element.cc", + "html_table_section_element.h", + "html_tag_collection.cc", + "html_tag_collection.h", + "html_template_element.cc", + "html_template_element.h", + "html_time_element.cc", + "html_time_element.h", + "html_title_element.cc", + "html_title_element.h", + "html_ulist_element.cc", + "html_ulist_element.h", + "html_unknown_element.cc", + "html_unknown_element.h", + "html_view_source_document.cc", + "html_view_source_document.h", + "html_wbr_element.cc", + "html_wbr_element.h", + "image_document.cc", + "image_document.h", + "imports/html_import.cc", + "imports/html_import.h", + "imports/html_import_child.cc", + "imports/html_import_child.h", + "imports/html_import_child_client.h", + "imports/html_import_loader.cc", + "imports/html_import_loader.h", + "imports/html_import_state.h", + "imports/html_import_state_resolver.cc", + "imports/html_import_state_resolver.h", + "imports/html_import_tree_root.cc", + "imports/html_import_tree_root.h", + "imports/html_imports_controller.cc", + "imports/html_imports_controller.h", + "imports/link_import.cc", + "imports/link_import.h", + "lazy_load_frame_observer.cc", + "lazy_load_frame_observer.h", + "lazy_load_image_observer.cc", + "lazy_load_image_observer.h", + "link_manifest.cc", + "link_manifest.h", + "link_rel_attribute.cc", + "link_rel_attribute.h", + "link_resource.cc", + "link_resource.h", + "link_style.cc", + "link_style.h", + "link_web_bundle.cc", + "link_web_bundle.h", + "list_item_ordinal.cc", + "list_item_ordinal.h", + "loading_attribute.cc", + "loading_attribute.h", + "media/autoplay_policy.cc", + "media/autoplay_policy.h", + "media/autoplay_uma_helper.cc", + "media/autoplay_uma_helper.h", + "media/html_audio_element.cc", + "media/html_audio_element.h", + "media/html_media_element.cc", + "media/html_media_element.h", + "media/html_media_element_controls_list.cc", + "media/html_media_element_controls_list.h", + "media/html_video_element.cc", + "media/html_video_element.h", + "media/media_controls.cc", + "media/media_controls.h", + "media/media_custom_controls_fullscreen_detector.cc", + "media/media_custom_controls_fullscreen_detector.h", + "media/media_document.cc", + "media/media_document.h", + "media/media_element_parser_helpers.cc", + "media/media_element_parser_helpers.h", + "media/media_error.h", + "media/media_fragment_uri_parser.cc", + "media/media_fragment_uri_parser.h", + "media/media_remoting_interstitial.cc", + "media/media_remoting_interstitial.h", + "media/media_source_attachment.cc", + "media/media_source_attachment.h", + "media/media_source_registry.h", + "media/media_source_tracer.cc", + "media/media_source_tracer.h", + "media/picture_in_picture_interstitial.cc", + "media/picture_in_picture_interstitial.h", + "media/remote_playback_controller.cc", + "media/remote_playback_controller.h", + "media/remote_playback_observer.h", + "media/video_frame_callback_requester.cc", + "media/video_frame_callback_requester.h", + "media/video_wake_lock.cc", + "media/video_wake_lock.h", + "plugin_document.cc", + "plugin_document.h", + "portal/document_portals.cc", + "portal/document_portals.h", + "portal/dom_window_portal_host.cc", + "portal/dom_window_portal_host.h", + "portal/html_portal_element.cc", + "portal/html_portal_element.h", + "portal/portal_activate_event.cc", + "portal/portal_activate_event.h", + "portal/portal_activation_delegate.cc", + "portal/portal_activation_delegate.h", + "portal/portal_contents.cc", + "portal/portal_contents.h", + "portal/portal_host.cc", + "portal/portal_host.h", + "portal/portal_post_message_helper.cc", + "portal/portal_post_message_helper.h", + "rel_list.cc", + "rel_list.h", + "shadow/details_marker_control.cc", + "shadow/details_marker_control.h", + "shadow/progress_shadow_element.cc", + "shadow/progress_shadow_element.h", + "shadow/shadow_element_utils.cc", + "shadow/shadow_element_utils.h", + "table_constants.h", + "text_document.cc", + "text_document.h", + "time_ranges.cc", + "time_ranges.h", + "track/audio_track.cc", + "track/audio_track.h", + "track/audio_track_list.cc", + "track/audio_track_list.h", + "track/automatic_track_selection.cc", + "track/automatic_track_selection.h", + "track/cue_timeline.cc", + "track/cue_timeline.h", + "track/html_track_element.cc", + "track/html_track_element.h", + "track/inband_text_track.cc", + "track/inband_text_track.h", + "track/loadable_text_track.cc", + "track/loadable_text_track.h", + "track/text_track.cc", + "track/text_track.h", + "track/text_track_container.cc", + "track/text_track_container.h", + "track/text_track_cue.cc", + "track/text_track_cue.h", + "track/text_track_cue_list.cc", + "track/text_track_cue_list.h", + "track/text_track_kind_user_preference.h", + "track/text_track_list.cc", + "track/text_track_list.h", + "track/track_base.cc", + "track/track_base.h", + "track/track_event.cc", + "track/track_event.h", + "track/track_list_base.h", + "track/video_track.cc", + "track/video_track.h", + "track/video_track_list.cc", + "track/video_track_list.h", + "track/vtt/buffered_line_reader.cc", + "track/vtt/buffered_line_reader.h", + "track/vtt/vtt_cue.cc", + "track/vtt/vtt_cue.h", + "track/vtt/vtt_element.cc", + "track/vtt/vtt_element.h", + "track/vtt/vtt_parser.cc", + "track/vtt/vtt_parser.h", + "track/vtt/vtt_region.cc", + "track/vtt/vtt_region.h", + "track/vtt/vtt_scanner.cc", + "track/vtt/vtt_scanner.h", + "track/vtt/vtt_token.h", + "track/vtt/vtt_tokenizer.cc", + "track/vtt/vtt_tokenizer.h", + "trust_token_attribute_parsing.cc", + "trust_token_attribute_parsing.h", + "window_name_collection.cc", + "window_name_collection.h", +] + +# Optimizing the HTML parser for speed yields significant gains in performance +# in parser-heavy scenarios. See https://crbug.com/787512. +blink_core_hot_sources_html = [ + "parser/atomic_html_token.cc", + "parser/atomic_html_token.h", + "parser/background_html_input_stream.cc", + "parser/background_html_input_stream.h", + "parser/background_html_parser.cc", + "parser/background_html_parser.h", + "parser/compact_html_token.cc", + "parser/compact_html_token.h", + "parser/css_preload_scanner.cc", + "parser/css_preload_scanner.h", + "parser/html_construction_site.cc", + "parser/html_construction_site.h", + "parser/html_document_parser.cc", + "parser/html_document_parser.h", + "parser/html_element_stack.cc", + "parser/html_element_stack.h", + "parser/html_entity_parser.cc", + "parser/html_entity_parser.h", + "parser/html_entity_search.cc", + "parser/html_entity_search.h", + "parser/html_entity_table.h", + "parser/html_formatting_element_list.cc", + "parser/html_formatting_element_list.h", + "parser/html_input_stream.h", + "parser/html_meta_charset_parser.cc", + "parser/html_meta_charset_parser.h", + "parser/html_parser_idioms.cc", + "parser/html_parser_idioms.h", + "parser/html_parser_metrics.cc", + "parser/html_parser_metrics.h", + "parser/html_parser_options.cc", + "parser/html_parser_options.h", + "parser/html_parser_reentry_permit.cc", + "parser/html_parser_reentry_permit.h", + "parser/html_parser_scheduler.cc", + "parser/html_parser_scheduler.h", + "parser/html_preload_scanner.cc", + "parser/html_preload_scanner.h", + "parser/html_resource_preloader.cc", + "parser/html_resource_preloader.h", + "parser/html_srcset_parser.cc", + "parser/html_srcset_parser.h", + "parser/html_stack_item.h", + "parser/html_token.h", + "parser/html_tokenizer.cc", + "parser/html_tokenizer.h", + "parser/html_tree_builder.cc", + "parser/html_tree_builder.h", + "parser/html_tree_builder_simulator.cc", + "parser/html_tree_builder_simulator.h", + "parser/html_view_source_parser.cc", + "parser/html_view_source_parser.h", + "parser/input_stream_preprocessor.h", + "parser/markup_tokenizer_inlines.h", + "parser/nesting_level_incrementer.h", + "parser/parser_scripting_flag_policy.h", + "parser/parser_synchronization_policy.h", + "parser/preload_request.cc", + "parser/preload_request.h", + "parser/pump_session.cc", + "parser/pump_session.h", + "parser/resource_preloader.cc", + "parser/resource_preloader.h", + "parser/text_document_parser.cc", + "parser/text_document_parser.h", + "parser/text_resource_decoder.cc", + "parser/text_resource_decoder.h", + "parser/text_resource_decoder_builder.cc", + "parser/text_resource_decoder_builder.h", +] + +blink_core_tests_html = [ + "anchor_element_metrics_sender_test.cc", + "anchor_element_metrics_test.cc", + "canvas/canvas_async_blob_creator_test.cc", + "canvas/canvas_font_cache_test.cc", + "canvas/html_canvas_element_test.cc", + "canvas/image_data_test.cc", + "custom/custom_element_definition_test.cc", + "custom/custom_element_descriptor_test.cc", + "custom/custom_element_reaction_queue_test.cc", + "custom/custom_element_reaction_stack_test.cc", + "custom/custom_element_reaction_test_helpers.h", + "custom/custom_element_registry_test.cc", + "custom/custom_element_test.cc", + "custom/custom_element_test_helpers.cc", + "custom/custom_element_test_helpers.h", + "custom/custom_element_upgrade_sorter_test.cc", + "forms/email_input_type_test.cc", + "forms/external_date_time_chooser_test.cc", + "forms/external_popup_menu_test.cc", + "forms/file_input_type_test.cc", + "forms/form_controller_test.cc", + "forms/form_data_test.cc", + "forms/html_data_list_element_test.cc", + "forms/html_form_control_element_test.cc", + "forms/html_form_element_test.cc", + "forms/html_input_element_test.cc", + "forms/html_output_element_test.cc", + "forms/html_select_element_test.cc", + "forms/html_text_area_element_test.cc", + "forms/internal_popup_menu_test.cc", + "forms/option_list_test.cc", + "forms/password_input_type_test.cc", + "forms/step_range_test.cc", + "forms/text_control_element_test.cc", + "forms/type_ahead_test.cc", + "html_content_element_test.cc", + "html_dimension_test.cc", + "html_element_test.cc", + "html_embed_element_test.cc", + "html_frame_element_test.cc", + "html_iframe_element_test.cc", + "html_image_element_test.cc", + "html_link_element_sizes_attribute_test.cc", + "html_link_element_test.cc", + "html_meta_element_test.cc", + "html_object_element_test.cc", + "html_plugin_element_test.cc", + "html_script_element_test.cc", + "html_slot_element_test.cc", + "html_table_row_element_test.cc", + "html_view_source_document_test.cc", + "image_document_test.cc", + "imports/html_import_sheets_test.cc", + "lazy_load_frame_observer_test.cc", + "lazy_load_image_observer_test.cc", + "link_element_loading_test.cc", + "link_rel_attribute_test.cc", + "link_web_bundle_test.cc", + "media/autoplay_uma_helper_test.cc", + "media/html_media_element_event_listeners_test.cc", + "media/html_media_element_test.cc", + "media/html_video_element_persistent_test.cc", + "media/html_video_element_test.cc", + "media/media_custom_controls_fullscreen_detector_test.cc", + "media/video_auto_fullscreen_test.cc", + "media/video_filling_viewport_test.cc", + "media/video_wake_lock_test.cc", + "parser/atomic_html_token_test.cc", + "parser/compact_html_token_test.cc", + "parser/html_document_parser_loading_test.cc", + "parser/html_document_parser_test.cc", + "parser/html_entity_parser_test.cc", + "parser/html_parser_idioms_test.cc", + "parser/html_parser_metrics_test.cc", + "parser/html_preload_scanner_document_test.cc", + "parser/html_preload_scanner_test.cc", + "parser/html_resource_preloader_test.cc", + "parser/html_srcset_parser_test.cc", + "parser/html_tokenizer_test.cc", + "parser/html_tree_builder_simulator_test.cc", + "parser/html_view_source_parser_test.cc", + "parser/text_resource_decoder_builder_test.cc", + "parser/text_resource_decoder_test.cc", + "portal/html_portal_element_test.cc", + "shadow/progress_shadow_element_test.cc", + "subresource_redirect_test.cc", + "time_ranges_test.cc", + "track/text_track_list_test.cc", + "track/vtt/buffered_line_reader_test.cc", + "track/vtt/vtt_scanner_test.cc", + "trust_token_attribute_parsing_test.cc", +]
diff --git a/third_party/blink/renderer/core/html/parser/BUILD.gn b/third_party/blink/renderer/core/html/parser/BUILD.gn deleted file mode 100644 index a9aa6d9..0000000 --- a/third_party/blink/renderer/core/html/parser/BUILD.gn +++ /dev/null
@@ -1,89 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("parser") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "atomic_html_token.cc", - "atomic_html_token.h", - "background_html_input_stream.cc", - "background_html_input_stream.h", - "background_html_parser.cc", - "background_html_parser.h", - "compact_html_token.cc", - "compact_html_token.h", - "css_preload_scanner.cc", - "css_preload_scanner.h", - "html_construction_site.cc", - "html_construction_site.h", - "html_document_parser.cc", - "html_document_parser.h", - "html_element_stack.cc", - "html_element_stack.h", - "html_entity_parser.cc", - "html_entity_parser.h", - "html_entity_search.cc", - "html_entity_search.h", - "html_entity_table.h", - "html_formatting_element_list.cc", - "html_formatting_element_list.h", - "html_input_stream.h", - "html_meta_charset_parser.cc", - "html_meta_charset_parser.h", - "html_parser_idioms.cc", - "html_parser_idioms.h", - "html_parser_metrics.cc", - "html_parser_metrics.h", - "html_parser_options.cc", - "html_parser_options.h", - "html_parser_reentry_permit.cc", - "html_parser_reentry_permit.h", - "html_parser_scheduler.cc", - "html_parser_scheduler.h", - "html_preload_scanner.cc", - "html_preload_scanner.h", - "html_resource_preloader.cc", - "html_resource_preloader.h", - "html_srcset_parser.cc", - "html_srcset_parser.h", - "html_stack_item.h", - "html_token.h", - "html_tokenizer.cc", - "html_tokenizer.h", - "html_tree_builder.cc", - "html_tree_builder.h", - "html_tree_builder_simulator.cc", - "html_tree_builder_simulator.h", - "html_view_source_parser.cc", - "html_view_source_parser.h", - "input_stream_preprocessor.h", - "markup_tokenizer_inlines.h", - "nesting_level_incrementer.h", - "parser_scripting_flag_policy.h", - "parser_synchronization_policy.h", - "preload_request.cc", - "preload_request.h", - "pump_session.cc", - "pump_session.h", - "resource_preloader.cc", - "resource_preloader.h", - "text_document_parser.cc", - "text_document_parser.h", - "text_resource_decoder.cc", - "text_resource_decoder.h", - "text_resource_decoder_builder.cc", - "text_resource_decoder_builder.h", - ] - - # Optimizing the HTML parser for speed yields significant gains in performance - # in parser-heavy scenarios. See https://crbug.com/787512. - # All other platforms already override this in core.gni. - if (!is_debug && is_android) { - configs -= [ "//build/config/compiler:default_optimization" ] - configs += [ "//build/config/compiler:optimize_max" ] - } -}
diff --git a/third_party/blink/renderer/core/imagebitmap/BUILD.gn b/third_party/blink/renderer/core/imagebitmap/BUILD.gn deleted file mode 100644 index b6b7baf4..0000000 --- a/third_party/blink/renderer/core/imagebitmap/BUILD.gn +++ /dev/null
@@ -1,18 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("imagebitmap") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "image_bitmap.cc", - "image_bitmap.h", - "image_bitmap_factories.cc", - "image_bitmap_factories.h", - "image_bitmap_source.cc", - "image_bitmap_source.h", - ] -}
diff --git a/third_party/blink/renderer/core/imagebitmap/build.gni b/third_party/blink/renderer/core/imagebitmap/build.gni new file mode 100644 index 0000000..3fe0219b --- /dev/null +++ b/third_party/blink/renderer/core/imagebitmap/build.gni
@@ -0,0 +1,12 @@ +# 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. + +blink_core_sources_imagebitmap = [ + "image_bitmap.cc", + "image_bitmap.h", + "image_bitmap_factories.cc", + "image_bitmap_factories.h", + "image_bitmap_source.cc", + "image_bitmap_source.h", +]
diff --git a/third_party/blink/renderer/core/input/BUILD.gn b/third_party/blink/renderer/core/input/BUILD.gn deleted file mode 100644 index 5212629..0000000 --- a/third_party/blink/renderer/core/input/BUILD.gn +++ /dev/null
@@ -1,52 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("input") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "boundary_event_dispatcher.cc", - "boundary_event_dispatcher.h", - "context_menu_allowed_scope.cc", - "context_menu_allowed_scope.h", - "event_handler.cc", - "event_handler.h", - "event_handling_util.cc", - "event_handling_util.h", - "gesture_manager.cc", - "gesture_manager.h", - "input_device_capabilities.cc", - "input_device_capabilities.h", - "keyboard_event_manager.cc", - "keyboard_event_manager.h", - "mouse_event_manager.cc", - "mouse_event_manager.h", - "mouse_wheel_event_manager.cc", - "mouse_wheel_event_manager.h", - "pointer_event_manager.cc", - "pointer_event_manager.h", - "scroll_manager.cc", - "scroll_manager.h", - "touch.cc", - "touch.h", - "touch_action_util.cc", - "touch_action_util.h", - "touch_event_manager.cc", - "touch_event_manager.h", - "touch_list.cc", - "touch_list.h", - ] - - public_deps = [ "//ui/base/cursor:cursor_base" ] - - deps = [ - "//skia", - "//third_party/blink/public:buildflags", - "//third_party/blink/renderer/platform", - "//third_party/blink/renderer/platform/wtf", - "//ui/base/cursor/mojom:cursor_type_blink", - ] -}
diff --git a/third_party/blink/renderer/core/input/build.gni b/third_party/blink/renderer/core/input/build.gni new file mode 100644 index 0000000..bcc90cc --- /dev/null +++ b/third_party/blink/renderer/core/input/build.gni
@@ -0,0 +1,36 @@ +# 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. + +blink_core_sources_input = [ + "boundary_event_dispatcher.cc", + "boundary_event_dispatcher.h", + "context_menu_allowed_scope.cc", + "context_menu_allowed_scope.h", + "event_handler.cc", + "event_handler.h", + "event_handling_util.cc", + "event_handling_util.h", + "gesture_manager.cc", + "gesture_manager.h", + "input_device_capabilities.cc", + "input_device_capabilities.h", + "keyboard_event_manager.cc", + "keyboard_event_manager.h", + "mouse_event_manager.cc", + "mouse_event_manager.h", + "mouse_wheel_event_manager.cc", + "mouse_wheel_event_manager.h", + "pointer_event_manager.cc", + "pointer_event_manager.h", + "scroll_manager.cc", + "scroll_manager.h", + "touch.cc", + "touch.h", + "touch_action_util.cc", + "touch_action_util.h", + "touch_event_manager.cc", + "touch_event_manager.h", + "touch_list.cc", + "touch_list.h", +]
diff --git a/third_party/blink/renderer/core/inspector/BUILD.gn b/third_party/blink/renderer/core/inspector/BUILD.gn index b8fa1eb..19432a8 100644 --- a/third_party/blink/renderer/core/inspector/BUILD.gn +++ b/third_party/blink/renderer/core/inspector/BUILD.gn
@@ -9,122 +9,6 @@ _inspector_protocol_dir = "//third_party/inspector_protocol" -blink_core_sources("inspector") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "console_message.cc", - "console_message.h", - "console_message_storage.cc", - "console_message_storage.h", - "dev_tools_emulator.cc", - "dev_tools_emulator.h", - "dev_tools_host.cc", - "dev_tools_host.h", - "devtools_agent.cc", - "devtools_agent.h", - "devtools_session.cc", - "devtools_session.h", - "dom_editor.cc", - "dom_editor.h", - "dom_patch_support.cc", - "dom_patch_support.h", - "dom_traversal_utils.cc", - "dom_traversal_utils.h", - "identifiers_factory.cc", - "identifiers_factory.h", - "inspect_tools.cc", - "inspect_tools.h", - "inspected_frames.cc", - "inspected_frames.h", - "inspector_animation_agent.cc", - "inspector_animation_agent.h", - "inspector_application_cache_agent.cc", - "inspector_application_cache_agent.h", - "inspector_audits_agent.cc", - "inspector_audits_agent.h", - "inspector_base_agent.h", - "inspector_css_agent.cc", - "inspector_css_agent.h", - "inspector_dom_agent.cc", - "inspector_dom_agent.h", - "inspector_dom_debugger_agent.cc", - "inspector_dom_debugger_agent.h", - "inspector_dom_snapshot_agent.cc", - "inspector_dom_snapshot_agent.h", - "inspector_emulation_agent.cc", - "inspector_emulation_agent.h", - "inspector_frontend_client.h", - "inspector_highlight.cc", - "inspector_highlight.h", - "inspector_history.cc", - "inspector_history.h", - "inspector_io_agent.cc", - "inspector_io_agent.h", - "inspector_issue.cc", - "inspector_issue.h", - "inspector_issue_reporter.cc", - "inspector_issue_reporter.h", - "inspector_issue_storage.cc", - "inspector_issue_storage.h", - "inspector_layer_tree_agent.cc", - "inspector_layer_tree_agent.h", - "inspector_log_agent.cc", - "inspector_log_agent.h", - "inspector_media_agent.cc", - "inspector_media_agent.h", - "inspector_media_context_impl.cc", - "inspector_media_context_impl.h", - "inspector_memory_agent.cc", - "inspector_memory_agent.h", - "inspector_network_agent.cc", - "inspector_network_agent.h", - "inspector_overlay_agent.cc", - "inspector_overlay_agent.h", - "inspector_overlay_host.cc", - "inspector_overlay_host.h", - "inspector_page_agent.cc", - "inspector_page_agent.h", - "inspector_performance_agent.cc", - "inspector_performance_agent.h", - "inspector_resource_container.cc", - "inspector_resource_container.h", - "inspector_resource_content_loader.cc", - "inspector_resource_content_loader.h", - "inspector_session_state.cc", - "inspector_session_state.h", - "inspector_style_resolver.cc", - "inspector_style_resolver.h", - "inspector_style_sheet.cc", - "inspector_style_sheet.h", - "inspector_task_runner.cc", - "inspector_task_runner.h", - "inspector_trace_events.cc", - "inspector_trace_events.h", - "legacy_dom_snapshot_agent.cc", - "legacy_dom_snapshot_agent.h", - "locale_controller.cc", - "locale_controller.h", - "main_thread_debugger.cc", - "main_thread_debugger.h", - "network_resources_data.cc", - "network_resources_data.h", - "request_debug_header_scope.cc", - "request_debug_header_scope.h", - "resolve_node.cc", - "resolve_node.h", - "thread_debugger.cc", - "thread_debugger.h", - "v8_inspector_string.cc", - "v8_inspector_string.h", - "worker_devtools_params.h", - "worker_inspector_controller.cc", - "worker_inspector_controller.h", - "worker_thread_debugger.cc", - "worker_thread_debugger.h", - ] -} - # inspector protocol ----------------------------------------------------------- inspector_protocol_generate("protocol_sources") {
diff --git a/third_party/blink/renderer/core/inspector/build.gni b/third_party/blink/renderer/core/inspector/build.gni new file mode 100644 index 0000000..24ccbed --- /dev/null +++ b/third_party/blink/renderer/core/inspector/build.gni
@@ -0,0 +1,115 @@ +# 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. + +blink_core_sources_inspector = [ + "console_message.cc", + "console_message.h", + "console_message_storage.cc", + "console_message_storage.h", + "dev_tools_emulator.cc", + "dev_tools_emulator.h", + "dev_tools_host.cc", + "dev_tools_host.h", + "devtools_agent.cc", + "devtools_agent.h", + "devtools_session.cc", + "devtools_session.h", + "dom_editor.cc", + "dom_editor.h", + "dom_patch_support.cc", + "dom_patch_support.h", + "dom_traversal_utils.cc", + "dom_traversal_utils.h", + "identifiers_factory.cc", + "identifiers_factory.h", + "inspect_tools.cc", + "inspect_tools.h", + "inspected_frames.cc", + "inspected_frames.h", + "inspector_animation_agent.cc", + "inspector_animation_agent.h", + "inspector_application_cache_agent.cc", + "inspector_application_cache_agent.h", + "inspector_audits_agent.cc", + "inspector_audits_agent.h", + "inspector_base_agent.h", + "inspector_css_agent.cc", + "inspector_css_agent.h", + "inspector_dom_agent.cc", + "inspector_dom_agent.h", + "inspector_dom_debugger_agent.cc", + "inspector_dom_debugger_agent.h", + "inspector_dom_snapshot_agent.cc", + "inspector_dom_snapshot_agent.h", + "inspector_emulation_agent.cc", + "inspector_emulation_agent.h", + "inspector_frontend_client.h", + "inspector_highlight.cc", + "inspector_highlight.h", + "inspector_history.cc", + "inspector_history.h", + "inspector_io_agent.cc", + "inspector_io_agent.h", + "inspector_issue.cc", + "inspector_issue.h", + "inspector_issue_reporter.cc", + "inspector_issue_reporter.h", + "inspector_issue_storage.cc", + "inspector_issue_storage.h", + "inspector_layer_tree_agent.cc", + "inspector_layer_tree_agent.h", + "inspector_log_agent.cc", + "inspector_log_agent.h", + "inspector_media_agent.cc", + "inspector_media_agent.h", + "inspector_media_context_impl.cc", + "inspector_media_context_impl.h", + "inspector_memory_agent.cc", + "inspector_memory_agent.h", + "inspector_network_agent.cc", + "inspector_network_agent.h", + "inspector_overlay_agent.cc", + "inspector_overlay_agent.h", + "inspector_overlay_host.cc", + "inspector_overlay_host.h", + "inspector_page_agent.cc", + "inspector_page_agent.h", + "inspector_performance_agent.cc", + "inspector_performance_agent.h", + "inspector_resource_container.cc", + "inspector_resource_container.h", + "inspector_resource_content_loader.cc", + "inspector_resource_content_loader.h", + "inspector_session_state.cc", + "inspector_session_state.h", + "inspector_style_resolver.cc", + "inspector_style_resolver.h", + "inspector_style_sheet.cc", + "inspector_style_sheet.h", + "inspector_task_runner.cc", + "inspector_task_runner.h", + "inspector_trace_events.cc", + "inspector_trace_events.h", + "legacy_dom_snapshot_agent.cc", + "legacy_dom_snapshot_agent.h", + "locale_controller.cc", + "locale_controller.h", + "main_thread_debugger.cc", + "main_thread_debugger.h", + "network_resources_data.cc", + "network_resources_data.h", + "request_debug_header_scope.cc", + "request_debug_header_scope.h", + "resolve_node.cc", + "resolve_node.h", + "thread_debugger.cc", + "thread_debugger.h", + "v8_inspector_string.cc", + "v8_inspector_string.h", + "worker_devtools_params.h", + "worker_inspector_controller.cc", + "worker_inspector_controller.h", + "worker_thread_debugger.cc", + "worker_thread_debugger.h", +]
diff --git a/third_party/blink/renderer/core/intersection_observer/BUILD.gn b/third_party/blink/renderer/core/intersection_observer/BUILD.gn deleted file mode 100644 index 3860e483..0000000 --- a/third_party/blink/renderer/core/intersection_observer/BUILD.gn +++ /dev/null
@@ -1,24 +0,0 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("intersection_observer") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "element_intersection_observer_data.cc", - "element_intersection_observer_data.h", - "intersection_geometry.cc", - "intersection_geometry.h", - "intersection_observation.cc", - "intersection_observation.h", - "intersection_observer.cc", - "intersection_observer.h", - "intersection_observer_controller.cc", - "intersection_observer_controller.h", - "intersection_observer_entry.cc", - "intersection_observer_entry.h", - ] -}
diff --git a/third_party/blink/renderer/core/intersection_observer/build.gni b/third_party/blink/renderer/core/intersection_observer/build.gni new file mode 100644 index 0000000..2965e03 --- /dev/null +++ b/third_party/blink/renderer/core/intersection_observer/build.gni
@@ -0,0 +1,18 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_sources_intersection_observer = [ + "element_intersection_observer_data.cc", + "element_intersection_observer_data.h", + "intersection_geometry.cc", + "intersection_geometry.h", + "intersection_observation.cc", + "intersection_observation.h", + "intersection_observer.cc", + "intersection_observer.h", + "intersection_observer_controller.cc", + "intersection_observer_controller.h", + "intersection_observer_entry.cc", + "intersection_observer_entry.h", +]
diff --git a/third_party/blink/renderer/core/layout/BUILD.gn b/third_party/blink/renderer/core/layout/BUILD.gn deleted file mode 100644 index ff9211c6..0000000 --- a/third_party/blink/renderer/core/layout/BUILD.gn +++ /dev/null
@@ -1,666 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("layout") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "api/hit_test_action.h", - "api/line_layout_api_shim.h", - "api/line_layout_block_flow.h", - "api/line_layout_box.h", - "api/line_layout_box_model.h", - "api/line_layout_br.h", - "api/line_layout_inline.h", - "api/line_layout_item.h", - "api/line_layout_list_marker.h", - "api/line_layout_ruby_base.h", - "api/line_layout_ruby_run.h", - "api/line_layout_ruby_text.h", - "api/line_layout_svg_inline.h", - "api/line_layout_svg_inline_text.h", - "api/line_layout_svg_text_path.h", - "api/line_layout_text.h", - "api/line_layout_text_combine.h", - "api/selection_state.cc", - "api/selection_state.h", - "background_bleed_avoidance.h", - "bidi_run.h", - "bidi_run_for_line.cc", - "bidi_run_for_line.h", - "box_layout_extra_input.h", - "collapsed_border_value.cc", - "collapsed_border_value.h", - "column_balancer.cc", - "column_balancer.h", - "content_change_type.h", - "counter_node.cc", - "counter_node.h", - "custom_scrollbar.cc", - "custom_scrollbar.h", - "depth_ordered_layout_object_list.cc", - "depth_ordered_layout_object_list.h", - "flexible_box_algorithm.cc", - "flexible_box_algorithm.h", - "floating_objects.cc", - "floating_objects.h", - "fragmentainer_iterator.cc", - "fragmentainer_iterator.h", - "fragmentation_context.h", - "generated_children.h", - "geometry/box_sides.h", - "geometry/logical_offset.cc", - "geometry/logical_offset.h", - "geometry/logical_rect.cc", - "geometry/logical_rect.h", - "geometry/logical_size.cc", - "geometry/logical_size.h", - "geometry/physical_offset.cc", - "geometry/physical_offset.h", - "geometry/physical_rect.cc", - "geometry/physical_rect.h", - "geometry/physical_size.cc", - "geometry/physical_size.h", - "geometry/transform_state.cc", - "geometry/transform_state.h", - "geometry/writing_mode_converter.cc", - "geometry/writing_mode_converter.h", - "grid.cc", - "grid.h", - "grid_baseline_alignment.cc", - "grid_baseline_alignment.h", - "grid_layout_utils.cc", - "grid_layout_utils.h", - "grid_track_sizing_algorithm.cc", - "grid_track_sizing_algorithm.h", - "hit_test_cache.cc", - "hit_test_cache.h", - "hit_test_canvas_result.cc", - "hit_test_canvas_result.h", - "hit_test_location.cc", - "hit_test_location.h", - "hit_test_request.h", - "hit_test_result.cc", - "hit_test_result.h", - "hit_testing_transform_state.cc", - "hit_testing_transform_state.h", - "intrinsic_sizing_info.h", - "layout_analyzer.cc", - "layout_analyzer.h", - "layout_block.cc", - "layout_block.h", - "layout_block_flow.cc", - "layout_block_flow.h", - "layout_block_flow_line.cc", - "layout_box.cc", - "layout_box.h", - "layout_box_model_object.cc", - "layout_box_model_object.h", - "layout_br.cc", - "layout_br.h", - "layout_button.cc", - "layout_button.h", - "layout_counter.cc", - "layout_counter.h", - "layout_custom_scrollbar_part.cc", - "layout_custom_scrollbar_part.h", - "layout_deprecated_flexible_box.cc", - "layout_deprecated_flexible_box.h", - "layout_details_marker.cc", - "layout_details_marker.h", - "layout_embedded_content.cc", - "layout_embedded_content.h", - "layout_embedded_object.cc", - "layout_embedded_object.h", - "layout_fieldset.cc", - "layout_fieldset.h", - "layout_file_upload_control.cc", - "layout_file_upload_control.h", - "layout_flexible_box.cc", - "layout_flexible_box.h", - "layout_flow_thread.cc", - "layout_flow_thread.h", - "layout_frame.cc", - "layout_frame.h", - "layout_frame_set.cc", - "layout_frame_set.h", - "layout_geometry_map.cc", - "layout_geometry_map.h", - "layout_geometry_map_step.h", - "layout_grid.cc", - "layout_grid.h", - "layout_html_canvas.cc", - "layout_html_canvas.h", - "layout_iframe.cc", - "layout_iframe.h", - "layout_image.cc", - "layout_image.h", - "layout_image_resource.cc", - "layout_image_resource.h", - "layout_image_resource_style_image.cc", - "layout_image_resource_style_image.h", - "layout_inline.cc", - "layout_inline.h", - "layout_inside_list_marker.cc", - "layout_inside_list_marker.h", - "layout_list_item.cc", - "layout_list_item.h", - "layout_list_marker.cc", - "layout_list_marker.h", - "layout_list_marker_image.cc", - "layout_list_marker_image.h", - "layout_media.cc", - "layout_media.h", - "layout_multi_column_flow_thread.cc", - "layout_multi_column_flow_thread.h", - "layout_multi_column_set.cc", - "layout_multi_column_set.h", - "layout_multi_column_spanner_placeholder.cc", - "layout_multi_column_spanner_placeholder.h", - "layout_object.cc", - "layout_object.h", - "layout_object_child_list.cc", - "layout_object_child_list.h", - "layout_object_factory.cc", - "layout_object_factory.h", - "layout_object_inlines.h", - "layout_outside_list_marker.cc", - "layout_outside_list_marker.h", - "layout_progress.cc", - "layout_progress.h", - "layout_quote.cc", - "layout_quote.h", - "layout_replaced.cc", - "layout_replaced.h", - "layout_ruby.cc", - "layout_ruby.h", - "layout_ruby_base.cc", - "layout_ruby_base.h", - "layout_ruby_run.cc", - "layout_ruby_run.h", - "layout_ruby_text.cc", - "layout_ruby_text.h", - "layout_shift_region.cc", - "layout_shift_region.h", - "layout_shift_tracker.cc", - "layout_shift_tracker.h", - "layout_slider_track.cc", - "layout_slider_track.h", - "layout_state.cc", - "layout_state.h", - "layout_table.cc", - "layout_table.h", - "layout_table_box_component.cc", - "layout_table_box_component.h", - "layout_table_caption.cc", - "layout_table_caption.h", - "layout_table_cell.cc", - "layout_table_cell.h", - "layout_table_col.cc", - "layout_table_col.h", - "layout_table_row.cc", - "layout_table_row.h", - "layout_table_section.cc", - "layout_table_section.h", - "layout_text.cc", - "layout_text.h", - "layout_text_combine.cc", - "layout_text_combine.h", - "layout_text_control.cc", - "layout_text_control.h", - "layout_text_control_multi_line.cc", - "layout_text_control_multi_line.h", - "layout_text_control_single_line.cc", - "layout_text_control_single_line.h", - "layout_text_fragment.cc", - "layout_text_fragment.h", - "layout_theme.cc", - "layout_theme.h", - "layout_theme_default.cc", - "layout_theme_default.h", - "layout_theme_font_provider.cc", - "layout_theme_font_provider.h", - "layout_theme_mobile.cc", - "layout_theme_mobile.h", - "layout_tree_as_text.cc", - "layout_tree_as_text.h", - "layout_video.cc", - "layout_video.h", - "layout_view.cc", - "layout_view.h", - "layout_vtt_cue.cc", - "layout_vtt_cue.h", - "layout_word_break.cc", - "layout_word_break.h", - "line/abstract_inline_text_box.cc", - "line/abstract_inline_text_box.h", - "line/breaking_context.cc", - "line/breaking_context_inline_headers.h", - "line/ellipsis_box.cc", - "line/ellipsis_box.h", - "line/glyph_overflow.h", - "line/inline_box.cc", - "line/inline_box.h", - "line/inline_flow_box.cc", - "line/inline_flow_box.h", - "line/inline_iterator.h", - "line/inline_text_box.cc", - "line/inline_text_box.h", - "line/layout_text_info.h", - "line/line_box_list.cc", - "line/line_box_list.h", - "line/line_breaker.cc", - "line/line_breaker.h", - "line/line_info.h", - "line/line_layout_state.h", - "line/line_orientation_utils.cc", - "line/line_orientation_utils.h", - "line/line_width.cc", - "line/line_width.h", - "line/root_inline_box.cc", - "line/root_inline_box.h", - "line/trailing_objects.cc", - "line/trailing_objects.h", - "line/word_measurement.h", - "list_marker.cc", - "list_marker.h", - "list_marker_text.cc", - "list_marker_text.h", - "map_coordinates_flags.h", - "min_max_sizes.cc", - "min_max_sizes.h", - "multi_column_fragmentainer_group.cc", - "multi_column_fragmentainer_group.h", - "ng/custom/css_layout_definition.cc", - "ng/custom/css_layout_definition.h", - "ng/custom/css_layout_worklet.cc", - "ng/custom/css_layout_worklet.h", - "ng/custom/custom_intrinsic_sizes.cc", - "ng/custom/custom_intrinsic_sizes.h", - "ng/custom/custom_layout_child.cc", - "ng/custom/custom_layout_child.h", - "ng/custom/custom_layout_constraints.cc", - "ng/custom/custom_layout_constraints.h", - "ng/custom/custom_layout_edges.h", - "ng/custom/custom_layout_fragment.cc", - "ng/custom/custom_layout_fragment.h", - "ng/custom/custom_layout_scope.cc", - "ng/custom/custom_layout_scope.h", - "ng/custom/custom_layout_work_task.cc", - "ng/custom/custom_layout_work_task.h", - "ng/custom/document_layout_definition.cc", - "ng/custom/document_layout_definition.h", - "ng/custom/layout_ng_custom.cc", - "ng/custom/layout_ng_custom.h", - "ng/custom/layout_worklet.cc", - "ng/custom/layout_worklet.h", - "ng/custom/layout_worklet_global_scope.cc", - "ng/custom/layout_worklet_global_scope.h", - "ng/custom/layout_worklet_global_scope_proxy.cc", - "ng/custom/layout_worklet_global_scope_proxy.h", - "ng/custom/ng_custom_layout_algorithm.cc", - "ng/custom/ng_custom_layout_algorithm.h", - "ng/custom/pending_layout_registry.cc", - "ng/custom/pending_layout_registry.h", - "ng/exclusions/ng_exclusion.cc", - "ng/exclusions/ng_exclusion.h", - "ng/exclusions/ng_exclusion_space.cc", - "ng/exclusions/ng_exclusion_space.h", - "ng/exclusions/ng_layout_opportunity.cc", - "ng/exclusions/ng_layout_opportunity.h", - "ng/exclusions/ng_line_layout_opportunity.h", - "ng/exclusions/ng_shape_exclusions.h", - "ng/flex/layout_ng_flexible_box.cc", - "ng/flex/layout_ng_flexible_box.h", - "ng/flex/ng_flex_child_iterator.cc", - "ng/flex/ng_flex_child_iterator.h", - "ng/flex/ng_flex_layout_algorithm.cc", - "ng/flex/ng_flex_layout_algorithm.h", - "ng/geometry/ng_bfc_offset.cc", - "ng/geometry/ng_bfc_offset.h", - "ng/geometry/ng_bfc_rect.h", - "ng/geometry/ng_box_strut.cc", - "ng/geometry/ng_box_strut.h", - "ng/geometry/ng_fragment_geometry.h", - "ng/geometry/ng_margin_strut.cc", - "ng/geometry/ng_margin_strut.h", - "ng/geometry/ng_static_position.h", - "ng/grid/layout_ng_grid.cc", - "ng/grid/layout_ng_grid.h", - "ng/grid/ng_grid_child_iterator.cc", - "ng/grid/ng_grid_child_iterator.h", - "ng/grid/ng_grid_layout_algorithm.cc", - "ng/grid/ng_grid_layout_algorithm.h", - "ng/grid/ng_grid_placement.cc", - "ng/grid/ng_grid_placement.h", - "ng/grid/ng_grid_track_collection.cc", - "ng/grid/ng_grid_track_collection.h", - "ng/inline/empty_offset_mapping_builder.h", - "ng/inline/layout_ng_text.h", - "ng/inline/layout_ng_text_fragment.h", - "ng/inline/ng_abstract_inline_text_box.cc", - "ng/inline/ng_abstract_inline_text_box.h", - "ng/inline/ng_bidi_paragraph.cc", - "ng/inline/ng_bidi_paragraph.h", - "ng/inline/ng_caret_position.cc", - "ng/inline/ng_caret_position.h", - "ng/inline/ng_caret_rect.cc", - "ng/inline/ng_caret_rect.h", - "ng/inline/ng_fragment_item.cc", - "ng/inline/ng_fragment_item.h", - "ng/inline/ng_fragment_items.cc", - "ng/inline/ng_fragment_items.h", - "ng/inline/ng_fragment_items_builder.cc", - "ng/inline/ng_fragment_items_builder.h", - "ng/inline/ng_inline_box_state.cc", - "ng/inline/ng_inline_box_state.h", - "ng/inline/ng_inline_break_token.cc", - "ng/inline/ng_inline_break_token.h", - "ng/inline/ng_inline_child_layout_context.cc", - "ng/inline/ng_inline_child_layout_context.h", - "ng/inline/ng_inline_cursor.cc", - "ng/inline/ng_inline_cursor.h", - "ng/inline/ng_inline_fragment_traversal.cc", - "ng/inline/ng_inline_fragment_traversal.h", - "ng/inline/ng_inline_item.cc", - "ng/inline/ng_inline_item.h", - "ng/inline/ng_inline_item_result.cc", - "ng/inline/ng_inline_item_result.h", - "ng/inline/ng_inline_item_segment.cc", - "ng/inline/ng_inline_item_segment.h", - "ng/inline/ng_inline_items_builder.cc", - "ng/inline/ng_inline_items_builder.h", - "ng/inline/ng_inline_layout_algorithm.cc", - "ng/inline/ng_inline_layout_algorithm.h", - "ng/inline/ng_inline_node.cc", - "ng/inline/ng_inline_node.h", - "ng/inline/ng_inline_node_data.cc", - "ng/inline/ng_inline_node_data.h", - "ng/inline/ng_line_box_fragment_builder.cc", - "ng/inline/ng_line_box_fragment_builder.h", - "ng/inline/ng_line_breaker.cc", - "ng/inline/ng_line_breaker.h", - "ng/inline/ng_line_truncator.cc", - "ng/inline/ng_line_truncator.h", - "ng/inline/ng_line_utils.cc", - "ng/inline/ng_line_utils.h", - "ng/inline/ng_logical_line_item.cc", - "ng/inline/ng_logical_line_item.h", - "ng/inline/ng_offset_mapping.cc", - "ng/inline/ng_offset_mapping.h", - "ng/inline/ng_offset_mapping_builder.cc", - "ng/inline/ng_offset_mapping_builder.h", - "ng/inline/ng_physical_line_box_fragment.cc", - "ng/inline/ng_physical_line_box_fragment.h", - "ng/inline/ng_physical_text_fragment.cc", - "ng/inline/ng_physical_text_fragment.h", - "ng/inline/ng_ruby_utils.cc", - "ng/inline/ng_ruby_utils.h", - "ng/inline/ng_text_fragment_builder.cc", - "ng/inline/ng_text_fragment_builder.h", - "ng/inline/ng_text_offset.cc", - "ng/inline/ng_text_offset.h", - "ng/inline/ng_text_type.h", - "ng/layout_box_utils.cc", - "ng/layout_box_utils.h", - "ng/layout_ng_block_flow.cc", - "ng/layout_ng_block_flow.h", - "ng/layout_ng_block_flow_mixin.cc", - "ng/layout_ng_block_flow_mixin.h", - "ng/layout_ng_button.cc", - "ng/layout_ng_button.h", - "ng/layout_ng_fieldset.cc", - "ng/layout_ng_fieldset.h", - "ng/layout_ng_mixin.cc", - "ng/layout_ng_mixin.h", - "ng/layout_ng_progress.cc", - "ng/layout_ng_progress.h", - "ng/layout_ng_ruby_as_block.cc", - "ng/layout_ng_ruby_as_block.h", - "ng/layout_ng_ruby_base.cc", - "ng/layout_ng_ruby_base.h", - "ng/layout_ng_ruby_run.cc", - "ng/layout_ng_ruby_run.h", - "ng/layout_ng_ruby_text.cc", - "ng/layout_ng_ruby_text.h", - "ng/layout_ng_text_control_inner_editor.h", - "ng/layout_ng_text_control_multi_line.cc", - "ng/layout_ng_text_control_multi_line.h", - "ng/layout_ng_text_control_single_line.cc", - "ng/layout_ng_text_control_single_line.h", - "ng/legacy_layout_tree_walking.h", - "ng/list/layout_ng_inside_list_marker.cc", - "ng/list/layout_ng_inside_list_marker.h", - "ng/list/layout_ng_list_item.cc", - "ng/list/layout_ng_list_item.h", - "ng/list/layout_ng_outside_list_marker.cc", - "ng/list/layout_ng_outside_list_marker.h", - "ng/list/ng_unpositioned_list_marker.cc", - "ng/list/ng_unpositioned_list_marker.h", - "ng/mathml/layout_ng_mathml_block.cc", - "ng/mathml/layout_ng_mathml_block.h", - "ng/mathml/layout_ng_mathml_block_flow.cc", - "ng/mathml/layout_ng_mathml_block_flow.h", - "ng/mathml/layout_ng_mathml_block_with_anonymous_mrow.cc", - "ng/mathml/layout_ng_mathml_block_with_anonymous_mrow.h", - "ng/mathml/ng_math_fraction_layout_algorithm.cc", - "ng/mathml/ng_math_fraction_layout_algorithm.h", - "ng/mathml/ng_math_layout_utils.cc", - "ng/mathml/ng_math_layout_utils.h", - "ng/mathml/ng_math_padded_layout_algorithm.cc", - "ng/mathml/ng_math_padded_layout_algorithm.h", - "ng/mathml/ng_math_radical_layout_algorithm.cc", - "ng/mathml/ng_math_radical_layout_algorithm.h", - "ng/mathml/ng_math_row_layout_algorithm.cc", - "ng/mathml/ng_math_row_layout_algorithm.h", - "ng/mathml/ng_math_scripts_layout_algorithm.cc", - "ng/mathml/ng_math_scripts_layout_algorithm.h", - "ng/mathml/ng_math_space_layout_algorithm.cc", - "ng/mathml/ng_math_space_layout_algorithm.h", - "ng/mathml/ng_math_under_over_layout_algorithm.cc", - "ng/mathml/ng_math_under_over_layout_algorithm.h", - "ng/mathml/ng_mathml_paint_info.h", - "ng/ng_absolute_utils.cc", - "ng/ng_absolute_utils.h", - "ng/ng_block_break_token.cc", - "ng/ng_block_break_token.h", - "ng/ng_block_child_iterator.cc", - "ng/ng_block_child_iterator.h", - "ng/ng_block_layout_algorithm.cc", - "ng/ng_block_layout_algorithm.h", - "ng/ng_block_layout_algorithm_utils.cc", - "ng/ng_block_layout_algorithm_utils.h", - "ng/ng_block_node.cc", - "ng/ng_block_node.h", - "ng/ng_box_fragment.cc", - "ng/ng_box_fragment.h", - "ng/ng_box_fragment_builder.cc", - "ng/ng_box_fragment_builder.h", - "ng/ng_break_appeal.h", - "ng/ng_break_token.cc", - "ng/ng_break_token.h", - "ng/ng_column_layout_algorithm.cc", - "ng/ng_column_layout_algorithm.h", - "ng/ng_constraint_space.cc", - "ng/ng_constraint_space.h", - "ng/ng_constraint_space_builder.cc", - "ng/ng_constraint_space_builder.h", - "ng/ng_container_fragment_builder.cc", - "ng/ng_container_fragment_builder.h", - "ng/ng_early_break.h", - "ng/ng_fieldset_layout_algorithm.cc", - "ng/ng_fieldset_layout_algorithm.h", - "ng/ng_floats_utils.cc", - "ng/ng_floats_utils.h", - "ng/ng_fragment.h", - "ng/ng_fragment_builder.h", - "ng/ng_fragment_child_iterator.cc", - "ng/ng_fragment_child_iterator.h", - "ng/ng_fragmentation_utils.cc", - "ng/ng_fragmentation_utils.h", - "ng/ng_ink_overflow.cc", - "ng/ng_ink_overflow.h", - "ng/ng_layout_algorithm.h", - "ng/ng_layout_input_node.cc", - "ng/ng_layout_input_node.h", - "ng/ng_layout_overflow_calculator.cc", - "ng/ng_layout_overflow_calculator.h", - "ng/ng_layout_result.cc", - "ng/ng_layout_result.h", - "ng/ng_layout_utils.cc", - "ng/ng_layout_utils.h", - "ng/ng_length_utils.cc", - "ng/ng_length_utils.h", - "ng/ng_link.h", - "ng/ng_out_of_flow_layout_part.cc", - "ng/ng_out_of_flow_layout_part.h", - "ng/ng_out_of_flow_positioned_node.h", - "ng/ng_outline_type.h", - "ng/ng_outline_utils.cc", - "ng/ng_outline_utils.h", - "ng/ng_page_layout_algorithm.cc", - "ng/ng_page_layout_algorithm.h", - "ng/ng_physical_box_fragment.cc", - "ng/ng_physical_box_fragment.h", - "ng/ng_physical_container_fragment.cc", - "ng/ng_physical_container_fragment.h", - "ng/ng_physical_fragment.cc", - "ng/ng_physical_fragment.h", - "ng/ng_positioned_float.h", - "ng/ng_relative_utils.cc", - "ng/ng_relative_utils.h", - "ng/ng_simplified_layout_algorithm.cc", - "ng/ng_simplified_layout_algorithm.h", - "ng/ng_simplified_oof_layout_algorithm.cc", - "ng/ng_simplified_oof_layout_algorithm.h", - "ng/ng_space_utils.cc", - "ng/ng_space_utils.h", - "ng/ng_text_decoration_offset.cc", - "ng/ng_text_decoration_offset.h", - "ng/ng_unpositioned_float.h", - "ng/table/interface_casting.h", - "ng/table/layout_ng_table.cc", - "ng/table/layout_ng_table.h", - "ng/table/layout_ng_table_caption.cc", - "ng/table/layout_ng_table_caption.h", - "ng/table/layout_ng_table_cell.cc", - "ng/table/layout_ng_table_cell.h", - "ng/table/layout_ng_table_cell_interface.h", - "ng/table/layout_ng_table_cell_legacy.cc", - "ng/table/layout_ng_table_cell_legacy.h", - "ng/table/layout_ng_table_column.cc", - "ng/table/layout_ng_table_column.h", - "ng/table/layout_ng_table_column_visitor.h", - "ng/table/layout_ng_table_interface.h", - "ng/table/layout_ng_table_row.cc", - "ng/table/layout_ng_table_row.h", - "ng/table/layout_ng_table_row_interface.h", - "ng/table/layout_ng_table_section.cc", - "ng/table/layout_ng_table_section.h", - "ng/table/layout_ng_table_section_interface.h", - "ng/table/ng_table_borders.cc", - "ng/table/ng_table_borders.h", - "ng/table/ng_table_constraint_space_data.h", - "ng/table/ng_table_fragment_data.h", - "ng/table/ng_table_layout_algorithm_helpers.cc", - "ng/table/ng_table_layout_algorithm_helpers.h", - "ng/table/ng_table_layout_algorithm_types.cc", - "ng/table/ng_table_layout_algorithm_types.h", - "ng/table/ng_table_layout_algorithm_utils.cc", - "ng/table/ng_table_layout_algorithm_utils.h", - "ng/table/ng_table_row_layout_algorithm.cc", - "ng/table/ng_table_row_layout_algorithm.h", - "ng/table/ng_table_section_layout_algorithm.cc", - "ng/table/ng_table_section_layout_algorithm.h", - "order_iterator.cc", - "order_iterator.h", - "overflow_model.h", - "pointer_events_hit_rules.cc", - "pointer_events_hit_rules.h", - "scroll_anchor.cc", - "scroll_anchor.h", - "shapes/box_shape.cc", - "shapes/box_shape.h", - "shapes/polygon_shape.cc", - "shapes/polygon_shape.h", - "shapes/raster_shape.cc", - "shapes/raster_shape.h", - "shapes/rectangle_shape.cc", - "shapes/rectangle_shape.h", - "shapes/shape.cc", - "shapes/shape.h", - "shapes/shape_interval.h", - "shapes/shape_outside_info.cc", - "shapes/shape_outside_info.h", - "style_retain_scope.cc", - "style_retain_scope.h", - "subtree_layout_scope.cc", - "subtree_layout_scope.h", - "svg/line/svg_inline_flow_box.cc", - "svg/line/svg_inline_flow_box.h", - "svg/line/svg_inline_text_box.cc", - "svg/line/svg_inline_text_box.h", - "svg/line/svg_root_inline_box.cc", - "svg/line/svg_root_inline_box.h", - "table_grid_cell.cc", - "table_grid_cell.h", - "table_layout_algorithm.h", - "table_layout_algorithm_auto.cc", - "table_layout_algorithm_auto.h", - "table_layout_algorithm_fixed.cc", - "table_layout_algorithm_fixed.h", - "text_autosizer.cc", - "text_autosizer.h", - "text_decoration_offset.cc", - "text_decoration_offset.h", - "text_decoration_offset_base.cc", - "text_decoration_offset_base.h", - "text_run_constructor.cc", - "text_run_constructor.h", - "theme_types.h", - "traced_layout_object.cc", - "traced_layout_object.h", - "vertical_position_cache.h", - "view_fragmentation_context.cc", - "view_fragmentation_context.h", - ] - - if (is_mac) { - sources += [ - "layout_theme_mac.h", - "layout_theme_mac.mm", - ] - } - - if (is_win) { - sources += [ - "layout_theme_font_provider_win.cc", - "layout_theme_win.cc", - "layout_theme_win.h", - "web_font_rendering_win.cc", - ] - } else { # Not Windows. - sources += [ "layout_theme_font_provider_default.cc" ] - } - - if (is_linux || is_chromeos) { - sources += [ - "layout_theme_linux.cc", - "layout_theme_linux.h", - ] - } - - if (is_android) { - sources += [ - "layout_theme_android.cc", - "layout_theme_android.h", - ] - } - - if (is_fuchsia) { - sources += [ "layout_theme_fuchsia.cc" ] - } -}
diff --git a/third_party/blink/renderer/core/layout/build.gni b/third_party/blink/renderer/core/layout/build.gni new file mode 100644 index 0000000..7305a161 --- /dev/null +++ b/third_party/blink/renderer/core/layout/build.gni
@@ -0,0 +1,749 @@ +# 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. + +blink_core_sources_layout = [ + "api/hit_test_action.h", + "api/line_layout_api_shim.h", + "api/line_layout_block_flow.h", + "api/line_layout_box.h", + "api/line_layout_box_model.h", + "api/line_layout_br.h", + "api/line_layout_inline.h", + "api/line_layout_item.h", + "api/line_layout_list_marker.h", + "api/line_layout_ruby_base.h", + "api/line_layout_ruby_run.h", + "api/line_layout_ruby_text.h", + "api/line_layout_svg_inline.h", + "api/line_layout_svg_inline_text.h", + "api/line_layout_svg_text_path.h", + "api/line_layout_text.h", + "api/line_layout_text_combine.h", + "api/selection_state.cc", + "api/selection_state.h", + "background_bleed_avoidance.h", + "bidi_run.h", + "bidi_run_for_line.cc", + "bidi_run_for_line.h", + "box_layout_extra_input.h", + "collapsed_border_value.cc", + "collapsed_border_value.h", + "column_balancer.cc", + "column_balancer.h", + "content_change_type.h", + "counter_node.cc", + "counter_node.h", + "custom_scrollbar.cc", + "custom_scrollbar.h", + "depth_ordered_layout_object_list.cc", + "depth_ordered_layout_object_list.h", + "flexible_box_algorithm.cc", + "flexible_box_algorithm.h", + "floating_objects.cc", + "floating_objects.h", + "fragmentainer_iterator.cc", + "fragmentainer_iterator.h", + "fragmentation_context.h", + "generated_children.h", + "geometry/box_sides.h", + "geometry/logical_offset.cc", + "geometry/logical_offset.h", + "geometry/logical_rect.cc", + "geometry/logical_rect.h", + "geometry/logical_size.cc", + "geometry/logical_size.h", + "geometry/physical_offset.cc", + "geometry/physical_offset.h", + "geometry/physical_rect.cc", + "geometry/physical_rect.h", + "geometry/physical_size.cc", + "geometry/physical_size.h", + "geometry/transform_state.cc", + "geometry/transform_state.h", + "geometry/writing_mode_converter.cc", + "geometry/writing_mode_converter.h", + "grid.cc", + "grid.h", + "grid_baseline_alignment.cc", + "grid_baseline_alignment.h", + "grid_layout_utils.cc", + "grid_layout_utils.h", + "grid_track_sizing_algorithm.cc", + "grid_track_sizing_algorithm.h", + "hit_test_cache.cc", + "hit_test_cache.h", + "hit_test_canvas_result.cc", + "hit_test_canvas_result.h", + "hit_test_location.cc", + "hit_test_location.h", + "hit_test_request.h", + "hit_test_result.cc", + "hit_test_result.h", + "hit_testing_transform_state.cc", + "hit_testing_transform_state.h", + "intrinsic_sizing_info.h", + "layout_analyzer.cc", + "layout_analyzer.h", + "layout_block.cc", + "layout_block.h", + "layout_block_flow.cc", + "layout_block_flow.h", + "layout_block_flow_line.cc", + "layout_box.cc", + "layout_box.h", + "layout_box_model_object.cc", + "layout_box_model_object.h", + "layout_br.cc", + "layout_br.h", + "layout_button.cc", + "layout_button.h", + "layout_counter.cc", + "layout_counter.h", + "layout_custom_scrollbar_part.cc", + "layout_custom_scrollbar_part.h", + "layout_deprecated_flexible_box.cc", + "layout_deprecated_flexible_box.h", + "layout_details_marker.cc", + "layout_details_marker.h", + "layout_embedded_content.cc", + "layout_embedded_content.h", + "layout_embedded_object.cc", + "layout_embedded_object.h", + "layout_fieldset.cc", + "layout_fieldset.h", + "layout_file_upload_control.cc", + "layout_file_upload_control.h", + "layout_flexible_box.cc", + "layout_flexible_box.h", + "layout_flow_thread.cc", + "layout_flow_thread.h", + "layout_frame.cc", + "layout_frame.h", + "layout_frame_set.cc", + "layout_frame_set.h", + "layout_geometry_map.cc", + "layout_geometry_map.h", + "layout_geometry_map_step.h", + "layout_grid.cc", + "layout_grid.h", + "layout_html_canvas.cc", + "layout_html_canvas.h", + "layout_iframe.cc", + "layout_iframe.h", + "layout_image.cc", + "layout_image.h", + "layout_image_resource.cc", + "layout_image_resource.h", + "layout_image_resource_style_image.cc", + "layout_image_resource_style_image.h", + "layout_inline.cc", + "layout_inline.h", + "layout_inside_list_marker.cc", + "layout_inside_list_marker.h", + "layout_list_item.cc", + "layout_list_item.h", + "layout_list_marker.cc", + "layout_list_marker.h", + "layout_list_marker_image.cc", + "layout_list_marker_image.h", + "layout_media.cc", + "layout_media.h", + "layout_multi_column_flow_thread.cc", + "layout_multi_column_flow_thread.h", + "layout_multi_column_set.cc", + "layout_multi_column_set.h", + "layout_multi_column_spanner_placeholder.cc", + "layout_multi_column_spanner_placeholder.h", + "layout_object.cc", + "layout_object.h", + "layout_object_child_list.cc", + "layout_object_child_list.h", + "layout_object_factory.cc", + "layout_object_factory.h", + "layout_object_inlines.h", + "layout_outside_list_marker.cc", + "layout_outside_list_marker.h", + "layout_progress.cc", + "layout_progress.h", + "layout_quote.cc", + "layout_quote.h", + "layout_replaced.cc", + "layout_replaced.h", + "layout_ruby.cc", + "layout_ruby.h", + "layout_ruby_base.cc", + "layout_ruby_base.h", + "layout_ruby_run.cc", + "layout_ruby_run.h", + "layout_ruby_text.cc", + "layout_ruby_text.h", + "layout_shift_region.cc", + "layout_shift_region.h", + "layout_shift_tracker.cc", + "layout_shift_tracker.h", + "layout_slider_track.cc", + "layout_slider_track.h", + "layout_state.cc", + "layout_state.h", + "layout_table.cc", + "layout_table.h", + "layout_table_box_component.cc", + "layout_table_box_component.h", + "layout_table_caption.cc", + "layout_table_caption.h", + "layout_table_cell.cc", + "layout_table_cell.h", + "layout_table_col.cc", + "layout_table_col.h", + "layout_table_row.cc", + "layout_table_row.h", + "layout_table_section.cc", + "layout_table_section.h", + "layout_text.cc", + "layout_text.h", + "layout_text_combine.cc", + "layout_text_combine.h", + "layout_text_control.cc", + "layout_text_control.h", + "layout_text_control_multi_line.cc", + "layout_text_control_multi_line.h", + "layout_text_control_single_line.cc", + "layout_text_control_single_line.h", + "layout_text_fragment.cc", + "layout_text_fragment.h", + "layout_theme.cc", + "layout_theme.h", + "layout_theme_default.cc", + "layout_theme_default.h", + "layout_theme_font_provider.cc", + "layout_theme_font_provider.h", + "layout_theme_mobile.cc", + "layout_theme_mobile.h", + "layout_tree_as_text.cc", + "layout_tree_as_text.h", + "layout_video.cc", + "layout_video.h", + "layout_view.cc", + "layout_view.h", + "layout_vtt_cue.cc", + "layout_vtt_cue.h", + "layout_word_break.cc", + "layout_word_break.h", + "line/abstract_inline_text_box.cc", + "line/abstract_inline_text_box.h", + "line/breaking_context.cc", + "line/breaking_context_inline_headers.h", + "line/ellipsis_box.cc", + "line/ellipsis_box.h", + "line/glyph_overflow.h", + "line/inline_box.cc", + "line/inline_box.h", + "line/inline_flow_box.cc", + "line/inline_flow_box.h", + "line/inline_iterator.h", + "line/inline_text_box.cc", + "line/inline_text_box.h", + "line/layout_text_info.h", + "line/line_box_list.cc", + "line/line_box_list.h", + "line/line_breaker.cc", + "line/line_breaker.h", + "line/line_info.h", + "line/line_layout_state.h", + "line/line_orientation_utils.cc", + "line/line_orientation_utils.h", + "line/line_width.cc", + "line/line_width.h", + "line/root_inline_box.cc", + "line/root_inline_box.h", + "line/trailing_objects.cc", + "line/trailing_objects.h", + "line/word_measurement.h", + "list_marker.cc", + "list_marker.h", + "list_marker_text.cc", + "list_marker_text.h", + "map_coordinates_flags.h", + "min_max_sizes.cc", + "min_max_sizes.h", + "multi_column_fragmentainer_group.cc", + "multi_column_fragmentainer_group.h", + "ng/custom/css_layout_definition.cc", + "ng/custom/css_layout_definition.h", + "ng/custom/css_layout_worklet.cc", + "ng/custom/css_layout_worklet.h", + "ng/custom/custom_intrinsic_sizes.cc", + "ng/custom/custom_intrinsic_sizes.h", + "ng/custom/custom_layout_child.cc", + "ng/custom/custom_layout_child.h", + "ng/custom/custom_layout_constraints.cc", + "ng/custom/custom_layout_constraints.h", + "ng/custom/custom_layout_edges.h", + "ng/custom/custom_layout_fragment.cc", + "ng/custom/custom_layout_fragment.h", + "ng/custom/custom_layout_scope.cc", + "ng/custom/custom_layout_scope.h", + "ng/custom/custom_layout_work_task.cc", + "ng/custom/custom_layout_work_task.h", + "ng/custom/document_layout_definition.cc", + "ng/custom/document_layout_definition.h", + "ng/custom/layout_ng_custom.cc", + "ng/custom/layout_ng_custom.h", + "ng/custom/layout_worklet.cc", + "ng/custom/layout_worklet.h", + "ng/custom/layout_worklet_global_scope.cc", + "ng/custom/layout_worklet_global_scope.h", + "ng/custom/layout_worklet_global_scope_proxy.cc", + "ng/custom/layout_worklet_global_scope_proxy.h", + "ng/custom/ng_custom_layout_algorithm.cc", + "ng/custom/ng_custom_layout_algorithm.h", + "ng/custom/pending_layout_registry.cc", + "ng/custom/pending_layout_registry.h", + "ng/exclusions/ng_exclusion.cc", + "ng/exclusions/ng_exclusion.h", + "ng/exclusions/ng_exclusion_space.cc", + "ng/exclusions/ng_exclusion_space.h", + "ng/exclusions/ng_layout_opportunity.cc", + "ng/exclusions/ng_layout_opportunity.h", + "ng/exclusions/ng_line_layout_opportunity.h", + "ng/exclusions/ng_shape_exclusions.h", + "ng/flex/layout_ng_flexible_box.cc", + "ng/flex/layout_ng_flexible_box.h", + "ng/flex/ng_flex_child_iterator.cc", + "ng/flex/ng_flex_child_iterator.h", + "ng/flex/ng_flex_layout_algorithm.cc", + "ng/flex/ng_flex_layout_algorithm.h", + "ng/geometry/ng_bfc_offset.cc", + "ng/geometry/ng_bfc_offset.h", + "ng/geometry/ng_bfc_rect.h", + "ng/geometry/ng_box_strut.cc", + "ng/geometry/ng_box_strut.h", + "ng/geometry/ng_fragment_geometry.h", + "ng/geometry/ng_margin_strut.cc", + "ng/geometry/ng_margin_strut.h", + "ng/geometry/ng_static_position.h", + "ng/grid/layout_ng_grid.cc", + "ng/grid/layout_ng_grid.h", + "ng/grid/ng_grid_child_iterator.cc", + "ng/grid/ng_grid_child_iterator.h", + "ng/grid/ng_grid_layout_algorithm.cc", + "ng/grid/ng_grid_layout_algorithm.h", + "ng/grid/ng_grid_placement.cc", + "ng/grid/ng_grid_placement.h", + "ng/grid/ng_grid_track_collection.cc", + "ng/grid/ng_grid_track_collection.h", + "ng/inline/empty_offset_mapping_builder.h", + "ng/inline/layout_ng_text.h", + "ng/inline/layout_ng_text_fragment.h", + "ng/inline/ng_abstract_inline_text_box.cc", + "ng/inline/ng_abstract_inline_text_box.h", + "ng/inline/ng_bidi_paragraph.cc", + "ng/inline/ng_bidi_paragraph.h", + "ng/inline/ng_caret_position.cc", + "ng/inline/ng_caret_position.h", + "ng/inline/ng_caret_rect.cc", + "ng/inline/ng_caret_rect.h", + "ng/inline/ng_fragment_item.cc", + "ng/inline/ng_fragment_item.h", + "ng/inline/ng_fragment_items.cc", + "ng/inline/ng_fragment_items.h", + "ng/inline/ng_fragment_items_builder.cc", + "ng/inline/ng_fragment_items_builder.h", + "ng/inline/ng_inline_box_state.cc", + "ng/inline/ng_inline_box_state.h", + "ng/inline/ng_inline_break_token.cc", + "ng/inline/ng_inline_break_token.h", + "ng/inline/ng_inline_child_layout_context.cc", + "ng/inline/ng_inline_child_layout_context.h", + "ng/inline/ng_inline_cursor.cc", + "ng/inline/ng_inline_cursor.h", + "ng/inline/ng_inline_fragment_traversal.cc", + "ng/inline/ng_inline_fragment_traversal.h", + "ng/inline/ng_inline_item.cc", + "ng/inline/ng_inline_item.h", + "ng/inline/ng_inline_item_result.cc", + "ng/inline/ng_inline_item_result.h", + "ng/inline/ng_inline_item_segment.cc", + "ng/inline/ng_inline_item_segment.h", + "ng/inline/ng_inline_items_builder.cc", + "ng/inline/ng_inline_items_builder.h", + "ng/inline/ng_inline_layout_algorithm.cc", + "ng/inline/ng_inline_layout_algorithm.h", + "ng/inline/ng_inline_node.cc", + "ng/inline/ng_inline_node.h", + "ng/inline/ng_inline_node_data.cc", + "ng/inline/ng_inline_node_data.h", + "ng/inline/ng_line_box_fragment_builder.cc", + "ng/inline/ng_line_box_fragment_builder.h", + "ng/inline/ng_line_breaker.cc", + "ng/inline/ng_line_breaker.h", + "ng/inline/ng_line_truncator.cc", + "ng/inline/ng_line_truncator.h", + "ng/inline/ng_line_utils.cc", + "ng/inline/ng_line_utils.h", + "ng/inline/ng_logical_line_item.cc", + "ng/inline/ng_logical_line_item.h", + "ng/inline/ng_offset_mapping.cc", + "ng/inline/ng_offset_mapping.h", + "ng/inline/ng_offset_mapping_builder.cc", + "ng/inline/ng_offset_mapping_builder.h", + "ng/inline/ng_physical_line_box_fragment.cc", + "ng/inline/ng_physical_line_box_fragment.h", + "ng/inline/ng_physical_text_fragment.cc", + "ng/inline/ng_physical_text_fragment.h", + "ng/inline/ng_ruby_utils.cc", + "ng/inline/ng_ruby_utils.h", + "ng/inline/ng_text_fragment_builder.cc", + "ng/inline/ng_text_fragment_builder.h", + "ng/inline/ng_text_offset.cc", + "ng/inline/ng_text_offset.h", + "ng/inline/ng_text_type.h", + "ng/layout_box_utils.cc", + "ng/layout_box_utils.h", + "ng/layout_ng_block_flow.cc", + "ng/layout_ng_block_flow.h", + "ng/layout_ng_block_flow_mixin.cc", + "ng/layout_ng_block_flow_mixin.h", + "ng/layout_ng_button.cc", + "ng/layout_ng_button.h", + "ng/layout_ng_fieldset.cc", + "ng/layout_ng_fieldset.h", + "ng/layout_ng_mixin.cc", + "ng/layout_ng_mixin.h", + "ng/layout_ng_progress.cc", + "ng/layout_ng_progress.h", + "ng/layout_ng_ruby_as_block.cc", + "ng/layout_ng_ruby_as_block.h", + "ng/layout_ng_ruby_base.cc", + "ng/layout_ng_ruby_base.h", + "ng/layout_ng_ruby_run.cc", + "ng/layout_ng_ruby_run.h", + "ng/layout_ng_ruby_text.cc", + "ng/layout_ng_ruby_text.h", + "ng/layout_ng_text_control_inner_editor.h", + "ng/layout_ng_text_control_multi_line.cc", + "ng/layout_ng_text_control_multi_line.h", + "ng/layout_ng_text_control_single_line.cc", + "ng/layout_ng_text_control_single_line.h", + "ng/legacy_layout_tree_walking.h", + "ng/list/layout_ng_inside_list_marker.cc", + "ng/list/layout_ng_inside_list_marker.h", + "ng/list/layout_ng_list_item.cc", + "ng/list/layout_ng_list_item.h", + "ng/list/layout_ng_outside_list_marker.cc", + "ng/list/layout_ng_outside_list_marker.h", + "ng/list/ng_unpositioned_list_marker.cc", + "ng/list/ng_unpositioned_list_marker.h", + "ng/mathml/layout_ng_mathml_block.cc", + "ng/mathml/layout_ng_mathml_block.h", + "ng/mathml/layout_ng_mathml_block_flow.cc", + "ng/mathml/layout_ng_mathml_block_flow.h", + "ng/mathml/layout_ng_mathml_block_with_anonymous_mrow.cc", + "ng/mathml/layout_ng_mathml_block_with_anonymous_mrow.h", + "ng/mathml/ng_math_fraction_layout_algorithm.cc", + "ng/mathml/ng_math_fraction_layout_algorithm.h", + "ng/mathml/ng_math_layout_utils.cc", + "ng/mathml/ng_math_layout_utils.h", + "ng/mathml/ng_math_padded_layout_algorithm.cc", + "ng/mathml/ng_math_padded_layout_algorithm.h", + "ng/mathml/ng_math_radical_layout_algorithm.cc", + "ng/mathml/ng_math_radical_layout_algorithm.h", + "ng/mathml/ng_math_row_layout_algorithm.cc", + "ng/mathml/ng_math_row_layout_algorithm.h", + "ng/mathml/ng_math_scripts_layout_algorithm.cc", + "ng/mathml/ng_math_scripts_layout_algorithm.h", + "ng/mathml/ng_math_space_layout_algorithm.cc", + "ng/mathml/ng_math_space_layout_algorithm.h", + "ng/mathml/ng_math_under_over_layout_algorithm.cc", + "ng/mathml/ng_math_under_over_layout_algorithm.h", + "ng/mathml/ng_mathml_paint_info.h", + "ng/ng_absolute_utils.cc", + "ng/ng_absolute_utils.h", + "ng/ng_block_break_token.cc", + "ng/ng_block_break_token.h", + "ng/ng_block_child_iterator.cc", + "ng/ng_block_child_iterator.h", + "ng/ng_block_layout_algorithm.cc", + "ng/ng_block_layout_algorithm.h", + "ng/ng_block_layout_algorithm_utils.cc", + "ng/ng_block_layout_algorithm_utils.h", + "ng/ng_block_node.cc", + "ng/ng_block_node.h", + "ng/ng_box_fragment.cc", + "ng/ng_box_fragment.h", + "ng/ng_box_fragment_builder.cc", + "ng/ng_box_fragment_builder.h", + "ng/ng_break_appeal.h", + "ng/ng_break_token.cc", + "ng/ng_break_token.h", + "ng/ng_column_layout_algorithm.cc", + "ng/ng_column_layout_algorithm.h", + "ng/ng_constraint_space.cc", + "ng/ng_constraint_space.h", + "ng/ng_constraint_space_builder.cc", + "ng/ng_constraint_space_builder.h", + "ng/ng_container_fragment_builder.cc", + "ng/ng_container_fragment_builder.h", + "ng/ng_early_break.h", + "ng/ng_fieldset_layout_algorithm.cc", + "ng/ng_fieldset_layout_algorithm.h", + "ng/ng_floats_utils.cc", + "ng/ng_floats_utils.h", + "ng/ng_fragment.h", + "ng/ng_fragment_builder.h", + "ng/ng_fragment_child_iterator.cc", + "ng/ng_fragment_child_iterator.h", + "ng/ng_fragmentation_utils.cc", + "ng/ng_fragmentation_utils.h", + "ng/ng_ink_overflow.cc", + "ng/ng_ink_overflow.h", + "ng/ng_layout_algorithm.h", + "ng/ng_layout_input_node.cc", + "ng/ng_layout_input_node.h", + "ng/ng_layout_overflow_calculator.cc", + "ng/ng_layout_overflow_calculator.h", + "ng/ng_layout_result.cc", + "ng/ng_layout_result.h", + "ng/ng_layout_utils.cc", + "ng/ng_layout_utils.h", + "ng/ng_length_utils.cc", + "ng/ng_length_utils.h", + "ng/ng_link.h", + "ng/ng_out_of_flow_layout_part.cc", + "ng/ng_out_of_flow_layout_part.h", + "ng/ng_out_of_flow_positioned_node.h", + "ng/ng_outline_type.h", + "ng/ng_outline_utils.cc", + "ng/ng_outline_utils.h", + "ng/ng_page_layout_algorithm.cc", + "ng/ng_page_layout_algorithm.h", + "ng/ng_physical_box_fragment.cc", + "ng/ng_physical_box_fragment.h", + "ng/ng_physical_container_fragment.cc", + "ng/ng_physical_container_fragment.h", + "ng/ng_physical_fragment.cc", + "ng/ng_physical_fragment.h", + "ng/ng_positioned_float.h", + "ng/ng_relative_utils.cc", + "ng/ng_relative_utils.h", + "ng/ng_simplified_layout_algorithm.cc", + "ng/ng_simplified_layout_algorithm.h", + "ng/ng_simplified_oof_layout_algorithm.cc", + "ng/ng_simplified_oof_layout_algorithm.h", + "ng/ng_space_utils.cc", + "ng/ng_space_utils.h", + "ng/ng_text_decoration_offset.cc", + "ng/ng_text_decoration_offset.h", + "ng/ng_unpositioned_float.h", + "ng/table/interface_casting.h", + "ng/table/layout_ng_table.cc", + "ng/table/layout_ng_table.h", + "ng/table/layout_ng_table_caption.cc", + "ng/table/layout_ng_table_caption.h", + "ng/table/layout_ng_table_cell.cc", + "ng/table/layout_ng_table_cell.h", + "ng/table/layout_ng_table_cell_interface.h", + "ng/table/layout_ng_table_cell_legacy.cc", + "ng/table/layout_ng_table_cell_legacy.h", + "ng/table/layout_ng_table_column.cc", + "ng/table/layout_ng_table_column.h", + "ng/table/layout_ng_table_column_visitor.h", + "ng/table/layout_ng_table_interface.h", + "ng/table/layout_ng_table_row.cc", + "ng/table/layout_ng_table_row.h", + "ng/table/layout_ng_table_row_interface.h", + "ng/table/layout_ng_table_section.cc", + "ng/table/layout_ng_table_section.h", + "ng/table/layout_ng_table_section_interface.h", + "ng/table/ng_table_borders.cc", + "ng/table/ng_table_borders.h", + "ng/table/ng_table_constraint_space_data.h", + "ng/table/ng_table_fragment_data.h", + "ng/table/ng_table_layout_algorithm_helpers.cc", + "ng/table/ng_table_layout_algorithm_helpers.h", + "ng/table/ng_table_layout_algorithm_types.cc", + "ng/table/ng_table_layout_algorithm_types.h", + "ng/table/ng_table_layout_algorithm_utils.cc", + "ng/table/ng_table_layout_algorithm_utils.h", + "ng/table/ng_table_row_layout_algorithm.cc", + "ng/table/ng_table_row_layout_algorithm.h", + "ng/table/ng_table_section_layout_algorithm.cc", + "ng/table/ng_table_section_layout_algorithm.h", + "order_iterator.cc", + "order_iterator.h", + "overflow_model.h", + "pointer_events_hit_rules.cc", + "pointer_events_hit_rules.h", + "scroll_anchor.cc", + "scroll_anchor.h", + "shapes/box_shape.cc", + "shapes/box_shape.h", + "shapes/polygon_shape.cc", + "shapes/polygon_shape.h", + "shapes/raster_shape.cc", + "shapes/raster_shape.h", + "shapes/rectangle_shape.cc", + "shapes/rectangle_shape.h", + "shapes/shape.cc", + "shapes/shape.h", + "shapes/shape_interval.h", + "shapes/shape_outside_info.cc", + "shapes/shape_outside_info.h", + "style_retain_scope.cc", + "style_retain_scope.h", + "subtree_layout_scope.cc", + "subtree_layout_scope.h", + "svg/layout_svg_block.cc", + "svg/layout_svg_block.h", + "svg/layout_svg_container.cc", + "svg/layout_svg_container.h", + "svg/layout_svg_ellipse.cc", + "svg/layout_svg_ellipse.h", + "svg/layout_svg_filter_primitive.cc", + "svg/layout_svg_filter_primitive.h", + "svg/layout_svg_foreign_object.cc", + "svg/layout_svg_foreign_object.h", + "svg/layout_svg_hidden_container.cc", + "svg/layout_svg_hidden_container.h", + "svg/layout_svg_image.cc", + "svg/layout_svg_image.h", + "svg/layout_svg_inline.cc", + "svg/layout_svg_inline.h", + "svg/layout_svg_inline_text.cc", + "svg/layout_svg_inline_text.h", + "svg/layout_svg_model_object.cc", + "svg/layout_svg_model_object.h", + "svg/layout_svg_path.cc", + "svg/layout_svg_path.h", + "svg/layout_svg_rect.cc", + "svg/layout_svg_rect.h", + "svg/layout_svg_resource_clipper.cc", + "svg/layout_svg_resource_clipper.h", + "svg/layout_svg_resource_container.cc", + "svg/layout_svg_resource_container.h", + "svg/layout_svg_resource_filter.cc", + "svg/layout_svg_resource_filter.h", + "svg/layout_svg_resource_gradient.cc", + "svg/layout_svg_resource_gradient.h", + "svg/layout_svg_resource_linear_gradient.cc", + "svg/layout_svg_resource_linear_gradient.h", + "svg/layout_svg_resource_marker.cc", + "svg/layout_svg_resource_marker.h", + "svg/layout_svg_resource_masker.cc", + "svg/layout_svg_resource_masker.h", + "svg/layout_svg_resource_paint_server.h", + "svg/layout_svg_resource_pattern.cc", + "svg/layout_svg_resource_pattern.h", + "svg/layout_svg_resource_radial_gradient.cc", + "svg/layout_svg_resource_radial_gradient.h", + "svg/layout_svg_root.cc", + "svg/layout_svg_root.h", + "svg/layout_svg_shape.cc", + "svg/layout_svg_shape.h", + "svg/layout_svg_text.cc", + "svg/layout_svg_text.h", + "svg/layout_svg_text_path.cc", + "svg/layout_svg_text_path.h", + "svg/layout_svg_transformable_container.cc", + "svg/layout_svg_transformable_container.h", + "svg/layout_svg_tspan.cc", + "svg/layout_svg_tspan.h", + "svg/layout_svg_viewport_container.cc", + "svg/layout_svg_viewport_container.h", + "svg/line/svg_inline_flow_box.cc", + "svg/line/svg_inline_flow_box.h", + "svg/line/svg_inline_text_box.cc", + "svg/line/svg_inline_text_box.h", + "svg/line/svg_root_inline_box.cc", + "svg/line/svg_root_inline_box.h", + "svg/svg_character_data.h", + "svg/svg_layout_support.cc", + "svg/svg_layout_support.h", + "svg/svg_layout_tree_as_text.cc", + "svg/svg_layout_tree_as_text.h", + "svg/svg_marker_data.cc", + "svg/svg_marker_data.h", + "svg/svg_resources.cc", + "svg/svg_resources.h", + "svg/svg_resources_cache.cc", + "svg/svg_resources_cache.h", + "svg/svg_resources_cycle_solver.cc", + "svg/svg_resources_cycle_solver.h", + "svg/svg_text_chunk_builder.cc", + "svg/svg_text_chunk_builder.h", + "svg/svg_text_fragment.h", + "svg/svg_text_layout_attributes_builder.cc", + "svg/svg_text_layout_attributes_builder.h", + "svg/svg_text_layout_engine.cc", + "svg/svg_text_layout_engine.h", + "svg/svg_text_layout_engine_baseline.cc", + "svg/svg_text_layout_engine_baseline.h", + "svg/svg_text_layout_engine_spacing.cc", + "svg/svg_text_layout_engine_spacing.h", + "svg/svg_text_metrics.cc", + "svg/svg_text_metrics.h", + "svg/svg_text_query.cc", + "svg/svg_text_query.h", + "svg/transform_helper.cc", + "svg/transform_helper.h", + "svg/transformed_hit_test_location.cc", + "svg/transformed_hit_test_location.h", + "table_grid_cell.cc", + "table_grid_cell.h", + "table_layout_algorithm.h", + "table_layout_algorithm_auto.cc", + "table_layout_algorithm_auto.h", + "table_layout_algorithm_fixed.cc", + "table_layout_algorithm_fixed.h", + "text_autosizer.cc", + "text_autosizer.h", + "text_decoration_offset.cc", + "text_decoration_offset.h", + "text_decoration_offset_base.cc", + "text_decoration_offset_base.h", + "text_run_constructor.cc", + "text_run_constructor.h", + "theme_types.h", + "traced_layout_object.cc", + "traced_layout_object.h", + "vertical_position_cache.h", + "view_fragmentation_context.cc", + "view_fragmentation_context.h", +] + +if (is_mac) { + blink_core_sources_layout += [ + "layout_theme_mac.h", + "layout_theme_mac.mm", + ] +} + +if (is_win) { + blink_core_sources_layout += [ + "layout_theme_font_provider_win.cc", + "layout_theme_win.cc", + "layout_theme_win.h", + "web_font_rendering_win.cc", + ] +} else { # Not Windows. + blink_core_sources_layout += [ "layout_theme_font_provider_default.cc" ] +} + +if (is_linux || is_chromeos) { + blink_core_sources_layout += [ + "layout_theme_linux.cc", + "layout_theme_linux.h", + ] +} + +if (is_android) { + blink_core_sources_layout += [ + "layout_theme_android.cc", + "layout_theme_android.h", + ] +} + +if (is_fuchsia) { + blink_core_sources_layout += [ "layout_theme_fuchsia.cc" ] +}
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc index 6e6654b..ca7f591 100644 --- a/third_party/blink/renderer/core/layout/layout_box.cc +++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -1300,6 +1300,7 @@ if (logical_min_height.IsAuto() && ShouldComputeLogicalHeightFromAspectRatio() && intrinsic_content_height != kIndefiniteSize && + intrinsic_content_height != LayoutUnit::Max() && StyleRef().OverflowBlockDirection() == EOverflow::kVisible) { logical_min_height = Length::Fixed(intrinsic_content_height); }
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc index b86c3a01..3d5ba05 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
@@ -619,7 +619,17 @@ DCHECK_EQ(cursor.CurrentItem(), this); if (IsGeneratedText()) return PositionWithAffinity(); - const unsigned text_offset = TextOffsetForPoint(point, cursor.Items()); + return PositionForPointInText(TextOffsetForPoint(point, cursor.Items()), + cursor); +} + +PositionWithAffinity NGFragmentItem::PositionForPointInText( + unsigned text_offset, + const NGInlineCursor& cursor) const { + DCHECK_EQ(Type(), kText); + DCHECK_EQ(cursor.CurrentItem(), this); + DCHECK(!IsGeneratedText()); + DCHECK_LE(text_offset, EndOffset()); const NGCaretPosition unadjusted_position{ cursor, NGCaretPositionType::kAtTextOffset, text_offset}; if (RuntimeEnabledFeatures::BidiCaretAffinityEnabled())
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h index 046feff..96457d5a 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
@@ -367,6 +367,9 @@ PositionWithAffinity PositionForPointInText( const PhysicalOffset& point, const NGInlineCursor& cursor) const; + PositionWithAffinity PositionForPointInText( + unsigned text_offset, + const NGInlineCursor& cursor) const; unsigned TextOffsetForPoint(const PhysicalOffset& point, const NGFragmentItems& items) const;
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc index 520194d..ae9aacd9 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc
@@ -16,6 +16,14 @@ namespace blink { +namespace { + +bool IsBidiControl(StringView string) { + return string.length() == 1 && Character::IsBidiControl(string[0]); +} + +} // namespace + inline void NGInlineCursor::MoveToItem(const ItemsSpan::iterator& iter) { DCHECK(IsItemCursor()); DCHECK(iter >= items_.begin() && iter <= items_.end()); @@ -942,6 +950,14 @@ return PositionWithAffinity(); } +PositionWithAffinity NGInlineCursor::PositionForPointInText( + unsigned text_offset) const { + DCHECK(Current().IsText()) << this; + if (IsItemCursor()) + return CurrentItem()->PositionForPointInText(text_offset, *this); + return CurrentPaintFragment()->PositionForPointInText(text_offset); +} + PositionWithAffinity NGInlineCursor::PositionForStartOfLine() const { DCHECK(Current().IsLineBox()); const PhysicalOffset point_in_line = Current().LineStartPoint(); @@ -954,12 +970,27 @@ PositionWithAffinity NGInlineCursor::PositionForEndOfLine() const { DCHECK(Current().IsLineBox()); - const PhysicalOffset point_in_line = Current().LineEndPoint(); - if (IsItemCursor()) { - return PositionForPointInInlineBox(point_in_line + - Current().OffsetInContainerBlock()); + NGInlineCursor last_leaf = CursorForDescendants(); + if (IsLtr(Current().BaseDirection())) + last_leaf.MoveToLastNonPseudoLeaf(); + else + last_leaf.MoveToFirstNonPseudoLeaf(); + if (!last_leaf) + return PositionWithAffinity(); + Node* const node = last_leaf.Current().GetLayoutObject()->NonPseudoNode(); + if (!node) { + NOTREACHED() << "MoveToLastLeaf returns invalid node: " << last_leaf; + return PositionWithAffinity(); } - return CurrentPaintFragment()->PositionForPoint(point_in_line); + if (IsA<HTMLBRElement>(node)) + return PositionWithAffinity(Position::BeforeNode(*node)); + if (!IsA<Text>(node)) + return PositionWithAffinity(Position::AfterNode(*node)); + const unsigned text_offset = + Current().BaseDirection() == last_leaf.Current().ResolvedDirection() + ? last_leaf.Current().TextOffset().end + : last_leaf.Current().TextOffset().start; + return last_leaf.PositionForPointInText(text_offset); } void NGInlineCursor::MoveTo(const NGInlineCursorPosition& position) { @@ -1110,6 +1141,27 @@ continue; } +void NGInlineCursor::MoveToFirstNonPseudoLeaf() { + for (NGInlineCursor cursor = *this; cursor; cursor.MoveToNext()) { + if (!cursor.Current().GetLayoutObject()->NonPseudoNode()) + continue; + if (cursor.Current().IsText()) { + // Note: We should not skip bidi control only text item to return + // position after bibi control character, e.g. + // <p dir=rtl>‫xyz ABC.‬</p> + // See "editing/selection/home-end.html". + DCHECK(!cursor.Current().IsLayoutGeneratedText()) << cursor; + *this = cursor; + return; + } + if (cursor.Current().IsInlineLeaf()) { + *this = cursor; + return; + } + } + MakeNull(); +} + void NGInlineCursor::MoveToLastChild() { DCHECK(Current().CanHaveChildren()); if (!TryToMoveToLastChild()) @@ -1142,6 +1194,44 @@ continue; } +void NGInlineCursor::MoveToLastNonPseudoLeaf() { + // TODO(yosin): We should introduce |IsTruncated()| to avoid to use + // |in_hidden_for_paint|. See also |LayoutText::GetTextBoxInfo()|. + // When "text-overflow:ellipsis" specified, items are: + // [i+0] original non-truncated text (IsHiddenForPaint()=true) + // [i+1] truncated text + // [i+2] ellipsis (IsLayoutGeneratedText()) + NGInlineCursor last_leaf; + bool in_hidden_for_paint = false; + for (NGInlineCursor cursor = *this; cursor; cursor.MoveToNext()) { + if (!cursor.Current().GetLayoutObject()->NonPseudoNode()) + continue; + if (cursor.Current().IsLineBreak() && last_leaf) + break; + if (cursor.Current().IsText()) { + DCHECK(!cursor.Current().IsLayoutGeneratedText()); + if (in_hidden_for_paint && !cursor.Current().IsHiddenForPaint()) { + // |cursor| is at truncated text. + break; + } + in_hidden_for_paint = cursor.Current().IsHiddenForPaint(); + // Exclude bidi control only fragment, e.g. + // <p dir=ltr>‫xyz ABC.‬</p> has + // [0] "\u202Bxyz " + // [1] "ABC" + // [2] "." + // [3] "\u202C" + // See "editing/selection/home-end.html" + if (IsBidiControl(cursor.Current().Text(cursor))) + continue; + last_leaf = cursor; + continue; + } + if (cursor.Current().IsInlineLeaf()) + last_leaf = cursor; + } + *this = last_leaf; +} void NGInlineCursor::MoveToNext() { if (root_paint_fragment_) return MoveToNextPaintFragment();
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h index 8f69168..32bb09a3 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h
@@ -328,6 +328,9 @@ PositionWithAffinity PositionForPointInChild( const PhysicalOffset& point_in_container) const; + // Returns |PositionWithAffinity| in current text at |text_offset| + PositionWithAffinity PositionForPointInText(unsigned text_offset) const; + // Returns first/last position of |this| line. |this| should be line box. PositionWithAffinity PositionForStartOfLine() const; PositionWithAffinity PositionForEndOfLine() const; @@ -361,9 +364,14 @@ void MoveToFirstLine(); // Move to first logical leaf of current line box. If current line box has - // no children, curosr becomes null. + // no children, cursor becomes null. void MoveToFirstLogicalLeaf(); + // Move to first leaf from current position. + // Unlike |MoveToFirstLogicalLeaf()|, this function ignores pseudo node and + // stops at non-truncated text. + void MoveToFirstNonPseudoLeaf(); + // Move to last child of current container box. If the current position is // at fragment without children, this cursor points nothing. // See also |TryToMoveToFirstChild()|. @@ -374,9 +382,14 @@ void MoveToLastLine(); // Move to last logical leaf of current line box. If current line box has - // no children, curosr becomes null. + // no children, cursor becomes null. void MoveToLastLogicalLeaf(); + // Move to last leaf from current position. + // Unlike |MoveToLastLogicalLeaf()|, this + // function ignores pseudo node and stops at non-truncated text. + void MoveToLastNonPseudoLeaf(); + // Move the current position to the next fragment in pre-order DFS. When // the current position is at last fragment, this cursor points nothing. void MoveToNext();
diff --git a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.cc index f3ea169..d41d729d 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.cc
@@ -9,6 +9,7 @@ #include "third_party/blink/renderer/core/html/html_dialog_element.h" #include "third_party/blink/renderer/core/layout/layout_object.h" #include "third_party/blink/renderer/core/layout/ng/geometry/ng_static_position.h" +#include "third_party/blink/renderer/core/layout/ng/ng_block_node.h" #include "third_party/blink/renderer/core/layout/ng/ng_constraint_space.h" #include "third_party/blink/renderer/core/layout/ng/ng_length_utils.h" #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" @@ -327,9 +328,10 @@ // exceed the available-size of the containing-block (e.g. with insets // similar to: "left: -100px; right: -100px"). -bool AbsoluteNeedsChildInlineSize(const ComputedStyle& style) { - if (style.IsDisplayTableBox()) +bool AbsoluteNeedsChildInlineSize(const NGBlockNode& node) { + if (node.IsTable()) return true; + const auto& style = node.Style(); return style.LogicalWidth().IsIntrinsic() || style.LogicalMinWidth().IsIntrinsic() || style.LogicalMaxWidth().IsIntrinsic() || @@ -337,9 +339,10 @@ (style.LogicalLeft().IsAuto() || style.LogicalRight().IsAuto())); } -bool AbsoluteNeedsChildBlockSize(const ComputedStyle& style) { - if (style.IsDisplayTableBox()) +bool AbsoluteNeedsChildBlockSize(const NGBlockNode& node) { + if (node.IsTable()) return true; + const auto& style = node.Style(); return style.LogicalHeight().IsIntrinsic() || style.LogicalMinHeight().IsIntrinsic() || style.LogicalMaxHeight().IsIntrinsic() || @@ -347,7 +350,8 @@ (style.LogicalTop().IsAuto() || style.LogicalBottom().IsAuto())); } -bool IsInlineSizeComputableFromBlockSize(const ComputedStyle& style) { +bool IsInlineSizeComputableFromBlockSize(const NGBlockNode& node) { + const auto& style = node.Style(); DCHECK(style.HasOutOfFlowPosition()); if (style.AspectRatio().IsAuto()) return false; @@ -362,8 +366,8 @@ return true; // If we have block insets but no inline insets, we compute based on the // insets. - return !AbsoluteNeedsChildBlockSize(style) && - AbsoluteNeedsChildInlineSize(style); + return !AbsoluteNeedsChildBlockSize(node) && + AbsoluteNeedsChildInlineSize(node); } base::Optional<LayoutUnit> ComputeAbsoluteDialogYPosition( @@ -417,8 +421,8 @@ } void ComputeOutOfFlowInlineDimensions( + const NGBlockNode& node, const NGConstraintSpace& space, - const ComputedStyle& style, const NGBoxStrut& border_padding, const NGLogicalStaticPosition& static_position, const base::Optional<MinMaxSizes>& minmax_content_sizes, @@ -428,6 +432,7 @@ NGLogicalOutOfFlowDimensions* dimensions) { DCHECK(dimensions); + const auto& style = node.Style(); Length min_inline_length = style.LogicalMinWidth(); base::Optional<MinMaxSizes> min_size_minmax = minmax_content_sizes; // We don't need to check for IsInlineSizeComputableFromBlockSize; this is @@ -454,7 +459,7 @@ } // Tables are never allowed to go below their min-content size. - const bool is_table = style.IsDisplayTableBox(); + const bool is_table = node.IsTable(); if (is_table) min_inline_size = std::max(min_inline_size, minmax_content_sizes->min_size); @@ -465,7 +470,7 @@ minmax_content_sizes, style.LogicalWidth()); } else if (replaced_size.has_value()) { inline_size = replaced_size->inline_size; - } else if (IsInlineSizeComputableFromBlockSize(style)) { + } else if (IsInlineSizeComputableFromBlockSize(node)) { DCHECK(minmax_content_sizes.has_value()); inline_size = minmax_content_sizes->min_size; } @@ -494,21 +499,21 @@ } void ComputeOutOfFlowBlockDimensions( + const NGBlockNode& node, const NGConstraintSpace& space, - const ComputedStyle& style, const NGBoxStrut& border_padding, const NGLogicalStaticPosition& static_position, const base::Optional<LayoutUnit>& child_block_size, const base::Optional<LogicalSize>& replaced_size, const WritingDirectionMode container_writing_direction, NGLogicalOutOfFlowDimensions* dimensions) { + const auto& style = node.Style(); // After partial size has been computed, child block size is either unknown, // or fully computed, there is no minmax. To express this, a 'fixed' minmax // is created where min and max are the same. base::Optional<MinMaxSizes> min_max_sizes; - if (child_block_size.has_value()) { + if (child_block_size.has_value()) min_max_sizes = MinMaxSizes{*child_block_size, *child_block_size}; - } LayoutUnit child_block_size_or_indefinite = child_block_size.value_or(kIndefiniteSize); @@ -521,7 +526,7 @@ LengthResolvePhase::kLayout); // Tables are never allowed to go below their "auto" block-size. - const bool is_table = style.IsDisplayTableBox(); + const bool is_table = node.IsTable(); if (is_table) min_block_size = std::max(min_block_size, min_max_sizes->min_size);
diff --git a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.h b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.h index 671ce328..1002201 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.h +++ b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.h
@@ -14,8 +14,8 @@ namespace blink { -class ComputedStyle; class LayoutObject; +class NGBlockNode; class NGConstraintSpace; struct NGLogicalStaticPosition; @@ -49,15 +49,15 @@ // Returns true if |ComputeOutOfFlowInlineDimensions| will need an estimated // inline-size. -CORE_EXPORT bool AbsoluteNeedsChildInlineSize(const ComputedStyle&); +CORE_EXPORT bool AbsoluteNeedsChildInlineSize(const NGBlockNode&); // Returns true if |ComputeOutOfFlowBlockDimensions| will need an estimated // block-size. -CORE_EXPORT bool AbsoluteNeedsChildBlockSize(const ComputedStyle&); +CORE_EXPORT bool AbsoluteNeedsChildBlockSize(const NGBlockNode&); // Returns true if the inline size can be computed from an aspect ratio and // the block size. -bool IsInlineSizeComputableFromBlockSize(const ComputedStyle& style); +bool IsInlineSizeComputableFromBlockSize(const NGBlockNode&); // Computes part of the absolute position which depends on the child's // inline-size. @@ -66,8 +66,8 @@ // |replaced_size| should be set if and only if element is replaced element. // Returns the partially filled position. CORE_EXPORT void ComputeOutOfFlowInlineDimensions( + const NGBlockNode&, const NGConstraintSpace&, - const ComputedStyle&, const NGBoxStrut& border_padding, const NGLogicalStaticPosition&, const base::Optional<MinMaxSizes>& minmax_content_sizes, @@ -79,8 +79,8 @@ // Computes the rest of the absolute position which depends on child's // block-size. CORE_EXPORT void ComputeOutOfFlowBlockDimensions( + const NGBlockNode&, const NGConstraintSpace&, - const ComputedStyle&, const NGBoxStrut& border_padding, const NGLogicalStaticPosition&, const base::Optional<LayoutUnit>& child_block_size,
diff --git a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc index 2b015ae..218d060 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils_test.cc
@@ -4,40 +4,44 @@ #include "third_party/blink/renderer/core/layout/ng/ng_absolute_utils.h" -#include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/core/layout/ng/geometry/ng_static_position.h" +#include "third_party/blink/renderer/core/layout/ng/ng_block_node.h" #include "third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h" #include "third_party/blink/renderer/core/layout/ng/ng_length_utils.h" #include "third_party/blink/renderer/core/style/computed_style.h" +#include "third_party/blink/renderer/core/testing/core_unit_test_helper.h" namespace blink { namespace { -#define NGAuto LayoutUnit(-1) - -class NGAbsoluteUtilsTest : public testing::Test { +class NGAbsoluteUtilsTest : public RenderingTest { protected: NGConstraintSpace CreateConstraintSpace(TextDirection direction, WritingMode out_writing_mode) { NGConstraintSpaceBuilder builder( WritingMode::kHorizontalTb, out_writing_mode, /* is_new_fc */ true); - builder.SetAvailableSize(container_size_); + builder.SetAvailableSize({LayoutUnit(200), LayoutUnit(300)}); builder.SetTextDirection(direction); return builder.ToConstraintSpace(); } void SetUp() override { - style_ = ComputedStyle::Create(); - style_->SetPosition(EPosition::kAbsolute); - // If not set, border widths will always be 0. - style_->SetBorderLeftStyle(EBorderStyle::kSolid); - style_->SetBorderRightStyle(EBorderStyle::kSolid); - style_->SetBorderTopStyle(EBorderStyle::kSolid); - style_->SetBorderBottomStyle(EBorderStyle::kSolid); - style_->SetBoxSizing(EBoxSizing::kBorderBox); - container_size_ = LogicalSize(LayoutUnit(200), LayoutUnit(300)); + RenderingTest::SetUp(); + SetBodyInnerHTML(R"HTML( + <style> + #target { + position: absolute; + border: solid; + border-width: 9px 17px 17px 9px; + padding: 11px 19px 19px 11px; + } + </style> + <div id=target></div> + )HTML"); + RunDocumentLifecycle(); + element_ = GetDocument().getElementById("target"); ltr_space_ = CreateConstraintSpace(TextDirection::kLtr, WritingMode::kHorizontalTb); rtl_space_ = @@ -48,50 +52,42 @@ CreateConstraintSpace(TextDirection::kLtr, WritingMode::kVerticalRl); } - void SetHorizontalStyle( - LayoutUnit left, - LayoutUnit margin_left, - LayoutUnit width, - LayoutUnit margin_right, - LayoutUnit right, - WritingMode writing_mode = WritingMode::kHorizontalTb) { - style_->SetLeft(left == NGAuto ? Length::Auto() - : Length::Fixed(left.ToInt())); - style_->SetMarginLeft(margin_left == NGAuto - ? Length::Auto() - : Length::Fixed(margin_left.ToInt())); - style_->SetWidth(width == NGAuto ? Length::Auto() - : Length::Fixed(width.ToInt())); - style_->SetMarginRight(margin_right == NGAuto - ? Length::Auto() - : Length::Fixed(margin_right.ToInt())); - style_->SetRight(right == NGAuto ? Length::Auto() - : Length::Fixed(right.ToInt())); - style_->SetWritingMode(writing_mode); + void SetHorizontalStyle(const String& left, + const String& margin_left, + const String& width, + const String& margin_right, + const String& right, + const String& writing_mode = "horizontal-tb", + const String& box_sizing = "border-box") { + element_->SetInlineStyleProperty(CSSPropertyID::kLeft, left); + element_->SetInlineStyleProperty(CSSPropertyID::kMarginLeft, margin_left); + element_->SetInlineStyleProperty(CSSPropertyID::kWidth, width); + element_->SetInlineStyleProperty(CSSPropertyID::kMarginRight, margin_right); + element_->SetInlineStyleProperty(CSSPropertyID::kRight, right); + element_->SetInlineStyleProperty(CSSPropertyID::kWritingMode, writing_mode); + element_->SetInlineStyleProperty(CSSPropertyID::kBoxSizing, box_sizing); + RunDocumentLifecycle(); } - void SetVerticalStyle(LayoutUnit top, - LayoutUnit margin_top, - LayoutUnit height, - LayoutUnit margin_bottom, - LayoutUnit bottom, - WritingMode writing_mode = WritingMode::kHorizontalTb) { - style_->SetTop(top == NGAuto ? Length::Auto() : Length::Fixed(top.ToInt())); - style_->SetMarginTop(margin_top == NGAuto - ? Length::Auto() - : Length::Fixed(margin_top.ToInt())); - style_->SetHeight(height == NGAuto ? Length::Auto() - : Length::Fixed(height.ToInt())); - style_->SetMarginBottom(margin_bottom == NGAuto - ? Length::Auto() - : Length::Fixed(margin_bottom.ToInt())); - style_->SetBottom(bottom == NGAuto ? Length::Auto() - : Length::Fixed(bottom.ToInt())); - style_->SetWritingMode(writing_mode); + void SetVerticalStyle(const String& top, + const String& margin_top, + const String& height, + const String& margin_bottom, + const String& bottom, + const String& writing_mode = "horizontal-tb", + const String& box_sizing = "border-box") { + element_->SetInlineStyleProperty(CSSPropertyID::kTop, top); + element_->SetInlineStyleProperty(CSSPropertyID::kMarginTop, margin_top); + element_->SetInlineStyleProperty(CSSPropertyID::kHeight, height); + element_->SetInlineStyleProperty(CSSPropertyID::kMarginBottom, + margin_bottom); + element_->SetInlineStyleProperty(CSSPropertyID::kBottom, bottom); + element_->SetInlineStyleProperty(CSSPropertyID::kWritingMode, writing_mode); + element_->SetInlineStyleProperty(CSSPropertyID::kBoxSizing, box_sizing); + RunDocumentLifecycle(); } - scoped_refptr<ComputedStyle> style_; - LogicalSize container_size_; + Persistent<Element> element_; NGConstraintSpace ltr_space_; NGConstraintSpace rtl_space_; NGConstraintSpace vlr_space_; @@ -100,47 +96,22 @@ TEST_F(NGAbsoluteUtilsTest, Horizontal) { // Test that the equation is computed correctly: - // left + marginLeft + borderLeft + paddingLeft + + // left + margin-left + border-left + padding-left + // width + - // right + marginRight + borderRight + paddingRight = container width + // right + margin-right + border-right + padding-right = container-width + MinMaxSizes min_max_60{LayoutUnit(60) + LayoutUnit(56), + LayoutUnit(60) + LayoutUnit(56)}; - // Common setup. - LayoutUnit left(5); - LayoutUnit margin_left(7); - LayoutUnit border_left(9); - LayoutUnit padding_left(11); - LayoutUnit right(13); - LayoutUnit margin_right(15); - LayoutUnit border_right(17); - LayoutUnit padding_right(19); + NGBlockNode node(element_->GetLayoutBox()); - LayoutUnit horizontal_border_padding = - border_left + padding_left + padding_right + border_right; - LayoutUnit width = - container_size_.inline_size - left - margin_left - right - margin_right; - - base::Optional<MinMaxSizes> estimated_inline; - base::Optional<LayoutUnit> estimated_block; - MinMaxSizes min_max_60{LayoutUnit(60) + horizontal_border_padding, - LayoutUnit(60) + horizontal_border_padding}; - - style_->SetBorderLeftWidth(border_left.ToInt()); - style_->SetBorderRightWidth(border_right.ToInt()); - style_->SetPaddingLeft(Length::Fixed(padding_left.ToInt())); - style_->SetPaddingRight(Length::Fixed(padding_right.ToInt())); - - // These default to 3 which is not what we want. - style_->SetBorderBottomWidth(0); - style_->SetBorderTopWidth(0); - - NGBoxStrut ltr_border_padding = - ComputeBordersForTest(*style_) + ComputePadding(ltr_space_, *style_); - NGBoxStrut rtl_border_padding = - ComputeBordersForTest(*style_) + ComputePadding(rtl_space_, *style_); - NGBoxStrut vlr_border_padding = - ComputeBordersForTest(*style_) + ComputePadding(vlr_space_, *style_); - NGBoxStrut vrl_border_padding = - ComputeBordersForTest(*style_) + ComputePadding(vrl_space_, *style_); + NGBoxStrut ltr_border_padding = ComputeBorders(ltr_space_, node) + + ComputePadding(ltr_space_, node.Style()); + NGBoxStrut rtl_border_padding = ComputeBorders(rtl_space_, node) + + ComputePadding(rtl_space_, node.Style()); + NGBoxStrut vlr_border_padding = ComputeBorders(vlr_space_, node) + + ComputePadding(vlr_space_, node.Style()); + NGBoxStrut vrl_border_padding = ComputeBorders(vrl_space_, node) + + ComputePadding(vrl_space_, node.Style()); NGLogicalStaticPosition static_position = { {LayoutUnit(), LayoutUnit()}, @@ -151,232 +122,188 @@ {LayoutUnit(), LayoutUnit()}, NGLogicalStaticPosition::kInlineEnd, NGLogicalStaticPosition::kBlockStart}; - // - // Tests. - // NGLogicalOutOfFlowDimensions dimensions; - // All auto => width is estimated_inline, left is 0. - SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); - estimated_inline = min_max_60; + // All auto => width is min_max_60, left is 0. + SetHorizontalStyle("auto", "auto", "auto", "auto", "auto"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), true); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, min_max_60, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); - EXPECT_EQ(LayoutUnit(0), dimensions.inset.inline_start); + EXPECT_EQ(0, dimensions.inset.inline_start); - // All auto => width is estimated_inline, static_position is right - SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); - estimated_inline = min_max_60; + // All auto => width is min_max_60, static_position is right + SetHorizontalStyle("auto", "auto", "auto", "auto", "auto"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), true); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position_inline_end, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position_inline_end, + min_max_60, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); - EXPECT_EQ(container_size_.inline_size, dimensions.inset.inline_end); + EXPECT_EQ(200, dimensions.inset.inline_end); // All auto + RTL. + SetHorizontalStyle("auto", "auto", "auto", "auto", "auto"); ComputeOutOfFlowInlineDimensions( - rtl_space_, *style_, rtl_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, rtl_space_, rtl_border_padding, static_position, min_max_60, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); - EXPECT_EQ(container_size_.inline_size - min_max_60.min_size, - dimensions.inset.inline_end); + // 200 = 0 + 0 + 116 + 84 + 0 + EXPECT_EQ(84, dimensions.inset.inline_end); // left, right, and left are known, compute margins. - SetHorizontalStyle(left, NGAuto, width, NGAuto, right); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); - estimated_inline.reset(); + SetHorizontalStyle("5px", "auto", "160px", "auto", "13px"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), false); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - LayoutUnit margin_space = (container_size_.inline_size - left - right - - dimensions.size.inline_size) / - 2; - EXPECT_EQ(left + margin_space, dimensions.inset.inline_start); - EXPECT_EQ(right + margin_space, dimensions.inset.inline_end); + // 200 = 5 + 11 + 160 + 11 + 13 + EXPECT_EQ(16, dimensions.inset.inline_start); + EXPECT_EQ(24, dimensions.inset.inline_end); // left, right, and left are known, compute margins, writing mode vertical_lr. - SetHorizontalStyle(left, NGAuto, width, NGAuto, right, - WritingMode::kVerticalLr); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); - estimated_inline.reset(); + SetHorizontalStyle("5px", "auto", "160px", "auto", "13px", "vertical-lr"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), false); ComputeOutOfFlowBlockDimensions( - vlr_space_, *style_, vlr_border_padding, static_position, estimated_block, + node, vlr_space_, vlr_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(left + margin_space, dimensions.inset.block_start); - EXPECT_EQ(right + margin_space, dimensions.inset.block_end); + EXPECT_EQ(16, dimensions.inset.block_start); + EXPECT_EQ(24, dimensions.inset.block_end); // left, right, and left are known, compute margins, writing mode vertical_rl. - SetHorizontalStyle(left, NGAuto, width, NGAuto, right, - WritingMode::kVerticalRl); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); - estimated_inline.reset(); + SetHorizontalStyle("5px", "auto", "160px", "auto", "13px", "vertical-rl"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), false); ComputeOutOfFlowBlockDimensions( - vrl_space_, *style_, vrl_border_padding, static_position, estimated_block, + node, vrl_space_, vrl_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(left + margin_space, dimensions.inset.block_end); - EXPECT_EQ(right + margin_space, dimensions.inset.block_start); + EXPECT_EQ(16, dimensions.inset.block_end); + EXPECT_EQ(24, dimensions.inset.block_start); // left, right, and width are known, not enough space for margins LTR. - SetHorizontalStyle(left, NGAuto, LayoutUnit(200), NGAuto, right); - estimated_inline.reset(); + SetHorizontalStyle("5px", "auto", "200px", "auto", "13px"); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(left, dimensions.inset.inline_start); - EXPECT_EQ(-left, dimensions.inset.inline_end); + EXPECT_EQ(5, dimensions.inset.inline_start); + EXPECT_EQ(-5, dimensions.inset.inline_end); // left, right, and left are known, not enough space for margins RTL. - SetHorizontalStyle(left, NGAuto, LayoutUnit(200), NGAuto, right, - WritingMode::kHorizontalTb); - estimated_inline.reset(); + SetHorizontalStyle("5px", "auto", "200px", "auto", "13px"); ComputeOutOfFlowInlineDimensions( - rtl_space_, *style_, rtl_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, rtl_space_, rtl_border_padding, static_position, base::nullopt, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kRtl}, &dimensions); - EXPECT_EQ(-right, dimensions.inset.inline_start); - EXPECT_EQ(right, dimensions.inset.inline_end); + EXPECT_EQ(-13, dimensions.inset.inline_start); + EXPECT_EQ(13, dimensions.inset.inline_end); // Rule 1 left and width are auto. - SetHorizontalStyle(NGAuto, margin_left, NGAuto, margin_right, right); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); - estimated_inline = min_max_60; + SetHorizontalStyle("auto", "7px", "auto", "15px", "13px"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), true); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, min_max_60, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); // Rule 2 left and right are auto LTR. - SetHorizontalStyle(NGAuto, margin_left, width, margin_right, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); - estimated_inline.reset(); + SetHorizontalStyle("auto", "7px", "160px", "15px", "auto"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), false); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(margin_left, dimensions.inset.inline_start); - EXPECT_EQ(container_size_.inline_size - margin_left - width, - dimensions.inset.inline_end); + // 200 = 0 + 7 + 160 + 15 + 18 + EXPECT_EQ(0 + 7, dimensions.inset.inline_start); + EXPECT_EQ(15 + 18, dimensions.inset.inline_end); // Rule 2 left and right are auto RTL. - SetHorizontalStyle(NGAuto, margin_left, width, margin_right, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); - estimated_inline.reset(); + SetHorizontalStyle("auto", "7px", "160px", "15px", "auto"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), false); ComputeOutOfFlowInlineDimensions( - rtl_space_, *style_, rtl_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, - {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(margin_left, dimensions.inset.inline_start); - EXPECT_EQ(container_size_.inline_size - margin_left - width, - dimensions.inset.inline_end); + node, rtl_space_, rtl_border_padding, static_position, base::nullopt, + base::nullopt, base::nullopt, + {WritingMode::kHorizontalTb, TextDirection::kRtl}, &dimensions); + // 200 = 0 + 7 + 160 + 15 + 18 + EXPECT_EQ(0 + 7, dimensions.inset.inline_start); + EXPECT_EQ(15 + 18, dimensions.inset.inline_end); // Rule 3 width and right are auto. - SetHorizontalStyle(left, margin_left, NGAuto, margin_right, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); - estimated_inline = min_max_60; + SetHorizontalStyle("5px", "7px", "auto", "15px", "auto"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), true); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, min_max_60, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ( - container_size_.inline_size - min_max_60.min_size - left - margin_left, - dimensions.inset.inline_end); + // 200 = 5 + 7 + 116 + 15 + 57 EXPECT_EQ(min_max_60.min_size, dimensions.size.inline_size); + EXPECT_EQ(15 + 57, dimensions.inset.inline_end); // Rule 4: left is auto. - SetHorizontalStyle(NGAuto, margin_left, width, margin_right, right); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); - estimated_inline.reset(); + SetHorizontalStyle("auto", "7px", "160px", "15px", "13px"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), false); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(left + margin_left, dimensions.inset.inline_start); + // 200 = 5 + 7 + 160 + 15 + 13 + EXPECT_EQ(5 + 7, dimensions.inset.inline_start); - // Rule 4: left is auto, EBoxSizing::kContentBox - style_->SetBoxSizing(EBoxSizing::kContentBox); - SetHorizontalStyle(NGAuto, margin_left, width - border_left - border_right - - padding_left - padding_right, - margin_right, right); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); - estimated_inline.reset(); + // Rule 4: left is auto, "box-sizing: content-box". + SetHorizontalStyle("auto", "7px", "104px", "15px", "13px", "horizontal-tb", + "content-box"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), false); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(left + margin_left, dimensions.inset.inline_start); - style_->SetBoxSizing(EBoxSizing::kBorderBox); + // 200 = 5 + 7 + 160 + 15 + 13 + EXPECT_EQ(5 + 7, dimensions.inset.inline_start); // Rule 5: right is auto. - SetHorizontalStyle(left, margin_left, width, margin_right, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); - estimated_inline.reset(); + SetHorizontalStyle("5px", "7px", "160px", "15px", "auto"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), false); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(right + margin_right, dimensions.inset.inline_end); + // 200 = 5 + 7 + 160 + 15 + 13 + EXPECT_EQ(15 + 13, dimensions.inset.inline_end); // Rule 6: width is auto. - SetHorizontalStyle(left, margin_left, NGAuto, margin_right, right); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); - estimated_inline.reset(); + SetHorizontalStyle("5px", "7px", "auto", "15px", "13px"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), false); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(width, dimensions.size.inline_size); + // 200 = 5 + 7 + 160 + 15 + 13 + EXPECT_EQ(160, dimensions.size.inline_size); } TEST_F(NGAbsoluteUtilsTest, Vertical) { // Test that the equation is computed correctly: - // top + marginTop + borderTop + paddingTop + + // top + margin-top + border-top + padding-top + // height + - // bottom + marginBottom + borderBottom + paddingBottom = container height - - // Common setup - LayoutUnit top(5); - LayoutUnit margin_top(7); - LayoutUnit border_top(9); - LayoutUnit padding_top(11); - LayoutUnit bottom(13); - LayoutUnit margin_bottom(15); - LayoutUnit border_bottom(17); - LayoutUnit padding_bottom(19); - - LayoutUnit horizontal_border_padding = - border_top + padding_top + padding_bottom + border_bottom; - LayoutUnit height = - container_size_.block_size - top - margin_top - bottom - margin_bottom; - - style_->SetBorderTopWidth(border_top.ToInt()); - style_->SetBorderBottomWidth(border_bottom.ToInt()); - style_->SetPaddingTop(Length::Fixed(padding_top.ToInt())); - style_->SetPaddingBottom(Length::Fixed(padding_bottom.ToInt())); - // These default to 3 which is not what we want. - style_->SetBorderLeftWidth(0); - style_->SetBorderRightWidth(0); - - base::Optional<LayoutUnit> auto_height; + // bottom + margin-top + border-bottom + padding-bottom = container-height MinMaxSizes min_max_60{LayoutUnit(60), LayoutUnit(60)}; + base::Optional<LayoutUnit> auto_60 = LayoutUnit(60); - NGBoxStrut ltr_border_padding = - ComputeBordersForTest(*style_) + ComputePadding(ltr_space_, *style_); - NGBoxStrut vlr_border_padding = - ComputeBordersForTest(*style_) + ComputePadding(vlr_space_, *style_); - NGBoxStrut vrl_border_padding = - ComputeBordersForTest(*style_) + ComputePadding(vrl_space_, *style_); + NGBlockNode node(element_->GetLayoutBox()); + + NGBoxStrut ltr_border_padding = ComputeBorders(ltr_space_, node) + + ComputePadding(ltr_space_, node.Style()); + NGBoxStrut vlr_border_padding = ComputeBorders(vlr_space_, node) + + ComputePadding(vlr_space_, node.Style()); + NGBoxStrut vrl_border_padding = ComputeBorders(vrl_space_, node) + + ComputePadding(vrl_space_, node.Style()); NGLogicalStaticPosition static_position = { {LayoutUnit(), LayoutUnit()}, @@ -387,202 +314,189 @@ NGLogicalStaticPosition::kInlineStart, NGLogicalStaticPosition::kBlockEnd}; - // - // Tests - // - NGLogicalOutOfFlowDimensions dimensions; // All auto, compute margins. - SetVerticalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); - auto_height = LayoutUnit(60); + SetVerticalStyle("auto", "auto", "auto", "auto", "auto"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), true); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, auto_60, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(*auto_height, dimensions.size.block_size); - EXPECT_EQ(LayoutUnit(0), dimensions.inset.block_start); + EXPECT_EQ(60, dimensions.size.block_size); + EXPECT_EQ(0, dimensions.inset.block_start); - // All auto, static position bottom + // All auto, static position bottom. ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position_block_end, - auto_height, base::nullopt, - {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(container_size_.block_size, dimensions.inset.block_end); + node, ltr_space_, ltr_border_padding, static_position_block_end, auto_60, + base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, + &dimensions); + EXPECT_EQ(300, dimensions.inset.block_end); // If top, bottom, and height are known, compute margins. - SetVerticalStyle(top, NGAuto, height, NGAuto, bottom); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); - auto_height.reset(); + SetVerticalStyle("5px", "auto", "260px", "auto", "13px"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), false); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - LayoutUnit margin_space = - (container_size_.block_size - top - height - bottom) / 2; - EXPECT_EQ(top + margin_space, dimensions.inset.block_start); - EXPECT_EQ(bottom + margin_space, dimensions.inset.block_end); + // 300 = 5 + 11 + 260 + 11 + 13 + EXPECT_EQ(5 + 11, dimensions.inset.block_start); + EXPECT_EQ(11 + 13, dimensions.inset.block_end); - // If top, bottom, and height are known, writing mode vertical_lr. - SetVerticalStyle(top, NGAuto, height, NGAuto, bottom, - WritingMode::kVerticalLr); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); + // If top, bottom, and height are known, "writing-mode: vertical-lr". + SetVerticalStyle("5px", "auto", "260px", "auto", "13px", "vertical-lr"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), false); ComputeOutOfFlowInlineDimensions( - vlr_space_, *style_, vlr_border_padding, static_position, min_max_60, + node, vlr_space_, vlr_border_padding, static_position, min_max_60, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(top + margin_space, dimensions.inset.inline_start); - EXPECT_EQ(bottom + margin_space, dimensions.inset.inline_end); + // 300 = 5 + 11 + 260 + 11 + 13 + EXPECT_EQ(5 + 11, dimensions.inset.inline_start); + EXPECT_EQ(11 + 13, dimensions.inset.inline_end); - // If top, bottom, and height are known, writing mode vertical_rl. - SetVerticalStyle(top, NGAuto, height, NGAuto, bottom, - WritingMode::kVerticalRl); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), false); + // If top, bottom, and height are known, "writing-mode: vertical-rl". + SetVerticalStyle("5px", "auto", "260px", "auto", "13px", "vertical-rl"); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), false); ComputeOutOfFlowInlineDimensions( - vrl_space_, *style_, vrl_border_padding, static_position, min_max_60, + node, vrl_space_, vrl_border_padding, static_position, min_max_60, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(top + margin_space, dimensions.inset.inline_start); - EXPECT_EQ(bottom + margin_space, dimensions.inset.inline_end); + // 300 = 5 + 11 + 260 + 11 + 13 + EXPECT_EQ(5 + 11, dimensions.inset.inline_start); + EXPECT_EQ(11 + 13, dimensions.inset.inline_end); // If top, bottom, and height are known, negative auto margins. - LayoutUnit negative_margin_space = - (container_size_.block_size - top - LayoutUnit(300) - bottom) / 2; - SetVerticalStyle(top, NGAuto, LayoutUnit(300), NGAuto, bottom); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); + SetVerticalStyle("5px", "auto", "300px", "auto", "13px"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), false); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(top + negative_margin_space, dimensions.inset.block_start); - EXPECT_EQ(bottom + negative_margin_space, dimensions.inset.block_end); + // 300 = 5 + (-9) + 300 + (-9) + 13 + EXPECT_EQ(5 - 9, dimensions.inset.block_start); + EXPECT_EQ(-9 + 13, dimensions.inset.block_end); // Rule 1: top and height are unknown. - SetVerticalStyle(NGAuto, margin_top, NGAuto, margin_bottom, bottom); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); - auto_height = LayoutUnit(60); + SetVerticalStyle("auto", "7px", "auto", "15px", "13px"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), true); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, auto_60, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(*auto_height, dimensions.size.block_size); + EXPECT_EQ(*auto_60, dimensions.size.block_size); // Rule 2: top and bottom are unknown. - SetVerticalStyle(NGAuto, margin_top, height, margin_bottom, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); - auto_height.reset(); + SetVerticalStyle("auto", "7px", "260px", "15px", "auto"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), false); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(margin_top, dimensions.inset.block_start); - EXPECT_EQ(container_size_.block_size - margin_top - height, - dimensions.inset.block_end); + // 300 = 0 + 7 + 260 + 15 + 18 + EXPECT_EQ(0 + 7, dimensions.inset.block_start); + EXPECT_EQ(15 + 18, dimensions.inset.block_end); // Rule 3: height and bottom are unknown, auto_height < // horizontal_border_padding. - SetVerticalStyle(top, margin_top, NGAuto, margin_bottom, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); - auto_height = LayoutUnit(20); + SetVerticalStyle("5px", "7px", "auto", "15px", "auto"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), true); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, LayoutUnit(20), base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(horizontal_border_padding, dimensions.size.block_size); + EXPECT_EQ(56, dimensions.size.block_size); // Rule 3: height and bottom are unknown. - SetVerticalStyle(top, margin_top, NGAuto, margin_bottom, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); - auto_height = LayoutUnit(70); + SetVerticalStyle("5px", "7px", "auto", "15px", "auto"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), true); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, auto_60, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(*auto_height, dimensions.size.block_size); + EXPECT_EQ(*auto_60, dimensions.size.block_size); // Rule 4: top is unknown. - SetVerticalStyle(NGAuto, margin_top, height, margin_bottom, bottom); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); - auto_height.reset(); + SetVerticalStyle("auto", "7px", "260px", "15px", "13px"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), false); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(top + margin_top, dimensions.inset.block_start); + // 300 = 5 + 7 + 260 + 15 + 13 + EXPECT_EQ(5 + 7, dimensions.inset.block_start); // Rule 5: bottom is unknown. - SetVerticalStyle(top, margin_top, height, margin_bottom, NGAuto); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); - auto_height.reset(); + SetVerticalStyle("5px", "7px", "260px", "15px", "auto"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), false); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(bottom + margin_bottom, dimensions.inset.block_end); + // 300 = 5 + 7 + 260 + 15 + 13 + EXPECT_EQ(15 + 13, dimensions.inset.block_end); // Rule 6: height is unknown. - SetVerticalStyle(top, margin_top, NGAuto, margin_bottom, bottom); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), false); - auto_height.reset(); + SetVerticalStyle("5px", "7px", "auto", "15px", "13px"); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), false); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(height, dimensions.size.block_size); + EXPECT_EQ(260, dimensions.size.block_size); } TEST_F(NGAbsoluteUtilsTest, CenterStaticPosition) { + NGBlockNode node(element_->GetLayoutBox()); NGLogicalStaticPosition static_position = { {LayoutUnit(150), LayoutUnit(200)}, NGLogicalStaticPosition::kInlineCenter, NGLogicalStaticPosition::kBlockCenter}; - SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); - SetVerticalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); + SetHorizontalStyle("auto", "auto", "auto", "auto", "auto"); + SetVerticalStyle("auto", "auto", "auto", "auto", "auto"); - EXPECT_EQ(AbsoluteNeedsChildInlineSize(*style_), true); - EXPECT_EQ(AbsoluteNeedsChildBlockSize(*style_), true); + EXPECT_EQ(AbsoluteNeedsChildInlineSize(node), true); + EXPECT_EQ(AbsoluteNeedsChildBlockSize(node), true); NGBoxStrut border_padding; NGLogicalOutOfFlowDimensions dimensions; ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, border_padding, static_position, + node, ltr_space_, border_padding, static_position, MinMaxSizes{LayoutUnit(), LayoutUnit(1000)}, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(LayoutUnit(100), dimensions.size.inline_size); - EXPECT_EQ(LayoutUnit(100), dimensions.inset.inline_start); - EXPECT_EQ(LayoutUnit(), dimensions.inset.inline_end); + EXPECT_EQ(100, dimensions.size.inline_size); + EXPECT_EQ(100, dimensions.inset.inline_start); + EXPECT_EQ(0, dimensions.inset.inline_end); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, border_padding, static_position, + node, ltr_space_, border_padding, static_position, MinMaxSizes{LayoutUnit(), LayoutUnit(1000)}, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kRtl}, &dimensions); - EXPECT_EQ(LayoutUnit(100), dimensions.size.inline_size); - EXPECT_EQ(LayoutUnit(100), dimensions.inset.inline_start); - EXPECT_EQ(LayoutUnit(), dimensions.inset.inline_end); + EXPECT_EQ(100, dimensions.size.inline_size); + EXPECT_EQ(100, dimensions.inset.inline_start); + EXPECT_EQ(0, dimensions.inset.inline_end); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, border_padding, static_position, LayoutUnit(150), + node, ltr_space_, border_padding, static_position, LayoutUnit(150), base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(LayoutUnit(150), dimensions.size.block_size); - EXPECT_EQ(LayoutUnit(125), dimensions.inset.block_start); - EXPECT_EQ(LayoutUnit(25), dimensions.inset.block_end); + EXPECT_EQ(150, dimensions.size.block_size); + EXPECT_EQ(125, dimensions.inset.block_start); + EXPECT_EQ(25, dimensions.inset.block_end); } TEST_F(NGAbsoluteUtilsTest, MinMax) { - LayoutUnit min{50}; - LayoutUnit max{150}; + element_->SetInlineStyleProperty(CSSPropertyID::kMinWidth, "70px"); + element_->SetInlineStyleProperty(CSSPropertyID::kMaxWidth, "150px"); + element_->SetInlineStyleProperty(CSSPropertyID::kMinHeight, "70px"); + element_->SetInlineStyleProperty(CSSPropertyID::kMaxHeight, "150px"); - style_->SetMinWidth(Length::Fixed(min.ToInt())); - style_->SetMaxWidth(Length::Fixed(max.ToInt())); - style_->SetMinHeight(Length::Fixed(min.ToInt())); - style_->SetMaxHeight(Length::Fixed(max.ToInt())); + NGBlockNode node(element_->GetLayoutBox()); - NGBoxStrut ltr_border_padding = - ComputeBordersForTest(*style_) + ComputePadding(ltr_space_, *style_); + NGBoxStrut ltr_border_padding = ComputeBorders(ltr_space_, node) + + ComputePadding(ltr_space_, node.Style()); NGLogicalStaticPosition static_position = { {LayoutUnit(), LayoutUnit()}, @@ -594,57 +508,54 @@ // WIDTH TESTS // width < min gets set to min. - SetHorizontalStyle(NGAuto, NGAuto, LayoutUnit(5), NGAuto, NGAuto); + SetHorizontalStyle("auto", "auto", "5px", "auto", "auto"); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, estimated_inline, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(min, dimensions.size.inline_size); + EXPECT_EQ(70, dimensions.size.inline_size); // width > max gets set to max. - SetHorizontalStyle(NGAuto, NGAuto, LayoutUnit(200), NGAuto, NGAuto); + SetHorizontalStyle("auto", "auto", "200px", "auto", "auto"); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, estimated_inline, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(max, dimensions.size.inline_size); + EXPECT_EQ(150, dimensions.size.inline_size); // Unspecified width becomes min_max, gets clamped to min. - SetHorizontalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); + SetHorizontalStyle("auto", "auto", "auto", "auto", "auto"); ComputeOutOfFlowInlineDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, - estimated_inline, base::nullopt, base::nullopt, + node, ltr_space_, ltr_border_padding, static_position, estimated_inline, + base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(min, dimensions.size.inline_size); + EXPECT_EQ(70, dimensions.size.inline_size); // HEIGHT TESTS - base::Optional<LayoutUnit> auto_height; - // height < min gets set to min. - SetVerticalStyle(NGAuto, NGAuto, LayoutUnit(5), NGAuto, NGAuto); + SetVerticalStyle("auto", "auto", "5px", "auto", "auto"); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(min, dimensions.size.block_size); + EXPECT_EQ(70, dimensions.size.block_size); // height > max gets set to max. - SetVerticalStyle(NGAuto, NGAuto, LayoutUnit(200), NGAuto, NGAuto); + SetVerticalStyle("auto", "auto", "200px", "auto", "auto"); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, base::nullopt, base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(max, dimensions.size.block_size); + EXPECT_EQ(150, dimensions.size.block_size); // // Unspecified height becomes estimated, gets clamped to min. - SetVerticalStyle(NGAuto, NGAuto, NGAuto, NGAuto, NGAuto); - auto_height = LayoutUnit(20); + SetVerticalStyle("auto", "auto", "auto", "auto", "auto"); ComputeOutOfFlowBlockDimensions( - ltr_space_, *style_, ltr_border_padding, static_position, auto_height, + node, ltr_space_, ltr_border_padding, static_position, LayoutUnit(20), base::nullopt, {WritingMode::kHorizontalTb, TextDirection::kLtr}, &dimensions); - EXPECT_EQ(min, dimensions.size.block_size); + EXPECT_EQ(70, dimensions.size.block_size); } } // namespace
diff --git a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc index 2dea3a70..5539aa18 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
@@ -594,10 +594,15 @@ style.BoxSizing(), *inline_size); // Apply the automatic minimum size for aspect ratio: // https://drafts.csswg.org/css-sizing-4/#aspect-ratio-minimum + // We also check for LayoutUnit::Max() because flexbox uses that as a + // "placeholder" to compute the flex line length while still respecting + // max-block-size. if (style.LogicalMinHeight().IsAuto() && style.OverflowBlockDirection() == EOverflow::kVisible && - intrinsic_size != kIndefiniteSize) + intrinsic_size != kIndefiniteSize && + intrinsic_size != LayoutUnit::Max()) { min_max.min_size = intrinsic_size; + } } else if (extent == kIndefiniteSize) { DCHECK_EQ(intrinsic_size, kIndefiniteSize); return extent;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc index b8915c3..0509ff49 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc
@@ -617,7 +617,7 @@ // have the same logic in legacy layout in // |LayoutBlockFlow::UpdateBlockLayout()|. if (node.GetLayoutBox()->IntrinsicLogicalWidthsDirty() && - AbsoluteNeedsChildInlineSize(candidate_style)) { + AbsoluteNeedsChildInlineSize(node)) { // Freeze the scrollbars for this layout pass. We don't want them to // change *again*. freeze_scrollbars.emplace(); @@ -753,18 +753,15 @@ bool has_computed_block_dimensions = false; bool is_replaced = node.IsReplaced(); bool should_be_considered_as_replaced = node.ShouldBeConsideredAsReplaced(); - bool absolute_needs_child_block_size = - AbsoluteNeedsChildBlockSize(candidate_style); + bool absolute_needs_child_block_size = AbsoluteNeedsChildBlockSize(node); base::Optional<MinMaxSizes> minmax_intrinsic_sizes_for_ar; // We also include items with aspect ratio here, because if the inline size // is auto and we have a definite block size, we want to use that for the // inline size calculation. - bool compute_inline_from_ar = - IsInlineSizeComputableFromBlockSize(candidate_style); - if (AbsoluteNeedsChildInlineSize(candidate_style) || - NeedMinMaxSize(candidate_style) || should_be_considered_as_replaced || - compute_inline_from_ar) { + bool compute_inline_from_ar = IsInlineSizeComputableFromBlockSize(node); + if (AbsoluteNeedsChildInlineSize(node) || NeedMinMaxSize(candidate_style) || + should_be_considered_as_replaced || compute_inline_from_ar) { MinMaxSizesInput input(kIndefiniteSize, MinMaxSizesType::kContent); if (is_replaced) { input.percentage_resolution_block_size = @@ -773,7 +770,7 @@ // If we can determine our block-size ahead of time (it doesn't depend on // our content), we use this for our %-block-size. ComputeOutOfFlowBlockDimensions( - candidate_constraint_space, candidate_style, border_padding, + node, candidate_constraint_space, border_padding, candidate_static_position, base::nullopt, base::nullopt, container_writing_direction, &node_dimensions); has_computed_block_dimensions = true; @@ -821,7 +818,7 @@ } ComputeOutOfFlowInlineDimensions( - candidate_constraint_space, candidate_style, border_padding, + node, candidate_constraint_space, border_padding, candidate_static_position, min_max_sizes, minmax_intrinsic_sizes_for_ar, replaced_size, container_writing_direction, &node_dimensions); @@ -871,7 +868,7 @@ // our |min_max_sizes|, only run if needed. if (!has_computed_block_dimensions) { ComputeOutOfFlowBlockDimensions( - candidate_constraint_space, candidate_style, border_padding, + node, candidate_constraint_space, border_padding, candidate_static_position, block_estimate, replaced_size, container_writing_direction, &node_dimensions); has_computed_block_dimensions = true;
diff --git a/third_party/blink/renderer/core/layout/svg/BUILD.gn b/third_party/blink/renderer/core/layout/svg/BUILD.gn deleted file mode 100644 index 2bb5f7a..0000000 --- a/third_party/blink/renderer/core/layout/svg/BUILD.gn +++ /dev/null
@@ -1,101 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("svg_layout") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "layout_svg_block.cc", - "layout_svg_block.h", - "layout_svg_container.cc", - "layout_svg_container.h", - "layout_svg_ellipse.cc", - "layout_svg_ellipse.h", - "layout_svg_filter_primitive.cc", - "layout_svg_filter_primitive.h", - "layout_svg_foreign_object.cc", - "layout_svg_foreign_object.h", - "layout_svg_hidden_container.cc", - "layout_svg_hidden_container.h", - "layout_svg_image.cc", - "layout_svg_image.h", - "layout_svg_inline.cc", - "layout_svg_inline.h", - "layout_svg_inline_text.cc", - "layout_svg_inline_text.h", - "layout_svg_model_object.cc", - "layout_svg_model_object.h", - "layout_svg_path.cc", - "layout_svg_path.h", - "layout_svg_rect.cc", - "layout_svg_rect.h", - "layout_svg_resource_clipper.cc", - "layout_svg_resource_clipper.h", - "layout_svg_resource_container.cc", - "layout_svg_resource_container.h", - "layout_svg_resource_filter.cc", - "layout_svg_resource_filter.h", - "layout_svg_resource_gradient.cc", - "layout_svg_resource_gradient.h", - "layout_svg_resource_linear_gradient.cc", - "layout_svg_resource_linear_gradient.h", - "layout_svg_resource_marker.cc", - "layout_svg_resource_marker.h", - "layout_svg_resource_masker.cc", - "layout_svg_resource_masker.h", - "layout_svg_resource_paint_server.h", - "layout_svg_resource_pattern.cc", - "layout_svg_resource_pattern.h", - "layout_svg_resource_radial_gradient.cc", - "layout_svg_resource_radial_gradient.h", - "layout_svg_root.cc", - "layout_svg_root.h", - "layout_svg_shape.cc", - "layout_svg_shape.h", - "layout_svg_text.cc", - "layout_svg_text.h", - "layout_svg_text_path.cc", - "layout_svg_text_path.h", - "layout_svg_transformable_container.cc", - "layout_svg_transformable_container.h", - "layout_svg_tspan.cc", - "layout_svg_tspan.h", - "layout_svg_viewport_container.cc", - "layout_svg_viewport_container.h", - "svg_character_data.h", - "svg_layout_support.cc", - "svg_layout_support.h", - "svg_layout_tree_as_text.cc", - "svg_layout_tree_as_text.h", - "svg_marker_data.cc", - "svg_marker_data.h", - "svg_resources.cc", - "svg_resources.h", - "svg_resources_cache.cc", - "svg_resources_cache.h", - "svg_resources_cycle_solver.cc", - "svg_resources_cycle_solver.h", - "svg_text_chunk_builder.cc", - "svg_text_chunk_builder.h", - "svg_text_fragment.h", - "svg_text_layout_attributes_builder.cc", - "svg_text_layout_attributes_builder.h", - "svg_text_layout_engine.cc", - "svg_text_layout_engine.h", - "svg_text_layout_engine_baseline.cc", - "svg_text_layout_engine_baseline.h", - "svg_text_layout_engine_spacing.cc", - "svg_text_layout_engine_spacing.h", - "svg_text_metrics.cc", - "svg_text_metrics.h", - "svg_text_query.cc", - "svg_text_query.h", - "transform_helper.cc", - "transform_helper.h", - "transformed_hit_test_location.cc", - "transformed_hit_test_location.h", - ] -}
diff --git a/third_party/blink/renderer/core/loader/BUILD.gn b/third_party/blink/renderer/core/loader/BUILD.gn deleted file mode 100644 index f32339f..0000000 --- a/third_party/blink/renderer/core/loader/BUILD.gn +++ /dev/null
@@ -1,163 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("loader") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "address_space_feature.cc", - "address_space_feature.h", - "alternate_signed_exchange_resource_info.cc", - "alternate_signed_exchange_resource_info.h", - "appcache/application_cache.cc", - "appcache/application_cache.h", - "appcache/application_cache_host.cc", - "appcache/application_cache_host.h", - "appcache/application_cache_host_for_frame.cc", - "appcache/application_cache_host_for_frame.h", - "appcache/application_cache_host_for_worker.cc", - "appcache/application_cache_host_for_worker.h", - "base_fetch_context.cc", - "base_fetch_context.h", - "cookie_jar.cc", - "cookie_jar.h", - "cross_thread_resource_timing_info_copier.cc", - "cross_thread_resource_timing_info_copier.h", - "document_load_timing.cc", - "document_load_timing.h", - "document_loader.cc", - "document_loader.h", - "empty_clients.cc", - "empty_clients.h", - "font_preload_manager.cc", - "font_preload_manager.h", - "form_submission.cc", - "form_submission.h", - "frame_fetch_context.cc", - "frame_fetch_context.h", - "frame_load_request.cc", - "frame_load_request.h", - "frame_loader.cc", - "frame_loader.h", - "frame_loader_types.h", - "frame_resource_fetcher_properties.cc", - "frame_resource_fetcher_properties.h", - "history_item.cc", - "history_item.h", - "http_equiv.cc", - "http_equiv.h", - "http_refresh_scheduler.cc", - "http_refresh_scheduler.h", - "idleness_detector.cc", - "idleness_detector.h", - "image_loader.cc", - "image_loader.h", - "importance_attribute.cc", - "importance_attribute.h", - "interactive_detector.cc", - "interactive_detector.h", - "lazy_image_helper.cc", - "lazy_image_helper.h", - "link_load_parameters.cc", - "link_load_parameters.h", - "link_loader.cc", - "link_loader.h", - "link_loader_client.h", - "loader_factory_for_frame.cc", - "loader_factory_for_frame.h", - "loader_factory_for_worker.cc", - "loader_factory_for_worker.h", - "long_task_detector.cc", - "long_task_detector.h", - "mixed_content_checker.cc", - "mixed_content_checker.h", - "modulescript/document_module_script_fetcher.cc", - "modulescript/document_module_script_fetcher.h", - "modulescript/installed_service_worker_module_script_fetcher.cc", - "modulescript/installed_service_worker_module_script_fetcher.h", - "modulescript/module_script_creation_params.h", - "modulescript/module_script_fetch_request.h", - "modulescript/module_script_fetcher.cc", - "modulescript/module_script_fetcher.h", - "modulescript/module_script_loader.cc", - "modulescript/module_script_loader.h", - "modulescript/module_script_loader_client.h", - "modulescript/module_script_loader_registry.cc", - "modulescript/module_script_loader_registry.h", - "modulescript/module_tree_linker.cc", - "modulescript/module_tree_linker.h", - "modulescript/module_tree_linker_registry.cc", - "modulescript/module_tree_linker_registry.h", - "modulescript/worker_module_script_fetcher.cc", - "modulescript/worker_module_script_fetcher.h", - "modulescript/worklet_module_script_fetcher.cc", - "modulescript/worklet_module_script_fetcher.h", - "navigation_policy.cc", - "navigation_policy.h", - "ping_loader.cc", - "ping_loader.h", - "prefetched_signed_exchange_manager.cc", - "prefetched_signed_exchange_manager.h", - "preload_helper.cc", - "preload_helper.h", - "prerenderer_client.cc", - "prerenderer_client.h", - "previews_resource_loading_hints.cc", - "previews_resource_loading_hints.h", - "private/frame_client_hints_preferences_context.cc", - "private/frame_client_hints_preferences_context.h", - "private/prerender_client.h", - "private/prerender_handle.cc", - "private/prerender_handle.h", - "progress_tracker.cc", - "progress_tracker.h", - "resource/css_style_sheet_resource.cc", - "resource/css_style_sheet_resource.h", - "resource/font_resource.cc", - "resource/font_resource.h", - "resource/image_resource.cc", - "resource/image_resource.h", - "resource/image_resource_content.cc", - "resource/image_resource_content.h", - "resource/image_resource_info.h", - "resource/image_resource_observer.h", - "resource/link_prefetch_resource.cc", - "resource/link_prefetch_resource.h", - "resource/multipart_image_resource_parser.cc", - "resource/multipart_image_resource_parser.h", - "resource/script_resource.cc", - "resource/script_resource.h", - "resource/text_resource.cc", - "resource/text_resource.h", - "resource/xsl_style_sheet_resource.cc", - "resource/xsl_style_sheet_resource.h", - "resource_load_observer_for_frame.cc", - "resource_load_observer_for_frame.h", - "resource_load_observer_for_worker.cc", - "resource_load_observer_for_worker.h", - "subresource_filter.cc", - "subresource_filter.h", - "subresource_integrity_helper.cc", - "subresource_integrity_helper.h", - "text_track_loader.cc", - "text_track_loader.h", - "threadable_loader.cc", - "threadable_loader.h", - "threadable_loader_client.h", - "threaded_icon_loader.cc", - "threaded_icon_loader.h", - "web_associated_url_loader_impl.cc", - "web_associated_url_loader_impl.h", - "worker_fetch_context.cc", - "worker_fetch_context.h", - "worker_resource_fetcher_properties.cc", - "worker_resource_fetcher_properties.h", - "worker_resource_timing_notifier_impl.cc", - "worker_resource_timing_notifier_impl.h", - ] - - public_deps = [ "//third_party/blink/renderer/platform" ] -}
diff --git a/third_party/blink/renderer/core/loader/build.gni b/third_party/blink/renderer/core/loader/build.gni new file mode 100644 index 0000000..c99a873 --- /dev/null +++ b/third_party/blink/renderer/core/loader/build.gni
@@ -0,0 +1,155 @@ +# 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. + +blink_core_sources_loader = [ + "address_space_feature.cc", + "address_space_feature.h", + "alternate_signed_exchange_resource_info.cc", + "alternate_signed_exchange_resource_info.h", + "appcache/application_cache.cc", + "appcache/application_cache.h", + "appcache/application_cache_host.cc", + "appcache/application_cache_host.h", + "appcache/application_cache_host_for_frame.cc", + "appcache/application_cache_host_for_frame.h", + "appcache/application_cache_host_for_worker.cc", + "appcache/application_cache_host_for_worker.h", + "base_fetch_context.cc", + "base_fetch_context.h", + "cookie_jar.cc", + "cookie_jar.h", + "cross_thread_resource_timing_info_copier.cc", + "cross_thread_resource_timing_info_copier.h", + "document_load_timing.cc", + "document_load_timing.h", + "document_loader.cc", + "document_loader.h", + "empty_clients.cc", + "empty_clients.h", + "font_preload_manager.cc", + "font_preload_manager.h", + "form_submission.cc", + "form_submission.h", + "frame_fetch_context.cc", + "frame_fetch_context.h", + "frame_load_request.cc", + "frame_load_request.h", + "frame_loader.cc", + "frame_loader.h", + "frame_loader_types.h", + "frame_resource_fetcher_properties.cc", + "frame_resource_fetcher_properties.h", + "history_item.cc", + "history_item.h", + "http_equiv.cc", + "http_equiv.h", + "http_refresh_scheduler.cc", + "http_refresh_scheduler.h", + "idleness_detector.cc", + "idleness_detector.h", + "image_loader.cc", + "image_loader.h", + "importance_attribute.cc", + "importance_attribute.h", + "interactive_detector.cc", + "interactive_detector.h", + "lazy_image_helper.cc", + "lazy_image_helper.h", + "link_load_parameters.cc", + "link_load_parameters.h", + "link_loader.cc", + "link_loader.h", + "link_loader_client.h", + "loader_factory_for_frame.cc", + "loader_factory_for_frame.h", + "loader_factory_for_worker.cc", + "loader_factory_for_worker.h", + "long_task_detector.cc", + "long_task_detector.h", + "mixed_content_checker.cc", + "mixed_content_checker.h", + "modulescript/document_module_script_fetcher.cc", + "modulescript/document_module_script_fetcher.h", + "modulescript/installed_service_worker_module_script_fetcher.cc", + "modulescript/installed_service_worker_module_script_fetcher.h", + "modulescript/module_script_creation_params.h", + "modulescript/module_script_fetch_request.h", + "modulescript/module_script_fetcher.cc", + "modulescript/module_script_fetcher.h", + "modulescript/module_script_loader.cc", + "modulescript/module_script_loader.h", + "modulescript/module_script_loader_client.h", + "modulescript/module_script_loader_registry.cc", + "modulescript/module_script_loader_registry.h", + "modulescript/module_tree_linker.cc", + "modulescript/module_tree_linker.h", + "modulescript/module_tree_linker_registry.cc", + "modulescript/module_tree_linker_registry.h", + "modulescript/worker_module_script_fetcher.cc", + "modulescript/worker_module_script_fetcher.h", + "modulescript/worklet_module_script_fetcher.cc", + "modulescript/worklet_module_script_fetcher.h", + "navigation_policy.cc", + "navigation_policy.h", + "ping_loader.cc", + "ping_loader.h", + "prefetched_signed_exchange_manager.cc", + "prefetched_signed_exchange_manager.h", + "preload_helper.cc", + "preload_helper.h", + "prerenderer_client.cc", + "prerenderer_client.h", + "previews_resource_loading_hints.cc", + "previews_resource_loading_hints.h", + "private/frame_client_hints_preferences_context.cc", + "private/frame_client_hints_preferences_context.h", + "private/prerender_client.h", + "private/prerender_handle.cc", + "private/prerender_handle.h", + "progress_tracker.cc", + "progress_tracker.h", + "resource/css_style_sheet_resource.cc", + "resource/css_style_sheet_resource.h", + "resource/font_resource.cc", + "resource/font_resource.h", + "resource/image_resource.cc", + "resource/image_resource.h", + "resource/image_resource_content.cc", + "resource/image_resource_content.h", + "resource/image_resource_info.h", + "resource/image_resource_observer.h", + "resource/link_prefetch_resource.cc", + "resource/link_prefetch_resource.h", + "resource/multipart_image_resource_parser.cc", + "resource/multipart_image_resource_parser.h", + "resource/script_resource.cc", + "resource/script_resource.h", + "resource/text_resource.cc", + "resource/text_resource.h", + "resource/xsl_style_sheet_resource.cc", + "resource/xsl_style_sheet_resource.h", + "resource_load_observer_for_frame.cc", + "resource_load_observer_for_frame.h", + "resource_load_observer_for_worker.cc", + "resource_load_observer_for_worker.h", + "subresource_filter.cc", + "subresource_filter.h", + "subresource_integrity_helper.cc", + "subresource_integrity_helper.h", + "text_track_loader.cc", + "text_track_loader.h", + "threadable_loader.cc", + "threadable_loader.h", + "threadable_loader_client.h", + "threaded_icon_loader.cc", + "threaded_icon_loader.h", + "web_associated_url_loader_impl.cc", + "web_associated_url_loader_impl.h", + "worker_fetch_context.cc", + "worker_fetch_context.h", + "worker_resource_fetcher_properties.cc", + "worker_resource_fetcher_properties.h", + "worker_resource_timing_notifier_impl.cc", + "worker_resource_timing_notifier_impl.h", +]
diff --git a/third_party/blink/renderer/core/mathml/BUILD.gn b/third_party/blink/renderer/core/mathml/BUILD.gn deleted file mode 100644 index d435ba1..0000000 --- a/third_party/blink/renderer/core/mathml/BUILD.gn +++ /dev/null
@@ -1,30 +0,0 @@ -# Copyright 2019 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("mathml") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "mathml_element.cc", - "mathml_element.h", - "mathml_fraction_element.cc", - "mathml_fraction_element.h", - "mathml_operator_element.cc", - "mathml_operator_element.h", - "mathml_padded_element.cc", - "mathml_padded_element.h", - "mathml_radical_element.cc", - "mathml_radical_element.h", - "mathml_row_element.cc", - "mathml_row_element.h", - "mathml_scripts_element.cc", - "mathml_scripts_element.h", - "mathml_space_element.cc", - "mathml_space_element.h", - "mathml_under_over_element.cc", - "mathml_under_over_element.h", - ] -}
diff --git a/third_party/blink/renderer/core/mathml/build.gni b/third_party/blink/renderer/core/mathml/build.gni new file mode 100644 index 0000000..c8e730f5 --- /dev/null +++ b/third_party/blink/renderer/core/mathml/build.gni
@@ -0,0 +1,24 @@ +# 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. + +blink_core_sources_mathml = [ + "mathml_element.cc", + "mathml_element.h", + "mathml_fraction_element.cc", + "mathml_fraction_element.h", + "mathml_operator_element.cc", + "mathml_operator_element.h", + "mathml_padded_element.cc", + "mathml_padded_element.h", + "mathml_radical_element.cc", + "mathml_radical_element.h", + "mathml_row_element.cc", + "mathml_row_element.h", + "mathml_scripts_element.cc", + "mathml_scripts_element.h", + "mathml_space_element.cc", + "mathml_space_element.h", + "mathml_under_over_element.cc", + "mathml_under_over_element.h", +]
diff --git a/third_party/blink/renderer/core/messaging/BUILD.gn b/third_party/blink/renderer/core/messaging/BUILD.gn deleted file mode 100644 index f17993c..0000000 --- a/third_party/blink/renderer/core/messaging/BUILD.gn +++ /dev/null
@@ -1,26 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("messaging") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "blink_cloneable_message.cc", - "blink_cloneable_message.h", - "blink_cloneable_message_mojom_traits.cc", - "blink_cloneable_message_mojom_traits.h", - "blink_transferable_message.cc", - "blink_transferable_message.h", - "blink_transferable_message_mojom_traits.cc", - "blink_transferable_message_mojom_traits.h", - "message_channel.cc", - "message_channel.h", - "message_port.cc", - "message_port.h", - ] - - public_deps = [ "//third_party/blink/public/mojom:mojom_core_blink" ] -}
diff --git a/third_party/blink/renderer/core/messaging/build.gni b/third_party/blink/renderer/core/messaging/build.gni new file mode 100644 index 0000000..2a81399 --- /dev/null +++ b/third_party/blink/renderer/core/messaging/build.gni
@@ -0,0 +1,18 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_sources_messaging = [ + "blink_cloneable_message.cc", + "blink_cloneable_message.h", + "blink_cloneable_message_mojom_traits.cc", + "blink_cloneable_message_mojom_traits.h", + "blink_transferable_message.cc", + "blink_transferable_message.h", + "blink_transferable_message_mojom_traits.cc", + "blink_transferable_message_mojom_traits.h", + "message_channel.cc", + "message_channel.h", + "message_port.cc", + "message_port.h", +]
diff --git a/third_party/blink/renderer/core/mojo/BUILD.gn b/third_party/blink/renderer/core/mojo/BUILD.gn index 4715675..ecbb304 100644 --- a/third_party/blink/renderer/core/mojo/BUILD.gn +++ b/third_party/blink/renderer/core/mojo/BUILD.gn
@@ -5,34 +5,6 @@ import("//mojo/public/tools/bindings/mojom.gni") import("//third_party/blink/renderer/core/core.gni") -blink_core_sources("mojo") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "mojo.cc", - "mojo.h", - "mojo_handle.cc", - "mojo_handle.h", - "mojo_watcher.cc", - "mojo_watcher.h", - "test/mojo_interface_interceptor.cc", - "test/mojo_interface_interceptor.h", - "test/mojo_interface_request_event.cc", - "test/mojo_interface_request_event.h", - ] - - deps = [ - "//mojo/public/cpp/system", - "//services/service_manager/public/cpp", - "//third_party/blink/renderer/core/dom:dom", - "//third_party/blink/renderer/core/execution_context:execution_context", - "//third_party/blink/renderer/core/frame:frame", - "//third_party/blink/renderer/core/typed_arrays:typed_arrays", - "//third_party/blink/renderer/core/workers:workers", - ] - public_deps = [ "//third_party/blink/renderer/core:core_generated" ] -} - source_set("unit_tests") { testonly = true sources = [ "tests/js_to_cpp_test.cc" ]
diff --git a/third_party/blink/renderer/core/mojo/build.gni b/third_party/blink/renderer/core/mojo/build.gni new file mode 100644 index 0000000..b44830b --- /dev/null +++ b/third_party/blink/renderer/core/mojo/build.gni
@@ -0,0 +1,16 @@ +# 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. + +blink_core_sources_mojo = [ + "mojo.cc", + "mojo.h", + "mojo_handle.cc", + "mojo_handle.h", + "mojo_watcher.cc", + "mojo_watcher.h", + "test/mojo_interface_interceptor.cc", + "test/mojo_interface_interceptor.h", + "test/mojo_interface_request_event.cc", + "test/mojo_interface_request_event.h", +]
diff --git a/third_party/blink/renderer/core/offscreencanvas/BUILD.gn b/third_party/blink/renderer/core/offscreencanvas/BUILD.gn deleted file mode 100644 index 9ba513a..0000000 --- a/third_party/blink/renderer/core/offscreencanvas/BUILD.gn +++ /dev/null
@@ -1,18 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("offscreencanvas") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "offscreen_canvas.cc", - "offscreen_canvas.h", - ] - deps = [ - "//gpu/config", - "//mojo/public/cpp/bindings:bindings", - ] -}
diff --git a/third_party/blink/renderer/core/offscreencanvas/build.gni b/third_party/blink/renderer/core/offscreencanvas/build.gni new file mode 100644 index 0000000..75d81ea --- /dev/null +++ b/third_party/blink/renderer/core/offscreencanvas/build.gni
@@ -0,0 +1,8 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_sources_offscreencanvas = [ + "offscreen_canvas.cc", + "offscreen_canvas.h", +]
diff --git a/third_party/blink/renderer/core/origin_trials/BUILD.gn b/third_party/blink/renderer/core/origin_trials/BUILD.gn deleted file mode 100644 index 4a6ae2c..0000000 --- a/third_party/blink/renderer/core/origin_trials/BUILD.gn +++ /dev/null
@@ -1,16 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("origin_trials") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "navigation_origin_trial_features.cc", - "origin_trial_context.cc", - "origin_trial_context.h", - "origin_trials.h", - ] -}
diff --git a/third_party/blink/renderer/core/origin_trials/build.gni b/third_party/blink/renderer/core/origin_trials/build.gni new file mode 100644 index 0000000..fbd8c26 --- /dev/null +++ b/third_party/blink/renderer/core/origin_trials/build.gni
@@ -0,0 +1,10 @@ +# 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. + +blink_core_sources_origin_trials = [ + "navigation_origin_trial_features.cc", + "origin_trial_context.cc", + "origin_trial_context.h", + "origin_trials.h", +]
diff --git a/third_party/blink/renderer/core/page/BUILD.gn b/third_party/blink/renderer/core/page/BUILD.gn deleted file mode 100644 index 4d466ed9..0000000 --- a/third_party/blink/renderer/core/page/BUILD.gn +++ /dev/null
@@ -1,124 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("page") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "autoscroll_controller.cc", - "autoscroll_controller.h", - "chrome_client.cc", - "chrome_client.h", - "chrome_client_impl.cc", - "chrome_client_impl.h", - "color_page_popup_controller.cc", - "color_page_popup_controller.h", - "context_menu_controller.cc", - "context_menu_controller.h", - "context_menu_provider.h", - "create_window.cc", - "create_window.h", - "drag_actions.h", - "drag_controller.cc", - "drag_controller.h", - "drag_data.cc", - "drag_data.h", - "drag_image.cc", - "drag_image.h", - "drag_state.h", - "event_with_hit_test_results.h", - "focus_changed_observer.cc", - "focus_changed_observer.h", - "focus_controller.cc", - "focus_controller.h", - "frame_tree.cc", - "frame_tree.h", - "link_highlight.cc", - "link_highlight.h", - "named_pages_mapper.cc", - "named_pages_mapper.h", - "page.cc", - "page.h", - "page_animator.cc", - "page_animator.h", - "page_hidden_state.cc", - "page_hidden_state.h", - "page_popup.h", - "page_popup_client.cc", - "page_popup_client.h", - "page_popup_controller.cc", - "page_popup_controller.h", - "page_visibility_observer.cc", - "page_visibility_observer.h", - "page_widget_delegate.cc", - "page_widget_delegate.h", - "plugin_data.cc", - "plugin_data.h", - "plugin_script_forbidden_scope.cc", - "plugin_script_forbidden_scope.h", - "plugins_changed_observer.cc", - "plugins_changed_observer.h", - "pointer_lock_controller.cc", - "pointer_lock_controller.h", - "popup_opening_observer.h", - "print_context.cc", - "print_context.h", - "scoped_page_pauser.cc", - "scoped_page_pauser.h", - "scrolling/element_fragment_anchor.cc", - "scrolling/element_fragment_anchor.h", - "scrolling/fragment_anchor.cc", - "scrolling/fragment_anchor.h", - "scrolling/overscroll_controller.cc", - "scrolling/overscroll_controller.h", - "scrolling/root_scroller_controller.cc", - "scrolling/root_scroller_controller.h", - "scrolling/scroll_customization_callbacks.cc", - "scrolling/scroll_customization_callbacks.h", - "scrolling/scroll_state.cc", - "scrolling/scroll_state.h", - "scrolling/scroll_state_callback.cc", - "scrolling/scroll_state_callback.h", - "scrolling/scrolling_coordinator.cc", - "scrolling/scrolling_coordinator.h", - "scrolling/scrolling_coordinator_context.h", - "scrolling/snap_coordinator.cc", - "scrolling/snap_coordinator.h", - "scrolling/sticky_position_scrolling_constraints.cc", - "scrolling/sticky_position_scrolling_constraints.h", - "scrolling/text_fragment_anchor.cc", - "scrolling/text_fragment_anchor.h", - "scrolling/text_fragment_anchor_metrics.cc", - "scrolling/text_fragment_anchor_metrics.h", - "scrolling/text_fragment_finder.cc", - "scrolling/text_fragment_finder.h", - "scrolling/text_fragment_selector.cc", - "scrolling/text_fragment_selector.h", - "scrolling/text_fragment_selector_generator.cc", - "scrolling/text_fragment_selector_generator.h", - "scrolling/top_document_root_scroller_controller.cc", - "scrolling/top_document_root_scroller_controller.h", - "scrolling/viewport_scroll_callback.cc", - "scrolling/viewport_scroll_callback.h", - "slot_scoped_traversal.cc", - "slot_scoped_traversal.h", - "spatial_navigation.cc", - "spatial_navigation.h", - "spatial_navigation_controller.cc", - "spatial_navigation_controller.h", - "touch_adjustment.cc", - "touch_adjustment.h", - "validation_message_client.h", - "validation_message_client_impl.cc", - "validation_message_client_impl.h", - "validation_message_overlay_delegate.cc", - "validation_message_overlay_delegate.h", - "viewport_description.cc", - "viewport_description.h", - ] - - public_deps = [ "//ui/base/cursor:cursor_base" ] -}
diff --git a/third_party/blink/renderer/core/page/build.gni b/third_party/blink/renderer/core/page/build.gni new file mode 100644 index 0000000..34642676 --- /dev/null +++ b/third_party/blink/renderer/core/page/build.gni
@@ -0,0 +1,116 @@ +# 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. + +blink_core_sources_page = [ + "autoscroll_controller.cc", + "autoscroll_controller.h", + "chrome_client.cc", + "chrome_client.h", + "chrome_client_impl.cc", + "chrome_client_impl.h", + "color_page_popup_controller.cc", + "color_page_popup_controller.h", + "context_menu_controller.cc", + "context_menu_controller.h", + "context_menu_provider.h", + "create_window.cc", + "create_window.h", + "drag_actions.h", + "drag_controller.cc", + "drag_controller.h", + "drag_data.cc", + "drag_data.h", + "drag_image.cc", + "drag_image.h", + "drag_state.h", + "event_with_hit_test_results.h", + "focus_changed_observer.cc", + "focus_changed_observer.h", + "focus_controller.cc", + "focus_controller.h", + "frame_tree.cc", + "frame_tree.h", + "link_highlight.cc", + "link_highlight.h", + "named_pages_mapper.cc", + "named_pages_mapper.h", + "page.cc", + "page.h", + "page_animator.cc", + "page_animator.h", + "page_hidden_state.cc", + "page_hidden_state.h", + "page_popup.h", + "page_popup_client.cc", + "page_popup_client.h", + "page_popup_controller.cc", + "page_popup_controller.h", + "page_visibility_observer.cc", + "page_visibility_observer.h", + "page_widget_delegate.cc", + "page_widget_delegate.h", + "plugin_data.cc", + "plugin_data.h", + "plugin_script_forbidden_scope.cc", + "plugin_script_forbidden_scope.h", + "plugins_changed_observer.cc", + "plugins_changed_observer.h", + "pointer_lock_controller.cc", + "pointer_lock_controller.h", + "popup_opening_observer.h", + "print_context.cc", + "print_context.h", + "scoped_page_pauser.cc", + "scoped_page_pauser.h", + "scrolling/element_fragment_anchor.cc", + "scrolling/element_fragment_anchor.h", + "scrolling/fragment_anchor.cc", + "scrolling/fragment_anchor.h", + "scrolling/overscroll_controller.cc", + "scrolling/overscroll_controller.h", + "scrolling/root_scroller_controller.cc", + "scrolling/root_scroller_controller.h", + "scrolling/scroll_customization_callbacks.cc", + "scrolling/scroll_customization_callbacks.h", + "scrolling/scroll_state.cc", + "scrolling/scroll_state.h", + "scrolling/scroll_state_callback.cc", + "scrolling/scroll_state_callback.h", + "scrolling/scrolling_coordinator.cc", + "scrolling/scrolling_coordinator.h", + "scrolling/scrolling_coordinator_context.h", + "scrolling/snap_coordinator.cc", + "scrolling/snap_coordinator.h", + "scrolling/sticky_position_scrolling_constraints.cc", + "scrolling/sticky_position_scrolling_constraints.h", + "scrolling/text_fragment_anchor.cc", + "scrolling/text_fragment_anchor.h", + "scrolling/text_fragment_anchor_metrics.cc", + "scrolling/text_fragment_anchor_metrics.h", + "scrolling/text_fragment_finder.cc", + "scrolling/text_fragment_finder.h", + "scrolling/text_fragment_selector.cc", + "scrolling/text_fragment_selector.h", + "scrolling/text_fragment_selector_generator.cc", + "scrolling/text_fragment_selector_generator.h", + "scrolling/top_document_root_scroller_controller.cc", + "scrolling/top_document_root_scroller_controller.h", + "scrolling/viewport_scroll_callback.cc", + "scrolling/viewport_scroll_callback.h", + "slot_scoped_traversal.cc", + "slot_scoped_traversal.h", + "spatial_navigation.cc", + "spatial_navigation.h", + "spatial_navigation_controller.cc", + "spatial_navigation_controller.h", + "touch_adjustment.cc", + "touch_adjustment.h", + "validation_message_client.h", + "validation_message_client_impl.cc", + "validation_message_client_impl.h", + "validation_message_overlay_delegate.cc", + "validation_message_overlay_delegate.h", + "viewport_description.cc", + "viewport_description.h", +]
diff --git a/third_party/blink/renderer/core/page/chrome_client_impl.cc b/third_party/blink/renderer/core/page/chrome_client_impl.cc index a9285992..9e76c30f 100644 --- a/third_party/blink/renderer/core/page/chrome_client_impl.cc +++ b/third_party/blink/renderer/core/page/chrome_client_impl.cc
@@ -214,12 +214,7 @@ } void ChromeClientImpl::TakeFocus(mojom::blink::FocusType type) { - if (!web_view_->Client()) - return; - if (type == mojom::blink::FocusType::kBackward) - web_view_->Client()->FocusPrevious(); - else - web_view_->Client()->FocusNext(); + web_view_->TakeFocus(type == mojom::blink::FocusType::kBackward); } void ChromeClientImpl::SetKeyboardFocusURL(Element* new_focus_element) {
diff --git a/third_party/blink/renderer/core/paint/BUILD.gn b/third_party/blink/renderer/core/paint/BUILD.gn deleted file mode 100644 index b7ad1cbb..0000000 --- a/third_party/blink/renderer/core/paint/BUILD.gn +++ /dev/null
@@ -1,268 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("paint") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "applied_decoration_painter.cc", - "applied_decoration_painter.h", - "background_image_geometry.cc", - "background_image_geometry.h", - "block_flow_paint_invalidator.cc", - "block_flow_paint_invalidator.h", - "block_paint_invalidator.cc", - "block_paint_invalidator.h", - "block_painter.cc", - "block_painter.h", - "box_border_painter.cc", - "box_border_painter.h", - "box_decoration_data.cc", - "box_decoration_data.h", - "box_model_object_painter.cc", - "box_model_object_painter.h", - "box_paint_invalidator.cc", - "box_paint_invalidator.h", - "box_painter.cc", - "box_painter.h", - "box_painter_base.cc", - "box_painter_base.h", - "box_reflection_utils.cc", - "box_reflection_utils.h", - "clip_path_clipper.cc", - "clip_path_clipper.h", - "clip_rect.cc", - "clip_rect.h", - "clip_rects.h", - "clip_rects_cache.h", - "collapsed_border_painter.cc", - "collapsed_border_painter.h", - "compositing/composited_layer_mapping.cc", - "compositing/composited_layer_mapping.h", - "compositing/compositing_inputs_root.cc", - "compositing/compositing_inputs_root.h", - "compositing/compositing_inputs_updater.cc", - "compositing/compositing_inputs_updater.h", - "compositing/compositing_layer_assigner.cc", - "compositing/compositing_layer_assigner.h", - "compositing/compositing_layer_property_updater.cc", - "compositing/compositing_layer_property_updater.h", - "compositing/compositing_reason_finder.cc", - "compositing/compositing_reason_finder.h", - "compositing/compositing_requirements_updater.cc", - "compositing/compositing_requirements_updater.h", - "compositing/compositing_state.h", - "compositing/compositing_update_type.h", - "compositing/graphics_layer_tree_builder.cc", - "compositing/graphics_layer_tree_builder.h", - "compositing/graphics_layer_updater.cc", - "compositing/graphics_layer_updater.h", - "compositing/paint_layer_compositor.cc", - "compositing/paint_layer_compositor.h", - "css_mask_painter.cc", - "css_mask_painter.h", - "custom_scrollbar_theme.cc", - "custom_scrollbar_theme.h", - "details_marker_painter.cc", - "details_marker_painter.h", - "document_marker_painter.cc", - "document_marker_painter.h", - "element_timing_utils.cc", - "element_timing_utils.h", - "ellipsis_box_painter.cc", - "ellipsis_box_painter.h", - "embedded_content_painter.cc", - "embedded_content_painter.h", - "embedded_object_painter.cc", - "embedded_object_painter.h", - "fieldset_paint_info.cc", - "fieldset_paint_info.h", - "fieldset_painter.cc", - "fieldset_painter.h", - "file_upload_control_painter.cc", - "file_upload_control_painter.h", - "filter_effect_builder.cc", - "filter_effect_builder.h", - "find_paint_offset_needing_update.h", - "find_properties_needing_update.h", - "first_meaningful_paint_detector.cc", - "first_meaningful_paint_detector.h", - "fragment_data.cc", - "fragment_data.h", - "frame_paint_timing.h", - "frame_painter.cc", - "frame_painter.h", - "frame_set_painter.cc", - "frame_set_painter.h", - "html_canvas_painter.cc", - "html_canvas_painter.h", - "image_element_timing.cc", - "image_element_timing.h", - "image_paint_timing_detector.cc", - "image_paint_timing_detector.h", - "image_painter.cc", - "image_painter.h", - "inline_box_painter_base.cc", - "inline_box_painter_base.h", - "inline_flow_box_painter.cc", - "inline_flow_box_painter.h", - "inline_painter.cc", - "inline_painter.h", - "inline_text_box_painter.cc", - "inline_text_box_painter.h", - "largest_contentful_paint_calculator.cc", - "largest_contentful_paint_calculator.h", - "line_box_list_painter.cc", - "line_box_list_painter.h", - "link_highlight_impl.cc", - "link_highlight_impl.h", - "list_item_painter.cc", - "list_item_painter.h", - "list_marker_painter.cc", - "list_marker_painter.h", - "multi_column_set_painter.cc", - "multi_column_set_painter.h", - "ng/ng_box_fragment_painter.cc", - "ng/ng_box_fragment_painter.h", - "ng/ng_fieldset_painter.cc", - "ng/ng_fieldset_painter.h", - "ng/ng_fragment_painter.cc", - "ng/ng_fragment_painter.h", - "ng/ng_inline_box_fragment_painter.cc", - "ng/ng_inline_box_fragment_painter.h", - "ng/ng_mathml_painter.cc", - "ng/ng_mathml_painter.h", - "ng/ng_paint_fragment.cc", - "ng/ng_paint_fragment.h", - "ng/ng_paint_fragment_traversal.cc", - "ng/ng_paint_fragment_traversal.h", - "ng/ng_text_fragment_painter.cc", - "ng/ng_text_fragment_painter.h", - "ng/ng_text_painter.cc", - "ng/ng_text_painter.h", - "nine_piece_image_grid.cc", - "nine_piece_image_grid.h", - "nine_piece_image_painter.cc", - "nine_piece_image_painter.h", - "object_paint_invalidator.cc", - "object_paint_invalidator.h", - "object_paint_properties.h", - "object_painter.cc", - "object_painter.h", - "object_painter_base.cc", - "object_painter_base.h", - "paint_event.h", - "paint_info.h", - "paint_invalidator.cc", - "paint_invalidator.h", - "paint_layer.cc", - "paint_layer.h", - "paint_layer_clipper.cc", - "paint_layer_clipper.h", - "paint_layer_fragment.h", - "paint_layer_paint_order_iterator.cc", - "paint_layer_paint_order_iterator.h", - "paint_layer_painter.cc", - "paint_layer_painter.h", - "paint_layer_painting_info.h", - "paint_layer_resource_info.cc", - "paint_layer_resource_info.h", - "paint_layer_scrollable_area.cc", - "paint_layer_scrollable_area.h", - "paint_layer_stacking_node.cc", - "paint_layer_stacking_node.h", - "paint_phase.cc", - "paint_phase.h", - "paint_property_tree_builder.cc", - "paint_property_tree_builder.h", - "paint_property_tree_printer.cc", - "paint_property_tree_printer.h", - "paint_result.h", - "paint_timing.cc", - "paint_timing.h", - "paint_timing_detector.cc", - "paint_timing_detector.h", - "paint_timing_visualizer.cc", - "paint_timing_visualizer.h", - "pre_paint_tree_walk.cc", - "pre_paint_tree_walk.h", - "replaced_painter.cc", - "replaced_painter.h", - "root_inline_box_painter.cc", - "root_inline_box_painter.h", - "rounded_border_geometry.cc", - "rounded_border_geometry.h", - "rounded_inner_rect_clipper.cc", - "rounded_inner_rect_clipper.h", - "scoped_paint_state.cc", - "scoped_paint_state.h", - "scoped_svg_paint_state.cc", - "scoped_svg_paint_state.h", - "scrollable_area_painter.cc", - "scrollable_area_painter.h", - "selection_painting_utils.cc", - "selection_painting_utils.h", - "svg_container_painter.cc", - "svg_container_painter.h", - "svg_foreign_object_painter.cc", - "svg_foreign_object_painter.h", - "svg_image_painter.cc", - "svg_image_painter.h", - "svg_inline_flow_box_painter.cc", - "svg_inline_flow_box_painter.h", - "svg_inline_text_box_painter.cc", - "svg_inline_text_box_painter.h", - "svg_mask_painter.cc", - "svg_mask_painter.h", - "svg_model_object_painter.cc", - "svg_model_object_painter.h", - "svg_object_painter.cc", - "svg_object_painter.h", - "svg_root_inline_box_painter.cc", - "svg_root_inline_box_painter.h", - "svg_root_painter.cc", - "svg_root_painter.h", - "svg_shape_painter.cc", - "svg_shape_painter.h", - "svg_text_painter.cc", - "svg_text_painter.h", - "table_cell_paint_invalidator.cc", - "table_cell_paint_invalidator.h", - "table_cell_painter.cc", - "table_cell_painter.h", - "table_paint_invalidator.cc", - "table_paint_invalidator.h", - "table_painter.cc", - "table_painter.h", - "table_row_painter.cc", - "table_row_painter.h", - "table_section_painter.cc", - "table_section_painter.h", - "text_control_single_line_painter.cc", - "text_control_single_line_painter.h", - "text_decoration_info.cc", - "text_decoration_info.h", - "text_element_timing.cc", - "text_element_timing.h", - "text_paint_style.h", - "text_paint_timing_detector.cc", - "text_paint_timing_detector.h", - "text_painter.cc", - "text_painter.h", - "text_painter_base.cc", - "text_painter_base.h", - "theme_painter.cc", - "theme_painter.h", - "theme_painter_default.cc", - "theme_painter_default.h", - "url_metadata_utils.cc", - "url_metadata_utils.h", - "video_painter.cc", - "video_painter.h", - "view_painter.cc", - "view_painter.h", - ] -}
diff --git a/third_party/blink/renderer/core/paint/build.gni b/third_party/blink/renderer/core/paint/build.gni new file mode 100644 index 0000000..d0ce29bf6 --- /dev/null +++ b/third_party/blink/renderer/core/paint/build.gni
@@ -0,0 +1,262 @@ +# 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. + +blink_core_sources_paint = [ + "applied_decoration_painter.cc", + "applied_decoration_painter.h", + "background_image_geometry.cc", + "background_image_geometry.h", + "block_flow_paint_invalidator.cc", + "block_flow_paint_invalidator.h", + "block_paint_invalidator.cc", + "block_paint_invalidator.h", + "block_painter.cc", + "block_painter.h", + "box_border_painter.cc", + "box_border_painter.h", + "box_decoration_data.cc", + "box_decoration_data.h", + "box_model_object_painter.cc", + "box_model_object_painter.h", + "box_paint_invalidator.cc", + "box_paint_invalidator.h", + "box_painter.cc", + "box_painter.h", + "box_painter_base.cc", + "box_painter_base.h", + "box_reflection_utils.cc", + "box_reflection_utils.h", + "clip_path_clipper.cc", + "clip_path_clipper.h", + "clip_rect.cc", + "clip_rect.h", + "clip_rects.h", + "clip_rects_cache.h", + "collapsed_border_painter.cc", + "collapsed_border_painter.h", + "compositing/composited_layer_mapping.cc", + "compositing/composited_layer_mapping.h", + "compositing/compositing_inputs_root.cc", + "compositing/compositing_inputs_root.h", + "compositing/compositing_inputs_updater.cc", + "compositing/compositing_inputs_updater.h", + "compositing/compositing_layer_assigner.cc", + "compositing/compositing_layer_assigner.h", + "compositing/compositing_layer_property_updater.cc", + "compositing/compositing_layer_property_updater.h", + "compositing/compositing_reason_finder.cc", + "compositing/compositing_reason_finder.h", + "compositing/compositing_requirements_updater.cc", + "compositing/compositing_requirements_updater.h", + "compositing/compositing_state.h", + "compositing/compositing_update_type.h", + "compositing/graphics_layer_tree_builder.cc", + "compositing/graphics_layer_tree_builder.h", + "compositing/graphics_layer_updater.cc", + "compositing/graphics_layer_updater.h", + "compositing/paint_layer_compositor.cc", + "compositing/paint_layer_compositor.h", + "css_mask_painter.cc", + "css_mask_painter.h", + "custom_scrollbar_theme.cc", + "custom_scrollbar_theme.h", + "details_marker_painter.cc", + "details_marker_painter.h", + "document_marker_painter.cc", + "document_marker_painter.h", + "element_timing_utils.cc", + "element_timing_utils.h", + "ellipsis_box_painter.cc", + "ellipsis_box_painter.h", + "embedded_content_painter.cc", + "embedded_content_painter.h", + "embedded_object_painter.cc", + "embedded_object_painter.h", + "fieldset_paint_info.cc", + "fieldset_paint_info.h", + "fieldset_painter.cc", + "fieldset_painter.h", + "file_upload_control_painter.cc", + "file_upload_control_painter.h", + "filter_effect_builder.cc", + "filter_effect_builder.h", + "find_paint_offset_needing_update.h", + "find_properties_needing_update.h", + "first_meaningful_paint_detector.cc", + "first_meaningful_paint_detector.h", + "fragment_data.cc", + "fragment_data.h", + "frame_paint_timing.h", + "frame_painter.cc", + "frame_painter.h", + "frame_set_painter.cc", + "frame_set_painter.h", + "html_canvas_painter.cc", + "html_canvas_painter.h", + "image_element_timing.cc", + "image_element_timing.h", + "image_paint_timing_detector.cc", + "image_paint_timing_detector.h", + "image_painter.cc", + "image_painter.h", + "inline_box_painter_base.cc", + "inline_box_painter_base.h", + "inline_flow_box_painter.cc", + "inline_flow_box_painter.h", + "inline_painter.cc", + "inline_painter.h", + "inline_text_box_painter.cc", + "inline_text_box_painter.h", + "largest_contentful_paint_calculator.cc", + "largest_contentful_paint_calculator.h", + "line_box_list_painter.cc", + "line_box_list_painter.h", + "link_highlight_impl.cc", + "link_highlight_impl.h", + "list_item_painter.cc", + "list_item_painter.h", + "list_marker_painter.cc", + "list_marker_painter.h", + "multi_column_set_painter.cc", + "multi_column_set_painter.h", + "ng/ng_box_fragment_painter.cc", + "ng/ng_box_fragment_painter.h", + "ng/ng_fieldset_painter.cc", + "ng/ng_fieldset_painter.h", + "ng/ng_fragment_painter.cc", + "ng/ng_fragment_painter.h", + "ng/ng_inline_box_fragment_painter.cc", + "ng/ng_inline_box_fragment_painter.h", + "ng/ng_mathml_painter.cc", + "ng/ng_mathml_painter.h", + "ng/ng_paint_fragment.cc", + "ng/ng_paint_fragment.h", + "ng/ng_paint_fragment_traversal.cc", + "ng/ng_paint_fragment_traversal.h", + "ng/ng_text_fragment_painter.cc", + "ng/ng_text_fragment_painter.h", + "ng/ng_text_painter.cc", + "ng/ng_text_painter.h", + "nine_piece_image_grid.cc", + "nine_piece_image_grid.h", + "nine_piece_image_painter.cc", + "nine_piece_image_painter.h", + "object_paint_invalidator.cc", + "object_paint_invalidator.h", + "object_paint_properties.h", + "object_painter.cc", + "object_painter.h", + "object_painter_base.cc", + "object_painter_base.h", + "paint_event.h", + "paint_info.h", + "paint_invalidator.cc", + "paint_invalidator.h", + "paint_layer.cc", + "paint_layer.h", + "paint_layer_clipper.cc", + "paint_layer_clipper.h", + "paint_layer_fragment.h", + "paint_layer_paint_order_iterator.cc", + "paint_layer_paint_order_iterator.h", + "paint_layer_painter.cc", + "paint_layer_painter.h", + "paint_layer_painting_info.h", + "paint_layer_resource_info.cc", + "paint_layer_resource_info.h", + "paint_layer_scrollable_area.cc", + "paint_layer_scrollable_area.h", + "paint_layer_stacking_node.cc", + "paint_layer_stacking_node.h", + "paint_phase.cc", + "paint_phase.h", + "paint_property_tree_builder.cc", + "paint_property_tree_builder.h", + "paint_property_tree_printer.cc", + "paint_property_tree_printer.h", + "paint_result.h", + "paint_timing.cc", + "paint_timing.h", + "paint_timing_detector.cc", + "paint_timing_detector.h", + "paint_timing_visualizer.cc", + "paint_timing_visualizer.h", + "pre_paint_tree_walk.cc", + "pre_paint_tree_walk.h", + "replaced_painter.cc", + "replaced_painter.h", + "root_inline_box_painter.cc", + "root_inline_box_painter.h", + "rounded_border_geometry.cc", + "rounded_border_geometry.h", + "rounded_inner_rect_clipper.cc", + "rounded_inner_rect_clipper.h", + "scoped_paint_state.cc", + "scoped_paint_state.h", + "scoped_svg_paint_state.cc", + "scoped_svg_paint_state.h", + "scrollable_area_painter.cc", + "scrollable_area_painter.h", + "selection_painting_utils.cc", + "selection_painting_utils.h", + "svg_container_painter.cc", + "svg_container_painter.h", + "svg_foreign_object_painter.cc", + "svg_foreign_object_painter.h", + "svg_image_painter.cc", + "svg_image_painter.h", + "svg_inline_flow_box_painter.cc", + "svg_inline_flow_box_painter.h", + "svg_inline_text_box_painter.cc", + "svg_inline_text_box_painter.h", + "svg_mask_painter.cc", + "svg_mask_painter.h", + "svg_model_object_painter.cc", + "svg_model_object_painter.h", + "svg_object_painter.cc", + "svg_object_painter.h", + "svg_root_inline_box_painter.cc", + "svg_root_inline_box_painter.h", + "svg_root_painter.cc", + "svg_root_painter.h", + "svg_shape_painter.cc", + "svg_shape_painter.h", + "svg_text_painter.cc", + "svg_text_painter.h", + "table_cell_paint_invalidator.cc", + "table_cell_paint_invalidator.h", + "table_cell_painter.cc", + "table_cell_painter.h", + "table_paint_invalidator.cc", + "table_paint_invalidator.h", + "table_painter.cc", + "table_painter.h", + "table_row_painter.cc", + "table_row_painter.h", + "table_section_painter.cc", + "table_section_painter.h", + "text_control_single_line_painter.cc", + "text_control_single_line_painter.h", + "text_decoration_info.cc", + "text_decoration_info.h", + "text_element_timing.cc", + "text_element_timing.h", + "text_paint_style.h", + "text_paint_timing_detector.cc", + "text_paint_timing_detector.h", + "text_painter.cc", + "text_painter.h", + "text_painter_base.cc", + "text_painter_base.h", + "theme_painter.cc", + "theme_painter.h", + "theme_painter_default.cc", + "theme_painter_default.h", + "url_metadata_utils.cc", + "url_metadata_utils.h", + "video_painter.cc", + "video_painter.h", + "view_painter.cc", + "view_painter.h", +]
diff --git a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc index c5995d6e..230fad49 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc
@@ -734,7 +734,13 @@ const auto& text_fragment = To<NGPhysicalTextFragment>(PhysicalFragment()); if (text_fragment.IsGeneratedText()) return PositionWithAffinity(); - const unsigned text_offset = text_fragment.TextOffsetForPoint(point); + return PositionForPointInText(text_fragment.TextOffsetForPoint(point)); +} + +PositionWithAffinity NGPaintFragment::PositionForPointInText( + unsigned text_offset) const { + const auto& text_fragment = To<NGPhysicalTextFragment>(PhysicalFragment()); + DCHECK(!text_fragment.IsGeneratedText()); NGInlineCursor cursor; cursor.MoveTo(*this); const NGCaretPosition unadjusted_position{
diff --git a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h index 8ec91084..6d6d083 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h +++ b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h
@@ -217,6 +217,7 @@ // Converts the given point, relative to the fragment itself, into a position // in DOM tree. PositionWithAffinity PositionForPoint(const PhysicalOffset&) const; + PositionWithAffinity PositionForPointInText(unsigned text_offset) const; // A range of fragments for |FragmentsFor()|. class TraverseNextForSameLayoutObject {
diff --git a/third_party/blink/renderer/core/resize_observer/BUILD.gn b/third_party/blink/renderer/core/resize_observer/BUILD.gn deleted file mode 100644 index 442be2c1..0000000 --- a/third_party/blink/renderer/core/resize_observer/BUILD.gn +++ /dev/null
@@ -1,25 +0,0 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("resize_observer") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "resize_observation.cc", - "resize_observation.h", - "resize_observer.cc", - "resize_observer.h", - "resize_observer_box_options.h", - "resize_observer_controller.cc", - "resize_observer_controller.h", - "resize_observer_entry.cc", - "resize_observer_entry.h", - "resize_observer_size.cc", - "resize_observer_size.h", - "resize_observer_utilities.cc", - "resize_observer_utilities.h", - ] -}
diff --git a/third_party/blink/renderer/core/resize_observer/build.gni b/third_party/blink/renderer/core/resize_observer/build.gni new file mode 100644 index 0000000..36436c0 --- /dev/null +++ b/third_party/blink/renderer/core/resize_observer/build.gni
@@ -0,0 +1,19 @@ +# 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. + +blink_core_sources_resize_observer = [ + "resize_observation.cc", + "resize_observation.h", + "resize_observer.cc", + "resize_observer.h", + "resize_observer_box_options.h", + "resize_observer_controller.cc", + "resize_observer_controller.h", + "resize_observer_entry.cc", + "resize_observer_entry.h", + "resize_observer_size.cc", + "resize_observer_size.h", + "resize_observer_utilities.cc", + "resize_observer_utilities.h", +]
diff --git a/third_party/blink/renderer/core/script/BUILD.gn b/third_party/blink/renderer/core/script/BUILD.gn deleted file mode 100644 index bd7842f..0000000 --- a/third_party/blink/renderer/core/script/BUILD.gn +++ /dev/null
@@ -1,74 +0,0 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("script") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "classic_pending_script.cc", - "classic_pending_script.h", - "classic_script.cc", - "classic_script.h", - "detect_javascript_frameworks.cc", - "detect_javascript_frameworks.h", - "document_modulator_impl.cc", - "document_modulator_impl.h", - "document_write_intervention.cc", - "document_write_intervention.h", - "dynamic_module_resolver.cc", - "dynamic_module_resolver.h", - "fetch_client_settings_object_impl.cc", - "fetch_client_settings_object_impl.h", - "html_parser_script_runner.cc", - "html_parser_script_runner.h", - "html_parser_script_runner_host.h", - "ignore_destructive_write_count_incrementer.h", - "import_map.cc", - "import_map.h", - "js_module_script.cc", - "js_module_script.h", - "modulator.cc", - "modulator.h", - "modulator_impl_base.cc", - "modulator_impl_base.h", - "module_import_meta.h", - "module_map.cc", - "module_map.h", - "module_pending_script.cc", - "module_pending_script.h", - "module_record_resolver.h", - "module_record_resolver_impl.cc", - "module_record_resolver_impl.h", - "module_script.cc", - "module_script.h", - "parsed_specifier.cc", - "parsed_specifier.h", - "pending_import_map.cc", - "pending_import_map.h", - "pending_script.cc", - "pending_script.h", - "script.cc", - "script.h", - "script_element_base.cc", - "script_element_base.h", - "script_loader.cc", - "script_loader.h", - "script_runner.cc", - "script_runner.h", - "script_scheduling_type.h", - "value_wrapper_synthetic_module_script.cc", - "value_wrapper_synthetic_module_script.h", - "worker_modulator_impl.cc", - "worker_modulator_impl.h", - "worklet_modulator_impl.cc", - "worklet_modulator_impl.h", - "xml_parser_script_runner.cc", - "xml_parser_script_runner.h", - "xml_parser_script_runner_host.h", - ] - - deps = [ "//third_party/blink/public:resources" ] -}
diff --git a/third_party/blink/renderer/core/script/build.gni b/third_party/blink/renderer/core/script/build.gni new file mode 100644 index 0000000..78e233b --- /dev/null +++ b/third_party/blink/renderer/core/script/build.gni
@@ -0,0 +1,66 @@ +# 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. + +blink_core_sources_script = [ + "classic_pending_script.cc", + "classic_pending_script.h", + "classic_script.cc", + "classic_script.h", + "detect_javascript_frameworks.cc", + "detect_javascript_frameworks.h", + "document_modulator_impl.cc", + "document_modulator_impl.h", + "document_write_intervention.cc", + "document_write_intervention.h", + "dynamic_module_resolver.cc", + "dynamic_module_resolver.h", + "fetch_client_settings_object_impl.cc", + "fetch_client_settings_object_impl.h", + "html_parser_script_runner.cc", + "html_parser_script_runner.h", + "html_parser_script_runner_host.h", + "ignore_destructive_write_count_incrementer.h", + "import_map.cc", + "import_map.h", + "js_module_script.cc", + "js_module_script.h", + "modulator.cc", + "modulator.h", + "modulator_impl_base.cc", + "modulator_impl_base.h", + "module_import_meta.h", + "module_map.cc", + "module_map.h", + "module_pending_script.cc", + "module_pending_script.h", + "module_record_resolver.h", + "module_record_resolver_impl.cc", + "module_record_resolver_impl.h", + "module_script.cc", + "module_script.h", + "parsed_specifier.cc", + "parsed_specifier.h", + "pending_import_map.cc", + "pending_import_map.h", + "pending_script.cc", + "pending_script.h", + "script.cc", + "script.h", + "script_element_base.cc", + "script_element_base.h", + "script_loader.cc", + "script_loader.h", + "script_runner.cc", + "script_runner.h", + "script_scheduling_type.h", + "value_wrapper_synthetic_module_script.cc", + "value_wrapper_synthetic_module_script.h", + "worker_modulator_impl.cc", + "worker_modulator_impl.h", + "worklet_modulator_impl.cc", + "worklet_modulator_impl.h", + "xml_parser_script_runner.cc", + "xml_parser_script_runner.h", + "xml_parser_script_runner_host.h", +]
diff --git a/third_party/blink/renderer/core/scroll/BUILD.gn b/third_party/blink/renderer/core/scroll/BUILD.gn deleted file mode 100644 index 41c4926..0000000 --- a/third_party/blink/renderer/core/scroll/BUILD.gn +++ /dev/null
@@ -1,67 +0,0 @@ -# Copyright 2018 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("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("scroll") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "ns_scroller_imp_details.h", - "programmatic_scroll_animator.cc", - "programmatic_scroll_animator.h", - "scroll_alignment.cc", - "scroll_alignment.h", - "scroll_animator_base.cc", - "scroll_animator_base.h", - "scroll_animator_compositor_coordinator.cc", - "scroll_animator_compositor_coordinator.h", - "scroll_customization.cc", - "scroll_customization.h", - "scroll_state_data.h", - "scroll_types.h", - "scrollable_area.cc", - "scrollable_area.h", - "scrollbar.cc", - "scrollbar.h", - "scrollbar_layer_delegate.cc", - "scrollbar_layer_delegate.h", - "scrollbar_test_suite.h", - "scrollbar_theme.cc", - "scrollbar_theme.h", - "scrollbar_theme_overlay.cc", - "scrollbar_theme_overlay.h", - "scrollbar_theme_overlay_mobile.cc", - "scrollbar_theme_overlay_mobile.h", - "scrollbar_theme_overlay_mock.h", - "smooth_scroll_sequencer.cc", - "smooth_scroll_sequencer.h", - ] - - if (is_android) { - sources += [ "scrollbar_theme_android.cc" ] - } - - if (is_mac) { - sources += [ - "scroll_animator_mac.h", - "scroll_animator_mac.mm", - "scrollbar_theme_mac.h", - "scrollbar_theme_mac.mm", - "web_scrollbar_theme.mm", - ] - } else { - sources += [ - "scroll_animator.cc", - "scroll_animator.h", - ] - } - - if (use_aura) { - sources += [ - "scrollbar_theme_aura.cc", - "scrollbar_theme_aura.h", - ] - } -}
diff --git a/third_party/blink/renderer/core/scroll/build.gni b/third_party/blink/renderer/core/scroll/build.gni new file mode 100644 index 0000000..ca865eb1 --- /dev/null +++ b/third_party/blink/renderer/core/scroll/build.gni
@@ -0,0 +1,63 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//third_party/blink/renderer/core/core.gni") + +blink_core_sources_scroll = [ + "ns_scroller_imp_details.h", + "programmatic_scroll_animator.cc", + "programmatic_scroll_animator.h", + "scroll_alignment.cc", + "scroll_alignment.h", + "scroll_animator_base.cc", + "scroll_animator_base.h", + "scroll_animator_compositor_coordinator.cc", + "scroll_animator_compositor_coordinator.h", + "scroll_customization.cc", + "scroll_customization.h", + "scroll_state_data.h", + "scroll_types.h", + "scrollable_area.cc", + "scrollable_area.h", + "scrollbar.cc", + "scrollbar.h", + "scrollbar_layer_delegate.cc", + "scrollbar_layer_delegate.h", + "scrollbar_test_suite.h", + "scrollbar_theme.cc", + "scrollbar_theme.h", + "scrollbar_theme_overlay.cc", + "scrollbar_theme_overlay.h", + "scrollbar_theme_overlay_mobile.cc", + "scrollbar_theme_overlay_mobile.h", + "scrollbar_theme_overlay_mock.h", + "smooth_scroll_sequencer.cc", + "smooth_scroll_sequencer.h", +] + +if (is_android) { + blink_core_sources_scroll += [ "scrollbar_theme_android.cc" ] +} + +if (is_mac) { + blink_core_sources_scroll += [ + "scroll_animator_mac.h", + "scroll_animator_mac.mm", + "scrollbar_theme_mac.h", + "scrollbar_theme_mac.mm", + "web_scrollbar_theme.mm", + ] +} else { + blink_core_sources_scroll += [ + "scroll_animator.cc", + "scroll_animator.h", + ] +} + +if (use_aura) { + blink_core_sources_scroll += [ + "scrollbar_theme_aura.cc", + "scrollbar_theme_aura.h", + ] +}
diff --git a/third_party/blink/renderer/core/streams/BUILD.gn b/third_party/blink/renderer/core/streams/BUILD.gn deleted file mode 100644 index ec1b6166..0000000 --- a/third_party/blink/renderer/core/streams/BUILD.gn +++ /dev/null
@@ -1,53 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("streams") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "byte_length_queuing_strategy.cc", - "byte_length_queuing_strategy.h", - "count_queuing_strategy.cc", - "count_queuing_strategy.h", - "miscellaneous_operations.cc", - "miscellaneous_operations.h", - "promise_handler.cc", - "promise_handler.h", - "queue_with_sizes.cc", - "queue_with_sizes.h", - "queuing_strategy_common.cc", - "queuing_strategy_common.h", - "readable_stream.cc", - "readable_stream.h", - "readable_stream_default_controller.cc", - "readable_stream_default_controller.h", - "readable_stream_default_controller_with_script_scope.cc", - "readable_stream_default_controller_with_script_scope.h", - "readable_stream_default_reader.h", - "readable_stream_reader.cc", - "readable_stream_reader.h", - "stream_algorithms.h", - "stream_promise_resolver.cc", - "stream_promise_resolver.h", - "transferable_streams.cc", - "transferable_streams.h", - "transform_stream.cc", - "transform_stream.h", - "transform_stream_default_controller.cc", - "transform_stream_default_controller.h", - "transform_stream_default_controller_interface.h", - "transform_stream_transformer.h", - "underlying_sink_base.h", - "underlying_source_base.cc", - "underlying_source_base.h", - "writable_stream.cc", - "writable_stream.h", - "writable_stream_default_controller.cc", - "writable_stream_default_controller.h", - "writable_stream_default_writer.cc", - "writable_stream_default_writer.h", - ] -}
diff --git a/third_party/blink/renderer/core/streams/build.gni b/third_party/blink/renderer/core/streams/build.gni new file mode 100644 index 0000000..217f70c --- /dev/null +++ b/third_party/blink/renderer/core/streams/build.gni
@@ -0,0 +1,47 @@ +# 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. + +blink_core_sources_streams = [ + "byte_length_queuing_strategy.cc", + "byte_length_queuing_strategy.h", + "count_queuing_strategy.cc", + "count_queuing_strategy.h", + "miscellaneous_operations.cc", + "miscellaneous_operations.h", + "promise_handler.cc", + "promise_handler.h", + "queue_with_sizes.cc", + "queue_with_sizes.h", + "queuing_strategy_common.cc", + "queuing_strategy_common.h", + "readable_stream.cc", + "readable_stream.h", + "readable_stream_default_controller.cc", + "readable_stream_default_controller.h", + "readable_stream_default_controller_with_script_scope.cc", + "readable_stream_default_controller_with_script_scope.h", + "readable_stream_default_reader.h", + "readable_stream_reader.cc", + "readable_stream_reader.h", + "stream_algorithms.h", + "stream_promise_resolver.cc", + "stream_promise_resolver.h", + "transferable_streams.cc", + "transferable_streams.h", + "transform_stream.cc", + "transform_stream.h", + "transform_stream_default_controller.cc", + "transform_stream_default_controller.h", + "transform_stream_default_controller_interface.h", + "transform_stream_transformer.h", + "underlying_sink_base.h", + "underlying_source_base.cc", + "underlying_source_base.h", + "writable_stream.cc", + "writable_stream.h", + "writable_stream_default_controller.cc", + "writable_stream_default_controller.h", + "writable_stream_default_writer.cc", + "writable_stream_default_writer.h", +]
diff --git a/third_party/blink/renderer/core/style/BUILD.gn b/third_party/blink/renderer/core/style/BUILD.gn deleted file mode 100644 index 0c6fd26..0000000 --- a/third_party/blink/renderer/core/style/BUILD.gn +++ /dev/null
@@ -1,128 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("rendering") { - configs += [ "//build/config/compiler:noshadowing" ] - - visibility = [ "//third_party/blink/renderer/core/*" ] - - sources = [ - "applied_text_decoration.cc", - "applied_text_decoration.h", - "applied_text_decoration_list.h", - "basic_shapes.cc", - "basic_shapes.h", - "border_edge.cc", - "border_edge.h", - "border_image_length.h", - "border_image_length_box.h", - "border_style.h", - "border_value.h", - "clip_path_operation.h", - "computed_style.cc", - "computed_style.h", - "computed_style_constants.h", - "content_data.cc", - "content_data.h", - "counter_content.h", - "counter_directives.cc", - "counter_directives.h", - "cursor_data.h", - "cursor_list.h", - "data_equivalency.h", - "data_ref.h", - "fill_layer.cc", - "fill_layer.h", - "filter_operation.cc", - "filter_operation.h", - "filter_operations.cc", - "filter_operations.h", - "grid_area.h", - "grid_length.h", - "grid_position.h", - "grid_positions_resolver.cc", - "grid_positions_resolver.h", - "grid_track_list.cc", - "grid_track_list.h", - "grid_track_size.h", - "member_copy.h", - "named_grid_lines_map.h", - "nine_piece_image.cc", - "nine_piece_image.h", - "ordered_named_grid_lines.h", - "paint_images.h", - "quad_length_value.h", - "quotes_data.cc", - "quotes_data.h", - "reference_clip_path_operation.cc", - "reference_clip_path_operation.h", - "shadow_data.cc", - "shadow_data.h", - "shadow_list.cc", - "shadow_list.h", - "shape_clip_path_operation.h", - "shape_value.h", - "style_aspect_ratio.h", - "style_content_alignment_data.h", - "style_difference.cc", - "style_difference.h", - "style_fetched_image.cc", - "style_fetched_image.h", - "style_fetched_image_set.cc", - "style_fetched_image_set.h", - "style_filter_data.cc", - "style_filter_data.h", - "style_generated_image.cc", - "style_generated_image.h", - "style_image.cc", - "style_image.h", - "style_inherited_variables.cc", - "style_inherited_variables.h", - "style_initial_data.cc", - "style_initial_data.h", - "style_name.h", - "style_name_or_keyword.h", - "style_non_inherited_variables.h", - "style_offset_rotation.h", - "style_path.cc", - "style_path.h", - "style_pending_image.cc", - "style_pending_image.h", - "style_ray.cc", - "style_ray.h", - "style_reflection.h", - "style_self_alignment_data.h", - "style_variables.cc", - "style_variables.h", - "text_decoration_thickness.cc", - "text_decoration_thickness.h", - "text_size_adjust.h", - ] -} - -blink_core_sources("svg_style") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "svg_computed_style.cc", - "svg_computed_style.h", - "svg_computed_style_defs.cc", - "svg_computed_style_defs.h", - ] -} - -blink_core_tests("unit_tests") { - sources = [ - "border_value_test.cc", - "computed_style_test.cc", - "filter_operations_test.cc", - "style_difference_test.cc", - "style_name_or_keyword_test.cc", - "style_name_test.cc", - "style_variables_test.cc", - "svg_computed_style_test.cc", - ] -}
diff --git a/third_party/blink/renderer/core/style/build.gni b/third_party/blink/renderer/core/style/build.gni new file mode 100644 index 0000000..846e6ee --- /dev/null +++ b/third_party/blink/renderer/core/style/build.gni
@@ -0,0 +1,111 @@ +# 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. + +blink_core_sources_style = [ + "applied_text_decoration.cc", + "applied_text_decoration.h", + "applied_text_decoration_list.h", + "basic_shapes.cc", + "basic_shapes.h", + "border_edge.cc", + "border_edge.h", + "border_image_length.h", + "border_image_length_box.h", + "border_style.h", + "border_value.h", + "clip_path_operation.h", + "computed_style.cc", + "computed_style.h", + "computed_style_constants.h", + "content_data.cc", + "content_data.h", + "counter_content.h", + "counter_directives.cc", + "counter_directives.h", + "cursor_data.h", + "cursor_list.h", + "data_equivalency.h", + "data_ref.h", + "fill_layer.cc", + "fill_layer.h", + "filter_operation.cc", + "filter_operation.h", + "filter_operations.cc", + "filter_operations.h", + "grid_area.h", + "grid_length.h", + "grid_position.h", + "grid_positions_resolver.cc", + "grid_positions_resolver.h", + "grid_track_list.cc", + "grid_track_list.h", + "grid_track_size.h", + "member_copy.h", + "named_grid_lines_map.h", + "nine_piece_image.cc", + "nine_piece_image.h", + "ordered_named_grid_lines.h", + "paint_images.h", + "quad_length_value.h", + "quotes_data.cc", + "quotes_data.h", + "reference_clip_path_operation.cc", + "reference_clip_path_operation.h", + "shadow_data.cc", + "shadow_data.h", + "shadow_list.cc", + "shadow_list.h", + "shape_clip_path_operation.h", + "shape_value.h", + "style_aspect_ratio.h", + "style_content_alignment_data.h", + "style_difference.cc", + "style_difference.h", + "style_fetched_image.cc", + "style_fetched_image.h", + "style_fetched_image_set.cc", + "style_fetched_image_set.h", + "style_filter_data.cc", + "style_filter_data.h", + "style_generated_image.cc", + "style_generated_image.h", + "style_image.cc", + "style_image.h", + "style_inherited_variables.cc", + "style_inherited_variables.h", + "style_initial_data.cc", + "style_initial_data.h", + "style_name.h", + "style_name_or_keyword.h", + "style_non_inherited_variables.h", + "style_offset_rotation.h", + "style_path.cc", + "style_path.h", + "style_pending_image.cc", + "style_pending_image.h", + "style_ray.cc", + "style_ray.h", + "style_reflection.h", + "style_self_alignment_data.h", + "style_variables.cc", + "style_variables.h", + "svg_computed_style.cc", + "svg_computed_style.h", + "svg_computed_style_defs.cc", + "svg_computed_style_defs.h", + "text_decoration_thickness.cc", + "text_decoration_thickness.h", + "text_size_adjust.h", +] + +blink_core_tests_style = [ + "border_value_test.cc", + "computed_style_test.cc", + "filter_operations_test.cc", + "style_difference_test.cc", + "style_name_or_keyword_test.cc", + "style_name_test.cc", + "style_variables_test.cc", + "svg_computed_style_test.cc", +]
diff --git a/third_party/blink/renderer/core/svg/BUILD.gn b/third_party/blink/renderer/core/svg/BUILD.gn deleted file mode 100644 index bd21241..0000000 --- a/third_party/blink/renderer/core/svg/BUILD.gn +++ /dev/null
@@ -1,351 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("svg") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "animation/element_smil_animations.cc", - "animation/element_smil_animations.h", - "animation/priority_queue.h", - "animation/smil_animation_effect_parameters.h", - "animation/smil_animation_sandwich.cc", - "animation/smil_animation_sandwich.h", - "animation/smil_repeat_count.h", - "animation/smil_time.cc", - "animation/smil_time.h", - "animation/smil_time_container.cc", - "animation/smil_time_container.h", - "animation/svg_smil_element.cc", - "animation/svg_smil_element.h", - "color_distance.cc", - "color_distance.h", - "gradient_attributes.h", - "graphics/filters/svg_fe_image.cc", - "graphics/filters/svg_fe_image.h", - "graphics/filters/svg_filter_builder.cc", - "graphics/filters/svg_filter_builder.h", - "graphics/svg_image.cc", - "graphics/svg_image.h", - "graphics/svg_image_chrome_client.cc", - "graphics/svg_image_chrome_client.h", - "graphics/svg_image_for_container.cc", - "graphics/svg_image_for_container.h", - "linear_gradient_attributes.h", - "pattern_attributes.h", - "properties/svg_animated_property.cc", - "properties/svg_animated_property.h", - "properties/svg_list_property.cc", - "properties/svg_list_property.h", - "properties/svg_list_property_helper.h", - "properties/svg_list_property_tear_off_helper.h", - "properties/svg_property.h", - "properties/svg_property_helper.h", - "properties/svg_property_info.h", - "properties/svg_property_tear_off.cc", - "properties/svg_property_tear_off.h", - "radial_gradient_attributes.h", - "svg_a_element.cc", - "svg_a_element.h", - "svg_angle.cc", - "svg_angle.h", - "svg_angle_tear_off.cc", - "svg_angle_tear_off.h", - "svg_animate_element.cc", - "svg_animate_element.h", - "svg_animate_motion_element.cc", - "svg_animate_motion_element.h", - "svg_animate_transform_element.cc", - "svg_animate_transform_element.h", - "svg_animated_angle.cc", - "svg_animated_angle.h", - "svg_animated_boolean.h", - "svg_animated_color.cc", - "svg_animated_color.h", - "svg_animated_enumeration.h", - "svg_animated_enumeration_base.cc", - "svg_animated_enumeration_base.h", - "svg_animated_href.cc", - "svg_animated_href.h", - "svg_animated_integer.cc", - "svg_animated_integer.h", - "svg_animated_integer_optional_integer.cc", - "svg_animated_integer_optional_integer.h", - "svg_animated_length.cc", - "svg_animated_length.h", - "svg_animated_length_list.h", - "svg_animated_number.cc", - "svg_animated_number.h", - "svg_animated_number_list.h", - "svg_animated_number_optional_number.cc", - "svg_animated_number_optional_number.h", - "svg_animated_path.cc", - "svg_animated_path.h", - "svg_animated_point_list.h", - "svg_animated_preserve_aspect_ratio.h", - "svg_animated_rect.h", - "svg_animated_string.cc", - "svg_animated_string.h", - "svg_animated_transform_list.h", - "svg_animation_element.cc", - "svg_animation_element.h", - "svg_boolean.cc", - "svg_boolean.h", - "svg_circle_element.cc", - "svg_circle_element.h", - "svg_clip_path_element.cc", - "svg_clip_path_element.h", - "svg_component_transfer_function_element.cc", - "svg_component_transfer_function_element.h", - "svg_defs_element.cc", - "svg_defs_element.h", - "svg_desc_element.cc", - "svg_desc_element.h", - "svg_document_extensions.cc", - "svg_document_extensions.h", - "svg_element.cc", - "svg_element.h", - "svg_element_rare_data.cc", - "svg_element_rare_data.h", - "svg_ellipse_element.cc", - "svg_ellipse_element.h", - "svg_enumeration.cc", - "svg_enumeration.h", - "svg_enumeration_map.cc", - "svg_enumeration_map.h", - "svg_external_document_cache.cc", - "svg_external_document_cache.h", - "svg_fe_blend_element.cc", - "svg_fe_blend_element.h", - "svg_fe_color_matrix_element.cc", - "svg_fe_color_matrix_element.h", - "svg_fe_component_transfer_element.cc", - "svg_fe_component_transfer_element.h", - "svg_fe_composite_element.cc", - "svg_fe_composite_element.h", - "svg_fe_convolve_matrix_element.cc", - "svg_fe_convolve_matrix_element.h", - "svg_fe_diffuse_lighting_element.cc", - "svg_fe_diffuse_lighting_element.h", - "svg_fe_displacement_map_element.cc", - "svg_fe_displacement_map_element.h", - "svg_fe_distant_light_element.cc", - "svg_fe_distant_light_element.h", - "svg_fe_drop_shadow_element.cc", - "svg_fe_drop_shadow_element.h", - "svg_fe_flood_element.cc", - "svg_fe_flood_element.h", - "svg_fe_func_a_element.cc", - "svg_fe_func_a_element.h", - "svg_fe_func_b_element.cc", - "svg_fe_func_b_element.h", - "svg_fe_func_g_element.cc", - "svg_fe_func_g_element.h", - "svg_fe_func_r_element.cc", - "svg_fe_func_r_element.h", - "svg_fe_gaussian_blur_element.cc", - "svg_fe_gaussian_blur_element.h", - "svg_fe_image_element.cc", - "svg_fe_image_element.h", - "svg_fe_light_element.cc", - "svg_fe_light_element.h", - "svg_fe_merge_element.cc", - "svg_fe_merge_element.h", - "svg_fe_merge_node_element.cc", - "svg_fe_merge_node_element.h", - "svg_fe_morphology_element.cc", - "svg_fe_morphology_element.h", - "svg_fe_offset_element.cc", - "svg_fe_offset_element.h", - "svg_fe_point_light_element.cc", - "svg_fe_point_light_element.h", - "svg_fe_specular_lighting_element.cc", - "svg_fe_specular_lighting_element.h", - "svg_fe_spot_light_element.cc", - "svg_fe_spot_light_element.h", - "svg_fe_tile_element.cc", - "svg_fe_tile_element.h", - "svg_fe_turbulence_element.cc", - "svg_fe_turbulence_element.h", - "svg_filter_element.cc", - "svg_filter_element.h", - "svg_filter_primitive_standard_attributes.cc", - "svg_filter_primitive_standard_attributes.h", - "svg_fit_to_view_box.cc", - "svg_fit_to_view_box.h", - "svg_foreign_object_element.cc", - "svg_foreign_object_element.h", - "svg_g_element.cc", - "svg_g_element.h", - "svg_geometry_element.cc", - "svg_geometry_element.h", - "svg_gradient_element.cc", - "svg_gradient_element.h", - "svg_graphics_element.cc", - "svg_graphics_element.h", - "svg_image_element.cc", - "svg_image_element.h", - "svg_image_loader.cc", - "svg_image_loader.h", - "svg_integer.cc", - "svg_integer.h", - "svg_integer_optional_integer.cc", - "svg_integer_optional_integer.h", - "svg_length.cc", - "svg_length.h", - "svg_length_context.cc", - "svg_length_context.h", - "svg_length_list.cc", - "svg_length_list.h", - "svg_length_list_tear_off.h", - "svg_length_tear_off.cc", - "svg_length_tear_off.h", - "svg_line_element.cc", - "svg_line_element.h", - "svg_linear_gradient_element.cc", - "svg_linear_gradient_element.h", - "svg_marker_element.cc", - "svg_marker_element.h", - "svg_mask_element.cc", - "svg_mask_element.h", - "svg_matrix_tear_off.cc", - "svg_matrix_tear_off.h", - "svg_metadata_element.cc", - "svg_metadata_element.h", - "svg_mpath_element.cc", - "svg_mpath_element.h", - "svg_number.cc", - "svg_number.h", - "svg_number_list.cc", - "svg_number_list.h", - "svg_number_list_tear_off.h", - "svg_number_optional_number.cc", - "svg_number_optional_number.h", - "svg_number_tear_off.cc", - "svg_number_tear_off.h", - "svg_parser_utilities.cc", - "svg_parser_utilities.h", - "svg_parsing_error.cc", - "svg_parsing_error.h", - "svg_path.cc", - "svg_path.h", - "svg_path_blender.cc", - "svg_path_blender.h", - "svg_path_builder.cc", - "svg_path_builder.h", - "svg_path_byte_stream.h", - "svg_path_byte_stream_builder.cc", - "svg_path_byte_stream_builder.h", - "svg_path_byte_stream_source.cc", - "svg_path_byte_stream_source.h", - "svg_path_consumer.h", - "svg_path_data.h", - "svg_path_element.cc", - "svg_path_element.h", - "svg_path_parser.cc", - "svg_path_parser.h", - "svg_path_query.cc", - "svg_path_query.h", - "svg_path_string_builder.cc", - "svg_path_string_builder.h", - "svg_path_string_source.cc", - "svg_path_string_source.h", - "svg_path_utilities.cc", - "svg_path_utilities.h", - "svg_pattern_element.cc", - "svg_pattern_element.h", - "svg_point.cc", - "svg_point.h", - "svg_point_list.cc", - "svg_point_list.h", - "svg_point_list_tear_off.h", - "svg_point_tear_off.cc", - "svg_point_tear_off.h", - "svg_poly_element.cc", - "svg_poly_element.h", - "svg_polygon_element.cc", - "svg_polygon_element.h", - "svg_polyline_element.cc", - "svg_polyline_element.h", - "svg_preserve_aspect_ratio.cc", - "svg_preserve_aspect_ratio.h", - "svg_preserve_aspect_ratio_tear_off.cc", - "svg_preserve_aspect_ratio_tear_off.h", - "svg_radial_gradient_element.cc", - "svg_radial_gradient_element.h", - "svg_rect.cc", - "svg_rect.h", - "svg_rect_element.cc", - "svg_rect_element.h", - "svg_rect_tear_off.cc", - "svg_rect_tear_off.h", - "svg_resource.cc", - "svg_resource.h", - "svg_resource_client.h", - "svg_script_element.cc", - "svg_script_element.h", - "svg_set_element.cc", - "svg_set_element.h", - "svg_static_string_list.cc", - "svg_static_string_list.h", - "svg_stop_element.cc", - "svg_stop_element.h", - "svg_string.cc", - "svg_string.h", - "svg_string_list.cc", - "svg_string_list.h", - "svg_string_list_tear_off.cc", - "svg_string_list_tear_off.h", - "svg_style_element.cc", - "svg_style_element.h", - "svg_svg_element.cc", - "svg_svg_element.h", - "svg_switch_element.cc", - "svg_switch_element.h", - "svg_symbol_element.cc", - "svg_symbol_element.h", - "svg_tests.cc", - "svg_tests.h", - "svg_text_content_element.cc", - "svg_text_content_element.h", - "svg_text_element.cc", - "svg_text_element.h", - "svg_text_path_element.cc", - "svg_text_path_element.h", - "svg_text_positioning_element.cc", - "svg_text_positioning_element.h", - "svg_title_element.cc", - "svg_title_element.h", - "svg_transform.cc", - "svg_transform.h", - "svg_transform_distance.cc", - "svg_transform_distance.h", - "svg_transform_list.cc", - "svg_transform_list.h", - "svg_transform_list_tear_off.cc", - "svg_transform_list_tear_off.h", - "svg_transform_tear_off.cc", - "svg_transform_tear_off.h", - "svg_tree_scope_resources.cc", - "svg_tree_scope_resources.h", - "svg_tspan_element.cc", - "svg_tspan_element.h", - "svg_unit_types.cc", - "svg_unit_types.h", - "svg_unknown_element.cc", - "svg_unknown_element.h", - "svg_uri_reference.cc", - "svg_uri_reference.h", - "svg_use_element.cc", - "svg_use_element.h", - "svg_view_element.cc", - "svg_view_element.h", - "svg_view_spec.cc", - "svg_view_spec.h", - "svg_zoom_and_pan.cc", - "svg_zoom_and_pan.h", - ] -}
diff --git a/third_party/blink/renderer/core/svg/build.gni b/third_party/blink/renderer/core/svg/build.gni new file mode 100644 index 0000000..fef0fc5 --- /dev/null +++ b/third_party/blink/renderer/core/svg/build.gni
@@ -0,0 +1,345 @@ +# 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. + +blink_core_sources_svg = [ + "animation/element_smil_animations.cc", + "animation/element_smil_animations.h", + "animation/priority_queue.h", + "animation/smil_animation_effect_parameters.h", + "animation/smil_animation_sandwich.cc", + "animation/smil_animation_sandwich.h", + "animation/smil_repeat_count.h", + "animation/smil_time.cc", + "animation/smil_time.h", + "animation/smil_time_container.cc", + "animation/smil_time_container.h", + "animation/svg_smil_element.cc", + "animation/svg_smil_element.h", + "color_distance.cc", + "color_distance.h", + "gradient_attributes.h", + "graphics/filters/svg_fe_image.cc", + "graphics/filters/svg_fe_image.h", + "graphics/filters/svg_filter_builder.cc", + "graphics/filters/svg_filter_builder.h", + "graphics/svg_image.cc", + "graphics/svg_image.h", + "graphics/svg_image_chrome_client.cc", + "graphics/svg_image_chrome_client.h", + "graphics/svg_image_for_container.cc", + "graphics/svg_image_for_container.h", + "linear_gradient_attributes.h", + "pattern_attributes.h", + "properties/svg_animated_property.cc", + "properties/svg_animated_property.h", + "properties/svg_list_property.cc", + "properties/svg_list_property.h", + "properties/svg_list_property_helper.h", + "properties/svg_list_property_tear_off_helper.h", + "properties/svg_property.h", + "properties/svg_property_helper.h", + "properties/svg_property_info.h", + "properties/svg_property_tear_off.cc", + "properties/svg_property_tear_off.h", + "radial_gradient_attributes.h", + "svg_a_element.cc", + "svg_a_element.h", + "svg_angle.cc", + "svg_angle.h", + "svg_angle_tear_off.cc", + "svg_angle_tear_off.h", + "svg_animate_element.cc", + "svg_animate_element.h", + "svg_animate_motion_element.cc", + "svg_animate_motion_element.h", + "svg_animate_transform_element.cc", + "svg_animate_transform_element.h", + "svg_animated_angle.cc", + "svg_animated_angle.h", + "svg_animated_boolean.h", + "svg_animated_color.cc", + "svg_animated_color.h", + "svg_animated_enumeration.h", + "svg_animated_enumeration_base.cc", + "svg_animated_enumeration_base.h", + "svg_animated_href.cc", + "svg_animated_href.h", + "svg_animated_integer.cc", + "svg_animated_integer.h", + "svg_animated_integer_optional_integer.cc", + "svg_animated_integer_optional_integer.h", + "svg_animated_length.cc", + "svg_animated_length.h", + "svg_animated_length_list.h", + "svg_animated_number.cc", + "svg_animated_number.h", + "svg_animated_number_list.h", + "svg_animated_number_optional_number.cc", + "svg_animated_number_optional_number.h", + "svg_animated_path.cc", + "svg_animated_path.h", + "svg_animated_point_list.h", + "svg_animated_preserve_aspect_ratio.h", + "svg_animated_rect.h", + "svg_animated_string.cc", + "svg_animated_string.h", + "svg_animated_transform_list.h", + "svg_animation_element.cc", + "svg_animation_element.h", + "svg_boolean.cc", + "svg_boolean.h", + "svg_circle_element.cc", + "svg_circle_element.h", + "svg_clip_path_element.cc", + "svg_clip_path_element.h", + "svg_component_transfer_function_element.cc", + "svg_component_transfer_function_element.h", + "svg_defs_element.cc", + "svg_defs_element.h", + "svg_desc_element.cc", + "svg_desc_element.h", + "svg_document_extensions.cc", + "svg_document_extensions.h", + "svg_element.cc", + "svg_element.h", + "svg_element_rare_data.cc", + "svg_element_rare_data.h", + "svg_ellipse_element.cc", + "svg_ellipse_element.h", + "svg_enumeration.cc", + "svg_enumeration.h", + "svg_enumeration_map.cc", + "svg_enumeration_map.h", + "svg_external_document_cache.cc", + "svg_external_document_cache.h", + "svg_fe_blend_element.cc", + "svg_fe_blend_element.h", + "svg_fe_color_matrix_element.cc", + "svg_fe_color_matrix_element.h", + "svg_fe_component_transfer_element.cc", + "svg_fe_component_transfer_element.h", + "svg_fe_composite_element.cc", + "svg_fe_composite_element.h", + "svg_fe_convolve_matrix_element.cc", + "svg_fe_convolve_matrix_element.h", + "svg_fe_diffuse_lighting_element.cc", + "svg_fe_diffuse_lighting_element.h", + "svg_fe_displacement_map_element.cc", + "svg_fe_displacement_map_element.h", + "svg_fe_distant_light_element.cc", + "svg_fe_distant_light_element.h", + "svg_fe_drop_shadow_element.cc", + "svg_fe_drop_shadow_element.h", + "svg_fe_flood_element.cc", + "svg_fe_flood_element.h", + "svg_fe_func_a_element.cc", + "svg_fe_func_a_element.h", + "svg_fe_func_b_element.cc", + "svg_fe_func_b_element.h", + "svg_fe_func_g_element.cc", + "svg_fe_func_g_element.h", + "svg_fe_func_r_element.cc", + "svg_fe_func_r_element.h", + "svg_fe_gaussian_blur_element.cc", + "svg_fe_gaussian_blur_element.h", + "svg_fe_image_element.cc", + "svg_fe_image_element.h", + "svg_fe_light_element.cc", + "svg_fe_light_element.h", + "svg_fe_merge_element.cc", + "svg_fe_merge_element.h", + "svg_fe_merge_node_element.cc", + "svg_fe_merge_node_element.h", + "svg_fe_morphology_element.cc", + "svg_fe_morphology_element.h", + "svg_fe_offset_element.cc", + "svg_fe_offset_element.h", + "svg_fe_point_light_element.cc", + "svg_fe_point_light_element.h", + "svg_fe_specular_lighting_element.cc", + "svg_fe_specular_lighting_element.h", + "svg_fe_spot_light_element.cc", + "svg_fe_spot_light_element.h", + "svg_fe_tile_element.cc", + "svg_fe_tile_element.h", + "svg_fe_turbulence_element.cc", + "svg_fe_turbulence_element.h", + "svg_filter_element.cc", + "svg_filter_element.h", + "svg_filter_primitive_standard_attributes.cc", + "svg_filter_primitive_standard_attributes.h", + "svg_fit_to_view_box.cc", + "svg_fit_to_view_box.h", + "svg_foreign_object_element.cc", + "svg_foreign_object_element.h", + "svg_g_element.cc", + "svg_g_element.h", + "svg_geometry_element.cc", + "svg_geometry_element.h", + "svg_gradient_element.cc", + "svg_gradient_element.h", + "svg_graphics_element.cc", + "svg_graphics_element.h", + "svg_image_element.cc", + "svg_image_element.h", + "svg_image_loader.cc", + "svg_image_loader.h", + "svg_integer.cc", + "svg_integer.h", + "svg_integer_optional_integer.cc", + "svg_integer_optional_integer.h", + "svg_length.cc", + "svg_length.h", + "svg_length_context.cc", + "svg_length_context.h", + "svg_length_list.cc", + "svg_length_list.h", + "svg_length_list_tear_off.h", + "svg_length_tear_off.cc", + "svg_length_tear_off.h", + "svg_line_element.cc", + "svg_line_element.h", + "svg_linear_gradient_element.cc", + "svg_linear_gradient_element.h", + "svg_marker_element.cc", + "svg_marker_element.h", + "svg_mask_element.cc", + "svg_mask_element.h", + "svg_matrix_tear_off.cc", + "svg_matrix_tear_off.h", + "svg_metadata_element.cc", + "svg_metadata_element.h", + "svg_mpath_element.cc", + "svg_mpath_element.h", + "svg_number.cc", + "svg_number.h", + "svg_number_list.cc", + "svg_number_list.h", + "svg_number_list_tear_off.h", + "svg_number_optional_number.cc", + "svg_number_optional_number.h", + "svg_number_tear_off.cc", + "svg_number_tear_off.h", + "svg_parser_utilities.cc", + "svg_parser_utilities.h", + "svg_parsing_error.cc", + "svg_parsing_error.h", + "svg_path.cc", + "svg_path.h", + "svg_path_blender.cc", + "svg_path_blender.h", + "svg_path_builder.cc", + "svg_path_builder.h", + "svg_path_byte_stream.h", + "svg_path_byte_stream_builder.cc", + "svg_path_byte_stream_builder.h", + "svg_path_byte_stream_source.cc", + "svg_path_byte_stream_source.h", + "svg_path_consumer.h", + "svg_path_data.h", + "svg_path_element.cc", + "svg_path_element.h", + "svg_path_parser.cc", + "svg_path_parser.h", + "svg_path_query.cc", + "svg_path_query.h", + "svg_path_string_builder.cc", + "svg_path_string_builder.h", + "svg_path_string_source.cc", + "svg_path_string_source.h", + "svg_path_utilities.cc", + "svg_path_utilities.h", + "svg_pattern_element.cc", + "svg_pattern_element.h", + "svg_point.cc", + "svg_point.h", + "svg_point_list.cc", + "svg_point_list.h", + "svg_point_list_tear_off.h", + "svg_point_tear_off.cc", + "svg_point_tear_off.h", + "svg_poly_element.cc", + "svg_poly_element.h", + "svg_polygon_element.cc", + "svg_polygon_element.h", + "svg_polyline_element.cc", + "svg_polyline_element.h", + "svg_preserve_aspect_ratio.cc", + "svg_preserve_aspect_ratio.h", + "svg_preserve_aspect_ratio_tear_off.cc", + "svg_preserve_aspect_ratio_tear_off.h", + "svg_radial_gradient_element.cc", + "svg_radial_gradient_element.h", + "svg_rect.cc", + "svg_rect.h", + "svg_rect_element.cc", + "svg_rect_element.h", + "svg_rect_tear_off.cc", + "svg_rect_tear_off.h", + "svg_resource.cc", + "svg_resource.h", + "svg_resource_client.h", + "svg_script_element.cc", + "svg_script_element.h", + "svg_set_element.cc", + "svg_set_element.h", + "svg_static_string_list.cc", + "svg_static_string_list.h", + "svg_stop_element.cc", + "svg_stop_element.h", + "svg_string.cc", + "svg_string.h", + "svg_string_list.cc", + "svg_string_list.h", + "svg_string_list_tear_off.cc", + "svg_string_list_tear_off.h", + "svg_style_element.cc", + "svg_style_element.h", + "svg_svg_element.cc", + "svg_svg_element.h", + "svg_switch_element.cc", + "svg_switch_element.h", + "svg_symbol_element.cc", + "svg_symbol_element.h", + "svg_tests.cc", + "svg_tests.h", + "svg_text_content_element.cc", + "svg_text_content_element.h", + "svg_text_element.cc", + "svg_text_element.h", + "svg_text_path_element.cc", + "svg_text_path_element.h", + "svg_text_positioning_element.cc", + "svg_text_positioning_element.h", + "svg_title_element.cc", + "svg_title_element.h", + "svg_transform.cc", + "svg_transform.h", + "svg_transform_distance.cc", + "svg_transform_distance.h", + "svg_transform_list.cc", + "svg_transform_list.h", + "svg_transform_list_tear_off.cc", + "svg_transform_list_tear_off.h", + "svg_transform_tear_off.cc", + "svg_transform_tear_off.h", + "svg_tree_scope_resources.cc", + "svg_tree_scope_resources.h", + "svg_tspan_element.cc", + "svg_tspan_element.h", + "svg_unit_types.cc", + "svg_unit_types.h", + "svg_unknown_element.cc", + "svg_unknown_element.h", + "svg_uri_reference.cc", + "svg_uri_reference.h", + "svg_use_element.cc", + "svg_use_element.h", + "svg_view_element.cc", + "svg_view_element.h", + "svg_view_spec.cc", + "svg_view_spec.h", + "svg_zoom_and_pan.cc", + "svg_zoom_and_pan.h", +]
diff --git a/third_party/blink/renderer/core/testing/fake_remote_main_frame_host.cc b/third_party/blink/renderer/core/testing/fake_remote_main_frame_host.cc index 6289c22..b34e920 100644 --- a/third_party/blink/renderer/core/testing/fake_remote_main_frame_host.cc +++ b/third_party/blink/renderer/core/testing/fake_remote_main_frame_host.cc
@@ -19,6 +19,8 @@ void FakeRemoteMainFrameHost::FocusPage() {} +void FakeRemoteMainFrameHost::TakeFocus(bool reverse) {} + void FakeRemoteMainFrameHost::UpdateTargetURL( const KURL&, mojom::blink::RemoteMainFrameHost::UpdateTargetURLCallback) {}
diff --git a/third_party/blink/renderer/core/testing/fake_remote_main_frame_host.h b/third_party/blink/renderer/core/testing/fake_remote_main_frame_host.h index cbaef4b7..2d11f7e9 100644 --- a/third_party/blink/renderer/core/testing/fake_remote_main_frame_host.h +++ b/third_party/blink/renderer/core/testing/fake_remote_main_frame_host.h
@@ -24,6 +24,7 @@ // blink::mojom::RemoteMainFrameHost overrides: void FocusPage() override; + void TakeFocus(bool reverse) override; void UpdateTargetURL( const KURL&, mojom::blink::RemoteMainFrameHost::UpdateTargetURLCallback) override;
diff --git a/third_party/blink/renderer/core/timezone/BUILD.gn b/third_party/blink/renderer/core/timezone/BUILD.gn deleted file mode 100644 index c32a5d73..0000000 --- a/third_party/blink/renderer/core/timezone/BUILD.gn +++ /dev/null
@@ -1,14 +0,0 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("timezone") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "timezone_controller.cc", - "timezone_controller.h", - ] -}
diff --git a/third_party/blink/renderer/core/timezone/build.gni b/third_party/blink/renderer/core/timezone/build.gni new file mode 100644 index 0000000..b424652 --- /dev/null +++ b/third_party/blink/renderer/core/timezone/build.gni
@@ -0,0 +1,8 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_sources_timezone = [ + "timezone_controller.cc", + "timezone_controller.h", +]
diff --git a/third_party/blink/renderer/core/timing/BUILD.gn b/third_party/blink/renderer/core/timing/BUILD.gn deleted file mode 100644 index 0ce8f32..0000000 --- a/third_party/blink/renderer/core/timing/BUILD.gn +++ /dev/null
@@ -1,78 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("timing") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "dom_window_performance.cc", - "dom_window_performance.h", - "event_counts.cc", - "event_counts.h", - "event_timing.cc", - "event_timing.h", - "largest_contentful_paint.cc", - "largest_contentful_paint.h", - "layout_shift.cc", - "layout_shift.h", - "layout_shift_attribution.cc", - "layout_shift_attribution.h", - "measure_memory/measure_memory_controller.cc", - "measure_memory/measure_memory_controller.h", - "measure_memory/measure_memory_delegate.cc", - "measure_memory/measure_memory_delegate.h", - "memory_info.cc", - "memory_info.h", - "performance.cc", - "performance.h", - "performance_element_timing.cc", - "performance_element_timing.h", - "performance_entry.cc", - "performance_entry.h", - "performance_event_timing.cc", - "performance_event_timing.h", - "performance_long_task_timing.cc", - "performance_long_task_timing.h", - "performance_mark.cc", - "performance_mark.h", - "performance_measure.cc", - "performance_measure.h", - "performance_navigation.cc", - "performance_navigation.h", - "performance_navigation_timing.cc", - "performance_navigation_timing.h", - "performance_observer.cc", - "performance_observer.h", - "performance_observer_entry_list.cc", - "performance_observer_entry_list.h", - "performance_paint_timing.cc", - "performance_paint_timing.h", - "performance_resource_timing.cc", - "performance_resource_timing.h", - "performance_server_timing.cc", - "performance_server_timing.h", - "performance_timing.cc", - "performance_timing.h", - "performance_user_timing.cc", - "performance_user_timing.h", - "profiler.cc", - "profiler.h", - "profiler_group.cc", - "profiler_group.h", - "task_attribution_timing.cc", - "task_attribution_timing.h", - "time_clamper.cc", - "time_clamper.h", - "visibility_state_entry.cc", - "visibility_state_entry.h", - "window_performance.cc", - "window_performance.h", - "worker_global_scope_performance.cc", - "worker_global_scope_performance.h", - "worker_performance.cc", - "worker_performance.h", - ] -}
diff --git a/third_party/blink/renderer/core/timing/build.gni b/third_party/blink/renderer/core/timing/build.gni new file mode 100644 index 0000000..f0b692b --- /dev/null +++ b/third_party/blink/renderer/core/timing/build.gni
@@ -0,0 +1,72 @@ +# 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. + +blink_core_sources_timing = [ + "dom_window_performance.cc", + "dom_window_performance.h", + "event_counts.cc", + "event_counts.h", + "event_timing.cc", + "event_timing.h", + "largest_contentful_paint.cc", + "largest_contentful_paint.h", + "layout_shift.cc", + "layout_shift.h", + "layout_shift_attribution.cc", + "layout_shift_attribution.h", + "measure_memory/measure_memory_controller.cc", + "measure_memory/measure_memory_controller.h", + "measure_memory/measure_memory_delegate.cc", + "measure_memory/measure_memory_delegate.h", + "memory_info.cc", + "memory_info.h", + "performance.cc", + "performance.h", + "performance_element_timing.cc", + "performance_element_timing.h", + "performance_entry.cc", + "performance_entry.h", + "performance_event_timing.cc", + "performance_event_timing.h", + "performance_long_task_timing.cc", + "performance_long_task_timing.h", + "performance_mark.cc", + "performance_mark.h", + "performance_measure.cc", + "performance_measure.h", + "performance_navigation.cc", + "performance_navigation.h", + "performance_navigation_timing.cc", + "performance_navigation_timing.h", + "performance_observer.cc", + "performance_observer.h", + "performance_observer_entry_list.cc", + "performance_observer_entry_list.h", + "performance_paint_timing.cc", + "performance_paint_timing.h", + "performance_resource_timing.cc", + "performance_resource_timing.h", + "performance_server_timing.cc", + "performance_server_timing.h", + "performance_timing.cc", + "performance_timing.h", + "performance_user_timing.cc", + "performance_user_timing.h", + "profiler.cc", + "profiler.h", + "profiler_group.cc", + "profiler_group.h", + "task_attribution_timing.cc", + "task_attribution_timing.h", + "time_clamper.cc", + "time_clamper.h", + "visibility_state_entry.cc", + "visibility_state_entry.h", + "window_performance.cc", + "window_performance.h", + "worker_global_scope_performance.cc", + "worker_global_scope_performance.h", + "worker_performance.cc", + "worker_performance.h", +]
diff --git a/third_party/blink/renderer/core/trustedtypes/BUILD.gn b/third_party/blink/renderer/core/trustedtypes/BUILD.gn deleted file mode 100644 index d8efbf6..0000000 --- a/third_party/blink/renderer/core/trustedtypes/BUILD.gn +++ /dev/null
@@ -1,24 +0,0 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("trustedtypes") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "trusted_html.cc", - "trusted_html.h", - "trusted_script.cc", - "trusted_script.h", - "trusted_script_url.cc", - "trusted_script_url.h", - "trusted_type_policy.cc", - "trusted_type_policy.h", - "trusted_type_policy_factory.cc", - "trusted_type_policy_factory.h", - "trusted_types_util.cc", - "trusted_types_util.h", - ] -}
diff --git a/third_party/blink/renderer/core/trustedtypes/build.gni b/third_party/blink/renderer/core/trustedtypes/build.gni new file mode 100644 index 0000000..9b746cb --- /dev/null +++ b/third_party/blink/renderer/core/trustedtypes/build.gni
@@ -0,0 +1,18 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_sources_trustedtypes = [ + "trusted_html.cc", + "trusted_html.h", + "trusted_script.cc", + "trusted_script.h", + "trusted_script_url.cc", + "trusted_script_url.h", + "trusted_type_policy.cc", + "trusted_type_policy.h", + "trusted_type_policy_factory.cc", + "trusted_type_policy_factory.h", + "trusted_types_util.cc", + "trusted_types_util.h", +]
diff --git a/third_party/blink/renderer/core/url/BUILD.gn b/third_party/blink/renderer/core/url/BUILD.gn deleted file mode 100644 index 2eaf3d71..0000000 --- a/third_party/blink/renderer/core/url/BUILD.gn +++ /dev/null
@@ -1,20 +0,0 @@ -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("url") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "dom_url.cc", - "dom_url.h", - "dom_url_utils.cc", - "dom_url_utils.h", - "dom_url_utils_read_only.cc", - "dom_url_utils_read_only.h", - "url_search_params.cc", - "url_search_params.h", - ] -}
diff --git a/third_party/blink/renderer/core/url/build.gni b/third_party/blink/renderer/core/url/build.gni new file mode 100644 index 0000000..b1754ee --- /dev/null +++ b/third_party/blink/renderer/core/url/build.gni
@@ -0,0 +1,14 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +blink_core_sources_url = [ + "dom_url.cc", + "dom_url.h", + "dom_url_utils.cc", + "dom_url_utils.h", + "dom_url_utils_read_only.cc", + "dom_url_utils_read_only.h", + "url_search_params.cc", + "url_search_params.h", +]
diff --git a/third_party/blink/renderer/core/workers/BUILD.gn b/third_party/blink/renderer/core/workers/BUILD.gn deleted file mode 100644 index f25b3fdb..0000000 --- a/third_party/blink/renderer/core/workers/BUILD.gn +++ /dev/null
@@ -1,87 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("workers") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "abstract_worker.cc", - "abstract_worker.h", - "dedicated_worker.cc", - "dedicated_worker.h", - "dedicated_worker_global_scope.cc", - "dedicated_worker_global_scope.h", - "dedicated_worker_messaging_proxy.cc", - "dedicated_worker_messaging_proxy.h", - "dedicated_worker_object_proxy.cc", - "dedicated_worker_object_proxy.h", - "dedicated_worker_thread.cc", - "dedicated_worker_thread.h", - "global_scope_creation_params.cc", - "global_scope_creation_params.h", - "installed_scripts_manager.cc", - "installed_scripts_manager.h", - "main_thread_worklet_reporting_proxy.cc", - "main_thread_worklet_reporting_proxy.h", - "parent_execution_context_task_runners.cc", - "parent_execution_context_task_runners.h", - "shared_worker.cc", - "shared_worker.h", - "shared_worker_client.cc", - "shared_worker_client.h", - "shared_worker_client_holder.cc", - "shared_worker_client_holder.h", - "shared_worker_content_settings_proxy.cc", - "shared_worker_content_settings_proxy.h", - "shared_worker_global_scope.cc", - "shared_worker_global_scope.h", - "shared_worker_reporting_proxy.cc", - "shared_worker_reporting_proxy.h", - "shared_worker_thread.cc", - "shared_worker_thread.h", - "threaded_messaging_proxy_base.cc", - "threaded_messaging_proxy_base.h", - "threaded_object_proxy_base.cc", - "threaded_object_proxy_base.h", - "threaded_worklet_messaging_proxy.cc", - "threaded_worklet_messaging_proxy.h", - "threaded_worklet_object_proxy.cc", - "threaded_worklet_object_proxy.h", - "worker_backing_thread.cc", - "worker_backing_thread.h", - "worker_backing_thread_startup_data.h", - "worker_classic_script_loader.cc", - "worker_classic_script_loader.h", - "worker_clients.cc", - "worker_clients.h", - "worker_global_scope.cc", - "worker_global_scope.h", - "worker_location.h", - "worker_module_tree_client.cc", - "worker_module_tree_client.h", - "worker_navigator.cc", - "worker_navigator.h", - "worker_or_worklet_global_scope.cc", - "worker_or_worklet_global_scope.h", - "worker_reporting_proxy.h", - "worker_settings.cc", - "worker_settings.h", - "worker_thread.cc", - "worker_thread.h", - "worklet.cc", - "worklet.h", - "worklet_global_scope.cc", - "worklet_global_scope.h", - "worklet_global_scope_proxy.h", - "worklet_module_responses_map.cc", - "worklet_module_responses_map.h", - "worklet_module_tree_client.cc", - "worklet_module_tree_client.h", - "worklet_pending_tasks.cc", - "worklet_pending_tasks.h", - "worklet_thread_holder.h", - ] -}
diff --git a/third_party/blink/renderer/core/workers/build.gni b/third_party/blink/renderer/core/workers/build.gni new file mode 100644 index 0000000..6e8cda9 --- /dev/null +++ b/third_party/blink/renderer/core/workers/build.gni
@@ -0,0 +1,83 @@ +# 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. + +import("//third_party/blink/renderer/core/core.gni") + +blink_core_sources_workers = [ + "abstract_worker.cc", + "abstract_worker.h", + "dedicated_worker.cc", + "dedicated_worker.h", + "dedicated_worker_global_scope.cc", + "dedicated_worker_global_scope.h", + "dedicated_worker_messaging_proxy.cc", + "dedicated_worker_messaging_proxy.h", + "dedicated_worker_object_proxy.cc", + "dedicated_worker_object_proxy.h", + "dedicated_worker_thread.cc", + "dedicated_worker_thread.h", + "global_scope_creation_params.cc", + "global_scope_creation_params.h", + "installed_scripts_manager.cc", + "installed_scripts_manager.h", + "main_thread_worklet_reporting_proxy.cc", + "main_thread_worklet_reporting_proxy.h", + "parent_execution_context_task_runners.cc", + "parent_execution_context_task_runners.h", + "shared_worker.cc", + "shared_worker.h", + "shared_worker_client.cc", + "shared_worker_client.h", + "shared_worker_client_holder.cc", + "shared_worker_client_holder.h", + "shared_worker_content_settings_proxy.cc", + "shared_worker_content_settings_proxy.h", + "shared_worker_global_scope.cc", + "shared_worker_global_scope.h", + "shared_worker_reporting_proxy.cc", + "shared_worker_reporting_proxy.h", + "shared_worker_thread.cc", + "shared_worker_thread.h", + "threaded_messaging_proxy_base.cc", + "threaded_messaging_proxy_base.h", + "threaded_object_proxy_base.cc", + "threaded_object_proxy_base.h", + "threaded_worklet_messaging_proxy.cc", + "threaded_worklet_messaging_proxy.h", + "threaded_worklet_object_proxy.cc", + "threaded_worklet_object_proxy.h", + "worker_backing_thread.cc", + "worker_backing_thread.h", + "worker_backing_thread_startup_data.h", + "worker_classic_script_loader.cc", + "worker_classic_script_loader.h", + "worker_clients.cc", + "worker_clients.h", + "worker_global_scope.cc", + "worker_global_scope.h", + "worker_location.h", + "worker_module_tree_client.cc", + "worker_module_tree_client.h", + "worker_navigator.cc", + "worker_navigator.h", + "worker_or_worklet_global_scope.cc", + "worker_or_worklet_global_scope.h", + "worker_reporting_proxy.h", + "worker_settings.cc", + "worker_settings.h", + "worker_thread.cc", + "worker_thread.h", + "worklet.cc", + "worklet.h", + "worklet_global_scope.cc", + "worklet_global_scope.h", + "worklet_global_scope_proxy.h", + "worklet_module_responses_map.cc", + "worklet_module_responses_map.h", + "worklet_module_tree_client.cc", + "worklet_module_tree_client.h", + "worklet_pending_tasks.cc", + "worklet_pending_tasks.h", + "worklet_thread_holder.h", +]
diff --git a/third_party/blink/renderer/core/xml/BUILD.gn b/third_party/blink/renderer/core/xml/BUILD.gn index cbb4d29..cf53900 100644 --- a/third_party/blink/renderer/core/xml/BUILD.gn +++ b/third_party/blink/renderer/core/xml/BUILD.gn
@@ -4,88 +4,6 @@ import("//third_party/blink/renderer/core/core.gni") -blink_core_sources("xml") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "document_xml_tree_viewer.cc", - "document_xml_tree_viewer.h", - "document_xpath_evaluator.cc", - "document_xpath_evaluator.h", - "document_xslt.cc", - "document_xslt.h", - "dom_parser.cc", - "dom_parser.h", - "native_xpath_ns_resolver.cc", - "native_xpath_ns_resolver.h", - "parser/shared_buffer_reader.cc", - "parser/shared_buffer_reader.h", - "parser/xml_document_parser.cc", - "parser/xml_document_parser.h", - "parser/xml_document_parser_scope.cc", - "parser/xml_document_parser_scope.h", - "parser/xml_errors.cc", - "parser/xml_errors.h", - "parser/xml_parser_input.h", - "xml_serializer.cc", - "xml_serializer.h", - "xpath_evaluator.cc", - "xpath_evaluator.h", - "xpath_expression.cc", - "xpath_expression.h", - "xpath_expression_node.cc", - "xpath_expression_node.h", - "xpath_functions.cc", - "xpath_functions.h", - "xpath_node_set.cc", - "xpath_node_set.h", - "xpath_ns_resolver.h", - "xpath_parser.h", - "xpath_path.cc", - "xpath_path.h", - "xpath_predicate.cc", - "xpath_predicate.h", - "xpath_result.cc", - "xpath_result.h", - "xpath_step.cc", - "xpath_step.h", - "xpath_util.cc", - "xpath_util.h", - "xpath_value.cc", - "xpath_value.h", - "xpath_variable_reference.cc", - "xpath_variable_reference.h", - "xsl_style_sheet.h", - "xsl_style_sheet_libxslt.cc", - "xslt_extensions.cc", - "xslt_extensions.h", - "xslt_processor.cc", - "xslt_processor.h", - "xslt_processor_libxslt.cc", - "xslt_unicode_sort.cc", - "xslt_unicode_sort.h", - ] - - deps = [ - ":xpath_generated", - "//third_party/blink/renderer/core:core_generated", - "//third_party/blink/renderer/core/css:css", - "//third_party/blink/renderer/core/dom:dom", - "//third_party/blink/renderer/core/editing:editing", - "//third_party/blink/renderer/core/execution_context:execution_context", - "//third_party/blink/renderer/core/frame:frame", - "//third_party/blink/renderer/core/html:html", - "//third_party/blink/renderer/core/html/parser:parser", - "//third_party/blink/renderer/core/inspector:inspector", - "//third_party/blink/renderer/core/loader:loader", - "//third_party/blink/renderer/core/probe:probe", - "//third_party/blink/renderer/core/script:script", - "//third_party/blink/renderer/core/svg:svg", - ] - - allow_circular_includes_from = [ ":xpath_generated" ] -} - # Chromium-style plugin produces an error for xpath_grammar_generated.h. # Disable the plugin for sources including xpath_grammar_generated.h. blink_core_sources("xpath_generated") {
diff --git a/third_party/blink/renderer/core/xml/build.gni b/third_party/blink/renderer/core/xml/build.gni new file mode 100644 index 0000000..079c22de --- /dev/null +++ b/third_party/blink/renderer/core/xml/build.gni
@@ -0,0 +1,62 @@ +# 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. + +blink_core_sources_xml = [ + "document_xml_tree_viewer.cc", + "document_xml_tree_viewer.h", + "document_xpath_evaluator.cc", + "document_xpath_evaluator.h", + "document_xslt.cc", + "document_xslt.h", + "dom_parser.cc", + "dom_parser.h", + "native_xpath_ns_resolver.cc", + "native_xpath_ns_resolver.h", + "parser/shared_buffer_reader.cc", + "parser/shared_buffer_reader.h", + "parser/xml_document_parser.cc", + "parser/xml_document_parser.h", + "parser/xml_document_parser_scope.cc", + "parser/xml_document_parser_scope.h", + "parser/xml_errors.cc", + "parser/xml_errors.h", + "parser/xml_parser_input.h", + "xml_serializer.cc", + "xml_serializer.h", + "xpath_evaluator.cc", + "xpath_evaluator.h", + "xpath_expression.cc", + "xpath_expression.h", + "xpath_expression_node.cc", + "xpath_expression_node.h", + "xpath_functions.cc", + "xpath_functions.h", + "xpath_node_set.cc", + "xpath_node_set.h", + "xpath_ns_resolver.h", + "xpath_parser.h", + "xpath_path.cc", + "xpath_path.h", + "xpath_predicate.cc", + "xpath_predicate.h", + "xpath_result.cc", + "xpath_result.h", + "xpath_step.cc", + "xpath_step.h", + "xpath_util.cc", + "xpath_util.h", + "xpath_value.cc", + "xpath_value.h", + "xpath_variable_reference.cc", + "xpath_variable_reference.h", + "xsl_style_sheet.h", + "xsl_style_sheet_libxslt.cc", + "xslt_extensions.cc", + "xslt_extensions.h", + "xslt_processor.cc", + "xslt_processor.h", + "xslt_processor_libxslt.cc", + "xslt_unicode_sort.cc", + "xslt_unicode_sort.h", +]
diff --git a/third_party/blink/renderer/core/xmlhttprequest/BUILD.gn b/third_party/blink/renderer/core/xmlhttprequest/BUILD.gn deleted file mode 100644 index 9927df9..0000000 --- a/third_party/blink/renderer/core/xmlhttprequest/BUILD.gn +++ /dev/null
@@ -1,19 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/blink/renderer/core/core.gni") - -blink_core_sources("xmlhttprequest") { - configs += [ "//build/config/compiler:noshadowing" ] - - sources = [ - "xml_http_request.cc", - "xml_http_request.h", - "xml_http_request_event_target.h", - "xml_http_request_progress_event_throttle.cc", - "xml_http_request_progress_event_throttle.h", - "xml_http_request_upload.cc", - "xml_http_request_upload.h", - ] -}
diff --git a/third_party/blink/renderer/core/xmlhttprequest/build.gni b/third_party/blink/renderer/core/xmlhttprequest/build.gni new file mode 100644 index 0000000..1144f49a6 --- /dev/null +++ b/third_party/blink/renderer/core/xmlhttprequest/build.gni
@@ -0,0 +1,13 @@ +# 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. + +blink_core_sources_xmlhttprequest = [ + "xml_http_request.cc", + "xml_http_request.h", + "xml_http_request_event_target.h", + "xml_http_request_progress_event_throttle.cc", + "xml_http_request_progress_event_throttle.h", + "xml_http_request_upload.cc", + "xml_http_request_upload.h", +]
diff --git a/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module.idl b/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module.idl index 639e0d4..4d71ab8f 100644 --- a/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module.idl +++ b/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module.idl
@@ -22,7 +22,7 @@ // requires throwing TypeError if the incoming argument is not an object type // (and is not undefined or null). The binding must ignore this. // Related spec issue: https://github.com/whatwg/html/issues/595 - [RaisesException] RenderingContext? getContext(DOMString contextId, [PermissiveDictionaryConversion] optional CanvasContextCreationAttributesModule attributes = {}); + [HighEntropy, MeasureAs=HTMLCanvasGetContext, RaisesException] RenderingContext? getContext(DOMString contextId, [PermissiveDictionaryConversion] optional CanvasContextCreationAttributesModule attributes = {}); [CallWith=ExecutionContext, RuntimeEnabled=SurfaceEmbeddingFeatures, RaisesException, MeasureAs=OffscreenCanvas] OffscreenCanvas transferControlToOffscreen();
diff --git a/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module_support_webgl2_compute.idl b/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module_support_webgl2_compute.idl index 8df9faa..4844779a 100644 --- a/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module_support_webgl2_compute.idl +++ b/third_party/blink/renderer/modules/canvas/htmlcanvas/html_canvas_element_module_support_webgl2_compute.idl
@@ -23,6 +23,6 @@ // requires throwing TypeError if the incoming argument is not an object type // (and is not undefined or null). The binding must ignore this. // Related spec issue: https://github.com/whatwg/html/issues/595 - [RaisesException] RenderingContext? getContext(DOMString contextId, [PermissiveDictionaryConversion] optional CanvasContextCreationAttributesModule attributes = {}); + [HighEntropy, MeasureAs=HTMLCanvasGetContext, RaisesException] RenderingContext? getContext(DOMString contextId, [PermissiveDictionaryConversion] optional CanvasContextCreationAttributesModule attributes = {}); [CallWith=ExecutionContext, RaisesException, MeasureAs=OffscreenCanvas, RuntimeEnabled=SurfaceEmbeddingFeatures] OffscreenCanvas transferControlToOffscreen(); };
diff --git a/third_party/blink/renderer/modules/mediastream/BUILD.gn b/third_party/blink/renderer/modules/mediastream/BUILD.gn index ef7f768..bab305f 100644 --- a/third_party/blink/renderer/modules/mediastream/BUILD.gn +++ b/third_party/blink/renderer/modules/mediastream/BUILD.gn
@@ -100,7 +100,6 @@ "//media/webrtc", "//services/viz/public/cpp/gpu:gpu", "//third_party/blink/renderer/modules/imagecapture:imagecapture", - "//third_party/blink/renderer/modules/peerconnection:peerconnection", "//third_party/libyuv:libyuv", ] allow_circular_includes_from =
diff --git a/third_party/blink/renderer/modules/peerconnection/BUILD.gn b/third_party/blink/renderer/modules/peerconnection/BUILD.gn index 039fdaf..e9a738fa 100644 --- a/third_party/blink/renderer/modules/peerconnection/BUILD.gn +++ b/third_party/blink/renderer/modules/peerconnection/BUILD.gn
@@ -138,7 +138,17 @@ ] public_deps = [ "//third_party/webrtc_overrides:webrtc_component" ] - deps = [ "//third_party/abseil-cpp:absl" ] + deps = [ + "//jingle:webrtc_glue", + "//services/metrics/public/cpp:ukm_builders", + "//third_party/abseil-cpp:absl", + "//third_party/blink/renderer/modules/crypto", + "//third_party/blink/renderer/modules/mediastream", + "//third_party/blink/renderer/modules/webrtc", + ] + + allow_circular_includes_from = + [ "//third_party/blink/renderer/modules/mediastream" ] } source_set("test_support") { @@ -166,7 +176,9 @@ "//base/test:test_support", "//testing/gmock", "//third_party/blink/public:test_headers", + "//third_party/blink/renderer/modules", "//third_party/blink/renderer/platform", + "//third_party/blink/renderer/platform:test_support", "//third_party/webrtc_overrides:webrtc_component", ]
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc index 31d9ac87..b38cf32b 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
@@ -100,7 +100,6 @@ #include "third_party/blink/renderer/modules/peerconnection/rtc_track_event.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_void_request_impl.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_void_request_promise_impl.h" -#include "third_party/blink/renderer/modules/peerconnection/testing/internals_rtc_peer_connection.h" #include "third_party/blink/renderer/modules/peerconnection/web_rtc_stats_report_callback_resolver.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/microtask.h"
diff --git a/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.h b/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.h index 41ea4c6..13a4cbd 100644 --- a/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.h +++ b/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.h
@@ -32,14 +32,11 @@ // https://html.spec.whatwg.org/C/#default-classic-script-fetch-options // "The default classic script fetch options are a script fetch options whose // cryptographic nonce is the empty string, integrity metadata is the empty - // string, parser metadata is "not-parser-inserted", and credentials mode - // is "omit"." [spec text] - // TODO(domfarolino): Update this to use probably "include" or "same-origin" - // credentials mode, once spec decision is made at - // https://github.com/whatwg/html/pull/3656. + // string, parser metadata is "not-parser-inserted", credentials mode is + // "same-origin", and referrer policy is the empty string." [spec text] ScriptFetchOptions() : parser_state_(ParserDisposition::kNotParserInserted), - credentials_mode_(network::mojom::CredentialsMode::kOmit), + credentials_mode_(network::mojom::CredentialsMode::kSameOrigin), referrer_policy_(network::mojom::ReferrerPolicy::kDefault), importance_(mojom::FetchImportanceMode::kImportanceAuto) {}
diff --git a/third_party/blink/renderer/platform/mediastream/media_stream_web_audio_source.cc b/third_party/blink/renderer/platform/mediastream/media_stream_web_audio_source.cc index 65ace13a..5034ab2 100644 --- a/third_party/blink/renderer/platform/mediastream/media_stream_web_audio_source.cc +++ b/third_party/blink/renderer/platform/mediastream/media_stream_web_audio_source.cc
@@ -54,11 +54,13 @@ // Wrap the AudioBus channel data using WebVector. uint32_t n = bus->NumberOfChannels(); - WebVector<float*> web_audio_data(n); - for (uint32_t i = 0; i < n; ++i) - web_audio_data[i] = bus->Channel(i)->MutableData(); + if (web_audio_data_.size() != n) + web_audio_data_ = WebVector<float*>(static_cast<size_t>(n)); - web_audio_source_provider_->ProvideInput(web_audio_data, frames_to_process); + for (uint32_t i = 0; i < n; ++i) + web_audio_data_[i] = bus->Channel(i)->MutableData(); + + web_audio_source_provider_->ProvideInput(web_audio_data_, frames_to_process); } } // namespace blink
diff --git a/third_party/blink/renderer/platform/mediastream/media_stream_web_audio_source.h b/third_party/blink/renderer/platform/mediastream/media_stream_web_audio_source.h index 99b4e523..19659bad 100644 --- a/third_party/blink/renderer/platform/mediastream/media_stream_web_audio_source.h +++ b/third_party/blink/renderer/platform/mediastream/media_stream_web_audio_source.h
@@ -54,6 +54,7 @@ void ProvideInput(AudioBus*, uint32_t frames_to_process) override; std::unique_ptr<WebAudioSourceProvider> web_audio_source_provider_; + WebVector<float*> web_audio_data_; DISALLOW_COPY_AND_ASSIGN(MediaStreamWebAudioSource); };
diff --git a/third_party/blink/renderer/platform/scheduler/common/tracing_helper.h b/third_party/blink/renderer/platform/scheduler/common/tracing_helper.h index 34639cb..7ddc548 100644 --- a/third_party/blink/renderer/platform/scheduler/common/tracing_helper.h +++ b/third_party/blink/renderer/platform/scheduler/common/tracing_helper.h
@@ -12,9 +12,13 @@ #include "base/macros.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" +#include "base/trace_event/typed_macros.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +#include "third_party/perfetto/include/perfetto/tracing/event_context.h" +#include "third_party/perfetto/include/perfetto/tracing/track.h" +#include "third_party/perfetto/protos/perfetto/trace/track_event/track_event.pbzero.h" namespace blink { namespace scheduler { @@ -216,6 +220,126 @@ DISALLOW_COPY(TraceableState); }; +template <const char* category, typename TypedValue> +class ProtoStateTracer { + DISALLOW_NEW(); + + public: + explicit ProtoStateTracer(const char* name) + : name_(name), slice_is_open_(false) { + internal::ValidateTracingCategory(category); + } + + ProtoStateTracer(const ProtoStateTracer&) = delete; + ProtoStateTracer& operator=(const ProtoStateTracer&) = delete; + + ~ProtoStateTracer() { + if (slice_is_open_) { + TRACE_EVENT_END(category, track()); + } + } + + void TraceProto(TypedValue* value) { + const auto trace_track = track(); + if (slice_is_open_) { + TRACE_EVENT_END(category, trace_track); + slice_is_open_ = false; + } + if (!is_enabled()) + return; + + TRACE_EVENT_BEGIN(category, name_, trace_track, + [value](perfetto::EventContext ctx) { + value->AsProtozeroInto(ctx.event()); + }); + + slice_is_open_ = true; + } + + protected: + bool is_enabled() const { + bool result = false; + TRACE_EVENT_CATEGORY_GROUP_ENABLED(category, &result); // Cached. + return result; + } + + private: + perfetto::Track track() const { + return perfetto::Track(reinterpret_cast<uint64_t>(this)); + } + + const char* const name_; // Not owned. + + // We have to track whether slice is open to avoid confusion since assignment, + // "absent" state and OnTraceLogEnabled can happen anytime. + bool slice_is_open_; +}; + +template <typename T> +using InitializeProtoFuncPtr = + void (*)(perfetto::protos::pbzero::TrackEvent* event, T e); + +template <typename T, const char* category> +class TraceableObjectState + : public TraceableVariable, + public ProtoStateTracer<category, TraceableObjectState<T, category>> { + public: + TraceableObjectState(T initial_state, + const char* name, + TraceableVariableController* controller, + InitializeProtoFuncPtr<T> proto_init_func) + : TraceableVariable(controller), + ProtoStateTracer<category, TraceableObjectState<T, category>>(name), + state_(initial_state), + proto_init_func_(proto_init_func) { + Trace(); + } + + TraceableObjectState(const TraceableObjectState&) = delete; + + ~TraceableObjectState() override = default; + + TraceableObjectState& operator=(const T& value) { + Assign(value); + return *this; + } + TraceableObjectState& operator=(const TraceableObjectState& another) { + Assign(another.state_); + return *this; + } + + const T& get() const { return state_; } + + void OnTraceLogEnabled() final { Trace(); } + + void AsProtozeroInto(perfetto::protos::pbzero::TrackEvent* event) { + proto_init_func_(event, state_); + } + + protected: + void Assign(T new_state) { + if (state_ != new_state) { + state_ = new_state; + Trace(); + } + } + + private: + void Trace() { + ProtoStateTracer<category, TraceableObjectState<T, category>>::TraceProto( + this); + } + + bool is_enabled() const { + bool result = false; + TRACE_EVENT_CATEGORY_GROUP_ENABLED(category, &result); // Cached. + return result; + } + + T state_; + InitializeProtoFuncPtr<T> proto_init_func_; +}; + template <typename T, const char* category> class TraceableCounter : public TraceableVariable { public:
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc index 06baa0e2..110efe42 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
@@ -47,6 +47,8 @@ #include "third_party/blink/renderer/platform/scheduler/main_thread/widget_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/event_loop.h" #include "third_party/blink/renderer/platform/wtf/functional.h" +#include "third_party/perfetto/protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.pbzero.h" +#include "third_party/perfetto/protos/perfetto/trace/track_event/track_event.pbzero.h" #include "v8/include/v8.h" namespace blink { @@ -84,6 +86,30 @@ } } +void AddRAILModeToProto(perfetto::protos::pbzero::TrackEvent* event, + RAILMode mode) { + perfetto::protos::pbzero::ChromeRAILMode proto_mode; + switch (mode) { + case RAILMode::kResponse: + proto_mode = perfetto::protos::pbzero::ChromeRAILMode::RAIL_MODE_RESPONSE; + break; + case RAILMode::kAnimation: + proto_mode = + perfetto::protos::pbzero::ChromeRAILMode::RAIL_MODE_ANIMATION; + break; + case RAILMode::kIdle: + proto_mode = perfetto::protos::pbzero::ChromeRAILMode::RAIL_MODE_IDLE; + break; + case RAILMode::kLoad: + proto_mode = perfetto::protos::pbzero::ChromeRAILMode::RAIL_MODE_LOAD; + break; + default: + proto_mode = perfetto::protos::pbzero::ChromeRAILMode::RAIL_MODE_NONE; + break; + } + event->set_chrome_renderer_scheduler_state()->set_rail_mode(proto_mode); +} + const char* BackgroundStateToString(bool is_backgrounded) { if (is_backgrounded) { return "renderer_backgrounded"; @@ -362,7 +388,7 @@ rail_mode_for_tracing(current_policy.rail_mode(), "Scheduler.RAILMode", &main_thread_scheduler_impl->tracing_controller_, - RAILModeToString), + &AddRAILModeToProto), renderer_hidden(false, "RendererVisibility", &main_thread_scheduler_impl->tracing_controller_,
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h index 6e4d37b..c4e87ef1 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
@@ -853,8 +853,11 @@ longest_jank_free_task_duration; TraceableCounter<int, TracingCategoryName::kInfo> renderer_pause_count; // Renderer is paused if non-zero. - TraceableState<RAILMode, TracingCategoryName::kTopLevel> + + TraceableObjectState<RAILMode, + TracingCategoryName::kTopLevel> rail_mode_for_tracing; // Don't use except for tracing. + TraceableState<bool, TracingCategoryName::kTopLevel> renderer_hidden; base::Optional<base::ScopedSampleMetadata> renderer_hidden_metadata; TraceableState<bool, TracingCategoryName::kTopLevel> renderer_backgrounded;
diff --git a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng index 061a33d..b188fb4 100644 --- a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng +++ b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
@@ -118,9 +118,9 @@ crbug.com/591099 external/wpt/css/css-shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-017.html [ Failure ] ### external/wpt/css/css-sizing/ -crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-013.tentative.html [ Pass ] -crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-024.tentative.html [ Failure ] -crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-028.tentative.html [ Failure ] +crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-013.html [ Pass ] +crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-024.html [ Failure ] +crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-028.html [ Failure ] crbug.com/591099 external/wpt/css/css-sizing/clone-nowrap-intrinsic-size-bidi.html [ Failure ] crbug.com/591099 external/wpt/css/css-sizing/intrinsic-percent-non-replaced-004.html [ Failure ] crbug.com/591099 external/wpt/css/css-sizing/intrinsic-percent-non-replaced-005.html [ Failure ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 3d38dfd..f769404 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -145,7 +145,7 @@ virtual/composite-after-paint/scrollingcoordinator/* [ Pass ] # --- End CompositeAfterPaint Tests -- -# --- BEGIN OOP-R Canvas tests --- +# --- BEGIN OOP-R Canvas tests --- crbug.com/1081534 [ Win7 ] virtual/oopr-canvas2d/fast/canvas/canvas-composite-video-shadow.html [ Pass Failure ] crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-clearRect-first.html [ Failure ] crbug.com/1081534 [ Win ] virtual/oopr-canvas2d/fast/canvas/canvas-clearRect-with-clip.html [ Failure ] @@ -824,8 +824,8 @@ crbug.com/470421 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002b.html [ Failure ] crbug.com/470421 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003a.html [ Failure ] crbug.com/470421 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004a.html [ Failure ] -crbug.com/470421 external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-021.tentative.html [ Failure ] -crbug.com/470421 external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-022.tentative.html [ Failure ] +crbug.com/470421 external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-021.html [ Failure ] +crbug.com/470421 external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-022.html [ Failure ] # Untriaged flex failures crbug.com/626703 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-wmvert-001.xhtml [ Failure ] @@ -6119,9 +6119,6 @@ crbug.com/1011811 http/tests/devtools/network/download.js [ Pass Failure ] crbug.com/1011811 http/tests/devtools/sxg/sxg-disable-cache.js [ Pass Failure ] -crbug.com/1080609 virtual/threaded/external/wpt/scroll-animations/element-based-offset.html [ Pass Failure ] -crbug.com/1080609 virtual/threaded/external/wpt/scroll-animations/element-based-offset-clamp.html [ Pass Failure ] - # Fails when test moved to use full compositor pipe. crbug.com/1085832 [ Fuchsia ] images/size-failure.html [ Timeout ] @@ -6460,3 +6457,14 @@ # WebRTC: Payload demuxing times out in Plan B. This is expected. crbug.com/1139052 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/unbundled-pt-demuxing.https.html [ Timeout ] + +# DevTools roll +crbug.com/1011811 http/tests/devtools/indexeddb/database-structure.js [ Skip ] +crbug.com/1011811 http/tests/devtools/indexeddb/database-version-number.js [ Skip ] + +# DevTools roll +crbug.com/1011811 http/tests/devtools/profiler/agents-disabled-check.js [ Skip ] +crbug.com/1011811 http/tests/devtools/persistence/persistence-do-not-overwrite-css.js [ Skip ] + +# Sheriff 2020-10-19 +crbug.com/1139950 [ Linux ] virtual/text-antialias/hyphens/hyphens-auto.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/ChromiumWPTExpectations b/third_party/blink/web_tests/android/ChromiumWPTExpectations index 69e57b7..a16ecef 100644 --- a/third_party/blink/web_tests/android/ChromiumWPTExpectations +++ b/third_party/blink/web_tests/android/ChromiumWPTExpectations
@@ -1090,8 +1090,8 @@ crbug.com/1050754 external/wpt/css/css-sizing/animation/min-width-interpolation.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/animation/width-composition.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/animation/width-interpolation.html [ Failure ] -crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.tentative.html [ Failure ] -crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.tentative.html [ Failure ] +crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.html [ Failure ] +crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/parsing/height-valid.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/parsing/max-height-valid.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WeblayerWPTExpectations b/third_party/blink/web_tests/android/WeblayerWPTExpectations index 28c9e1c..01bdd09 100644 --- a/third_party/blink/web_tests/android/WeblayerWPTExpectations +++ b/third_party/blink/web_tests/android/WeblayerWPTExpectations
@@ -1033,8 +1033,8 @@ crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-arguments-000.html [ Failure ] crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-box-pair-000.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/animation/width-interpolation.html [ Failure ] -crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.tentative.html [ Failure ] -crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.tentative.html [ Failure ] +crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.html [ Failure ] +crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/parsing/height-valid.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/parsing/max-height-valid.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WebviewWPTExpectations b/third_party/blink/web_tests/android/WebviewWPTExpectations index 405b546..c941e14 100644 --- a/third_party/blink/web_tests/android/WebviewWPTExpectations +++ b/third_party/blink/web_tests/android/WebviewWPTExpectations
@@ -1119,8 +1119,8 @@ crbug.com/1050754 external/wpt/css/css-sizing/animation/min-width-interpolation.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/animation/width-composition.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/animation/width-interpolation.html [ Failure ] -crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.tentative.html [ Failure ] -crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.tentative.html [ Failure ] +crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.html [ Failure ] +crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/parsing/height-valid.html [ Failure ] crbug.com/1050754 external/wpt/css/css-sizing/parsing/max-height-valid.html [ Failure ]
diff --git a/third_party/blink/web_tests/editing/selection/line_width_numeric_overflow.html b/third_party/blink/web_tests/editing/selection/line_width_numeric_overflow.html index 3eedb148..c5ab148 100644 --- a/third_party/blink/web_tests/editing/selection/line_width_numeric_overflow.html +++ b/third_party/blink/web_tests/editing/selection/line_width_numeric_overflow.html
@@ -14,7 +14,7 @@ selection => selection.modify('move', 'forward', 'lineboundary'), [ '<div style="white-space: pre-wrap">', - '|<select style="margin-left: 1e9px"><option>ab</option></select>xy', + '<select style="margin-left: 1e9px"><option>ab</option></select>|xy', '</div>', ]); </script>
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index 6c9c8b2..6ad229e 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -229992,17 +229992,29 @@ "6092c0d767050d0c1b13cfd2360f7a7f17d656a5", [] ], + "common-test-service-worker.js": [ + "6985c901fa683a2585ae28cdb3cd5a9711df8222", + [] + ], "resources": { + "common-test-helper-iframe.js": [ + "597955fea1f9dc115b6910df59fbb0c5edc1d008", + [] + ], "common-test-helper.js": [ - "f7269dba06743efec3bc9aae21556df66d09f52a", + "2bf99184a0c9c944551b472a3be6960dbf159128", [] ], "data-base-url.json": [ "81fcf087425c70eefa7d3c3465be59684fb1a521", [] ], + "empty-import-map-internal.json": [ + "59390c89f6b4da9ca95da0142d48022e8dc25f40", + [] + ], "empty-import-map.json": [ - "ce6c185498fa38c5e2fcd4e7ba36503778ad0ba7", + "ff85a6d69d5ded8d4fb917ae767748d8903bc4e7", [] ], "overlapping-entries.json": [ @@ -231116,7 +231128,7 @@ [] ], "pointerlock.idl": [ - "7670ec76cbdde325cba22ad2ed8ebf81eb7e17bd", + "873a965ce824816cdb3e551b52096cde1ca99f9c", [] ], "presentation-api.idl": [ @@ -231168,7 +231180,7 @@ [] ], "screen-orientation.idl": [ - "9e9dbc67ba73753851f158340803a62e0178e893", + "62bc864282234f41cceb8d2d199af1e88a96ae78", [] ], "screen-wake-lock.idl": [ @@ -231360,7 +231372,7 @@ [] ], "webxr-hand-input.idl": [ - "aef73a1e35c84b8e0365b949b1b2ad1f0d80ec47", + "4334d96793c211deaf8a8816b95b3c944186e2ee", [] ], "webxr.idl": [ @@ -231601,7 +231613,7 @@ ] }, "lint.ignore": [ - "fe2933bb8a31cb7d5a8c39eee06626f1c7b261ac", + "b44faa491f9ad0b4873b9d56cff479310e9c392c", [] ], "loading": { @@ -306881,8 +306893,8 @@ {} ] ], - "is-where-error-recovery.tentative.html": [ - "31f5b8ccc6cbb5bd180f59e53a42d726f32fe912", + "is-where-error-recovery.html": [ + "1d6e870ed23e5b65ea1bded940c6531b1da18a51", [ null, {} @@ -354058,6 +354070,13 @@ {} ] ], + "fieldset-percent-height.html": [ + "bbe40785be2f0738896e648ce23bc90b9f50c558", + [ + null, + {} + ] + ], "fieldset-percentage-block-size.html": [ "1c221555c305bd9039558389b3f22ee00d65f8b9", [ @@ -368704,8 +368723,8 @@ } }, "common": { - "parsing.tentative.html": [ - "d3334d7bbb9b4406397f96b596e71463eb252791", + "parsing.tentative.https.html": [ + "0dc9e24c8d84ddf06ef38f874605a20712cda214", [ null, { @@ -368713,8 +368732,17 @@ } ] ], - "resolving.tentative.html": [ - "8dd3e3a2e710f52b05cc34e36a8535d211a480de", + "resolving-internal.tentative.https.html": [ + "a9f7c82fd879ca557afd2db85d35901e066e919b", + [ + null, + { + "timeout": "long" + } + ] + ], + "resolving.tentative.https.html": [ + "abb30e0afa4f41c306d2a5b1eee788bdd94390bb", [ null, { @@ -394790,7 +394818,7 @@ ] ], "element-based-offset-clamp.html": [ - "6467af199f10224e16f07badf16b73593270f14c", + "b140507493848688f38021573643ce7d6321e514", [ null, {} @@ -420118,6 +420146,13 @@ {} ] ], + "unbundled-pt-demuxing.https.html": [ + "e9f07e4551c0f55d0bf299c0d9ec4cc0bc8c2c6e", + [ + null, + {} + ] + ], "video-codecs.https.html": [ "4ce0618bca3007e4193b98a95b0a6d030cc24b5f", [
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/address-space.https.window.js b/third_party/blink/web_tests/external/wpt/cors-rfc1918/address-space.https.window.js new file mode 100644 index 0000000..3156e3a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/address-space.https.window.js
@@ -0,0 +1,27 @@ +// META: script=resources/support.js +// +// Spec: https://wicg.github.io/cors-rfc1918/#integration-html +// +// This file covers only those tests that must execute in a secure context. +// Other tests are defined in: address-space.window.js +'use strict'; + +setup(() => { + // No sense running tests if `document.addressSpace` is not implemented. + assert_implements(document.addressSpace); + + // The tests below assume that the root document is loaded from the `local` + // address space. This might fail depending on how the tests are run/served. + // See https://github.com/web-platform-tests/wpt/issues/26166. + assert_implements_optional(document.addressSpace == "local"); +}); + +promise_test(t => { + return append_child_frame(t, document, "resources/treat-as-public-address.https.html") + .then(child => { + return append_child_frame(t, child.contentDocument, "/common/blank.html"); + }) + .then(grandchild => { + assert_equals(grandchild.contentDocument.addressSpace, "local"); + }); +}, "Public-local grandchild iframe's addressSpace is local");
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/address-space.window-expected.txt b/third_party/blink/web_tests/external/wpt/cors-rfc1918/address-space.window-expected.txt new file mode 100644 index 0000000..ec4009fa --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/address-space.window-expected.txt
@@ -0,0 +1,10 @@ +This is a testharness.js-based test. +PASS About:blank iframe's addressSpace is inherited from the root. +FAIL About:srcdoc iframe's addressSpace is inherited from the root. assert_equals: expected "local" but got "public" +FAIL Data: iframe's addressSpace is inherited from the root. assert_equals: expected "local" but got "public" +FAIL Blob: iframe's addressSpace is inherited from the root. assert_equals: expected "local" but got "public" +PASS Local iframe's addressSpace is local. +PASS Treat-as-public-address iframe's addressSpace is public. +FAIL Local-local grandchild iframe's addressSpace is local. assert_equals: grandchild expected "Loaded" but got "" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/address-space.window.js b/third_party/blink/web_tests/external/wpt/cors-rfc1918/address-space.window.js new file mode 100644 index 0000000..287ab95 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/address-space.window.js
@@ -0,0 +1,98 @@ +// META: script=resources/support.js +// +// Spec: https://wicg.github.io/cors-rfc1918/#integration-html +// +// See also: address-space.https.window.js +'use strict'; + +const kMinimalDoc = [ + "<!doctype html>", + "<meta charset=utf-8>", + "<title>Loaded</title>", +].join(""); + +setup(() => { + // No sense running tests if `document.addressSpace` is not implemented. + assert_implements(document.addressSpace); + + // The tests below assume that the root document is loaded from the `local` + // address space. This might fail depending on how the tests are run/served. + // See https://github.com/web-platform-tests/wpt/issues/26166. + assert_implements_optional(document.addressSpace == "local"); +}); + +promise_test(t => { + return append_child_frame_with(t, document, () => { + // Do nothing with the child frame's `src` attribute. + }) + .then(child => { + assert_equals(child.contentDocument.addressSpace, "local"); + }); +}, "About:blank iframe's addressSpace is inherited from the root."); + +promise_test(t => { + return append_child_frame_with(t, document, child => { + child.srcdoc = kMinimalDoc; + }) + .then(child => { + assert_equals(child.contentDocument.title, "Loaded"); + assert_equals(child.contentDocument.addressSpace, "local"); + }); +}, "About:srcdoc iframe's addressSpace is inherited from the root."); + +promise_test(t => { + // Register an event listener that will resolve this promise when this window + // receives a message posted to it. + const event_received = new Promise(resolve => { + window.addEventListener("message", resolve); + }); + + const script = "window.parent.postMessage(document.addressSpace, '*');"; + const url = "data:text/html,<script>" + script + "</script>"; + return append_child_frame(t, document, url) + // Wait for the iframe to be loaded, then wait for an event. + .then(() => event_received) + .then(evt => { + assert_equals(evt.data, "local"); + }); +}, "Data: iframe's addressSpace is inherited from the root."); + +promise_test(t => { + const blob = new Blob([kMinimalDoc], {type: "text/html"}); + return append_child_frame(t, document, URL.createObjectURL(blob)) + .then(child => { + assert_equals(child.contentDocument.title, "Loaded"); + assert_equals(child.contentDocument.addressSpace, "local"); + }); +}, "Blob: iframe's addressSpace is inherited from the root."); + +promise_test(t => { + return append_child_frame(t, document, "resources/title.html") + .then(child => { + assert_equals(child.contentDocument.title, "Loaded"); + assert_equals(child.contentDocument.addressSpace, "local"); + }); +}, "Local iframe's addressSpace is local."); + +promise_test(t => { + return append_child_frame(t, document, "resources/treat-as-public-address.html") + .then(child => { + assert_equals(child.contentDocument.title, "Loaded"); + assert_equals(child.contentDocument.addressSpace, "public"); + }); +}, "Treat-as-public-address iframe's addressSpace is public."); + +promise_test(t => { + return append_child_frame(t, document, "resources/title.html") + .then(child => { + const doc = child.contentDocument; + assert_equals(doc.title, "Loaded", "child"); + assert_equals(doc.addressSpace, "local", "child"); + return append_child_frame(t, doc, "resources/treat-as-public-address.html"); + }) + .then(grandchild => { + const doc = grandchild.contentDocument; + assert_equals(doc.title, "Loaded", "grandchild"); + assert_equals(doc.addressSpace, "local", "grandchild"); + }); +}, "Local-local grandchild iframe's addressSpace is local.");
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/support.js b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/support.js new file mode 100644 index 0000000..685d656 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/support.js
@@ -0,0 +1,27 @@ +'use strict'; + +// Creates a new iframe in |doc|, calls |func| on it and appends it as a child +// of |doc|. +// Returns a promise that resolves to the iframe once loaded (successfully or +// not). +// The iframe is removed from |doc| once test |t| is done running. +// +// NOTE: Because iframe elements always invoke the onload event handler, even +// in case of error, we cannot wire onerror to a promise rejection. The Promise +// constructor requires users to resolve XOR reject the promise. +function append_child_frame_with(t, doc, func) { + return new Promise(resolve => { + const child = doc.createElement("iframe"); + func(child); + child.onload = () => { resolve(child); }; + doc.body.appendChild(child); + t.add_cleanup(() => { doc.body.removeChild(child); }); + }); +} + +// Appends a child iframe to |doc| sourced from |src|. +// +// See append_child_frame_with() for more details. +function append_child_frame(t, doc, src) { + return append_child_frame_with(t, doc, child => { child.src = src; }); +}
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/title.html b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/title.html new file mode 100644 index 0000000..a3a324a1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/title.html
@@ -0,0 +1,3 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Loaded</title>
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.html b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.html new file mode 100644 index 0000000..a3a324a1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.html
@@ -0,0 +1,3 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Loaded</title>
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.html.headers b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.html.headers new file mode 100644 index 0000000..76371c62 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.html.headers
@@ -0,0 +1 @@ +Content-Security-Policy: treat-as-public-address;
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.https.html b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.https.html new file mode 100644 index 0000000..a3a324a1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.https.html
@@ -0,0 +1,3 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Loaded</title>
diff --git a/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.https.html.headers b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.https.html.headers new file mode 100644 index 0000000..76371c62 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/cors-rfc1918/resources/treat-as-public-address.https.html.headers
@@ -0,0 +1 @@ +Content-Security-Policy: treat-as-public-address;
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/position-absolute-replaced-with-display-table.html b/third_party/blink/web_tests/external/wpt/css/css-position/position-absolute-replaced-with-display-table.html new file mode 100644 index 0000000..9a966b9 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-position/position-absolute-replaced-with-display-table.html
@@ -0,0 +1,7 @@ +<!DOCTYPE html> +<link rel="match" href="../reference/ref-filled-green-100px-square-only.html"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1138851"> +<p>Test passes if there is a filled green square.</p> +<div style="position: relative;"> + <canvas width="200" style="background: green; width: 100px; height: 100px; position: absolute; display: table;"></canvas> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-001.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-001.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-001.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-001.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-002.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-002.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-002.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-002.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-003.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-003.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-003.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-003.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-004.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-004.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-004.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-004.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-005.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-005.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-005.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-005.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-006.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-006.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-006.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-006.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-007.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-007.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-007.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-007.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-008.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-008.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-008.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-008.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-009.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-009.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-009.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-009.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-010.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-010.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-010.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-010.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-011.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-011.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-011.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-011.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-012.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-012.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-012.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-012.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-013.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-013.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-013.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-013.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-014.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-014.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-014.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-014.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/auto-margins-001.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/auto-margins-001.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/auto-margins-001.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/auto-margins-001.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-001.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-001.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-001.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-001.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-002.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-002.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-002.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-002.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-003.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-003.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-003.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-003.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-004.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-004.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-004.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-004.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-005.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-005.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-005.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-005.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-006.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-006.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-006.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-006.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-007.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-007.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-007.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-007.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-008.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-008.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-008.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-008.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-009.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-009.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-009.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-009.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-010.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-010.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-010.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-010.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-011.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-011.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-011.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-011.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-012.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-012.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-012.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-012.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-013.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-013.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-013.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-013.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-014.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-014.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-014.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-014.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-015.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-015.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-015.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-015.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-016.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-016.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-016.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-016.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-017.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-017.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-017.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-017.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-018.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-018.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-018.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-018.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-019.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-019.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-019.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-019.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-020.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-020.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-020.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-020.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-021.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-021.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-021.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-021.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-022.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-022.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-022.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-022.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-023.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-023.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-023.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-023.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-024.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-024.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-024.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-024.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-025.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-025.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-025.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-025.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-026.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-026.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-026.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-026.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-027.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-027.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-027.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-027.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-028.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-028.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-028.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-028.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-001.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-001.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-001.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-001.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-002.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-002.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-002.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-002.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-001.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-001.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-001.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-001.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-002.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-002.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-002.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-002.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-003.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-003.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-003.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-003.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-004.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-004.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-004.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-004.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-005.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-005.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-005.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-005.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-006.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-006.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-006.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-006.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-007.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-007.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-007.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-007.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-008.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-008.html similarity index 76% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-008.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-008.html index f5a3b36..c7144c3 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-008.tentative.html +++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-008.html
@@ -7,7 +7,7 @@ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p> -<div style="display: flex; flex-direction: column; flex-wrap: wrap; width: 200px; aspect-ratio: 4/1;"> - <div style="background: green; width: 100px; height: 50px;"></div> - <div style="background: green; width: 100px; height: 50px;"></div> +<div style="display: flex; flex-direction: column; flex-wrap: wrap; width: 100px; aspect-ratio: 1/1;"> + <div style="background: green; width: 50px; height: 100px;"></div> + <div style="background: green; width: 50px; height: 100px;"></div> </div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-009.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-009.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-009.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-009.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-010.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-010.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-010.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-010.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-011.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-011.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-011.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-011.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-012.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-012.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-012.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-012.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-013.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-013.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-013.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-013.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-014.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-014.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-014.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-014.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-015.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-015.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-015.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-015.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-016.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-016.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-016.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-016.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-017.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-017.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-017.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-017.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-018.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-018.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-018.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-018.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-019.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-019.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-019.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-019.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-020.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-020.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-020.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-020.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-021.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-021.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-021.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-021.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-022.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-022.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-022.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-022.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-023.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-023.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-023.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-023.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-001.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-001.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-001.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-001.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-002.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-002.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-002.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-002.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-003.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-003.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-003.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-003.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-004.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-004.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-004.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-004.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-005.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-005.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-005.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-005.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-006.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-006.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-006.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-006.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-007.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-007.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-007.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-007.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-008.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-008.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-008.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-008.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-001.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-001.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-001.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-001.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-002.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-002.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-002.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-002.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-003.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-003.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-003.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-003.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-004.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-004.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-004.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/percentage-resolution-004.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-003.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-003.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-003.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/quirks-mode-003.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-001.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-001.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-001.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-001.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-002.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-002.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-002.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-002.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-003.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-003.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-003.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-003.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-004.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-004.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-004.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-004.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-005.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-005.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-005.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-005.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-006.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-006.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-006.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-006.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-007.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-007.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-007.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-007.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-008.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-008.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-008.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-008.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-009.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-009.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-009.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-009.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-010.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-010.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-010.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-010.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-011.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-011.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-011.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-011.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-012.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-012.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-012.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-012.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-013.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-013.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-013.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-013.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-014.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-014.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-014.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-014.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-015.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-015.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-015.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-015.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-016.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-016.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-016.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-016.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-017.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-017.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-017.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-017.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-018.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-018.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-018.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-018.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-019.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-019.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-019.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-019.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-020.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-020.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-020.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-020.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-021.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-021.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-021.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-021.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-022.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-022.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-022.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-022.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-023.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-023.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-023.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-023.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-024.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-024.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-024.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-024.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-025.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-025.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-025.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-025.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-026.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-026.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-026.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-026.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-027.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-027.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-027.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-027.html
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/is-where-basic.html b/third_party/blink/web_tests/external/wpt/css/selectors/is-where-basic.html new file mode 100644 index 0000000..8623c8b7 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/selectors/is-where-basic.html
@@ -0,0 +1,41 @@ +<!DOCTYPE html> +<title>Basic :is/:where matching behavior</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link rel="help" href="https://drafts.csswg.org/selectors-4/#matches"> + +<main id=main> + <div id=a><div id=d></div></div> + <div id=b><div id=e></div></div> + <div id=c><div id=f></div></div> +</main> + +<script> + function formatElements(elements) { + return elements.map(e => e.id).sort().join(); + } + + // Test that |selector| returns the given elements in #main. + function test_selector(selector, expected) { + test(function() { + let actual = Array.from(main.querySelectorAll(selector)); + assert_equals(formatElements(actual), formatElements(expected)); + }, `${selector} matches expected elements`); + } + + test_selector(':is()', []); + test_selector(':is(#a)', [a]); + test_selector(':is(#a, #f)', [a, f]); + test_selector(':is(#a, #c) :where(#a #d, #c #f)', [d, f]); + test_selector('#c > :is(#c > #f)', [f]); + test_selector('#c > :is(#b > #f)', []); + test_selector('#a div:is(#d)', [d]); + test_selector(':is(div) > div', [d, e, f]); + test_selector(':is(*) > div', [a, b, c, d, e, f]); + test_selector(':is(*) div', [a, b, c, d, e, f]); + test_selector('div > :where(#e, #f)', [e, f]); + test_selector('div > :where(*)', [d, e, f]); + test_selector(':is(*) > :where(*)', [a, b, c, d, e, f]); + test_selector(':is(#a + #b) + :is(#c)', [c]); + test_selector(':is(#a, #b) + div', [b, c]); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/pointerlock.idl b/third_party/blink/web_tests/external/wpt/interfaces/pointerlock.idl index 7670ec7..873a965 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/pointerlock.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/pointerlock.idl
@@ -4,13 +4,13 @@ // Source: Pointer Lock 2.0 (https://w3c.github.io/pointerlock/) partial interface Element { - void requestPointerLock(); + undefined requestPointerLock(); }; partial interface Document { attribute EventHandler onpointerlockchange; attribute EventHandler onpointerlockerror; - void exitPointerLock(); + undefined exitPointerLock(); }; partial interface mixin DocumentOrShadowRoot {
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/screen-orientation.idl b/third_party/blink/web_tests/external/wpt/interfaces/screen-orientation.idl index 9e9dbc67..62bc86428 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/screen-orientation.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/screen-orientation.idl
@@ -9,8 +9,8 @@ [Exposed=Window] interface ScreenOrientation : EventTarget { - Promise<void> lock(OrientationLockType orientation); - void unlock(); + Promise<undefined> lock(OrientationLockType orientation); + undefined unlock(); readonly attribute OrientationType type; readonly attribute unsigned short angle; attribute EventHandler onchange;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webxr-hand-input.idl b/third_party/blink/web_tests/external/wpt/interfaces/webxr-hand-input.idl index aef73a1..4334d96 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/webxr-hand-input.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/webxr-hand-input.idl
@@ -7,6 +7,7 @@ readonly attribute XRHand? hand; }; +[Exposed=Window] interface XRHand { iterable<XRJointSpace>; readonly attribute unsigned long length; @@ -44,6 +45,7 @@ const unsigned long LITTLE_PHALANX_TIP = 24; }; +[Exposed=Window] interface XRJointSpace: XRSpace {}; partial interface XRFrame { @@ -53,6 +55,7 @@ boolean fillPoses(sequence<XRSpace> spaces, XRSpace baseSpace, Float32Array transforms); }; +[Exposed=Window] interface XRJointPose: XRPose { readonly attribute float radius; };
diff --git a/third_party/blink/web_tests/external/wpt/scroll-animations/element-based-offset-clamp.html b/third_party/blink/web_tests/external/wpt/scroll-animations/element-based-offset-clamp.html index b1405074..d6da677 100644 --- a/third_party/blink/web_tests/external/wpt/scroll-animations/element-based-offset-clamp.html +++ b/third_party/blink/web_tests/external/wpt/scroll-animations/element-based-offset-clamp.html
@@ -7,25 +7,19 @@ <script src="testcommon.js"></script> <style> +/* + * Overflow hidden prevents user scroll including mouse wheel; however, the + * element is still a scrollable container and can be scrolled programmatically. + * Removing the visible scrollbars in this manner simplifies the position + * calculations in the text. + */ .scroller { - overflow: scroll; + overflow: hidden; height: 500px; width: 500px; will-change: transform; } -/* Disable scrollbars to simplify the calculations in the test. */ -.scroller { - scrollbar-width: 0; -} -/* -Chrome does not support scrollbar-width so we use this non-standard property -until it does. -*/ -.scroller::-webkit-scrollbar { - display: none; -} - .contents { height: 1200px; width: 1200px; @@ -82,6 +76,10 @@ const target = scroller.querySelector("#target"); + // Force layout before creating the scroll timeline to ensure the correct + // scroll range. + target.offsetHeight; + const timeline = createScrollTimeline(t, { scrollSource: scroller, orientation: config.orientation, @@ -212,4 +210,4 @@ createScrollAnimationTest(description, config); } } -</script> \ No newline at end of file +</script>
diff --git a/third_party/blink/web_tests/external/wpt/scroll-animations/element-based-offset.html b/third_party/blink/web_tests/external/wpt/scroll-animations/element-based-offset.html index b70bd5f..d485e9ef 100644 --- a/third_party/blink/web_tests/external/wpt/scroll-animations/element-based-offset.html +++ b/third_party/blink/web_tests/external/wpt/scroll-animations/element-based-offset.html
@@ -66,7 +66,11 @@ t.add_cleanup(() => scroller.remove()); const start = scroller.querySelector("#start"); - const end = scroller.querySelector("#end") + const end = scroller.querySelector("#end"); + + // Force layout to ensure the scroll timeline gets the correct scroll + // range. + start.offsetHeight; const timeline = createScrollTimeline(t, { scrollSource: scroller, @@ -202,4 +206,4 @@ createScrollAnimationTest(description, config); } } -</script> \ No newline at end of file +</script>
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/line_width_numeric_overflow-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/line_width_numeric_overflow-expected.txt deleted file mode 100644 index 6a63c082..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/line_width_numeric_overflow-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -FAIL line_width_numeric_overflow resources/testharness.js:2001:25) - expected <div style="white-space: pre-wrap">|<select style="margin-left: 1e9px"><option>ab</option></select>xy</div>, - but got <div style="white-space: pre-wrap"><select style="margin-left: 1e9px"><option>ab</option></select>|xy</div>, - sameupto <div style="white-space: pre-wrap"> -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/http/tests/devtools/background-services/background-service-grid.js b/third_party/blink/web_tests/http/tests/devtools/background-services/background-service-grid.js index 4a42630..df78734 100644 --- a/third_party/blink/web_tests/http/tests/devtools/background-services/background-service-grid.js +++ b/third_party/blink/web_tests/http/tests/devtools/background-services/background-service-grid.js
@@ -51,37 +51,43 @@ // Grid should have an entry now. backgroundServiceModel.backgroundServiceEventReceived({ - timestamp: 1556889085, // 2019-05-03 14:11:25.000. - origin: 'http://127.0.0.1:8000/', - serviceWorkerRegistrationId: 42, // invalid. - service: Protocol.BackgroundService.ServiceName.BackgroundFetch, - eventName: 'Event1', - instanceId: 'Instance1', - eventMetadata: [], + backgroundServiceEvent: { + timestamp: 1556889085, // 2019-05-03 14:11:25.000. + origin: 'http://127.0.0.1:8000/', + serviceWorkerRegistrationId: 42, // invalid. + service: Protocol.BackgroundService.ServiceName.BackgroundFetch, + eventName: 'Event1', + instanceId: 'Instance1', + eventMetadata: [], + }, }); dumpBackgroundServiceGrid(); // Event from a different service is ignored. backgroundServiceModel.backgroundServiceEventReceived({ - timestamp: 1556889085, // 2019-05-03 14:11:25.000. - origin: 'http://127.0.0.1:8000/', - serviceWorkerRegistrationId: 42, // invalid. - service: Protocol.BackgroundService.ServiceName.BackgroundSync, - eventName: 'Event1', - instanceId: 'Instance2', - eventMetadata: [], + backgroundServiceEvent: { + timestamp: 1556889085, // 2019-05-03 14:11:25.000. + origin: 'http://127.0.0.1:8000/', + serviceWorkerRegistrationId: 42, // invalid. + service: Protocol.BackgroundService.ServiceName.BackgroundSync, + eventName: 'Event1', + instanceId: 'Instance2', + eventMetadata: [], + }, }); dumpBackgroundServiceGrid(); // Event from a different origin is ignored. backgroundServiceModel.backgroundServiceEventReceived({ - timestamp: 1556889085, // 2019-05-03 14:11:25.000. - origin: 'http://127.0.0.1:8080/', - serviceWorkerRegistrationId: 42, // invalid. - service: Protocol.BackgroundService.ServiceName.BackgroundFetch, - eventName: 'Event2', - instanceId: 'Instance1', - eventMetadata: [], + backgroundServiceEvent: { + timestamp: 1556889085, // 2019-05-03 14:11:25.000. + origin: 'http://127.0.0.1:8080/', + serviceWorkerRegistrationId: 42, // invalid. + service: Protocol.BackgroundService.ServiceName.BackgroundFetch, + eventName: 'Event2', + instanceId: 'Instance1', + eventMetadata: [], + }, }); dumpBackgroundServiceGrid();
diff --git a/third_party/blink/web_tests/http/tests/devtools/background-services/background-services-panel.js b/third_party/blink/web_tests/http/tests/devtools/background-services/background-services-panel.js index 35a51de..5db4fc6 100644 --- a/third_party/blink/web_tests/http/tests/devtools/background-services/background-services-panel.js +++ b/third_party/blink/web_tests/http/tests/devtools/background-services/background-services-panel.js
@@ -55,22 +55,26 @@ dumpPreviewPanel(); backgroundServiceModel.backgroundServiceEventReceived({ - timestamp: 1556889085, // 2019-05-03 14:11:25.000. - origin: 'http://127.0.0.1:8000/', - serviceWorkerRegistrationId: 42, // invalid. - service: Protocol.BackgroundService.ServiceName.BackgroundFetch, - eventName: 'Event1', - instanceId: 'Instance1', - eventMetadata: [], + backgroundServiceEvent: { + timestamp: 1556889085, // 2019-05-03 14:11:25.000. + origin: 'http://127.0.0.1:8000/', + serviceWorkerRegistrationId: 42, // invalid. + service: Protocol.BackgroundService.ServiceName.BackgroundFetch, + eventName: 'Event1', + instanceId: 'Instance1', + eventMetadata: [], + } }); backgroundServiceModel.backgroundServiceEventReceived({ - timestamp: 1556889085, // 2019-05-03 14:11:25.000. - origin: 'http://127.0.0.1:8000/', - serviceWorkerRegistrationId: 42, // invalid. - service: Protocol.BackgroundService.ServiceName.BackgroundFetch, - eventName: 'Event2', - instanceId: 'Instance1', - eventMetadata: [{key: 'key', value: 'value'}], + backgroundServiceEvent: { + timestamp: 1556889085, // 2019-05-03 14:11:25.000. + origin: 'http://127.0.0.1:8000/', + serviceWorkerRegistrationId: 42, // invalid. + service: Protocol.BackgroundService.ServiceName.BackgroundFetch, + eventName: 'Event2', + instanceId: 'Instance1', + eventMetadata: [{key: 'key', value: 'value'}], + } }); dumpPreviewPanel();
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium index 3ea9049..c753e06 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-3-1-g82d331556 -Revision: 82d331556ce73de07c16afd51a865ba1ff806a65 +Version: VER-2-10-3-3-g840ce58f9 +Revision: 840ce58f94bafdd24a138a9f7920becb5a30695f CPEPrefix: cpe:/a:freetype:freetype:2.10.1 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses"
diff --git a/third_party/libaddressinput/chromium/resources/address_input_strings_iw.xtb b/third_party/libaddressinput/chromium/resources/address_input_strings_iw.xtb index 53db534f..ab52cf3 100644 --- a/third_party/libaddressinput/chromium/resources/address_input_strings_iw.xtb +++ b/third_party/libaddressinput/chromium/resources/address_input_strings_iw.xtb
@@ -1,7 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="iw"> -<translation id="1340068511406764697">עליך לספק מיקוד, לדוגמה <ph name="EXAMPLE" />. אינך יודע מה המיקוד? תוכל לגלות <ph name="BEGIN_LINK" />כאן<ph name="END_LINK" />.</translation> +<translation id="1340068511406764697">עליך לספק מיקוד, לדוגמה <ph name="EXAMPLE" />. <ph name="BEGIN_LINK" />לבירור המיקוד שלך<ph name="END_LINK" />.</translation> <translation id="2053553514270667976">מספר / מיקוד</translation> <translation id="2096368010154057602">מחלקה</translation> <translation id="2577522251608256362">שכונה</translation>
diff --git a/tools/binary_size/libsupersize/archive.py b/tools/binary_size/libsupersize/archive.py index 0683875..0597ba9 100644 --- a/tools/binary_size/libsupersize/archive.py +++ b/tools/binary_size/libsupersize/archive.py
@@ -102,17 +102,25 @@ 'assets/webapk_dex_version.txt': '../../chrome/android/webapk/libs/runtime_library_version.gni', 'lib/armeabi-v7a/libarcore_sdk_c_minimal.so': - '../../third_party/arcore-android-sdk', + '../../third_party/arcore-android-sdk/BUILD.gn', 'lib/armeabi-v7a/libarcore_sdk_c.so': - '../../third_party/arcore-android-sdk', + '../../third_party/arcore-android-sdk/BUILD.gn', 'lib/armeabi-v7a/libcrashpad_handler_trampoline.so': - '../../third_party/crashpad/libcrashpad_handler_trampoline.so', + '../../third_party/crashpad/BUILD.gn', 'lib/armeabi-v7a/libyoga.so': - '../../chrome/android/feed', + '../../chrome/android/feed/BUILD.gn', 'lib/armeabi-v7a/libelements.so': - '../../chrome/android/feed', + '../../chrome/android/feed/BUILD.gn', + 'lib/arm64-v8a/libarcore_sdk_c_minimal.so': + '../../third_party/arcore-android-sdk/BUILD.gn', + 'lib/arm64-v8a/libarcore_sdk_c.so': + '../../third_party/arcore-android-sdk/BUILD.gn', 'lib/arm64-v8a/libcrashpad_handler_trampoline.so': - '../../third_party/crashpad/libcrashpad_handler_trampoline.so', + '../../third_party/crashpad/BUILD.gn', + 'lib/arm64-v8a/libyoga.so': + '../../chrome/android/feed/BUILD.gn', + 'lib/arm64-v8a/libelements.so': + '../../chrome/android/feed/BUILD.gn', }
diff --git a/tools/grit/grit_rule.gni b/tools/grit/grit_rule.gni index a8c6802..be2ed4d 100644 --- a/tools/grit/grit_rule.gni +++ b/tools/grit/grit_rule.gni
@@ -342,3 +342,110 @@ output_name = _grit_output_name } } + +if (is_android) { + import("//build/config/android/rules.gni") + + # Declare a target that generates localized strings.xml from a .grd file. + # + # If this target is included in the deps of an android resources/library/apk, + # the strings.xml will be included with that target. + # + # Variables + # deps: Specifies the dependencies of this target. + # grd_file: Path to the .grd file to generate strings.xml from. + # outputs: Expected grit outputs (see grit rule). + # + # Example + # java_strings_grd("foo_strings_grd") { + # grd_file = "foo_strings.grd" + # } + template("java_strings_grd") { + forward_variables_from(invoker, [ "testonly" ]) + + _resources_zip = "$target_out_dir/$target_name.resources.zip" + _grit_target_name = "${target_name}__grit" + _grit_output_dir = "$target_gen_dir/${target_name}_grit_output" + + grit(_grit_target_name) { + forward_variables_from(invoker, + [ + "deps", + "defines", + ]) + grit_flags = [ + "-E", + "ANDROID_JAVA_TAGGED_ONLY=false", + ] + output_dir = _grit_output_dir + resource_ids = "" + source = invoker.grd_file + outputs = invoker.outputs + } + + _zip_target_name = "${target_name}__zip" + + zip(_zip_target_name) { + base_dir = _grit_output_dir + + # This needs to get outputs from grit's internal target, not the final + # source_set. + inputs = filter_exclude(get_target_outputs(":${_grit_target_name}_grit"), + [ "*.stamp" ]) + output = _resources_zip + deps = [ ":$_grit_target_name" ] + } + + android_generated_resources(target_name) { + forward_variables_from(invoker, + [ + "resource_overlay", + "visibility", + ]) + generating_target_name = ":$_zip_target_name" + generated_resources_zip = _resources_zip + } + } + + # Declare a target that packages strings.xml generated from a grd file. + # + # If this target is included in the deps of an android resources/library/apk, + # the strings.xml will be included with that target. + # + # Variables + # grit_output_dir: directory containing grit-generated files. + # generated_files: list of android resource files to package. + # + # Example + # java_strings_grd_prebuilt("foo_strings_grd") { + # grit_output_dir = "$root_gen_dir/foo/grit" + # generated_files = [ + # "values/strings.xml" + # ] + # } + template("java_strings_grd_prebuilt") { + forward_variables_from(invoker, [ "testonly" ]) + + _resources_zip = "$target_out_dir/$target_name.resources.zip" + _zip_target_name = "${target_name}__zip" + + zip(_zip_target_name) { + base_dir = invoker.grit_output_dir + inputs = rebase_path(invoker.generated_files, ".", base_dir) + output = _resources_zip + if (defined(invoker.deps)) { + deps = invoker.deps + } + } + + android_generated_resources(target_name) { + forward_variables_from(invoker, + [ + "resource_overlay", + "visibility", + ]) + generating_target_name = ":$_zip_target_name" + generated_resources_zip = _resources_zip + } + } +}
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml index 508d022..e3bb4ed 100644 --- a/tools/metrics/actions/actions.xml +++ b/tools/metrics/actions/actions.xml
@@ -6103,6 +6103,18 @@ </description> </action> +<action name="Download.Open"> + <owner>dtrainor@chromium.org</owner> + <owner>chrome-analysis-team@google.com</owner> + <description> + User opened a download. This action is logged every time the + Download.OpenMethod histogram is logged. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + </description> +</action> + <action name="DownloadNotification.Button_AlwaysOpenType"> <owner>yoshiki@chromium.org</owner> <description>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 643c55d..31dfa38 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -22259,6 +22259,8 @@ <int value="796" label="PhoneHubNotificationsAllowed"/> <int value="797" label="PhoneHubTaskContinuationAllowed"/> <int value="798" label="WifiSyncAndroidAllowed"/> + <int value="799" label="SecurityTokenSessionBehavior"/> + <int value="800" label="SecurityTokenSessionNotificationSeconds"/> </enum> <enum name="EnterprisePolicyDeviceIdValidity"> @@ -29775,7 +29777,7 @@ <int value="3543" label="WebGLRenderingContextMakeXRCompatible"/> <int value="3544" label="V8WebGLCompressedTextureASTC_GetSupportedProfiles_Method"/> - <int value="3545" label="IdentifiabilityStudyReserved3545"/> + <int value="3545" label="HTMLCanvasGetContext"/> <int value="3546" label="V8BeforeInstallPromptEvent_Platforms_AttributeGetter"/> <int value="3547" label="IdentifiabilityStudyReserved3547"/> @@ -57447,6 +57449,15 @@ <int value="4" label="REVOKED"/> </enum> +<enum name="PermissionAutoRevocationHistory"> + <summary> + Track whether the permission has been automatically revoked in the past at + least once. + </summary> + <int value="0" label="NONE"/> + <int value="1" label="PREVIOUSLY_AUTO_REVOKED"/> +</enum> + <enum name="PermissionEmbargoStatus"> <int value="0" label="NOT_EMBARGOED"/> <int value="1" label="BLACKLISTED"/>
diff --git a/tools/metrics/histograms/histograms_xml/cros/histograms.xml b/tools/metrics/histograms/histograms_xml/cros/histograms.xml index 07da023..f7c4373 100644 --- a/tools/metrics/histograms/histograms_xml/cros/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/cros/histograms.xml
@@ -102,8 +102,9 @@ </histogram> <histogram name="CrosDisksClient.MountCompletedError" - enum="CrosDisksClientMountError" expires_after="2021-03-28"> - <owner>amistry@chromium.org</owner> + enum="CrosDisksClientMountError" expires_after="2021-10-19"> + <owner>dats@chromium.org</owner> + <owner>fdegros@chromium.org</owner> <summary> The error code of disk mount signals received from the Chrome OS cros-disks daemon. @@ -111,8 +112,9 @@ </histogram> <histogram name="CrosDisksClient.MountErrorMountType" - enum="CrosDisksMountTypeError" expires_after="2021-02-14"> - <owner>amistry@chromium.org</owner> + enum="CrosDisksMountTypeError" expires_after="2021-10-19"> + <owner>dats@chromium.org</owner> + <owner>fdegros@chromium.org</owner> <summary> The {mount type}x{mount error code} received from the Chrome OS cros-disks daemon. @@ -120,16 +122,18 @@ </histogram> <histogram name="CrosDisksClient.MountTime" units="ms" - expires_after="2020-11-08"> - <owner>amistry@chromium.org</owner> + expires_after="2021-10-19"> + <owner>dats@chromium.org</owner> + <owner>fdegros@chromium.org</owner> <summary> Time taken by the Chrome OS cros-disks daemon to perform a Mount operation. </summary> </histogram> <histogram name="CrosDisksClient.UnmountError" enum="CrosDisksClientMountError" - expires_after="2020-10-25"> - <owner>amistry@chromium.org</owner> + expires_after="2021-10-19"> + <owner>dats@chromium.org</owner> + <owner>fdegros@chromium.org</owner> <summary> The error code of disk unmount operations returned from the Chrome OS cros-disks daemon. @@ -137,8 +141,9 @@ </histogram> <histogram name="CrosDisksClient.UnmountTime" units="ms" - expires_after="2020-11-08"> - <owner>amistry@chromium.org</owner> + expires_after="2021-10-19"> + <owner>dats@chromium.org</owner> + <owner>fdegros@chromium.org</owner> <summary> Time taken by the Chrome OS cros-disks daemon to perform an Unmount operation.
diff --git a/tools/metrics/histograms/histograms_xml/google/histograms.xml b/tools/metrics/histograms/histograms_xml/google/histograms.xml index 43c75ef2..be3e8bd 100644 --- a/tools/metrics/histograms/histograms_xml/google/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/google/histograms.xml
@@ -21,7 +21,8 @@ <histograms> -<histogram name="GoogleUpdate.ErrorHresult" enum="Hresult" expires_after="M86"> +<histogram name="GoogleUpdate.ErrorHresult" enum="Hresult" + expires_after="2021-12-31"> <owner>grt@chromium.org</owner> <owner>ydago@chromium.org</owner> <summary>The HRESULT for a failed on-demand update check.</summary> @@ -212,14 +213,14 @@ </histogram> <histogram name="GoogleUpdate.UpdateErrorCode" enum="GoogleUpdateErrorCode" - expires_after="M86"> + expires_after="2021-12-31"> <owner>grt@chromium.org</owner> <owner>ydago@chromium.org</owner> <summary>The error code for a failed on-demand update check.</summary> </histogram> <histogram name="GoogleUpdate.UpgradeResult" enum="GoogleUpdateUpgradeStatus" - expires_after="M86"> + expires_after="2021-12-31"> <owner>grt@chromium.org</owner> <owner>ydago@chromium.org</owner> <summary>The result of an on-demand update check.</summary>
diff --git a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml index 975c8f7..9d7ca6e 100644 --- a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml +++ b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
@@ -18459,6 +18459,12 @@ <suffix name="GetData" label="This happens as a result of missing data in response from GetData() call."/> + <suffix name="ModelReadyToSync" + label="This happens as a result of a ModelReadyToSync() call with + metadata batch containing entities with duplicate + client-tag-hashes (which indicates that all but one from each + equivalence class are previous orphans). The type of the orphan + is reported in this histogram, one for each orphan."/> <suffix name="Put" label="This happens as a result of a Put() call with an entity whose client-tag-hash is already tracked by the processor (which
diff --git a/tools/metrics/histograms/histograms_xml/permissions/histograms.xml b/tools/metrics/histograms/histograms_xml/permissions/histograms.xml index 1636362c..a9cabde 100644 --- a/tools/metrics/histograms/histograms_xml/permissions/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/permissions/histograms.xml
@@ -146,6 +146,16 @@ </summary> </histogram> +<histogram name="Permissions.CrowdDeny.PreloadData.IsLoadedAtAbuseCheckTime" + enum="Boolean" expires_after="2021-04-04"> + <owner>elklm@chromium.org</owner> + <owner>src/components/permissions/PERMISSIONS_OWNERS</owner> + <summary> + Records, each time during an abusive origin verification, whether preload + data has been loaded from the disk. + </summary> +</histogram> + <histogram name="Permissions.CrowdDeny.PreloadData.NotificationUxQuality" enum="CrowdDenyNotificationUxQuality" expires_after="2021-04-04"> <owner>andypaicu@chromium.org</owner> @@ -157,6 +167,16 @@ </summary> </histogram> +<histogram name="Permissions.CrowdDeny.PreloadData.VersionAtAbuseCheckTime" + units="date" expires_after="2021-04-04"> + <owner>elklm@chromium.org</owner> + <owner>src/components/permissions/PERMISSIONS_OWNERS</owner> + <summary> + Records, each time abusive origin verification is performed, the version of + the Crowd Deny preload data on disk (not necessarily loaded). + </summary> +</histogram> + <histogram name="Permissions.CrowdDeny.PreloadData.WarningOnly" enum="Boolean" expires_after="2021-02-14"> <owner>andypaicu@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/profile/histograms.xml b/tools/metrics/histograms/histograms_xml/profile/histograms.xml index 69c2c6c5..8078d9228 100644 --- a/tools/metrics/histograms/histograms_xml/profile/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/profile/histograms.xml
@@ -493,7 +493,7 @@ </histogram> <histogram name="Profile.SyncCustomize" enum="ProfileSyncCustomize" - expires_after="M85"> + expires_after="M92"> <owner>msalama@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary>
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml index e39001d8..c2ecea0d 100644 --- a/tools/metrics/ukm/ukm.xml +++ b/tools/metrics/ukm/ukm.xml
@@ -10172,6 +10172,13 @@ initiated by a user gesture. </summary> </metric> + <metric name="PermissionAutoRevocationHistory" + enum="PermissionAutoRevocationHistory"> + <summary> + An enum of type PermissionAutoRevocationHistory, representing whether the + permission has been automatically revoked in the past at least once. + </summary> + </metric> <metric name="PermissionType"> <summary> An enum of type ContentSettingsType.
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 1969e9ff..abda678 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -1,8 +1,8 @@ { "trace_processor_shell": { "win": { - "hash": "c6324f5abb57373f80298484a41f0d81bc898af6", - "remote_path": "perfetto_binaries/trace_processor_shell/win/935a915963e1482109b102c82585d78c12112b31/trace_processor_shell.exe" + "hash": "fcb274275ef625797671c8073cf21de24e423807", + "remote_path": "perfetto_binaries/trace_processor_shell/win/7411aeba4d3b11872828b8b15ac9bfddd63f4e6c/trace_processor_shell.exe" }, "mac": { "hash": "eedc74edfa9a270f9253e946efe24eedda17a19f",
diff --git a/tools/perf/core/tbmv3/metrics/power_rails_metric.sql b/tools/perf/core/tbmv3/metrics/power_rails_metric.sql index 59ae11f..b3fc61ce 100644 --- a/tools/perf/core/tbmv3/metrics/power_rails_metric.sql +++ b/tools/perf/core/tbmv3/metrics/power_rails_metric.sql
@@ -4,47 +4,7 @@ -- See go/power-mobile-benchmark for the list of supported devices. -- Output values are in Joules (Watt-seconds). --- This is a mapping from counter names on different devices --- to what subsystems they are measuring. -CREATE TABLE power_counters (name TEXT, subsystem TEXT); - -INSERT INTO power_counters VALUES - ('power.VPH_PWR_S5C_S6C_uws', 'cpu_big'), - ('power.VPH_PWR_S4C_uws', 'cpu_little'), - ('power.VPH_PWR_S2C_S3C_uws', 'soc'), - ('power.VPH_PWR_OLED_uws', 'display'), - ('power.PPVAR_VPH_PWR_S1A_S9A_S10A_uws', 'soc'), - ('power.PPVAR_VPH_PWR_S2A_S3A_uws', 'cpu_big'), - ('power.PPVAR_VPH_PWR_S1C_uws', 'cpu_little'), - ('power.WCN3998_VDD13 [from PP1304_L2C]_uws', 'wifi'), - ('power.PPVAR_VPH_PWR_WLAN_uws', 'wifi'), - ('power.PPVAR_VPH_PWR_OLED_uws', 'display'), - ('power.PPVAR_VPH_PWR_QTM525_uws', 'cellular'), - ('power.PPVAR_VPH_PWR_RF_uws', 'cellular'); - --- Convert power counter data into table of events, where each event has --- start timestamp, duration and the average power drain during its duration --- in Watts. --- Note that power counters wrap around at different values on different --- devices. When that happens, we ignore the value before overflow, and only --- take into account the value after it. This underestimates the actual power --- drain between those counters. -CREATE VIEW drain_in_watts AS -SELECT - name, - ts, - LEAD(ts) OVER (PARTITION BY track_id ORDER BY ts) - ts as dur, - CASE - WHEN LEAD(value) OVER (PARTITION BY track_id ORDER BY ts) >= value - THEN (LEAD(value) OVER (PARTITION BY track_id ORDER BY ts) - value) - ELSE LEAD(value) OVER (PARTITION BY track_id ORDER BY ts) - END / - (LEAD(ts) OVER (PARTITION BY track_id ORDER BY ts) - ts) * 1e3 - AS drain_w -FROM counter -JOIN counter_track ON (counter.track_id = counter_track.id) -WHERE - counter_track.type = 'counter_track' AND name LIKE "power.%"; +SELECT RUN_METRIC('android/power_drain_in_watts.sql'); CREATE VIEW run_story_event AS SELECT ts, dur
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb index 59c38a247..4773c64 100644 --- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb +++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_iw.xtb
@@ -15,7 +15,7 @@ <translation id="2223143012868735942">מסנן צבע הניתן להתאמה המופעל באתרים כדי לשפר את ההבחנה בין צבעים.</translation> <translation id="2394933097471027016">נסה עכשיו - דפדוף עם סמן מופעל תמיד בדף זה!</translation> <translation id="2471847333270902538">ערכת צבעים עבור <ph name="SITE" />:</translation> -<translation id="2648340354586434750">לחץ לחיצה ארוכה על <span class='key'>Option</span> כדי לעבור לפי מילים.</translation> +<translation id="2648340354586434750">יש ללחוץ לחיצה ארוכה על <span class='key'>Option</span> כדי לעבור לפי מילים.</translation> <translation id="2795227192542594043">תוסף זה מספק סמן הניתן להזזה בדף האינטרנט, כך שתוכל לבחור טקסט באמצעות המקלדת.</translation> <translation id="2808027189040546825">שלב 1: בחר את השורה המכילה את הכוכבים העמומים ביותר:</translation> <translation id="2965611304828530558"><p>כשאתה מגיע לקישור או לבקרה, מתבצע מיקוד אוטומטי בהם. הקש על <span class='key'>Enter</span> כדי ללחוץ על קישור או על לחצן. </p> <p> כאשר בקרה ממוקדת (כגון תיבת טקסט או תיבת רשימה) לוכדת מקשי חצים, הקש על <span class='key'>Esc</span> ולאחר מכן על מקש החץ שמאלה או ימינה, כדי להמשיך דפדוף עם סמן. </p> <p> לחלופין, הקש על <span class='key'>Tab</span> כדי לעבור לבקרה הבאה הניתנת למיקוד. </p></translation> @@ -63,6 +63,6 @@ <translation id="8260673944985561857">אפשרויות דפדוף עם סמן</translation> <translation id="8321034316479930120">מדיניות בנושא אנימציה</translation> <translation id="8480209185614411573">ניגודיות גבוהה</translation> -<translation id="8609925175482059018">הקש על <span class='key'>F7</span> כדי להפעיל דפדוף עם סמן. כדי להשבית, הקש שוב על מקש זה.</translation> +<translation id="8609925175482059018">יש להקיש על <span class='key'>F7</span> כדי להפעיל דפדוף עם סמן טקסט. כדי להשבית אותו, יש להקיש שוב על מקש זה.</translation> <translation id="894241283505723656">תיאורים ארוכים בתפריט הקשר</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn index c682901..7886374 100644 --- a/ui/android/BUILD.gn +++ b/ui/android/BUILD.gn
@@ -5,6 +5,7 @@ import("//build/config/android/rules.gni") import("//build/config/locales.gni") import("//testing/test.gni") +import("//tools/grit/grit_rule.gni") assert(is_android)
diff --git a/ui/chromeos/translations/ui_chromeos_strings_as.xtb b/ui/chromeos/translations/ui_chromeos_strings_as.xtb index f8b5e00d..082141a 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_as.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_as.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">ফৰাচী</translation> <translation id="3254434849914415189"><ph name="FILE_TYPE" /> ফাইলৰ বাবে ডিফ'ল্ট এপ্ বাছনি কৰক:</translation> <translation id="3264582393905923483">প্ৰসংগ</translation> +<translation id="3272909651715601089">"<ph name="PATH" />" খুলিব পৰা নগ’ল</translation> <translation id="3280431534455935878">সাজু কৰি থকা হৈছে</translation> <translation id="3280987981688031357">ভিনাইল ৰেকৰ্ড</translation> <translation id="3296763833017966289">জর্জিয়ান</translation> @@ -307,6 +308,7 @@ <translation id="4477219268485577442">বুলগেৰিয়ান ফ’নেটিক</translation> <translation id="4479812471636796472">ইউ. এছ. ডভ’ৰাক কীব’র্ড</translation> <translation id="4522570452068850558">সবিশেষ</translation> +<translation id="4527800702232535228">এই ফ’ল্ডাৰটো Parallels Desktopৰ সৈতে শ্বেয়াৰ কৰা হৈছে</translation> <translation id="4552678318981539154">অধিক ষ্ট’ৰেজ কিনক</translation> <translation id="4559767610552730302">ব’কে’</translation> <translation id="4572815280350369984"><ph name="FILE_TYPE" /> ফাইল</translation> @@ -324,6 +326,7 @@ <translation id="4694604912444486114">বান্দৰ</translation> <translation id="4697043402264950621">ফাইলৰ সূচী <ph name="COLUMN_NAME" /> অনুসৰি ঊৰ্ধ্বক্ৰমিক ভাৱে সজোৱা হৈছে।</translation> <translation id="4711094779914110278">তুৰ্কী</translation> +<translation id="4712283082407695269">"<ph name="PATH" />" খুলি থকা হৈছে</translation> <translation id="4713544552769165154">এই ফাইলটো Macintosh ছফ্টৱেৰ ব্যৱহাৰ কৰা কম্পিউটাৰৰ বাবেহে সাজি উলিওৱা হৈছে। আপোনাৰ Chrome OSৰ দ্বাৰা চালিত ডিভাইচটোত এই ফাইলটো খুলিব নোৱাৰি। অনুগ্ৰহ কৰি <ph name="BEGIN_LINK" />Chrome Web Store<ph name="END_LINK" />ত এটা উপযোগী বিকল্প এপৰ সন্ধান কৰক।<ph name="BEGIN_LINK_HELP" />অধিক জানক<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449"><ph name="FILE_COUNT" /> খন ফট‘ৰ বেক আপ লোৱা হ‘ল</translation> <translation id="4725511304875193254">কৰ্গি</translation> @@ -521,6 +524,7 @@ <translation id="6558280019477628686">কোনো আসোঁৱাহ হৈছে। কিছুমান বস্তু মচা নহ’ব পাৰে।</translation> <translation id="656398493051028875">"<ph name="FILENAME" />" মচি থকা হৈছে...</translation> <translation id="6581162200855843583">Google Driveৰ লিংক</translation> +<translation id="6594855146910089723">এই ফ’ল্ডাৰটো Linux আৰু Parallels Desktopৰ সৈতে শ্বেয়াৰ কৰা হৈছে</translation> <translation id="6607272825297743757">ফাইলৰ তথ্য</translation> <translation id="6609332149380188670">Parallels Desktopৰ জৰিয়তে <ph name="NUMBER_OF_ITEMS" /> টা ফ’ল্ডাৰ শ্বেয়াৰ কৰা হৈছে</translation> <translation id="6629841649550503054">সকলো ফাইল <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />ত বেক আপ কৰা হ’ল!</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb index 030d5421..6fb49c2 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">Francés</translation> <translation id="3254434849914415189">Seleccionar la aplicación predeterminada para los archivos <ph name="FILE_TYPE" />:</translation> <translation id="3264582393905923483">Contexto</translation> +<translation id="3272909651715601089">No se pudo abrir "<ph name="PATH" />"</translation> <translation id="3280431534455935878">Preparando la descarga</translation> <translation id="3280987981688031357">Disco de vinilo</translation> <translation id="3296763833017966289">Georgiano</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">Búlgaro fonético</translation> <translation id="4479812471636796472">Teclado Dvorak en inglés de EE.UU.</translation> <translation id="4522570452068850558">Detalles</translation> +<translation id="4527800702232535228">Esta carpeta se comparte con Parallels Desktop</translation> <translation id="4552678318981539154">Comprar más almacenamiento</translation> <translation id="4559767610552730302">Bokeh</translation> <translation id="4572815280350369984">Archivo <ph name="FILE_TYPE" /></translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">Mono</translation> <translation id="4697043402264950621">La lista de archivos se organiza por <ph name="COLUMN_NAME" /> en orden ascendente.</translation> <translation id="4711094779914110278">Turco</translation> +<translation id="4712283082407695269">Abriendo "<ph name="PATH" />"</translation> <translation id="4713544552769165154">Este archivo se diseñó para una computadora con software Macintosh. No es compatible con tu dispositivo que ejecuta el Sistema operativo Chrome. Busca en <ph name="BEGIN_LINK" />Chrome Web Store<ph name="END_LINK" /> para encontrar una aplicación equivalente. <ph name="BEGIN_LINK_HELP" />Más información<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449">Se guardaron <ph name="FILE_COUNT" /> fotos en una copia de seguridad.</translation> <translation id="4725511304875193254">Corgi</translation> @@ -525,6 +528,7 @@ <translation id="6558280019477628686">Se produjo un error. Es posible que no se hayan borrado algunos elementos.</translation> <translation id="656398493051028875">Eliminando "<ph name="FILENAME" />"…</translation> <translation id="6581162200855843583">Vínculo de Google Drive</translation> +<translation id="6594855146910089723">Esta carpeta se comparte con Linux y Parallels Desktop</translation> <translation id="6607272825297743757">Información del archivo</translation> <translation id="6609332149380188670">Se compartieron <ph name="NUMBER_OF_ITEMS" /> carpetas con Parallels Desktop</translation> <translation id="6629841649550503054">Todos los archivos están guardados en una copia de seguridad en <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb index c15a377..f8b0f7d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
@@ -60,6 +60,7 @@ <translation id="1538729222189715449">Linux ફાઇલો ખોલી રહ્યાં છીએ...</translation> <translation id="1547964879613821194">કેનેડિયન અંગ્રેજી</translation> <translation id="1556189134700913550">બધા પર લાગુ કરો</translation> +<translation id="1561842594491319104">Chrome ડિવાઇસ</translation> <translation id="1572585716423026576">વૉલપેપર તરીકે સેટ કરો</translation> <translation id="158809615184981282">ફોરિસ્ત કીબોર્ડ</translation> <translation id="1589128298353575783"><ph name="NUMBER_OF_PB" /> PB</translation> @@ -189,6 +190,7 @@ <translation id="3064388234319122767">લિવ્યંતરણ (zdravo → здраво)</translation> <translation id="3067790092342515856">Windows ફાઇલો</translation> <translation id="3078461028045006476"><ph name="EXTENSION_NAME" /> સાથે શેર કરો</translation> +<translation id="3083975830683400843">Chromebits</translation> <translation id="3116361045094675131">યુકે કીબોર્ડ</translation> <translation id="3126026824346185272">Ctrl</translation> <translation id="3144126448740580210">થઈ ગયું</translation> @@ -205,6 +207,7 @@ <translation id="3252266817569339921">ફ્રેન્ચ</translation> <translation id="3254434849914415189"><ph name="FILE_TYPE" /> ફાઇલો માટે ડિફૉલ્ટ ઍપ્લિકેશન પસંદ કરો:</translation> <translation id="3264582393905923483">સંદર્ભ</translation> +<translation id="3272909651715601089">"<ph name="PATH" />" ખોલી શક્યા નથી</translation> <translation id="3280431534455935878">તૈયારી કરી રહ્યાં છીએ</translation> <translation id="3280987981688031357">વિનાઇલ રેકોર્ડ</translation> <translation id="3296763833017966289">જ્યોર્જિઅન</translation> @@ -307,6 +310,7 @@ <translation id="4477219268485577442">બલ્ગેરિયન ધ્વન્યાત્મક</translation> <translation id="4479812471636796472">યુએસ ડ્વોરેક કીબોર્ડ</translation> <translation id="4522570452068850558">વિગતો</translation> +<translation id="4527800702232535228">Parallels Desktop સાથે આ ફોલ્ડર શેર કરવામાં આવ્યું છે</translation> <translation id="4552678318981539154">વધુ સ્ટોરેજ ખરીદો</translation> <translation id="4559767610552730302">બૉકે</translation> <translation id="4572815280350369984"><ph name="FILE_TYPE" /> ફાઇલ</translation> @@ -324,6 +328,7 @@ <translation id="4694604912444486114">વાનર</translation> <translation id="4697043402264950621">ફાઇલ સૂચિને <ph name="COLUMN_NAME" /> દ્વારા ચઢતા ક્રમમાં સૉર્ટ કરેલી છે.</translation> <translation id="4711094779914110278">ટર્કીશ</translation> +<translation id="4712283082407695269">"<ph name="PATH" />" ખોલી રહ્યાં છીએ</translation> <translation id="4713544552769165154">આ ફાઇલની રચના Macintosh સૉફ્ટવેરનો ઉપયોગ કરી રહેલ કમ્પ્યુટર માટે કરી છે. આ Chrome OS ચલાવે છે તેવા તમારા ડિવાઇસ સાથે સુસંગત નથી. કૃપા કરીને અનુકૂળ અવેજી ઍપ્લિકેશન માટે <ph name="BEGIN_LINK" />Chrome વેબ સ્ટોર<ph name="END_LINK" /> પર શોધ કરો.<ph name="BEGIN_LINK_HELP" />વધુ જાણો<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449"><ph name="FILE_COUNT" /> ફોટાનો બેક અપ લેવાયો</translation> <translation id="4725511304875193254">કોર્ગી - કૂતરાની એક પ્રજાતિ</translation> @@ -341,6 +346,7 @@ <translation id="4804827417948292437">એવોકેડો</translation> <translation id="4823651846660089135">ઉપકરણ ફક્ત વાંચવા માટે છે</translation> <translation id="4839847978919684242"><ph name="SELCTED_FILES_COUNT" /> આઇટમ્સ પસંદ કરી</translation> +<translation id="4843566743023903107">Chromebases</translation> <translation id="4849981557599196363">જર્મન (બેલ્જિયમ)</translation> <translation id="4850886885716139402">જુઓ</translation> <translation id="485316830061041779">જર્મન</translation> @@ -470,6 +476,7 @@ <translation id="5932901536148835538">Chromebit</translation> <translation id="5949281959820712067">Linux ઍપને તમારી Google ડ્રાઇવમાં ફાઇલોને સંશોધિત કરવાની પરવાનગી આપો. ફેરફારો તમારા બીજા ડિવાઇસ સાથે સિંક થશે.</translation> <translation id="5955954492236143329"><ph name="NUMBER_OF_ITEMS" /> આઇટમ</translation> +<translation id="5957366693331451795">Chromeboxes</translation> <translation id="5982621672636444458">સૉર્ટ કરવા માટેના વિકલ્પો</translation> <translation id="6005282720244019462">લેટિન અમેરિકન કીબોર્ડ</translation> <translation id="6007237601604674381">ખસેડવું નિષ્ફળ થયું. <ph name="ERROR_MESSAGE" /></translation> @@ -521,6 +528,7 @@ <translation id="6558280019477628686">એક ભૂલ આવી. અમુક આઇટમ કદાચ ડિલીટ કરી શકાઈ નથી.</translation> <translation id="656398493051028875">"<ph name="FILENAME" />" કાઢી નાખી રહ્યું છે...</translation> <translation id="6581162200855843583">Google ડ્રાઇવ લિંક</translation> +<translation id="6594855146910089723">Linux અને Parallels Desktop સાથે આ ફોલ્ડર શેર કરવામાં આવ્યું છે</translation> <translation id="6607272825297743757">ફાઇલ માહિતી</translation> <translation id="6609332149380188670">Parallels ડેસ્કટૉપ સાથે <ph name="NUMBER_OF_ITEMS" /> ફોલ્ડર શેર થયા</translation> <translation id="6629841649550503054">તમામનો <ph name="BEGIN_LINK" />Google ડ્રાઇવ<ph name="END_LINK" /> પર બેકઅપ લેવાયો!</translation> @@ -627,6 +635,7 @@ <translation id="7788080748068240085">"<ph name="FILE_NAME" />"ને ઓફલાઇન સાચવવા માટે તમારે વધુ<ph name="TOTAL_FILE_SIZE" /> સ્થાન ખાલી કરવું જરૂરી છે:<ph name="MARKUP_1" /><ph name="MARKUP_2" />તમને હવે ઓફલાઇન ઍક્સેસ કરવાની જરૂર ન હોય એવી ફાઇલોને અનપિન કરો<ph name="MARKUP_3" /><ph name="MARKUP_4" />તમારા ડાઉનલોડ ફોલ્ડરમાંથી ફાઇલો ડિલીટ કરો<ph name="MARKUP_5" /></translation> <translation id="7794058097940213561">ઉપકરણને ફોર્મેટ કરો</translation> <translation id="7799329977874311193">HTML દસ્તાવેજ</translation> +<translation id="7801354353640549019">Chromebooks</translation> <translation id="7805768142964895445">સ્થિતિ</translation> <translation id="7821462174190887129"><ph name="FILE_COUNT" /> મળી. <ph name="LINE_BREAK1" />
diff --git a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb index 42ee9831..fefb25b 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
@@ -24,7 +24,7 @@ <translation id="1172970565351728681">נותרו כ-<ph name="REMAINING_TIME" /></translation> <translation id="1173894706177603556">שנה שם</translation> <translation id="117624967391683467">מעתיק את <ph name="FILE_NAME" />...</translation> -<translation id="1178581264944972037">השהה</translation> +<translation id="1178581264944972037">השהיה</translation> <translation id="1190144681599273207">הבאת קובץ זה תשתמש בערך ב-<ph name="FILE_SIZE" /> מחבילת הגלישה.</translation> <translation id="1201402288615127009">הבא</translation> <translation id="1208421848177517699">תעתוק (namaste → નમસ્તે)</translation> @@ -161,7 +161,7 @@ <translation id="2782104745158847185">קרתה שגיאה במהלך ההתקנה של אפליקציית Linux</translation> <translation id="2787047795752739979">החלף קובץ מקורי</translation> <translation id="2790805296069989825">מקלדת רוסית</translation> -<translation id="2843806747483486897">שנה את ברירת המחדל...</translation> +<translation id="2843806747483486897">שינוי ברירת המחדל...</translation> <translation id="2850124913210091882">גבה</translation> <translation id="2870836398458454343">תעתוק (مرحبا ← marhaban)</translation> <translation id="288024221176729610">צ'כית</translation> @@ -184,7 +184,7 @@ <translation id="2984337792991268709">היום <ph name="TODAY_DAYTIME" /></translation> <translation id="2994669386200004489">לא ניתן היה לגבות את <ph name="FILE_NAME" /></translation> <translation id="3003633581067744647">מעבר לתצוגה של תמונות ממוזערות</translation> -<translation id="3007214526293698309">תקן את היחס</translation> +<translation id="3007214526293698309">תיקון היחס</translation> <translation id="303198083543495566">גיאוגרפיה</translation> <translation id="3057861065630527966">גבה את התמונות והסרטונים</translation> <translation id="3064388234319122767">תעתוק (zdravo → здраво)</translation> @@ -207,6 +207,7 @@ <translation id="3252266817569339921">צרפתית</translation> <translation id="3254434849914415189">בחר את יישום ברירת המחדל עבור קובצי <ph name="FILE_TYPE" />:</translation> <translation id="3264582393905923483">הקשר</translation> +<translation id="3272909651715601089">לא ניתן היה לפתוח את "<ph name="PATH" />"</translation> <translation id="3280431534455935878">מכין</translation> <translation id="3280987981688031357">תקליט</translation> <translation id="3296763833017966289">גרוזינית</translation> @@ -282,7 +283,7 @@ <translation id="4070370845051020638">שיטת קלט קנטונזית</translation> <translation id="4072248638558688893">מקלדת טמילית (פונטית)</translation> <translation id="4124935795427217608">חד-קרן</translation> -<translation id="4158739975813877944">פתח פלייליסט</translation> +<translation id="4158739975813877944">פתיחת פלייליסט</translation> <translation id="4159731583141908892">ההעברה של <ph name="FILE_NAME" /> הסתיימה.</translation> <translation id="418179967336296930">מקלדת רוסית פונטית (YaZHert)</translation> <translation id="4193154014135846272">מסמך Google</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">בולגרית פונטית</translation> <translation id="4479812471636796472">מקלדת Dvorak אנגלית (ארה"ב)</translation> <translation id="4522570452068850558">פרטים</translation> +<translation id="4527800702232535228">התיקייה הזו משותפת עם Parallels Desktop</translation> <translation id="4552678318981539154">קנה עוד שטח אחסון</translation> <translation id="4559767610552730302">טשטוש</translation> <translation id="4572815280350369984">קובץ <ph name="FILE_TYPE" /></translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">קוף</translation> <translation id="4697043402264950621">רשימת הקבצים ממוינת לפי <ph name="COLUMN_NAME" /> בסדר עולה.</translation> <translation id="4711094779914110278">טורקית</translation> +<translation id="4712283082407695269">הפתיחה של "<ph name="PATH" />" מתבצעת</translation> <translation id="4713544552769165154">קובץ זה מיועד למחשב עם תוכנת Macintosh. הוא אינו תואם למכשיר שלך שבו פועלת מערכת ההפעלה של Chrome. חפש ב<ph name="BEGIN_LINK" />חנות האינטרנט של Chrome<ph name="END_LINK" /> כדי לאתר יישום חלופי מתאים.<ph name="BEGIN_LINK_HELP" />למידע נוסף<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449"><ph name="FILE_COUNT" /> תמונות גובו</translation> <translation id="4725511304875193254">קורגי</translation> @@ -526,6 +529,7 @@ <translation id="6558280019477628686">אירעה שגיאה. ייתכן שפריטים מסוימים לא נמחקו.</translation> <translation id="656398493051028875">מוחק את "<ph name="FILENAME" />"...</translation> <translation id="6581162200855843583">קישור ל-Google Drive</translation> +<translation id="6594855146910089723">התיקייה הזו משותפת עם Linux ועם Parallels Desktop</translation> <translation id="6607272825297743757">פרטי הקובץ</translation> <translation id="6609332149380188670"><ph name="NUMBER_OF_ITEMS" /> תיקיות שותפו עם Parallels Desktop</translation> <translation id="6629841649550503054">הכל מגובה ב-<ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" /></translation> @@ -574,7 +578,7 @@ <translation id="7040138676081995583">פתח באמצעות...</translation> <translation id="7100897339030255923">נבחרו <ph name="COUNT" /> פריטים</translation> <translation id="7106346894903675391">קנה שטח אחסון נוסף...</translation> -<translation id="7126604456862387217">'<b><ph name="SEARCH_STRING" /></b>' - <em>חפש בכונן</em></translation> +<translation id="7126604456862387217">'<b><ph name="SEARCH_STRING" /></b>' – <em>חיפוש ב-Drive</em></translation> <translation id="714034171374937760">Chromebase</translation> <translation id="7170467426996704624">תעתוק (salam → ሰላም)</translation> <translation id="7172053773111046550">מקלדת אסטונית</translation> @@ -656,7 +660,7 @@ <translation id="7917972308273378936">מקלדת ליטאית </translation> <translation id="7925686952655276919">אין להשתמש בנתונים ניידים עבור סנכרון</translation> <translation id="7928710562641958568">הוצא את המכשיר</translation> -<translation id="7943385054491506837">ארה"ב - Colemak</translation> +<translation id="7943385054491506837">ארה"ב – Colemak</translation> <translation id="7953739707111622108">לא ניתן לפתוח מכשיר זה משום שמערכת הקבצים שלו לא זוהתה.</translation> <translation id="7969525169268594403">סלובנית</translation> <translation id="7982283708762922719">גובה</translation> @@ -720,7 +724,7 @@ <translation id="8525306231823319788">מסך מלא</translation> <translation id="8551494947769799688">לטבית</translation> <translation id="8561206103590473338">פיל</translation> -<translation id="8569764466147087991">בחר קובץ לפתיחה</translation> +<translation id="8569764466147087991">יש לבחור קובץ לפתיחה</translation> <translation id="8579285237314169903">מבצע סנכרון ל-<ph name="NUMBER_OF_FILES" /> פריטים...</translation> <translation id="8600173386174225982">רשימת הקבצים מוצגת עכשיו בתצוגת תמונות ממוזערות.</translation> <translation id="8601932370724196034">קובץ תמונה Crostini</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_or.xtb b/ui/chromeos/translations/ui_chromeos_strings_or.xtb index d12365e..c57a11c 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_or.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_or.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">ଫ୍ରେଞ୍ଚ</translation> <translation id="3254434849914415189"><ph name="FILE_TYPE" /> ଫାଇଲ୍ଗୁଡ଼ିକ ପାଇଁ ଡିଫଲ୍ଟ ଆପ୍ ବାଛନ୍ତୁ:</translation> <translation id="3264582393905923483">ପ୍ରସଙ୍ଗ</translation> +<translation id="3272909651715601089">"<ph name="PATH" />" ଖୋଲାଯାଇପାରିଲା ନାହିଁ</translation> <translation id="3280431534455935878">ପ୍ରସ୍ତୁତ ହେଉଛି</translation> <translation id="3280987981688031357">Vinyl ରେକର୍ଡ</translation> <translation id="3296763833017966289">ଜର୍ଜିଆନ୍</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">ବୁଲ୍ଗେରିଆନ୍ ଫୋନେଟିକ୍</translation> <translation id="4479812471636796472">US ଡଭୋର୍କ୍ କୀବୋର୍ଡ୍</translation> <translation id="4522570452068850558">ବିବରଣୀ</translation> +<translation id="4527800702232535228">Parallels Desktop ସହିତ ଏହି ଫୋଲ୍ଡର ସେୟାର୍ କରନ୍ତୁ</translation> <translation id="4552678318981539154">ଅଧିକ ଷ୍ଟୋରେଜ୍ କିଣନ୍ତୁ</translation> <translation id="4559767610552730302">ବୋକେ</translation> <translation id="4572815280350369984"><ph name="FILE_TYPE" /> ଫାଇଲ୍</translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">ମାଙ୍କଡ଼</translation> <translation id="4697043402264950621"><ph name="COLUMN_NAME" /> ଦ୍ୱାରା ଫାଇଲ୍ର ତାଲିକା ସାନରୁ ବଡ଼ କ୍ରମରେ ସଜାଯାଇଛି।</translation> <translation id="4711094779914110278">ତୁର୍କିସ୍</translation> +<translation id="4712283082407695269">"<ph name="PATH" />" ଖୋଲାଯାଉଛି</translation> <translation id="4713544552769165154">ମେସିନ୍ଟୋସ୍ ସଫ୍ଟୱେର୍ ବ୍ୟବହାର କରି ଗୋଟିଏ କମ୍ପ୍ୟୁଟର୍ ପାଇଁ ଏହି ଫାଇଲ୍କୁ ତିଆରି କରାଯାଇଛି। Chrome OS ଚାଲୁଥିବା ଆପଣଙ୍କର ଡିଭାଇସ୍ରେ ଏହା ସୁସଙ୍ଗତ ନୁହେଁ। ଆପ୍ର ଗୋଟିଏ ଉପଯୁକ୍ତ ବିକଳ୍ପ ପାଇଁ ଦୟାକରି <ph name="BEGIN_LINK" />Chrome ୱେବ୍ ଷ୍ଟୋର୍<ph name="END_LINK" /> ସର୍ଚ୍ଚ କରନ୍ତୁ। <ph name="BEGIN_LINK_HELP" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449"><ph name="FILE_COUNT" />ଟି ଫଟୋର ବ୍ୟାକ୍-ଅପ୍ ନିଆଯାଇଛି</translation> <translation id="4725511304875193254">କୋର୍ଗି</translation> @@ -519,6 +522,7 @@ <translation id="6558280019477628686">ଏକ ତ୍ରୁଟି ଦେଖାଦେଲା। କିଛି ଆଇଟମ୍କୁ ଡିଲିଟ୍ ହୋଇନପାରେ।</translation> <translation id="656398493051028875">"<ph name="FILENAME" />" ଡିଲିଟ୍ ହେଉଛି...</translation> <translation id="6581162200855843583">Google Drive ଲିଙ୍କ୍</translation> +<translation id="6594855146910089723">Linux ଏବଂ Parallels Desktop ସହିତ ଏହି ଫୋଲ୍ଡର ସେୟାର୍ କରାଯାଇଛି</translation> <translation id="6607272825297743757">ଫାଇଲ୍ ସୂଚନା</translation> <translation id="6609332149380188670">Parallels Desktop ସହ <ph name="NUMBER_OF_ITEMS" />ଟି ଫୋଲ୍ଡର ସେୟାର୍ କରାଯାଇଛି</translation> <translation id="6629841649550503054"><ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" />ରେ ବ୍ୟାକ୍ଅପ୍ ନିଆଯାଇଛି</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb index 03e9f41..6ed32b1 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ur.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ur.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">فرانسيسی</translation> <translation id="3254434849914415189"><ph name="FILE_TYPE" /> فائلوں کیلئے ڈیفالٹ ایپ منتخب کریں:</translation> <translation id="3264582393905923483">سیاق و سباق</translation> +<translation id="3272909651715601089">"<ph name="PATH" />" کو نہیں کھول سکے</translation> <translation id="3280431534455935878">تیار ہو رہی ہے</translation> <translation id="3280987981688031357">وائنل ریکارڈ</translation> <translation id="3296763833017966289">جارجی</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">بلغاریائی فونیٹک</translation> <translation id="4479812471636796472">امریکی ڈوراک کی بورڈ</translation> <translation id="4522570452068850558">تفصیلات</translation> +<translation id="4527800702232535228">یہ فولڈر Parallels Desktop کے ساتھ اشتراک کردہ ہے</translation> <translation id="4552678318981539154">مزید اسٹوریج خریدیں</translation> <translation id="4559767610552730302">بوکیہ</translation> <translation id="4572815280350369984"><ph name="FILE_TYPE" /> فائل</translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">بندر</translation> <translation id="4697043402264950621">فائل کی فہرست کو صعودی ترتیب میں <ph name="COLUMN_NAME" /> کے لحاظ سے ترتیب دیا گیا۔</translation> <translation id="4711094779914110278">ترکی</translation> +<translation id="4712283082407695269">"<ph name="PATH" />" کھل رہا ہے</translation> <translation id="4713544552769165154">یہ فائل Macintosh سافٹ ویئر استعمال کر رہے کمپیوٹر کیلئے بنائی گئی ہے۔ یہ آپ کے اس آلے کے ساتھ مطابقت پذیر نہیں ہے جو Chrome OS چلاتا ہے۔ براہ کرم ایک مناسب متبادل ایپ کیلئے <ph name="BEGIN_LINK" />Chrome ویب اسٹور تلاش کریں<ph name="END_LINK" />۔<ph name="BEGIN_LINK_HELP" />مزید جانیں<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449"><ph name="FILE_COUNT" /> تصاویر کا بیک اپ لے لیا گیا</translation> <translation id="4725511304875193254">کورگی</translation> @@ -524,6 +527,7 @@ <translation id="6558280019477628686">ایک خرابی پیش آ گئی۔ ہو سکتا ہے کچھ آئٹمز حذف نہ ہوئے ہوں۔</translation> <translation id="656398493051028875">"<ph name="FILENAME" />" کو حذف کیا جا رہا ہے…</translation> <translation id="6581162200855843583">Google Drive لنک</translation> +<translation id="6594855146910089723">یہ فولڈر Linux اورParallels Desktop کے ساتھ اشتراک کردہ ہے</translation> <translation id="6607272825297743757">فائل کی معلومات</translation> <translation id="6609332149380188670">Parallels ڈیسک ٹاپ کے ساتھ اشتراک کردہ <ph name="NUMBER_OF_ITEMS" /> فولڈرز</translation> <translation id="6629841649550503054">سبھی کا <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> میں بیک اپ لے لیا گیا!</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb index 3a1e1b86..1c01053f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">Tiếng Pháp</translation> <translation id="3254434849914415189">Chọn ứng dụng mặc định cho các tệp <ph name="FILE_TYPE" />:</translation> <translation id="3264582393905923483">Ngữ cảnh</translation> +<translation id="3272909651715601089">Không thể mở "<ph name="PATH" />"</translation> <translation id="3280431534455935878">Đang chuẩn bị</translation> <translation id="3280987981688031357">Đĩa than</translation> <translation id="3296763833017966289">Tiếng Georgia</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">Ngữ âm tiếng Bungary</translation> <translation id="4479812471636796472">Bàn phím Dvorak Hoa Kỳ</translation> <translation id="4522570452068850558">Chi tiết</translation> +<translation id="4527800702232535228">Thư mục này được chia sẻ với ứng dụng Parallels Desktop</translation> <translation id="4552678318981539154">Mua thêm dung lượng lưu trữ</translation> <translation id="4559767610552730302">Hiệu ứng Bokeh</translation> <translation id="4572815280350369984">Tệp <ph name="FILE_TYPE" /></translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">Khỉ</translation> <translation id="4697043402264950621">Danh sách tệp được sắp xếp tăng dần theo <ph name="COLUMN_NAME" />.</translation> <translation id="4711094779914110278">Tiếng Thổ Nhĩ Kỳ</translation> +<translation id="4712283082407695269">Đang mở "<ph name="PATH" />"</translation> <translation id="4713544552769165154">Tệp này được thiết kế cho máy tính sử dụng phần mềm Macintosh. Tệp này không tương thích với thiết bị chạy Chrome OS của bạn. Hãy tìm kiếm ứng dụng thay thế phù hợp trên <ph name="BEGIN_LINK" />Cửa hàng Chrome trực tuyến<ph name="END_LINK" />. <ph name="BEGIN_LINK_HELP" />Tìm hiểu thêm<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449">Đã sao lưu <ph name="FILE_COUNT" /> ảnh</translation> <translation id="4725511304875193254">Chó Corgi</translation> @@ -525,6 +528,7 @@ <translation id="6558280019477628686">Đã xảy ra lỗi. Một số mục có thể chưa được xóa.</translation> <translation id="656398493051028875">Đang xóa "<ph name="FILENAME" />"...</translation> <translation id="6581162200855843583">Liên kết Google Drive</translation> +<translation id="6594855146910089723">Thư mục này được chia sẻ với Linux và Parallels Desktop</translation> <translation id="6607272825297743757">Thông tin tệp</translation> <translation id="6609332149380188670">Đã chia sẻ <ph name="NUMBER_OF_ITEMS" /> thư mục với ứng dụng Parallels Desktop</translation> <translation id="6629841649550503054">Đã sao lưu toàn bộ vào <ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb index 4a5e117..6b2211a 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
@@ -207,6 +207,7 @@ <translation id="3252266817569339921">法语</translation> <translation id="3254434849914415189">选择用于打开 <ph name="FILE_TYPE" /> 文件的默认应用:</translation> <translation id="3264582393905923483">上下文</translation> +<translation id="3272909651715601089">无法打开“<ph name="PATH" />”</translation> <translation id="3280431534455935878">正在准备</translation> <translation id="3280987981688031357">黑胶唱片</translation> <translation id="3296763833017966289">格鲁吉亚语</translation> @@ -309,6 +310,7 @@ <translation id="4477219268485577442">保加利亚语(注音)</translation> <translation id="4479812471636796472">英语(美国)德沃夏克键盘</translation> <translation id="4522570452068850558">详细信息</translation> +<translation id="4527800702232535228">已与 Parallels Desktop 共享此文件夹</translation> <translation id="4552678318981539154">购买更多存储空间</translation> <translation id="4559767610552730302">焦外成像</translation> <translation id="4572815280350369984"><ph name="FILE_TYPE" /> 文件</translation> @@ -326,6 +328,7 @@ <translation id="4694604912444486114">猴子</translation> <translation id="4697043402264950621">文件列表按<ph name="COLUMN_NAME" />升序排序。</translation> <translation id="4711094779914110278">土耳其语</translation> +<translation id="4712283082407695269">正在打开“<ph name="PATH" />”</translation> <translation id="4713544552769165154">此文件适用于采用Macintosh软件的计算机,不适用于运行Chrome操作系统的设备。请在<ph name="BEGIN_LINK" />Chrome网上应用店<ph name="END_LINK" />中搜索合适的替代应用。<ph name="BEGIN_LINK_HELP" />了解详情<ph name="END_LINK_HELP" /></translation> <translation id="4724850507808590449">已备份 <ph name="FILE_COUNT" /> 张照片</translation> <translation id="4725511304875193254">柯基犬</translation> @@ -520,6 +523,7 @@ <translation id="6558280019477628686">出错了。系统可能尚未删除某些项。</translation> <translation id="656398493051028875">正在删除“<ph name="FILENAME" />”…</translation> <translation id="6581162200855843583">Google 云端硬盘链接</translation> +<translation id="6594855146910089723">已与 Linux 和 Parallels Desktop 共享此文件夹</translation> <translation id="6607272825297743757">文件信息</translation> <translation id="6609332149380188670">已与 Parallels Desktop 共享 <ph name="NUMBER_OF_ITEMS" /> 个文件夹</translation> <translation id="6629841649550503054">所有文件都已备份到 <ph name="BEGIN_LINK" />Google 云端硬盘<ph name="END_LINK" />!</translation>
diff --git a/ui/file_manager/file_manager_resources.grd b/ui/file_manager/file_manager_resources.grd index 749b388..e973192 100644 --- a/ui/file_manager/file_manager_resources.grd +++ b/ui/file_manager/file_manager_resources.grd
@@ -181,6 +181,7 @@ <if expr="chromeos"> <include name="IDR_IMAGE_LOADER_MANIFEST" file="image_loader/manifest.json" type="BINDATA" /> <include name="IDR_IMAGE_LOADER_BACKGROUND_JS" file="image_loader/background_scripts.js" flattenhtml="true" type="BINDATA" /> + <include name="IDR_IMAGE_LOADER_BACKGROUND_HTML" file="image_loader/background.html" type="BINDATA" /> <include name="IDR_IMAGE_LOADER_CLIENT_JS" file="image_loader/image_loader_client.js" type="BINDATA" /> <include name="IDR_IMAGE_LOADER_PIEX_WASM_JS" file="image_loader/piex/piex.js.wasm" type="BINDATA" /> <include name="IDR_IMAGE_LOADER_PIEX_WASM" file="image_loader/piex/piex.out.wasm" type="BINDATA" />
diff --git a/ui/file_manager/image_loader/background.html b/ui/file_manager/image_loader/background.html new file mode 100644 index 0000000..377021cf --- /dev/null +++ b/ui/file_manager/image_loader/background.html
@@ -0,0 +1,6 @@ +<!DOCTYPE html> +<meta charset="utf-8"> + +<script src="chrome://resources/js/assert.js"></script> +<script src="piex/piex.js.wasm"></script> +<script src="background_scripts.js"></script>
diff --git a/ui/file_manager/image_loader/manifest.json b/ui/file_manager/image_loader/manifest.json index d2cf2409..767e7f5 100644 --- a/ui/file_manager/image_loader/manifest.json +++ b/ui/file_manager/image_loader/manifest.json
@@ -17,11 +17,7 @@ ], "content_security_policy": "default-src 'none'; script-src 'self' 'wasm-eval' blob: filesystem: chrome://resources chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj; style-src 'self' blob: filesystem:; frame-src 'self' blob: filesystem:; img-src 'self' blob: filesystem: data:; media-src 'self' blob: filesystem:; connect-src 'self' blob: filesystem:", "background": { - "scripts": [ - "chrome://resources/js/assert.js", - "piex/piex.js.wasm", - "background_scripts.js" - ], + "page": "background.html", "persistent": false }, "natively_connectable": ["com.google.holding_space_thumbnail_loader"],
diff --git a/ui/strings/translations/ui_strings_iw.xtb b/ui/strings/translations/ui_strings_iw.xtb index 17549bf..2260360 100644 --- a/ui/strings/translations/ui_strings_iw.xtb +++ b/ui/strings/translations/ui_strings_iw.xtb
@@ -18,7 +18,7 @@ <translation id="1306549533752902673">אפליקציות מומלצות</translation> <translation id="1368832886055348810">משמאל לימין</translation> <translation id="1383876407941801731">חפש</translation> -<translation id="1398853756734560583">הגדל</translation> +<translation id="1398853756734560583">הגדלת החלון</translation> <translation id="1414271762428216854"><ph name="APP_NAME" />, אפליקציה מותקנת</translation> <translation id="1450753235335490080">לא ניתן לשתף את ה<ph name="CONTENT_TYPE" /></translation> <translation id="1487931858675166540">הפריט <ph name="SECOND_ITEM_TITLE" /> החליף את <ph name="FIRST_ITEM_TITLE" /></translation> @@ -167,7 +167,7 @@ <translation id="6156262341071374681">הרחב לכל האפליקציות</translation> <translation id="6165508094623778733">למידע נוסף</translation> <translation id="6166852626429024716">חיפוש במכשיר, באפליקציות, בהגדרות, באינטרנט...</translation> -<translation id="6264365405983206840">בחר &הכל</translation> +<translation id="6264365405983206840">בחירת &הכול</translation> <translation id="6351032674660237738">הצעות לאפליקציות</translation> <translation id="6364916375976753737">גלול שמאלה</translation> <translation id="6394627529324717982">פסיק</translation> @@ -232,7 +232,7 @@ <translation id="8247998213073982446"><ph name="APP_NAME" />, אפליקציה</translation> <translation id="8259556432390118667">ערך צבע הקסדצימלי</translation> <translation id="8328145009876646418">קצה שמאלי</translation> -<translation id="8331626408530291785">גלול למעלה</translation> +<translation id="8331626408530291785">גלילה למעלה</translation> <translation id="8352146631962686268">{YEARS,plural, =1{שנה אחת}two{שנתיים}many{# שנים}other{# שנים}}</translation> <translation id="838869780401515933">סימון</translation> <translation id="8393700583063109961">שלח הודעה</translation>
diff --git a/weblayer/browser/java/BUILD.gn b/weblayer/browser/java/BUILD.gn index 1bf9d67..9b135686 100644 --- a/weblayer/browser/java/BUILD.gn +++ b/weblayer/browser/java/BUILD.gn
@@ -5,6 +5,7 @@ import("//build/config/android/config.gni") import("//build/config/android/rules.gni") import("//build/config/locales.gni") +import("//tools/grit/grit_rule.gni") import("//weblayer/variables.gni") _bundle_utils_output =
diff --git a/weblayer/shell/browser/shell_views.cc b/weblayer/shell/browser/shell_views.cc index 93759aeb..d40ed88 100644 --- a/weblayer/shell/browser/shell_views.cc +++ b/weblayer/shell/browser/shell_views.cc
@@ -49,8 +49,7 @@ // Maintain the UI controls and web view for web shell class ShellWindowDelegateView : public views::WidgetDelegateView, - public views::TextfieldController, - public views::ButtonListener { + public views::TextfieldController { public: enum UIControl { BACK_BUTTON, FORWARD_BUTTON, STOP_BUTTON }; @@ -136,8 +135,10 @@ views::ColumnSet* toolbar_column_set = toolbar_layout->AddColumnSet(0); // Back button - auto back_button = - std::make_unique<views::MdTextButton>(this, base::ASCIIToUTF16("Back")); + auto back_button = std::make_unique<views::MdTextButton>( + base::BindRepeating(&Shell::GoBackOrForward, + base::Unretained(shell_.get()), -1), + base::ASCIIToUTF16("Back")); gfx::Size back_button_size = back_button->GetPreferredSize(); toolbar_column_set->AddColumn( views::GridLayout::CENTER, views::GridLayout::CENTER, 0, @@ -145,7 +146,9 @@ back_button_size.width() / 2); // Forward button auto forward_button = std::make_unique<views::MdTextButton>( - this, base::ASCIIToUTF16("Forward")); + base::BindRepeating(&Shell::GoBackOrForward, + base::Unretained(shell_.get()), 1), + base::ASCIIToUTF16("Forward")); gfx::Size forward_button_size = forward_button->GetPreferredSize(); toolbar_column_set->AddColumn( views::GridLayout::CENTER, views::GridLayout::CENTER, 0, @@ -153,7 +156,8 @@ forward_button_size.width() / 2); // Refresh button auto refresh_button = std::make_unique<views::MdTextButton>( - this, base::ASCIIToUTF16("Refresh")); + base::BindRepeating(&Shell::Reload, base::Unretained(shell_.get())), + base::ASCIIToUTF16("Refresh")); gfx::Size refresh_button_size = refresh_button->GetPreferredSize(); toolbar_column_set->AddColumn( views::GridLayout::CENTER, views::GridLayout::CENTER, 0, @@ -161,7 +165,8 @@ refresh_button_size.width() / 2); // Stop button auto stop_button = std::make_unique<views::MdTextButton>( - this, base::ASCIIToUTF16("Stop (100%)")); + base::BindRepeating(&Shell::Stop, base::Unretained(shell_.get())), + base::ASCIIToUTF16("Stop (100%)")); int stop_button_width = stop_button->GetPreferredSize().width(); toolbar_column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, 0, @@ -231,18 +236,6 @@ return false; } - // Overridden from ButtonListener - void ButtonPressed(views::Button* sender, const ui::Event& event) override { - if (sender == back_button_) - shell_->GoBackOrForward(-1); - else if (sender == forward_button_) - shell_->GoBackOrForward(1); - else if (sender == refresh_button_) - shell_->Reload(); - else if (sender == stop_button_) - shell_->Stop(); - } - // Overridden from WidgetDelegateView base::string16 GetWindowTitle() const override { return title_; }