diff --git a/DEPS b/DEPS index 37c97c5..dd60cf8 100644 --- a/DEPS +++ b/DEPS
@@ -313,11 +313,11 @@ # 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': '02bb74d5a62e165ec611839563f66ae9f665a7d0', + 'v8_revision': '6c11bd07c6f7e8152f4276beb5af0c241ad93d7a', # 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': '70f1bf2aad5939ac54ae1b08138cdb10a2680b7e', + 'angle_revision': '32fa13927f8125b97a4c59edf7347c9a01674285', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -360,7 +360,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': 'e78e2d29a95baf6053e30cc9422aa20319259803', + 'freetype_revision': 'ea9fca0add69e1613eee3290e18c1f8cb4d17a43', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. @@ -396,7 +396,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': 'd01f6a99a5dd2e2bf3471b3afaf66c8d048b51ac', + 'devtools_frontend_revision': '4054d1ec6a7211c707847713eda35c00d047cbe9', # 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. @@ -436,7 +436,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. - 'dawn_revision': '7c6e873c013f0a3289ad43670c256f18f28276bd', + 'dawn_revision': '2200823afd79add9701ba456845763e32b4716a8', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -460,7 +460,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling nearby # and whatever else without interference from each other. - 'nearby_revision': '37225fab5abf6d897e16c43082b64ed7bdd0fc3c', + 'nearby_revision': '472a1d847b581b73bb577de6a063214606d9a685', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling securemessage # and whatever else without interference from each other. @@ -472,7 +472,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. - 'cros_components_revision': '16652902a23064cd599d7d4049f6e17e365dbcbe', + 'cros_components_revision': '0ce149215c1ecdca92181f4a9e77d3f74c3669ad', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -484,7 +484,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. - 'libunwind_revision': '54cb62e9f8fd711d4b3912c760411151750be5b4', + 'libunwind_revision': '123963cbd61d6a5c5a1b6cedb9a8e6845128677b', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -795,7 +795,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - 'df3c84bdbd04a4324d8e33c8c7ef2a6590263fc9', + '675aa3a3fdf33d17a7f36132f8c8879b0fd6b370', 'condition': 'checkout_android and checkout_src_internal', }, @@ -984,7 +984,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'zWtfYsyHW87Yb3r-WN7EKvOX4uOCccgjboxpDG3dyUsC', + 'version': 'orhmWBieV2HQe8r_6lHZ2myJN0FSXpNO-X_GaO9A5lgC', }, ], 'condition': 'checkout_android', @@ -1225,7 +1225,7 @@ Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), 'src/third_party/devtools-frontend-internal': { - 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '172dbf3f463ef70ec79c68536af20280eab43e40', + 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + 'b1a213f3fa53081ef7e40ed6237e706cff33692e', 'condition': 'checkout_src_internal', }, @@ -1700,7 +1700,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '75c6500b8dabe5344ac0255cb3d33182b4fd161f', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '1c46d9577664f7cd811b4fe9c884f66a99697615', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1885,7 +1885,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '0ac5d460dab4d56f3c07c43eee895557c9d3b9e4', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '0ae4d249c71b0ecfc9031efc947e98cfa9f596df', + Var('webrtc_git') + '/src.git' + '@' + 'fb8e3de0a8b9b2bba8098ed07be06115c13e904e', # Wuffs' canonical repository is at github.com/google/wuffs, but we use # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file. @@ -1975,7 +1975,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': Var('chrome_git') + '/chrome/src-internal.git@423928875ebed251bdc69be1fe4fdae15703c325', + 'url': Var('chrome_git') + '/chrome/src-internal.git@898ea6e5c95b3a47aaae29d026df0378138f4a5b', 'condition': 'checkout_src_internal', }, @@ -2038,7 +2038,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/projector_app/app', - 'version': 'LSJdROoYvjCAa7yc7_bSSxLe-bUYcimevFNTq_maNEQC', + 'version': 'xHsVjV0XgubxIiJpBjXpRJQw7zHyLdhGWcuN2WYUN0QC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/WATCHLISTS b/WATCHLISTS index 48e1dc6..7343f7c 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -489,6 +489,10 @@ '|third_party/blink/web_tests/http/tests/csspaint/' \ '|third_party/blink/web_tests/externla/wpt/css/css-paint-api/' }, + 'blink_peerconnection': { + 'filepath': 'third_party/blink/renderer/modules/peerconnection/' \ + '|third_party/blink/renderer/platform/peerconnection/', + }, 'blink_permissions': { 'filepath': 'third_party/blink/renderer/modules/permissions/' \ '|third_party/blink/public/mojom/permissions/', @@ -2447,6 +2451,7 @@ 'blink_out_of_process_frames': ['dcheng@chromium.org'], 'blink_paint' : ['blink-reviews-paint@chromium.org'], 'blink_paintworklet' : ['xidachen@chromium.org'], + 'blink_peerconnection' : ['video-networking+chromium-reviews@google.com'], 'blink_permissions': ['permissions-reviews@chromium.org'], 'blink_platform': ['kinuko+watch@chromium.org'], 'blink_platform_graphics': ['blink-reviews-platform-graphics@chromium.org',
diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java index 7442392a..c9f9fff 100644 --- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java +++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
@@ -326,6 +326,8 @@ + "instances of the image are outside of the " + "viewport."), Flag.baseFeature(BlinkFeatures.SVG_RASTER_OPTIMIZATIONS), + Flag.baseFeature(BlinkFeatures.DELAY_OUT_OF_VIEWPORT_LAZY_IMAGES, + "Delays out-of-viewport lazy loaded images."), Flag.baseFeature(BlinkFeatures.SEND_MOUSE_EVENTS_DISABLED_FORM_CONTROLS, "This changes event propagation for disabled form controls."), Flag.baseFeature(ContentFeatures.SURFACE_SYNC_FULLSCREEN_KILLSWITCH,
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc index 7b8f37d..4b8f9ce0 100644 --- a/ash/constants/ash_features.cc +++ b/ash/constants/ash_features.cc
@@ -1540,6 +1540,12 @@ // If enabled, CHOBOE Screen will be shown during the new user onboarding flow. BASE_FEATURE(kOobeChoobe, "OobeChoobe", base::FEATURE_DISABLED_BY_DEFAULT); +// If enabled, Drive Offline Screen will be shown during the new user onboarding +// flow. +BASE_FEATURE(kOobeDriveOffline, + "OobeDriveOffline", + base::FEATURE_DISABLED_BY_DEFAULT); + // If enabled, TouchPadScreen will be shown in CHOOBE. // enabling this without enabling OobeChoobe flag will have no effect BASE_FEATURE(kOobeTouchpadScroll, @@ -3078,6 +3084,10 @@ return base::FeatureList::IsEnabled(kOobeChoobe); } +bool IsOobeDriveOfflineEnabled() { + return base::FeatureList::IsEnabled(kOobeDriveOffline); +} + bool IsOobeConsolidatedConsentEnabled() { return base::FeatureList::IsEnabled(kOobeConsolidatedConsent); }
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h index 4312489b..a22c82e1 100644 --- a/ash/constants/ash_features.h +++ b/ash/constants/ash_features.h
@@ -450,6 +450,7 @@ COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kSearchInShortcutsApp); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOsFeedback); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeChoobe); +COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeDriveOffline); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeConsolidatedConsent); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeHidDetectionRevamp); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kOobeJelly); @@ -821,6 +822,7 @@ COMPONENT_EXPORT(ASH_CONSTANTS) bool IsNotificationsRefreshEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOAuthIppEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeChoobeEnabled(); +COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeDriveOfflineEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeChromeVoxHintEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeHidDetectionRevampEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsOobeJellyEnabled();
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb index 2b077cea..388e3403 100644 --- a/ash/strings/ash_strings_af.xtb +++ b/ash/strings/ash_strings_af.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Jou foon moet mobiele data hê om 'n warmkol te verskaf</translation> <translation id="2727175239389218057">Antwoord</translation> <translation id="2727977024730340865">By 'n laekrag-laaier ingeprop. Laai van battery is dalk nie betroubaar nie.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Vee uit"</translation> <translation id="2750941250130734256">Aktiewe venster is losgemaak.</translation> @@ -1074,6 +1073,7 @@ <translation id="5976112937189445008">Druk Enter om venster op te neem</translation> <translation id="5978382165065462689">Deel tans beheer oor jou skerm deur afstandbystand.</translation> <translation id="5980301590375426705">Verlaat gas-sessie</translation> +<translation id="5983567367406220847">Warmkol is weens onaktiwiteit afgeskakel.</translation> <translation id="598407983968395253">Gebruik templaat</translation> <translation id="598882571027504733">Herbegin jou Chromebook met die sleutelbord aangeheg om die opdatering te kry.</translation> <translation id="6002179289567220515">Jy het die fisieke skakelaar gebruik om 1 kamera af te skakel. Jy kan ook toegang vir alle kameras afskakel.</translation> @@ -1376,6 +1376,7 @@ <translation id="7452560014878697800">'n Program gebruik tans jou kamera</translation> <translation id="7453330308669753048">Soekgeskiedenisresultaat is verwyder</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> tot vol</translation> +<translation id="7459485586006128091">Warmkol is weens ’n interne fout afgeskakel. Probeer oor ’n paar minute weer koppel.</translation> <translation id="7461924472993315131">Pin</translation> <translation id="746232733191930409">Skermopnamemodus</translation> <translation id="7466449121337984263">Raak asseblief die sensor</translation> @@ -1449,6 +1450,7 @@ <translation id="776344839111254542">Klik om die opdateringbesonderhede te sien</translation> <translation id="7768784765476638775">Hardoplees</translation> <translation id="7769299611924763557">Jou GIF sal binnekort gereed wees</translation> +<translation id="7773536009433685931">Skakel eerder wi-fi aan</translation> <translation id="7780094051999721182">kortpaaie</translation> <translation id="7780159184141939021">Draai skerm</translation> <translation id="7796735576426975947">Nuwe kennisgewing is versteek</translation>
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb index 3cbf2b9d..a0ee178d 100644 --- a/ash/strings/ash_strings_am.xtb +++ b/ash/strings/ash_strings_am.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C መሣሪያ (የፊት ወደብ)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> ወደ <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> ኸ) ተቀይሯል። ለውጦችን ለማቆየት አረጋግጥን ጠቅ ያድርጉ። ቀዳሚ ቅንብሮቹ በ<ph name="TIMEOUT_SECONDS" /> ውስጥ ወደነበሩበት ይመለሳሉ።</translation> <translation id="1013923882670373915">የብሉቱዝ መሣሪያ «<ph name="DEVICE_NAME" />» ለመጣመር ፍቃድ ይፈልጋል። እባክዎ ይህን የፒን ኮድ በዚህ መሣሪያ ላይ ያስገቡ፦ <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">ይህ <ph name="APP_NAME" />ን እና የአካባቢ ፈቃድ እና ChromeOS ያላቸው ሁሉም መተግበሪያዎች እና ድር ጣቢያዎች Wi-Fi እና የተንቀሳቃሽ ስልክ አውታረ መረቦች አካባቢን እንዲጠቀሙ ያስችላቸዋል።</translation> <translation id="1017556409696559990">በChrome ውስጥ ምንም የጀርባ ታሪክ ሳይኖር ሲቀር የላይ መስኮትን ያሳንሱ</translation> <translation id="1024364763893396229">የእርስዎን <ph name="NAME" /> ያስቀምጡ</translation> <translation id="1032891413405719768">የStylus ባትሪ ዝቅተኛ ነው</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">የታሪክ ገጽን ይክፈቱ</translation> <translation id="1654477262762802994">የድምጽ መጠይቅ ይጀምሩ</translation> <translation id="1668469839109562275">አብሮገነብ VPN</translation> +<translation id="1675844249244994876">የቀኝ መስኮቱን ያዘምኑ</translation> <translation id="1677472565718498478"><ph name="TIME" /> ቀርቷል</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> አልተገናኘም።</translation> <translation id="1677582821739292812">አንድ ሰው የእርስዎን ማያ ገጽ እየተመለከቱ ነው።</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">ኤተርኔት፦ <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">የመገኛ አካባቢ መዳረሻን አብራ</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> ተላቋል</translation> <translation id="1838895407229022812">የምሽት ብርሃን ጠፍቷል።</translation> <translation id="1854180393107901205">መውሰድ አቁም</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">የእርስዎ ስልክ ሆትስፖት ማቅረብ እንዲችል ሞባይል ውሂብ ሊኖረው ይገባል</translation> <translation id="2727175239389218057">ምላሽ ስጥ</translation> <translation id="2727977024730340865">አነስተኛ ኃይል ወዳለው ባትሪ መሙያ ተሰክቷል። የባትሪ መሙላት አስተማማኝ ላይሆን ይችላል።</translation> -<translation id="2740531572673183784">እሺ</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />፣ <ph name="PRICE" /></translation> <translation id="2750932254614666392">«ሰርዝ»</translation> <translation id="2750941250130734256">ገባሪ መስኮት ተነቅሏል።</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">ምን ማድረግ ይችላሉ?</translation> <translation id="3256109297135787951">በእርስዎ መደርደሪያ ላይ በንጥሉ ላይ ያለውን ማድመቂያ ያስወግዱ</translation> <translation id="3260969790895726815">ንግግር የሚሰናዳው በአካባቢ ሲሆን በቃል ማስጻፍ ከመስመር ውጭ ይሰራል ነገር ግን አንዳንድ የድምጽ ትዕዛዞች አይሰሩም።</translation> +<translation id="3265032511221679826">የትክክለኛ አካባቢ መዳረሻ ይብራ?</translation> <translation id="3269597722229482060">የቀኝ ጠቅታ</translation> <translation id="3289364673986435196">የኃይል ምናሌ</translation> <translation id="3289544412142055976">የሊኑክስ መተግበሪያዎች በአሁኑ ጊዜ አይደገፉም</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> የሚተዳደር ተጠቃሚ</translation> <translation id="3666266999138159418">ተንሳፋፊ መስኮትዎን ለመደበቅ ያንሸራትቱ</translation> <translation id="367531336287639526">ከአድራሻ አሞሌ በስተግራ በኩል ያለውን የመጀመሪያ አዶ ምረጥ</translation> +<translation id="3677931086890821290">ይህ የአካባቢ ፈቃድ እና ChromeOS ያላቸው ሁሉም መተግበሪያዎች እና ድር ጣቢያዎች Wi-Fi እና የተንቀሳቃሽ ስልክ አውታረ መረቦች አካባቢን እንዲጠቀሙ ያስችላቸዋል።</translation> <translation id="3679827876008292680">በመስኮት ውስጥ ወደ መጨረሻው ትር ይሂዱ</translation> <translation id="36813544980941320">የWi-Fi አውታረ መረቦች በስልክዎ እና በ<ph name="DEVICE_NAME" /> መካከል ይጋራሉ</translation> <translation id="3694122362646626770">ድር ጣቢያዎች</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">ከማያ ገጽ ላይ አሳንስ</translation> <translation id="4936329710968938986">ሁሉም ሰው፣ ጠፍቷል</translation> <translation id="4938176435186993759">ሁሉንም የአስተያየት ጥቆማዎች ደብቅ</translation> +<translation id="4943007472417128747">WiFi ለመጠቀም መገናኛ ነጥብ ጠፍቷል። መገናኛ ነጥብን ለመጠቀም Wi-Fiን ያጥፉ።</translation> <translation id="4945196315133970626">ማሳወቂያዎችን አጥፋ</translation> <translation id="4946376291507881335">አንሳ</translation> <translation id="495046168593986294">ወደ ላይ ይሸብልሉ</translation> @@ -1067,6 +1072,7 @@ <translation id="5976112937189445008">መስኮት ለመቅዳት አስገባን ይጫኑ</translation> <translation id="5978382165065462689">የማያ ገጽዎን ቁጥጥር በርቀት እርዳታ በኩል በማጋራት ላይ።</translation> <translation id="5980301590375426705">ከእንግዳ ውጣ</translation> +<translation id="5983567367406220847">በእንቅስቃሴ አልባነት ምክንያት መገናኛ ነጥብ ጠፍቷል።</translation> <translation id="598407983968395253">ቅንብር ደንብን ተጠቀም</translation> <translation id="598882571027504733">ዝማኔውን ለማግኘት፣ ከተያያዘው የቁልፍ ሰሌዳ ጋር የእርስዎን Chromebook ዳግም ያስጀምሩ።</translation> <translation id="6002179289567220515">1 ካሜራን ለማጥፋት አካላዊ መቀያየሪያን ተጠቅመዋል። እንዲሁም ለሁሉም ካሜራዎች መዳረሻን ማጥፋት ይችላሉ።</translation> @@ -1220,6 +1226,7 @@ <translation id="6683022854667115063">የራስ ላይ ማዳመጫዎች</translation> <translation id="6696025732084565524">የእርስዎ ተነቃይ የቁልፍ ሰሌዳ ወሳኝ የሆነ ዝማኔ ያስፈልገዋል</translation> <translation id="6700713906295497288">የIME ምናሌ አዝራር</translation> +<translation id="6705577071209924099">ብርሃንን ያስተካክሉ</translation> <translation id="6707693040195709527">የመሣሪያ ወደ ቀዳሚው ስሪት መቀየር ጊዜ አልፎበታል</translation> <translation id="6710213216561001401">ቀዳሚ</translation> <translation id="6723839937902243910">ኃይል</translation> @@ -1368,6 +1375,7 @@ <translation id="7452560014878697800">አንድ መተግበሪያ ካሜራዎን እየተጠቀመበት ነው</translation> <translation id="7453330308669753048">የታሪክ ፈልግ ውጤት ተወግዷል</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> እስከሚሞላ ድረስ</translation> +<translation id="7459485586006128091">በውስጣዊ ስህተት ምክንያት መገናኛ ነጥብ ጠፍቷል። ከጥቂት ደቂቃዎች በኋላ እንደገና ለማገናኘት ይሞክሩ።</translation> <translation id="7461924472993315131">ሰካ</translation> <translation id="746232733191930409">የማያ ገጽ ቀረጻ ሁነታ</translation> <translation id="7466449121337984263">እባክዎ ዳሳሹን ይንኩ</translation> @@ -1387,6 +1395,7 @@ መሣሪያ ለመዝጋት በድጋሚ የማብሪያ/ማጥፊያ ቁልፉን በመሣሪያው ላይ ተጭነው ይያዙ።</translation> <translation id="7526573455193969409">አውታረ መረብ ክትትል የሚደረግበት ሊሆን ይችላል</translation> <translation id="7536035074519304529">የአይፒ አድራሻ፦ <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">የግራ መስኮቱን ያዘምኑ</translation> <translation id="7543399541175347147">የሊኑክስ መተግበሪያዎች እና ማንነት የማያሳውቁ መስኮቶች በአሁኑ ጊዜ አይደገፉም። ሌሎች መተግበሪያዎች ይቀመጣሉ።</translation> <translation id="7544300628205093162">የቁልፍ ሰሌዳ የኋላ ብርሃን በርቷል</translation> <translation id="7548434653388805669">የመኝታ ጊዜ</translation> @@ -1440,6 +1449,7 @@ <translation id="776344839111254542">የዝማኔ ዝርዝሮችን ለማየት ጠቅ ያድርጉ</translation> <translation id="7768784765476638775">ለመናገር-ይምረጡ</translation> <translation id="7769299611924763557">የእርስዎ GIF በቅርቡ ዝግጁ ይሆናል</translation> +<translation id="7773536009433685931">በምትኩ WiFiን ያብሩ</translation> <translation id="7780094051999721182">አቋራጮች</translation> <translation id="7780159184141939021">ማያ ገጹን አሽከርክር</translation> <translation id="7796735576426975947">አዲስ ማሳወቂያ ተደብቋል</translation> @@ -1467,6 +1477,7 @@ <translation id="7893503627044934815">ይህ ፋይል እንዲታይ አልፈልግም</translation> <translation id="7895348134893321514">ማስታወሻ</translation> <translation id="7897375687985782769">የማያ ገጽ ማሽከርከሪያ የቁልፍ ሰሌዳ አቋራጩን ተጭነውታል። ማያ ገጹን ማሽከርከር ይፈልጋሉ?</translation> +<translation id="7901190436359881020">መስኮቶቹን ይለዋውጡ</translation> <translation id="7901405293566323524">የስልክ መገናኛ</translation> <translation id="7902625623987030061">የጣት አሻራ ዳሳሹን ይንኩ</translation> <translation id="7904094684485781019">የዚህ መለያ አስተዳዳሪ ባለብዙ መለያ መግባትን ከልክሏል።</translation> @@ -1742,6 +1753,7 @@ <translation id="9198992156681343238">የ<ph name="DISPLAY_NAME" /> ጥራት ወደ <ph name="RESOLUTION" /> ተቀይሯል። ለውጦችን ለማቆየት አረጋግጥን ጠቅ ያድርጉ። ቀዳሚ ቅንብሮቹ በ<ph name="TIMEOUT_SECONDS" /> ውስጥ ወደነበሩበት ይመለሳሉ።</translation> <translation id="9201044636667689546"><ph name="NAME" />ን ከዚህ Chromebook ጋር ያገናኙ</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />፣ በእርስዎ አስተዳዳሪ የሚቀናበር</translation> +<translation id="9207682216934703221">ይህ <ph name="APP_NAME" />ን፣ <ph name="APP2_NAME" />ን እና የአካባቢ ፈቃድ እና ChromeOS ያላቸው ሁሉም መተግበሪያዎች እና ድር ጣቢያዎች Wi-Fi እና የተንቀሳቃሽ ስልክ አውታረ መረቦች አካባቢን እንዲጠቀሙ ያስችላቸዋል።</translation> <translation id="9210037371811586452">ከተዋሃደ የዴስክቶፕ ሁነታ በመውጣት ላይ</translation> <translation id="9211490828691860325">ሁሉም ዴስኮች</translation> <translation id="9211681782751733685">ባትሪ ሙሉ በሙሉ ኃይል እስኪሞላ ድረስ <ph name="TIME_REMAINING" /> ይቀራል።</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb index 86c4bfb1..50a289ab 100644 --- a/ash/strings/ash_strings_ar.xtb +++ b/ash/strings/ash_strings_ar.xtb
@@ -149,6 +149,7 @@ <translation id="1651914502370159744">فتح صفحة "السجلّ"</translation> <translation id="1654477262762802994">بدء طلب بحث صوتي</translation> <translation id="1668469839109562275">الشبكة الافتراضية الخاصة المُدمجة</translation> +<translation id="1675844249244994876">تعديل النافذة اليسرى</translation> <translation id="1677472565718498478">الوقت المتبقي <ph name="TIME" /></translation> <translation id="1677507110654891115">ميزة <ph name="FEATURE_NAME" /> غير متصلة.</translation> <translation id="1677582821739292812">تم رصد مستخدم ينظر إلى شاشتك.</translation> @@ -368,7 +369,6 @@ <translation id="2726420622004325180">يجب أن يتوفّر في هاتفك اتصال بيانات الجوّال لتتمكّن من تفعيل ميزة "نقطة الاتصال".</translation> <translation id="2727175239389218057">الرّد</translation> <translation id="2727977024730340865">تمّ توصيل شاحن منخفض الطاقة. لذا قد لا تكون عملية شحن البطارية جديرة بالثقة.</translation> -<translation id="2740531572673183784">حسنًا</translation> <translation id="2749082172777216925">التطبيق <ph name="APP_NAME_INFO" />، <ph name="PRICE" /></translation> <translation id="2750932254614666392">"حذف"</translation> <translation id="2750941250130734256">تم إلغاء إرساء النافذة النشطة.</translation> @@ -850,6 +850,7 @@ <translation id="493076006037866439">تصغير الشاشة</translation> <translation id="4936329710968938986">الجميع: غير مفعّل</translation> <translation id="4938176435186993759">إخفاء جميع الاقتراحات</translation> +<translation id="4943007472417128747">تم إيقاف نقطة الاتصال لاستخدام شبكة Wi-Fi. لاستخدام نقطة الاتصال، عليك إيقاف شبكة Wi-Fi.</translation> <translation id="4945196315133970626">إيقاف الإشعارات</translation> <translation id="4946376291507881335">التقاط</translation> <translation id="495046168593986294">التمرير لأعلى</translation> @@ -1394,6 +1395,7 @@ لإطفاء الجهاز، اضغط مع الاستمرار على زر تشغيل الجهاز مرة أخرى.</translation> <translation id="7526573455193969409">قد تكون الشبكة خاضعة للمراقبة</translation> <translation id="7536035074519304529">عنوان IP: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">تعديل النافذة اليمنى</translation> <translation id="7543399541175347147">تطبيقات Linux ونوافذ التصفّح المتخفي غير متوافقة حاليًا، ولكن سيتم حفظ التطبيقات الأخرى.</translation> <translation id="7544300628205093162">تم تشغيل الإضاءة الخلفية للوحة المفاتيح.</translation> <translation id="7548434653388805669">وقت النوم</translation> @@ -1474,6 +1476,7 @@ <translation id="7893503627044934815">لا أريد رؤية هذا الملف.</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">لقد ضغطت على اختصار لوحة المفاتيح لتدوير الشاشة. هل ترغب في تدوير الشاشة؟</translation> +<translation id="7901190436359881020">تبديل النوافذ</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">المس أداة استشعار بصمات الإصبع.</translation> <translation id="7904094684485781019">لقد حظر مشرف هذا الحساب إمكانية الدخول المتعدد.</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index 593a18e..76803a50 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">এটা হটস্পট প্ৰদান কৰিবলৈ আপোনাৰ ফ’নত ম’বাইল ডেটা থাকিবই লাগিব</translation> <translation id="2727175239389218057">প্ৰত্যুত্তৰ দিয়ক</translation> <translation id="2727977024730340865">কম পাৱাৰৰ এটা চাৰ্জাৰত প্লাগ ইন কৰা হৈছে। বেটাৰীৰ চাৰ্জিং বিশ্বাসযোগ্য নহ'বও পাৰে।</translation> -<translation id="2740531572673183784">ঠিক আছে</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"মচক"</translation> <translation id="2750941250130734256">ড’ক নকৰা ৱিণ্ড’ সক্ৰিয় কৰক।</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">ৱিণ্ড’ ৰেকৰ্ড কৰিবলৈ এণ্টাৰ টিপক</translation> <translation id="5978382165065462689">ৰিম’ট সহায়কৰ জৰিয়তে আপোনাৰ স্ক্রীণৰ নিয়ন্ত্ৰণ শ্বেয়াৰ কৰি থকা হৈছে।</translation> <translation id="5980301590375426705">অতিথিৰ পৰা প্ৰস্থান</translation> +<translation id="5983567367406220847">নিষ্ক্ৰিয়তাৰ বাবে, হটস্পট অফ কৰা হৈছে।</translation> <translation id="598407983968395253">টেমপ্লে’ট ব্যৱহাৰ কৰক</translation> <translation id="598882571027504733">আপডে’টটো পাবলৈ সংলগ্ন কীব’ৰ্ডখন ব্যৱহাৰ কৰি আপোনাৰ Chromebook ৰিষ্টাৰ্ট কৰক।</translation> <translation id="6002179289567220515">আপুনি ১টা কেমেৰা বন্ধ কৰিবলৈ কায়িক ছুইচটো ব্যৱহাৰ কৰিছিল। আপুনি আটাইবোৰ কেমেৰাৰ বাবে এক্সেছ অফ কৰিবও পাৰে।</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">এটা এপ্লিকেশ্বনে আপোনাৰ কেমেৰাটো ব্যৱহাৰ কৰি আছে</translation> <translation id="7453330308669753048">সন্ধানৰ ইতিহাসৰ ফলাফল আঁতৰোৱা হৈছে</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | সম্পূৰ্ণ হ’বলৈ <ph name="TIME" /> বাকী</translation> +<translation id="7459485586006128091">অভ্যন্তৰীণ আসোঁৱাহৰ বাবে হটস্পট অফ কৰা হৈছে। কেইমিনিটমানৰ পাছত পুনৰ সংযোগ কৰিবলৈ চেষ্টা কৰক।</translation> <translation id="7461924472993315131">পিন</translation> <translation id="746232733191930409">স্ক্ৰীন ৰেকৰ্ডিং ম'ড</translation> <translation id="7466449121337984263">অনুগ্ৰহ কৰি ছেন্সৰটো স্পৰ্শ কৰক</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">আপডে'টৰ সবিশেষ চাবলৈ ক্লিক কৰক</translation> <translation id="7768784765476638775">কথা ক’বলৈ বাছনি কৰক</translation> <translation id="7769299611924763557">আপোনাৰ GIF সোনকালেই সাজু হ’ব</translation> +<translation id="7773536009433685931">তাৰ পৰিৱৰ্তে ৱাইফাই অন কৰক</translation> <translation id="7780094051999721182">শ্বৰ্টকাট</translation> <translation id="7780159184141939021">স্ক্ৰীন ঘূৰাওক</translation> <translation id="7796735576426975947">নতুন জাননী লুকুওৱা হৈছে</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb index feff1616..bab14ba 100644 --- a/ash/strings/ash_strings_az.xtb +++ b/ash/strings/ash_strings_az.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Hotspot təmin etmək üçün telefonunuzda mobil data olmalıdır</translation> <translation id="2727175239389218057">Cavablayın</translation> <translation id="2727977024730340865">Zəif şarjerə qoşulub. Ola bilər ki, enerji dolmasın.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Silin"</translation> <translation id="2750941250130734256">Aktiv pəncərə çıxarılıb.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Pəncərəni qeydə almaq üçün enter düyməsini basın</translation> <translation id="5978382165065462689">Uzaq Yardım vasitəsilə ekranınızın kontrolunu paylaşır.</translation> <translation id="5980301590375426705">Qonaq hesabından çıxın</translation> +<translation id="5983567367406220847">Fəaliyyətsizliyə görə hotspot söndürülüb.</translation> <translation id="598407983968395253">Şablon istifadə edin</translation> <translation id="598882571027504733">Güncəlləməni əldə etmək üçün əlavə edilən klavatura ilə Chromebook'u yenidən başladın.</translation> <translation id="6002179289567220515">1 kameranı deaktiv etmək üçün fiziki açardan istifadə etdiniz. Həmçinin bütün kameralar üçün girişi deaktiv edə bilərsiniz.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">Tətbiq kameranızı işlədir</translation> <translation id="7453330308669753048">Axtarış tarixçəsinin nəticəsi silindi</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | Dolmasına <ph name="TIME" /> qalıb</translation> +<translation id="7459485586006128091">Daxili xətaya görə hotspot söndürülüb. Bir neçə dəqiqə sonra yenidən qoşulun.</translation> <translation id="7461924472993315131">Pin</translation> <translation id="746232733191930409">Ekran yazılması rejimi</translation> <translation id="7466449121337984263">Sensora toxunun</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">Güncəlləmə detallarını görmək üçün klikləyin</translation> <translation id="7768784765476638775">Seçib səsləndirmə</translation> <translation id="7769299611924763557">GIF tezliklə hazır olacaq</translation> +<translation id="7773536009433685931">WiFi-ı yandırın</translation> <translation id="7780094051999721182">qısayollar</translation> <translation id="7780159184141939021">Ekranı fırladın</translation> <translation id="7796735576426975947">Yeni bildiriş gizlədilib</translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb index 52e164f..9db25c57 100644 --- a/ash/strings/ash_strings_be.xtb +++ b/ash/strings/ash_strings_be.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Прылада USB-C (пярэдні порт)</translation> <translation id="1013598600051641573">Для дысплэя "<ph name="DISPLAY_NAME" />" зададзена раздзяляльнасць <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Гц). Каб захаваць змяненні, націсніце "Пацвердзіць". Папярэднія налады будуць адноўлены праз <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Прылада Bluetooth "<ph name="DEVICE_NAME" />" запытвае дазвол на спалучэнне. Увядзіце на гэтай прыладзе PIN-код: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Праграма "<ph name="APP_NAME" />" і ўсе праграмы і вэб-сайты, якія маюць дазвол на доступ да геаданых, а таксама ChromeOS змогуць выкарыстоўваць даныя пра месцазнаходжанне, атрыманыя праз Wi-Fi і мабільныя сеткі.</translation> <translation id="1017556409696559990">Згарнуць верхняе акно, калі ў Chrome няма папярэдняй гісторыі</translation> <translation id="1024364763893396229">Захаванне прылады "<ph name="NAME" />"</translation> <translation id="1032891413405719768">Нізкі зарад акумулятара стыла</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Адкрыць старонку гісторыі</translation> <translation id="1654477262762802994">Пачаць галасавы запыт</translation> <translation id="1668469839109562275">Убудаваная сетка VPN</translation> +<translation id="1675844249244994876">Абнавіць правае акно</translation> <translation id="1677472565718498478">Засталося <ph name="TIME" /></translation> <translation id="1677507110654891115">Функцыя "<ph name="FEATURE_NAME" />" не падключана.</translation> <translation id="1677582821739292812">Нехта глядзіць на ваш экран</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Уключыць доступ да геаданых</translation> <translation id="1830308660060964064">Элемент "<ph name="ITEM_TITLE" />" адмацаваны</translation> <translation id="1838895407229022812">Начная падсветка выключана.</translation> <translation id="1854180393107901205">Спыніць трансляцыю</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Каб тэлефон мог дзейнічаць як хот-спот, ён павінен выкарыстоўваць мабільную перадачу даных</translation> <translation id="2727175239389218057">Адказаць</translation> <translation id="2727977024730340865">Падключана зарадная прылада нізкай магутнасці. Зарадка акумулятара можа быць нестабільнай.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Выдаліць"</translation> <translation id="2750941250130734256">Актыўнае акно адмацавана.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">Што ты ўмееш?</translation> <translation id="3256109297135787951">Скасаваць вылучэнне элемента на паліцы</translation> <translation id="3260969790895726815">Запісы голасу апрацоўваюцца на прыладзе і нікуды не перадаюцца. Галасавы ўвод працуе па-за сеткай. Некаторыя галасавыя каманды могуць не працаваць.</translation> +<translation id="3265032511221679826">Уключыць доступ да даных дакладнага месцазнаходжання?</translation> <translation id="3269597722229482060">Націснуць правай кнопкай мышы</translation> <translation id="3289364673986435196">Меню кнопкі сілкавання</translation> <translation id="3289544412142055976">Праграмы Linux цяпер не падтрымліваюцца</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" />, карыстальнік пад кіраваннем</translation> <translation id="3666266999138159418">Каб схаваць плаваючае акно, правядзіце пальцам</translation> <translation id="367531336287639526">Выбраць першы значок злева ад адраснага радка</translation> +<translation id="3677931086890821290">Усе праграмы і вэб-сайты, якія маюць дазвол на доступ да геаданых, а таксама ChromeOS змогуць выкарыстоўваць даныя пра месцазнаходжанне, атрыманыя праз Wi-Fi і мабільныя сеткі.</translation> <translation id="3679827876008292680">Перайсці на апошнюю ўкладку акна</translation> <translation id="36813544980941320">Інфармацыя пра сеткі Wi-Fi будзе абагульвацца паміж тэлефонам і прыладай <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Вэб-сайты</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">Паменшыць маштаб экрана</translation> <translation id="4936329710968938986">Для ўсіх: выключана</translation> <translation id="4938176435186993759">Схаваць усе прапановы</translation> +<translation id="4943007472417128747">Хот-спот выключаны для выкарыстання Wi-Fi. Каб выкарыстоўваць хот-спот, выключыце Wi-Fi.</translation> <translation id="4945196315133970626">Выключыць апавяшчэнні</translation> <translation id="4946376291507881335">Зняць</translation> <translation id="495046168593986294">Прагартаць уверх</translation> @@ -1067,6 +1072,7 @@ <translation id="5976112937189445008">Каб запісаць акно, націсніце Увод</translation> <translation id="5978382165065462689">Абагульванне кантролю над экранам праз Аддаленую дапамогу.</translation> <translation id="5980301590375426705">Выйсці з гасцявога рэжыму</translation> +<translation id="5983567367406220847">Хот-спот быў выключаны праз бяздзейнасць.</translation> <translation id="598407983968395253">Выкарыстаць шаблон</translation> <translation id="598882571027504733">Для абнаўлення падключыце клавіятуру і перазапусціце Chromebook.</translation> <translation id="6002179289567220515">Вы выключылі адну камеру фізічным пераключальнікам. Таксама можна выключыць доступ для ўсіх камер.</translation> @@ -1369,6 +1375,7 @@ <translation id="7452560014878697800">Камера выкарыстоўваецца адной з праграм</translation> <translation id="7453330308669753048">Вынік выдалены з гісторыі пошуку</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> да поўнай зарадкі</translation> +<translation id="7459485586006128091">З-за ўнутранай памылкі хот-спот быў выключаны. Паспрабуйце падключыцца паўторна праз некалькі хвілін.</translation> <translation id="7461924472993315131">PIN-код</translation> <translation id="746232733191930409">Рэжым запісу экрана</translation> <translation id="7466449121337984263">Дакраніцеся да сканера</translation> @@ -1388,6 +1395,7 @@ Каб завяршыць працу прылады, зноў націсніце і ўтрымлівайце кнопку сілкавання на ёй.</translation> <translation id="7526573455193969409">За сеткай могуць сачыць</translation> <translation id="7536035074519304529">IP-адрас: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Абнавіць левае акно</translation> <translation id="7543399541175347147">Вокны ў рэжыме інкогніта і праграмы Linux зараз не падтрымліваюцца. Іншыя праграмы будуць захаваны.</translation> <translation id="7544300628205093162">Падсветка клавіятуры ўключана</translation> <translation id="7548434653388805669">Час класціся спаць</translation> @@ -1441,6 +1449,7 @@ <translation id="776344839111254542">Каб паглядзець звесткі пра абнаўленне, націсніце тут</translation> <translation id="7768784765476638775">Чытаць уголас</translation> <translation id="7769299611924763557">Файл GIF будзе неўзабаве гатовы</translation> +<translation id="7773536009433685931">Уключыць Wi-Fi</translation> <translation id="7780094051999721182">ярлыкі</translation> <translation id="7780159184141939021">Паварот экрана</translation> <translation id="7796735576426975947">Новае апавяшчэнне схавана</translation> @@ -1468,6 +1477,7 @@ <translation id="7893503627044934815">Не паказваць гэты файл</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Вы націснулі спалучэнне клавіш для павароту экрана. Павярнуць экран?</translation> +<translation id="7901190436359881020">Памяняць вокны</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Дакраніцеся да сканера адбіткаў пальцаў</translation> <translation id="7904094684485781019">Адміністратар уліковага запісу забараніў уваход у некалькі ўліковых запісаў.</translation> @@ -1743,6 +1753,7 @@ <translation id="9198992156681343238">Раздзяляльнасць экрана "<ph name="DISPLAY_NAME" />" зменена на <ph name="RESOLUTION" />. Каб захаваць змяненні, націсніце "Пацвердзіць". Папярэднія налады будуць адноўлены праз <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Падключыце прыладу "<ph name="NAME" />" да Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, знаходзіцца пад кіраваннем адміністратара</translation> +<translation id="9207682216934703221">Праграмы "<ph name="APP_NAME" />", "<ph name="APP2_NAME" />" і ўсе праграмы і вэб-сайты, якія маюць дазвол на доступ да геаданых, а таксама ChromeOS змогуць выкарыстоўваць даныя пра месцазнаходжанне, атрыманыя праз Wi-Fi і мабільныя сеткі.</translation> <translation id="9210037371811586452">Выконваецца выхад з рэжыму адзінага працоўнага стала</translation> <translation id="9211490828691860325">Усе працоўныя сталы</translation> <translation id="9211681782751733685">Засталося часу да поўнай зарадкі акумулятара: <ph name="TIME_REMAINING" /></translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb index adf7bd68..6974c4e 100644 --- a/ash/strings/ash_strings_bg.xtb +++ b/ash/strings/ash_strings_bg.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">За да предостави точка за достъп, телефонът ви трябва да има мобилни данни</translation> <translation id="2727175239389218057">Отговор</translation> <translation id="2727977024730340865">Използва се зарядно устройство с малка мощност. Зареждането на батерията може да не е надеждно.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Delete“</translation> <translation id="2750941250130734256">Активният прозорец е отделен.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Натиснете Enter за записване на прозореца</translation> <translation id="5978382165065462689">Споделяте контрола върху екрана си чрез отдалечено съдействие.</translation> <translation id="5980301590375426705">Изход като гост</translation> +<translation id="5983567367406220847">Точката за достъп е изключена поради неактивност.</translation> <translation id="598407983968395253">Използване на шаблон</translation> <translation id="598882571027504733">За да инсталирате актуализацията, рестартирайте своя Chromebook, докато клавиатурата е прикачена.</translation> <translation id="6002179289567220515">Използвахте физическия превключвател, за да изключите 1 камера. Можете също да забраните достъпа до всички камери.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">Приложение използва камерата ви</translation> <translation id="7453330308669753048">Резултатът от историята на търсенията бе премахнат</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> до пълно зареждане</translation> +<translation id="7459485586006128091">Точката за достъп бе изключена поради вътрешна грешка. Опитайте да се свържете отново след няколко минути.</translation> <translation id="7461924472993315131">Фиксиране</translation> <translation id="746232733191930409">Режим за записване на екрана</translation> <translation id="7466449121337984263">Моля, докоснете сензора</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">Кликнете, за да видите подробности за актуализацията</translation> <translation id="7768784765476638775">Прочитане на глас</translation> <translation id="7769299611924763557">GIF файлът ви ще бъде готов скоро</translation> +<translation id="7773536009433685931">Включване на Wi-Fi вместо това</translation> <translation id="7780094051999721182">преки пътища</translation> <translation id="7780159184141939021">Завъртане на екрана</translation> <translation id="7796735576426975947">Скрито е ново известие</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb index 78ec5a0..0c6efa3 100644 --- a/ash/strings/ash_strings_bn.xtb +++ b/ash/strings/ash_strings_bn.xtb
@@ -148,6 +148,7 @@ <translation id="1651914502370159744">ইতিহাসের পৃষ্ঠা খুলুন</translation> <translation id="1654477262762802994">ভয়েস কোয়েরি শুরু করুন</translation> <translation id="1668469839109562275">বিল্ট-ইন ভিপিএন</translation> +<translation id="1675844249244994876">ডানদিকের উইন্ডো আপডেট করুন</translation> <translation id="1677472565718498478"><ph name="TIME" /> বাকি আছে</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> ফিচারটি কানেক্ট করা নেই।</translation> <translation id="1677582821739292812">কেউ আপনার স্ক্রিনের দিকে তাকিয়ে আছে</translation> @@ -367,7 +368,6 @@ <translation id="2726420622004325180">হটস্পট দেওয়ার জন্য আপনার ফোনে মোবাইল ডেটার অ্যাক্সেস থাকতে হবে</translation> <translation id="2727175239389218057">উত্তর দিন</translation> <translation id="2727977024730340865">একটি নিম্ন শক্তির চার্জার প্লাগইন করা হয়েছে৷ বিশ্বস্ত ব্যাটারি চার্জ নাও হতে পারে৷</translation> -<translation id="2740531572673183784">ঠিক আছে</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"মুছে ফেলুন"</translation> <translation id="2750941250130734256">অ্যাক্টিভ উইন্ডোটি আনডক করা হয়েছে।</translation> @@ -848,6 +848,7 @@ <translation id="493076006037866439">স্ক্রিন জুম-আউট করুন</translation> <translation id="4936329710968938986">প্রত্যেকে, বন্ধ আছে</translation> <translation id="4938176435186993759">সব সাজেশন লুকান</translation> +<translation id="4943007472417128747">ওয়াই-ফাই ব্যবহার করার জন্য হটস্পট বন্ধ করা হয়েছে। হটস্পট ব্যবহার করতে, ওয়াই-ফাই বন্ধ করুন।</translation> <translation id="4945196315133970626">বিজ্ঞপ্তি বন্ধ করুন</translation> <translation id="4946376291507881335">ক্যাপচার করুন</translation> <translation id="495046168593986294">উপরের দিকে স্ক্রল করুন</translation> @@ -1392,6 +1393,7 @@ ডিভাইসটি বন্ধ করতে, আবার ডিভাইসের পাওয়ার বোতাম প্রেস করে ধরে রাখুন।</translation> <translation id="7526573455193969409">নেটওয়ার্কের উপরে নজর রাখা হতে পারে</translation> <translation id="7536035074519304529">আইপি অ্যাড্রেস: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">বাঁদিকের উইন্ডো আপডেট করুন</translation> <translation id="7543399541175347147">বর্তমানে Linux অ্যাপ ও ছদ্মবেশী উইন্ডো ব্যবহারের সুবিধা নেই। অন্যান্য অ্যাপ সেভ করা হবে।</translation> <translation id="7544300628205093162">কীবোর্ড ব্যাকলাইট চালু আছে</translation> <translation id="7548434653388805669">শুতে যাওয়ার সময় হয়েছে</translation> @@ -1472,6 +1474,7 @@ <translation id="7893503627044934815">এই ফাইলটি দেখাতে চাই না</translation> <translation id="7895348134893321514">টোট</translation> <translation id="7897375687985782769">স্ক্রিন ঘোরানোর জন্য আপনি কীবোর্ড শর্টকাট টিপেছেন। আপনি কি স্ক্রিন ঘোরাতে চান?</translation> +<translation id="7901190436359881020">উইন্ডো পাল্টান</translation> <translation id="7901405293566323524">ফোন হাব</translation> <translation id="7902625623987030061">আঙুলের ছাপের সেন্সর টাচ করুন</translation> <translation id="7904094684485781019">এই অ্যাকাউন্টের অ্যাডমিনিস্ট্রেটর একাধিক সাইন-ইন অননুমোদিত করেছেন৷</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb index 8fad6bc..e175930 100644 --- a/ash/strings/ash_strings_bs.xtb +++ b/ash/strings/ash_strings_bs.xtb
@@ -4,7 +4,7 @@ <translation id="1012876632442809908">USB-C uređaj (prednji priključak)</translation> <translation id="1013598600051641573">Rezolucija uređaja <ph name="DISPLAY_NAME" /> je promijenjena na <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz) Kliknite Potvrdi da zadržite promjene. Prethodne postavke će se vratiti za <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Bluetooth uređaj "<ph name="DEVICE_NAME" />" traži odobrenje za uparivanje. Unesite ovaj PIN kôd na taj uređaj: <ph name="PINCODE" /></translation> -<translation id="1014722676793506285">To omogućuje da <ph name="APP_NAME" /> i sve aplikacije i web-lokacije s dopuštenjem za lokaciju i ChromeOS-om upotrebljavaju lokaciju Wi-Fija i mobilnih mreža.</translation> +<translation id="1014722676793506285">Ovo omogućava aplikaciji <ph name="APP_NAME" /> i svim aplikacijama i web lokacijama s odobrenjem za lokaciju te ChromeOS-u da koriste lokacije WiFi-ja i mobilnih mreža.</translation> <translation id="1017556409696559990">Minimiziranje gornjeg prozora kada u Chromeu nema historije vraćanja</translation> <translation id="1024364763893396229">Sačuvajte uređaj <ph name="NAME" /></translation> <translation id="1032891413405719768">Baterija pisaljke je slaba</translation> @@ -301,7 +301,7 @@ <translation id="2390318262976603432">Postavke jezika/zemlje</translation> <translation id="2397416548179033562">Prikaz Chrome menija</translation> <translation id="240006516586367791">Kontrole medija</translation> -<translation id="2402411679569069051">Da otključate Chromebook, koristite otisak prsta ili otključate telefon</translation> +<translation id="2402411679569069051">Da otključate Chromebook, koristite otisak prsta ili otključajte telefon</translation> <translation id="2405664212338326887">Nije povezano</translation> <translation id="2408955596600435184">Unesite svoj PIN</translation> <translation id="2412593942846481727">Ažuriranje je dostupno</translation> @@ -368,7 +368,6 @@ <translation id="2726420622004325180">Telefon mora imati prijenos podataka na mobilnoj mreži kako bi mogao pružiti pristupnu tačku</translation> <translation id="2727175239389218057">Odgovori</translation> <translation id="2727977024730340865">Priključeno na niskonaponski punjač. Punjenje baterije može biti nepouzdano.</translation> -<translation id="2740531572673183784">Uredu</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Izbrišite"</translation> <translation id="2750941250130734256">Aktivni prozor je odvojen.</translation> @@ -471,7 +470,7 @@ <translation id="3255483164551725916">Šta sve možete uraditi?</translation> <translation id="3256109297135787951">Uklonite oznaku sa stavke na polici</translation> <translation id="3260969790895726815">Govor se obrađuje lokalno i diktiranje funkcionira offline, ali neke glasovne komande neće funkcionirati.</translation> -<translation id="3265032511221679826">Želite li uključiti pristup točnoj lokaciji?</translation> +<translation id="3265032511221679826">Uključiti pristup tačnoj lokaciji?</translation> <translation id="3269597722229482060">Desni klik</translation> <translation id="3289364673986435196">Meni napajanja</translation> <translation id="3289544412142055976">Linux aplikacije trenutno nisu podržane</translation> @@ -582,7 +581,7 @@ <translation id="366222428570480733">Korisnik kojim upravlja <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="3666266999138159418">Prevucite da sakrijete plutajući prozor</translation> <translation id="367531336287639526">Odaberite prvu ikonu s lijeve strane trake za adresu</translation> -<translation id="3677931086890821290">To svim aplikacijama i web-lokacijama s dopuštenjem za lokaciju i ChromeOS-om omogućuje upotrebu lokacije Wi-Fija i mobilnih mreža.</translation> +<translation id="3677931086890821290">Ovo omogućava svim aplikacijama i web lokacijama s odobrenjem za lokaciju te ChromeOS-u da koriste lokacije WiFi-ja i mobilnih mreža.</translation> <translation id="3679827876008292680">Odlazak na posljednju karticu u prozoru</translation> <translation id="36813544980941320">WiFi mreže će se dijeliti između vašeg telefona i uređaja <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Web lokacije</translation> @@ -1754,7 +1753,7 @@ <translation id="9198992156681343238">Rezolucija uređaja <ph name="DISPLAY_NAME" /> je promijenjena na <ph name="RESOLUTION" />. Kliknite Potvrdi da zadržite promjene. Prethodne postavke će se vratiti za <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Povežite uređaj <ph name="NAME" /> s ovim Chromebookom</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, upravlja vaš administrator</translation> -<translation id="9207682216934703221">To omogućuje da <ph name="APP_NAME" />, <ph name="APP2_NAME" /> te sve aplikacije i web-lokacije s dopuštenjem za lokaciju i ChromeOS-om upotrebljavaju lokaciju Wi-Fija i mobilnih mreža.</translation> +<translation id="9207682216934703221">Ovo omogućava aplikaciji <ph name="APP_NAME" />, <ph name="APP2_NAME" /> i svim aplikacijama i web lokacijama s odobrenjem za lokaciju te ChromeOS-u da koriste lokacije WiFi-ja i mobilnih mreža.</translation> <translation id="9210037371811586452">Izlaz iz unificiranog načina rada na računaru</translation> <translation id="9211490828691860325">Sve radne površine</translation> <translation id="9211681782751733685">Preostalo je još <ph name="TIME_REMAINING" /> do potpune napunjenosti baterije</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb index 7ff9087..90b91de 100644 --- a/ash/strings/ash_strings_ca.xtb +++ b/ash/strings/ash_strings_ca.xtb
@@ -4,7 +4,8 @@ <translation id="1012876632442809908">Dispositiu USB-C (port frontal)</translation> <translation id="1013598600051641573">La resolució de la pantalla <ph name="DISPLAY_NAME" /> ha canviat a <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Fes clic a Confirma per conservar els canvis. La configuració anterior es restaurarà d'aquí a <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">El dispositiu Bluetooth "<ph name="DEVICE_NAME" />" sol·licita permís per emparellar-se. Introduïu aquest codi PIN al dispositiu: <ph name="PINCODE" />.</translation> -<translation id="1017556409696559990">Minimitza la finestra superior quan no hi hagi historial anterior a Chrome</translation> +<translation id="1014722676793506285">Això permet que <ph name="APP_NAME" /> i totes les aplicacions i tots els llocs web que tinguin el permís d'ubicació i ChromeOS utilitzin la ubicació de la Wi-Fi i de les xarxes mòbils.</translation> +<translation id="1017556409696559990">Minimitza la finestra superior quan no hi hagi historial del botó Enrere a Chrome</translation> <translation id="1024364763893396229">Desa el dispositiu <ph name="NAME" /></translation> <translation id="1032891413405719768">El llapis òptic té poca bateria</translation> <translation id="1036073649888683237">Per gestionar les notificacions, ves a Configuració</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Activa l'accés a la ubicació</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> s'ha deixat de fixar</translation> <translation id="1838895407229022812">La funció Llum nocturna està desactivada.</translation> <translation id="1854180393107901205">Atura l'emissió</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">El telèfon ha de tenir dades mòbils per proporcionar un punt d'accés</translation> <translation id="2727175239389218057">Respon</translation> <translation id="2727977024730340865">S'ha connectat a un carregador de baix consum. És possible que la càrrega de la bateria no sigui fiable.</translation> -<translation id="2740531572673183784">D'acord</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Suprimeix"</translation> <translation id="2750941250130734256">Finestra activa desacoblada.</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">Què pots fer?</translation> <translation id="3256109297135787951">Deixa de destacar un element del prestatge</translation> <translation id="3260969790895726815">La parla es processa localment i el dictat funciona sense connexió, però algunes ordres de veu no funcionaran.</translation> +<translation id="3265032511221679826">Vols activar l'accés a la ubicació exacta?</translation> <translation id="3269597722229482060">Clic amb el botó dret</translation> <translation id="3289364673986435196">Menú d'engegada</translation> <translation id="3289544412142055976">Actualment, les aplicacions de Linux no s'admeten</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733">Usuari gestionat (<ph name="USER_EMAIL_ADDRESS" />)</translation> <translation id="3666266999138159418">Llisca per amagar la finestra flotant</translation> <translation id="367531336287639526">Selecciona la primera icona a l'esquerra de la barra d'adreces</translation> +<translation id="3677931086890821290">Això permet que totes les aplicacions i tots els llocs web que tinguin el permís d'ubicació i ChromeOS utilitzin la ubicació de la Wi-Fi i de les xarxes mòbils.</translation> <translation id="3679827876008292680">Ves a la darrera pestanya de la finestra</translation> <translation id="36813544980941320">Les xarxes Wi-Fi es compartiran entre el teu telèfon i el dispositiu <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Llocs web</translation> @@ -1744,6 +1747,7 @@ <translation id="9198992156681343238">La resolució de la pantalla <ph name="DISPLAY_NAME" /> ha canviat a <ph name="RESOLUTION" />. Fes clic a Confirma per conservar els canvis. La configuració anterior es restaurarà d'aquí a <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Connecta els <ph name="NAME" /> a aquest Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, gestionada per l'administrador</translation> +<translation id="9207682216934703221">Això permet que <ph name="APP_NAME" />, <ph name="APP2_NAME" /> i totes les aplicacions i tots els llocs web que tinguin el permís d'ubicació i ChromeOS utilitzin la ubicació de la Wi-Fi i de les xarxes mòbils.</translation> <translation id="9210037371811586452">S'està sortint del mode d'escriptori unificat</translation> <translation id="9211490828691860325">Tots els escriptoris</translation> <translation id="9211681782751733685">Temps restant perquè es carregui totalment la bateria: <ph name="TIME_REMAINING" />.</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb index fa732f6..bb71692 100644 --- a/ash/strings/ash_strings_cs.xtb +++ b/ash/strings/ash_strings_cs.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Zařízení USB Type-C (přední port)</translation> <translation id="1013598600051641573">Rozlišení monitoru <ph name="DISPLAY_NAME" /> bylo změněno na <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Chcete-li změny ponechat, potvrďte je. Předchozí nastavení bude obnoveno za <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Zařízení Bluetooth „<ph name="DEVICE_NAME" />“ žádá o povolení ke spárování. Zadejte prosím v zařízení tento kód PIN: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Aplikace <ph name="APP_NAME" />, všechny aplikace a weby s oprávněním pro přístup k poloze a systém Chrome OS budou moci používat polohu Wi-Fi a mobilních sítí.</translation> <translation id="1017556409696559990">Minimalizovat horní okno, když v Chromu není žádná zpětná historie</translation> <translation id="1024364763893396229">Uložení zařízení <ph name="NAME" /></translation> <translation id="1032891413405719768">Baterie dotykového pera je slabá</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Otevřít stránku Historie</translation> <translation id="1654477262762802994">Zahájit hlasový dotaz</translation> <translation id="1668469839109562275">Vestavěná VPN</translation> +<translation id="1675844249244994876">Aktualizovat pravé okno</translation> <translation id="1677472565718498478">zbývající čas: <ph name="TIME" /></translation> <translation id="1677507110654891115">Funkce <ph name="FEATURE_NAME" /> není připojena.</translation> <translation id="1677582821739292812">Někdo se dívá na vaši obrazovku</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Zapnout přístup k poloze</translation> <translation id="1830308660060964064">Položka <ph name="ITEM_TITLE" /> byla odepnuta</translation> <translation id="1838895407229022812">Noční režim je vypnutý.</translation> <translation id="1854180393107901205">Zastavit odesílání</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Aby telefon mohl sloužit jako hotspot, musí v něm být zapnutá mobilní data</translation> <translation id="2727175239389218057">Odpovědět</translation> <translation id="2727977024730340865">Byla připojena nabíječka s nízkým výkonem. Nabíjení baterie nemusí probíhat spolehlivě.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Smazat“</translation> <translation id="2750941250130734256">Aktivní okno není zadokováno.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">Co umíš?</translation> <translation id="3256109297135787951">Odebrat zvýraznění z položky na poličce</translation> <translation id="3260969790895726815">Řeč se zpracovává místně a diktování funguje offline, ale některé hlasové příkazy nebudou fungovat.</translation> +<translation id="3265032511221679826">Zapnout přístup k přesné poloze?</translation> <translation id="3269597722229482060">Kliknutí pravým tlačítkem</translation> <translation id="3289364673986435196">Nabídka napájení</translation> <translation id="3289544412142055976">Linuxové aplikace v současné době nejsou podporovány</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> – spravovaný uživatel</translation> <translation id="3666266999138159418">Plovoucí okno skryjete přejetím prstem</translation> <translation id="367531336287639526">Vybrat první ikonu vlevo od adresního řádku</translation> +<translation id="3677931086890821290">Všechny aplikace a weby s oprávněním pro přístup k poloze a systém ChromeOS budou moci používat polohu Wi-Fi a mobilních sítí.</translation> <translation id="3679827876008292680">Přejít na poslední kartu v okně</translation> <translation id="36813544980941320">Sítě Wi-Fi se budou sdílet mezi vaším telefonem a zařízením <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Webové stránky</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">Oddálit obrazovku</translation> <translation id="4936329710968938986">Všichni, vypnuto</translation> <translation id="4938176435186993759">Skrýt všechny návrhy</translation> +<translation id="4943007472417128747">Hotspot byl za účelem použití Wi-Fi vypnut. Pokud ho chcete použít, vypněte Wi-Fi.</translation> <translation id="4945196315133970626">Vypnout oznámení</translation> <translation id="4946376291507881335">Zachytit</translation> <translation id="495046168593986294">Posunout nahoru</translation> @@ -1388,6 +1393,7 @@ Pokud zařízení chcete vypnout, znovu podržte tlačítko napájení na zařízení.</translation> <translation id="7526573455193969409">Síť může být sledována</translation> <translation id="7536035074519304529">IP adresa: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Aktualizovat levé okno</translation> <translation id="7543399541175347147">Aplikace pro Linux a anonymní okna v současné době nejsou podporovány. Ostatní aplikace budou uloženy.</translation> <translation id="7544300628205093162">Podsvícení klávesnice je zapnuté</translation> <translation id="7548434653388805669">Čas jít spát</translation> @@ -1468,6 +1474,7 @@ <translation id="7893503627044934815">Tento soubor nechci zobrazovat</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Stiskli jste klávesovou zkratku pro otočení obrazovky. Chcete otočit obrazovku?</translation> +<translation id="7901190436359881020">Zaměnit okna</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Dotkněte se snímače otisků prstů</translation> <translation id="7904094684485781019">Správce tohoto účtu zakázal vícenásobné přihlášení.</translation> @@ -1742,6 +1749,7 @@ <translation id="9198992156681343238">Rozlišení displeje <ph name="DISPLAY_NAME" /> bylo změněno na <ph name="RESOLUTION" />. Chcete-li změny ponechat, potvrďte je. Předchozí nastavení bude obnoveno za <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Připojte <ph name="NAME" /> k tomuto Chromebooku</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, spravováno vaším administrátorem</translation> +<translation id="9207682216934703221">Aplikace <ph name="APP_NAME" />, <ph name="APP2_NAME" />, všechny aplikace a weby s oprávněním pro přístup k poloze a systém Chrome OS budou moci používat polohu Wi-Fi a mobilních sítí.</translation> <translation id="9210037371811586452">Ukončování režimu jednotné plochy</translation> <translation id="9211490828691860325">Všechny plochy</translation> <translation id="9211681782751733685">Doba zbývající do úplného nabití baterie: <ph name="TIME_REMAINING" />.</translation>
diff --git a/ash/strings/ash_strings_cy.xtb b/ash/strings/ash_strings_cy.xtb index 738e0e2..e89e113 100644 --- a/ash/strings/ash_strings_cy.xtb +++ b/ash/strings/ash_strings_cy.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Rhaid bod gan eich ffôn ddata symudol i ddarparu poethfan</translation> <translation id="2727175239389218057">Ateb</translation> <translation id="2727977024730340865">Wedi'i blygio i mewn i wefrydd pŵer isel. Mae'n bosib na fydd gwefru'r batri yn ddibynadwy.</translation> -<translation id="2740531572673183784">Iawn</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Dileu"</translation> <translation id="2750941250130734256">Mae'r ffenestr weithredol wedi'i rhyddhau.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Pwyswch Enter i recordio'r ffenestr</translation> <translation id="5978382165065462689">Rhannu rheolaeth o'ch sgrîn drwy Gymorth o Bell.</translation> <translation id="5980301590375426705">Gadael gwestai</translation> +<translation id="5983567367406220847">Oherwydd anweithgarwch, mae'r boethfan wedi'i diffodd.</translation> <translation id="598407983968395253">Defnyddio templed</translation> <translation id="598882571027504733">I gael y diweddariad, ailgychwynnwch eich Chromebook gyda'r bysellfwrdd wedi'i atodi.</translation> <translation id="6002179289567220515">Defnyddioch y switsh corfforol i ddiffodd 1 camera. Gallwch hefyd ddiffodd mynediad ar gyfer pob camera.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">Mae ap yn defnyddio'ch camera</translation> <translation id="7453330308669753048">Canlyniad hanes chwilio wedi'i dynnu</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> nes ei fod yn llawn</translation> +<translation id="7459485586006128091">Oherwydd gwall mewnol, mae'r boethfan wedi'i diffodd. Rhowch gynnig ar ailgysylltu mewn ychydig funudau.</translation> <translation id="7461924472993315131">Pinio</translation> <translation id="746232733191930409">Modd recordio'r sgrîn</translation> <translation id="7466449121337984263">Cyffyrddwch â'r synhwyrydd</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">Cliciwch i weld manylion y diweddariad</translation> <translation id="7768784765476638775">Dewis i siarad</translation> <translation id="7769299611924763557">Bydd eich GIF yn barod yn fuan</translation> +<translation id="7773536009433685931">Trowch y Wi-Fi ymlaen yn lle hynny</translation> <translation id="7780094051999721182">llwybrau byr</translation> <translation id="7780159184141939021">Cylchdroi'r Sgrîn</translation> <translation id="7796735576426975947">Hysbysiad newydd wedi'i guddio</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb index e3b5166..e49e0492 100644 --- a/ash/strings/ash_strings_da.xtb +++ b/ash/strings/ash_strings_da.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C-enhed (port foran)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> blev ændret til <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Klik på Bekræft for at gemme ændringerne. De tidligere indstillinger gendannes om <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Bluetooth-enheden "<ph name="DEVICE_NAME" />" vil gerne have parringstilladelse. Angiv denne pinkode på den pågældende enhed: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Dette giver <ph name="APP_NAME" />, alle apps og websites med adgangstilladelse til lokation og ChromeOS tilladelse til at bruge lokation baseret på Wi-Fi- og mobilnetværk.</translation> <translation id="1017556409696559990">Minimer det øverste vindue, når der ikke er noget at gå tilbage til i Chrome</translation> <translation id="1024364763893396229">Gem dine <ph name="NAME" /></translation> <translation id="1032891413405719768">Styluspennen er ved at løbe tør for batteri</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Åbn siden Historik</translation> <translation id="1654477262762802994">Start en stemmeforespørgsel</translation> <translation id="1668469839109562275">Indbygget VPN</translation> +<translation id="1675844249244994876">Opdater vinduet til højre</translation> <translation id="1677472565718498478"><ph name="TIME" /> tilbage</translation> <translation id="1677507110654891115">Der er ikke forbindelse til <ph name="FEATURE_NAME" />.</translation> <translation id="1677582821739292812">Nogen kigger med på din skærm</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Aktivér lokationsadgang</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> blev frigjort</translation> <translation id="1838895407229022812">Nattelys er slået fra.</translation> <translation id="1854180393107901205">Stop cast</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Din telefon skal have mobildata for at fungere som hotspot</translation> <translation id="2727175239389218057">Svar</translation> <translation id="2727977024730340865">Tilsluttet en oplader med lav kraft. Batteriopladningen er muligvis ikke pålidelig.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Slet"</translation> <translation id="2750941250130734256">Det aktive vindue er frigjort.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">Hvad kan du gøre?</translation> <translation id="3256109297135787951">Fjern fremhævningen af et element på din hylde</translation> <translation id="3260969790895726815">Tale behandles lokalt, og diktering fungerer offline, men visse stemmekommandoer fungerer ikke.</translation> +<translation id="3265032511221679826">Vil du aktivere præcis lokationsadgang?</translation> <translation id="3269597722229482060">Højreklik</translation> <translation id="3289364673986435196">Menu for afbryderknappen</translation> <translation id="3289544412142055976">Linux-apps understøttes ikke i øjeblikket</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Administreret bruger</translation> <translation id="3666266999138159418">Stryg for at skjule det svævende vindue</translation> <translation id="367531336287639526">Vælg det første ikon til venstre for adresselinjen</translation> +<translation id="3677931086890821290">Dette giver alle apps og websites med adgangstilladelse til lokation og ChromeOS tilladelse til at bruge lokation baseret på Wi-Fi- og mobilnetværk.</translation> <translation id="3679827876008292680">Gå til den sidste fane i vinduet</translation> <translation id="36813544980941320">Wi-Fi-netværk deles mellem din telefon og <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Websites</translation> @@ -771,7 +775,7 @@ <translation id="4585337515783392668">Stop cast på en ukendt modtager</translation> <translation id="4596144739579517758">Mørkt tema er deaktiveret</translation> <translation id="4611292653554630842">Log ind</translation> -<translation id="4623167406982293031">Bekræft konto</translation> +<translation id="4623167406982293031">Verificer konto</translation> <translation id="4628757576491864469">Enheder</translation> <translation id="4631891353005174729"><ph name="APP_NAME_TYPE" />, antal stjerner <ph name="RATING_SCORE" /></translation> <translation id="4633185660152240791">{0,plural, =1{Skift til en tidligere version af enheden inden for en dag}one{Skift til en tidligere version af enheden inden for # dag}other{Skift til en tidligere version af enheden inden for # dage}}</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">Zoom ud på skærmen</translation> <translation id="4936329710968938986">Alle, deaktiveret</translation> <translation id="4938176435186993759">Skjul alle forslag</translation> +<translation id="4943007472417128747">Hotspot er blevet deaktiveret, så der kan bruges Wi-Fi. Deaktiver Wi-Fi for at bruge hotspot.</translation> <translation id="4945196315133970626">Deaktiver notifikationer</translation> <translation id="4946376291507881335">Tag billeder</translation> <translation id="495046168593986294">Rul op</translation> @@ -1067,6 +1072,7 @@ <translation id="5976112937189445008">Tryk på Enter for at optage vinduet</translation> <translation id="5978382165065462689">Skærmdeling via Fjernsupport.</translation> <translation id="5980301590375426705">Afslut gæst</translation> +<translation id="5983567367406220847">Hotspottet er blevet deaktiveret på grund af inaktivitet.</translation> <translation id="598407983968395253">Brug skabelon</translation> <translation id="598882571027504733">Genstart din Chromebook med det tilsluttede tastatur for at hente opdateringen.</translation> <translation id="6002179289567220515">Du brugte den fysiske kontakt til at slukke 1 kamera. Du kan også deaktivere adgang for alle kameraer.</translation> @@ -1369,6 +1375,7 @@ <translation id="7452560014878697800">Dit kamera anvendes af en app</translation> <translation id="7453330308669753048">Resultatet fra søgehistorikken er fjernet</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" /> % | <ph name="TIME" /> til batteriet er fuldt opladet</translation> +<translation id="7459485586006128091">Hotspottet er blevet deaktiveret på grund af en intern fejl. Prøv at genoprette forbindelsen om et par minutter.</translation> <translation id="7461924472993315131">Fastgør</translation> <translation id="746232733191930409">Tilstanden Skærmoptagelse</translation> <translation id="7466449121337984263">Placer fingeren på sensoren</translation> @@ -1388,6 +1395,7 @@ Du kan slukke enheden ved at holde afbryderknappen på enheden nede igen.</translation> <translation id="7526573455193969409">Netværket kan være overvåget</translation> <translation id="7536035074519304529">IP-adresse: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Opdater vinduet til venstre</translation> <translation id="7543399541175347147">Linux-apps og inkognitovinduer understøttes ikke i øjeblikket. Andre apps gemmes.</translation> <translation id="7544300628205093162">Baggrundslyset på tastaturet er tændt</translation> <translation id="7548434653388805669">Det er sengetid</translation> @@ -1441,6 +1449,7 @@ <translation id="776344839111254542">Klik for at se opdateringsoplysninger</translation> <translation id="7768784765476638775">Tekstoplæsning</translation> <translation id="7769299611924763557">Din gif er klar om et øjeblik</translation> +<translation id="7773536009433685931">Aktivér Wi-Fi i stedet</translation> <translation id="7780094051999721182">genveje</translation> <translation id="7780159184141939021">Roter skærm</translation> <translation id="7796735576426975947">Nye notifikationer er skjult</translation> @@ -1468,6 +1477,7 @@ <translation id="7893503627044934815">Jeg vil ikke have, at denne fil vises</translation> <translation id="7895348134893321514">Transportkasse</translation> <translation id="7897375687985782769">Du trykkede på tastaturgenvejen for skærmrotation. Vil du rotere skærmen?</translation> +<translation id="7901190436359881020">Byt vinduerne</translation> <translation id="7901405293566323524">Telefonstyring</translation> <translation id="7902625623987030061">Sæt finger på fingeraftrykslæser</translation> <translation id="7904094684485781019">Administratoren for denne konto tillader ikke samlet login fra flere konti.</translation> @@ -1743,6 +1753,7 @@ <translation id="9198992156681343238">Opløsningen for <ph name="DISPLAY_NAME" /> er blevet ændret til <ph name="RESOLUTION" />. Klik på Bekræft for at gemme ændringerne. De tidligere indstillinger gendannes om <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Opret forbindelse mellem <ph name="NAME" /> og denne Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, administreret af din administrator</translation> +<translation id="9207682216934703221">Dette giver <ph name="APP_NAME" />, <ph name="APP2_NAME" />, alle apps og websites med adgangstilladelse til lokation og ChromeOS tilladelse til at bruge lokation baseret på Wi-Fi- og mobilnetværk.</translation> <translation id="9210037371811586452">Lukker tilstanden Kombineret skrivebord</translation> <translation id="9211490828691860325">Alle skriveborde</translation> <translation id="9211681782751733685"><ph name="TIME_REMAINING" /> til batteriet er fuldt opladet.</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb index ab55208..93f084d 100644 --- a/ash/strings/ash_strings_de.xtb +++ b/ash/strings/ash_strings_de.xtb
@@ -148,6 +148,7 @@ <translation id="1651914502370159744">Verlaufsseite öffnen</translation> <translation id="1654477262762802994">Gesprochene Anfrage starten</translation> <translation id="1668469839109562275">Integriertes VPN</translation> +<translation id="1675844249244994876">Rechtes Fenster aktualisieren</translation> <translation id="1677472565718498478">Noch <ph name="TIME" /> h</translation> <translation id="1677507110654891115">"<ph name="FEATURE_NAME" />" ist nicht verbunden.</translation> <translation id="1677582821739292812">Jemand sieht auf deinen Bildschirm</translation> @@ -367,7 +368,6 @@ <translation id="2726420622004325180">Damit dein Smartphone einen Hotspot nutzen kann, müssen mobile Daten aktiviert sein</translation> <translation id="2727175239389218057">Antworten</translation> <translation id="2727977024730340865">Das Gerät ist an ein Schwachstrom-Ladegerät angeschlossen. Möglicherweise kann der Akku nicht zuverlässig aufgeladen werden.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Löschen“</translation> <translation id="2750941250130734256">Fixierung des aktiven Fensters rückgängig gemacht.</translation> @@ -847,6 +847,7 @@ <translation id="493076006037866439">Auf dem Bildschirm herauszoomen</translation> <translation id="4936329710968938986">Alle, aus</translation> <translation id="4938176435186993759">Alle Vorschläge ausblenden</translation> +<translation id="4943007472417128747">Der Hotspot wurde deaktiviert, um das WLAN zu verwenden. Deaktiviere das WLAN, wenn du den Hotspot verwenden möchtest.</translation> <translation id="4945196315133970626">Benachrichtigungen deaktivieren</translation> <translation id="4946376291507881335">Aufnahme</translation> <translation id="495046168593986294">Nach oben scrollen</translation> @@ -1070,6 +1071,7 @@ <translation id="5976112937189445008">Eingabetaste drücken, um Fenster aufzuzeichnen</translation> <translation id="5978382165065462689">Du teilst dir die Bildschirmsteuerung per Remote-Unterstützung.</translation> <translation id="5980301590375426705">Gastsitzung beenden</translation> +<translation id="5983567367406220847">Aufgrund von Inaktivität wurde der Hotspot deaktiviert.</translation> <translation id="598407983968395253">Vorlage verwenden</translation> <translation id="598882571027504733">Du kannst das Update vornehmen, indem du dein Chromebook mit angeschlossener Tastatur neu startest.</translation> <translation id="6002179289567220515">Du hast über den physischen Schalter eine Kamera ausgeschaltet. Du kannst auch den Zugriff für alle Kameras deaktivieren.</translation> @@ -1372,6 +1374,7 @@ <translation id="7452560014878697800">Eine Anwendung verwendet deine Kamera</translation> <translation id="7453330308669753048">Ergebnis aus dem Suchverlauf entfernt</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" /> % | vollständig geladen in <ph name="TIME" /></translation> +<translation id="7459485586006128091">Aufgrund eines internen Fehlers wurde der Hotspot deaktiviert. Versuche in ein paar Minuten noch einmal, eine Verbindung herzustellen.</translation> <translation id="7461924472993315131">Anpinnen</translation> <translation id="746232733191930409">Modus zur Aufzeichnung des Bildschirms</translation> <translation id="7466449121337984263">Berühre den Sensor</translation> @@ -1391,6 +1394,7 @@ Halte zum Herunterfahren des Geräts die Ein-/Aus-Taste noch einmal gedrückt.</translation> <translation id="7526573455193969409">Das Netzwerk wird möglicherweise überwacht</translation> <translation id="7536035074519304529">IP-Adresse: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Linkes Fenster aktualisieren</translation> <translation id="7543399541175347147">Linux-Apps und Inkognitofenster werden derzeit nicht unterstützt. Andere Apps werden gespeichert.</translation> <translation id="7544300628205093162">Hintergrundbeleuchtung der Tastatur ist an</translation> <translation id="7548434653388805669">Schlafenszeit</translation> @@ -1444,6 +1448,7 @@ <translation id="776344839111254542">Zum Aufrufen von Aktualisierungsdetails klicken</translation> <translation id="7768784765476638775">Vorlesen</translation> <translation id="7769299611924763557">Die GIF-Datei ist gleich bereit</translation> +<translation id="7773536009433685931">Stattdessen WLAN aktivieren</translation> <translation id="7780094051999721182">Verknüpfungen</translation> <translation id="7780159184141939021">Bildschirm drehen</translation> <translation id="7796735576426975947">Neue Benachrichtigung ausgeblendet</translation> @@ -1471,6 +1476,7 @@ <translation id="7893503627044934815">Ich möchte nicht, dass diese Datei angezeigt wird</translation> <translation id="7895348134893321514">Schnellzugriff</translation> <translation id="7897375687985782769">Du hast die Tastenkombination zum Drehen des Bildschirms gedrückt. Möchtest du den Bildschirm drehen?</translation> +<translation id="7901190436359881020">Fenster tauschen</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Fingerabdrucksensor berühren</translation> <translation id="7904094684485781019">Der Administrator dieses Kontos hat keine Mehrfachanmeldung zugelassen.</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb index e362ae84..5578a9a 100644 --- a/ash/strings/ash_strings_el.xtb +++ b/ash/strings/ash_strings_el.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Το τηλέφωνό σας πρέπει να διαθέτει σύνδεση δεδομένων κινητής τηλεφωνίας για να παρέχει σημείο πρόσβασης Wi-Fi</translation> <translation id="2727175239389218057">Απάντηση</translation> <translation id="2727977024730340865">Σύνδεση με φορτιστή χαμηλής ισχύος. Η φόρτιση της μπαταρίας ενδέχεται να μη γίνεται με αξιόπιστο τρόπο.</translation> -<translation id="2740531572673183784">ΟK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Διαγραφή"</translation> <translation id="2750941250130734256">Έγινε απαγκύρωση του ενεργού παραθύρου.</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb index 274802e..cfda2cde 100644 --- a/ash/strings/ash_strings_en-GB.xtb +++ b/ash/strings/ash_strings_en-GB.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Your phone must have mobile data to provide a hotspot</translation> <translation id="2727175239389218057">Reply</translation> <translation id="2727977024730340865">Plugged in to a low-power charger. Battery charging may not be reliable.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">'Delete'</translation> <translation id="2750941250130734256">Active window undocked.</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index b8f1a27..5711232 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Dispositivo USB-C (puerto delantero)</translation> <translation id="1013598600051641573">Se cambió la resolución de <ph name="DISPLAY_NAME" /> a <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Para mantener este cambio, haz clic en Confirmar. En <ph name="TIMEOUT_SECONDS" />, se restablecerá la configuración anterior.</translation> <translation id="1013923882670373915">El dispositivo Bluetooth "<ph name="DEVICE_NAME" />" solicita permiso para sincronizarse. Ingresa el siguiente código de PIN en el dispositivo: <ph name="PINCODE" />.</translation> +<translation id="1014722676793506285">Esto permite que <ph name="APP_NAME" />, todas las apps y sitios web con el permiso de ubicación y ChromeOS usen la ubicación del Wi-Fi y las redes móviles.</translation> <translation id="1017556409696559990">Minimizar la ventana superior cuando no hay historial del botón Atrás en Chrome</translation> <translation id="1024364763893396229">Guarda tu <ph name="NAME" /></translation> <translation id="1032891413405719768">El nivel de la batería de la pluma stylus está bajo</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Abrir la página del Historial</translation> <translation id="1654477262762802994">Iniciar una búsqueda por voz</translation> <translation id="1668469839109562275">VPN integrada</translation> +<translation id="1675844249244994876">Actualizar la ventana de la derecha</translation> <translation id="1677472565718498478">Tiempo restante <ph name="TIME" /></translation> <translation id="1677507110654891115">No se conectó <ph name="FEATURE_NAME" />.</translation> <translation id="1677582821739292812">Alguien más está viendo tu pantalla</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Activar el acceso a la ubicación</translation> <translation id="1830308660060964064">Se dejó de fijar <ph name="ITEM_TITLE" /></translation> <translation id="1838895407229022812">La luz nocturna está apagada.</translation> <translation id="1854180393107901205">Detener transmisión</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Tu teléfono debe tener los datos móviles activados para proporcionar un hotspot.</translation> <translation id="2727175239389218057">Responder</translation> <translation id="2727977024730340865">Conexión a un cargador de baja potencia. Es posible que la carga de la batería no sea confiable.</translation> -<translation id="2740531572673183784">Aceptar</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Borrar"</translation> <translation id="2750941250130734256">Se desancló la ventana activa.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">¿Qué puedes hacer?</translation> <translation id="3256109297135787951">Dejar de destacar un elemento en la biblioteca</translation> <translation id="3260969790895726815">La voz se procesa de manera local y el dictado funciona sin conexión, pero algunos comandos por voz no funcionarán.</translation> +<translation id="3265032511221679826">¿Quieres activar el acceso a la ubicación precisa?</translation> <translation id="3269597722229482060">Hacer clic con el botón derecho</translation> <translation id="3289364673986435196">Menú de encendido</translation> <translation id="3289544412142055976">Por el momento, las apps de Linux no son compatibles</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" />, usuario administrado</translation> <translation id="3666266999138159418">Desliza para ocultar la ventana flotante</translation> <translation id="367531336287639526">Seleccionar el primer ícono a la izquierda de la barra de direcciones</translation> +<translation id="3677931086890821290">Esto permite que todas las apps y sitios web con el permiso de ubicación y ChromeOS usen la ubicación del Wi-Fi y las redes móviles.</translation> <translation id="3679827876008292680">Ir a la última pestaña en la ventana</translation> <translation id="36813544980941320">Se compartirán las redes Wi-Fi entre tu teléfono y tu <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Sitios web</translation> @@ -845,6 +849,7 @@ <translation id="493076006037866439">Alejar la pantalla</translation> <translation id="4936329710968938986">Todos, desactivado</translation> <translation id="4938176435186993759">Ocultar todas las sugerencias</translation> +<translation id="4943007472417128747">Se desactivó el hotspot para usar la conexión Wi-Fi. Para usar el hotspot, desactiva la conexión Wi-Fi.</translation> <translation id="4945196315133970626">Desactivar las notificaciones</translation> <translation id="4946376291507881335">Captura</translation> <translation id="495046168593986294">Desplazar hacia arriba</translation> @@ -1389,6 +1394,7 @@ Para apagarlo, vuelve a mantener presionado el botón de encendido.</translation> <translation id="7526573455193969409">Es posible que la red esté supervisada</translation> <translation id="7536035074519304529">Dirección IP: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Actualizar la ventana de la izquierda</translation> <translation id="7543399541175347147">Por el momento, las apps de Linux y las ventanas de incógnito no son compatibles. Se guardarán las demás apps.</translation> <translation id="7544300628205093162">La retroiluminación del teclado está activada</translation> <translation id="7548434653388805669">Es hora de ir a la cama</translation> @@ -1469,6 +1475,7 @@ <translation id="7893503627044934815">No quiero ver este archivo</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Presionaste la combinación de teclas para girar la pantalla. ¿Quieres llevar a cabo esta acción?</translation> +<translation id="7901190436359881020">Intercambiar las ventanas</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Toca el sensor de huellas dactilares</translation> <translation id="7904094684485781019">El administrador de esta cuenta inhabilitó el acceso múltiple.</translation> @@ -1744,6 +1751,7 @@ <translation id="9198992156681343238">Se cambió la resolución de <ph name="DISPLAY_NAME" /> a <ph name="RESOLUTION" />. Para mantener este cambio, haz clic en Confirmar. En <ph name="TIMEOUT_SECONDS" />, se restablecerá la configuración anterior.</translation> <translation id="9201044636667689546">Conecta el dispositivo <ph name="NAME" /> con esta Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, administrada por tu administrador</translation> +<translation id="9207682216934703221">Esto permite que <ph name="APP_NAME" />, <ph name="APP2_NAME" />, todas las apps y los sitios web con el permiso de ubicación y ChromeOS usen la ubicación del Wi-Fi y las redes móviles.</translation> <translation id="9210037371811586452">Saliendo del modo de escritorio unificado</translation> <translation id="9211490828691860325">Todos los escritorios</translation> <translation id="9211681782751733685">Tiempo restante hasta que se cargue por completo la batería: <ph name="TIME_REMAINING" /></translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb index 28ecc98..8ef1ba4 100644 --- a/ash/strings/ash_strings_es.xtb +++ b/ash/strings/ash_strings_es.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Se requieren datos móviles para activar el punto de acceso</translation> <translation id="2727175239389218057">Responder</translation> <translation id="2727977024730340865">Conectado a un cargador de baja potencia. Es posible que la carga de la batería no sea fiable.</translation> -<translation id="2740531572673183784">Aceptar</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Eliminar"</translation> <translation id="2750941250130734256">Ventana activa desanclada.</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb index 35547e4..e12e505c 100644 --- a/ash/strings/ash_strings_et.xtb +++ b/ash/strings/ash_strings_et.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Teie telefonil peab kuumkoha pakkumiseks olema mobiilne andmesideühendus</translation> <translation id="2727175239389218057">Vasta</translation> <translation id="2727977024730340865">Ühendatud väikese energiakuluga laadijaga. Aku laadimine võib olla ebastabiilne.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Kustuta“</translation> <translation id="2750941250130734256">Aktiivne aken dokiti lahti.</translation> @@ -1074,6 +1073,7 @@ <translation id="5976112937189445008">Vajutage akna salvestamiseks sisestusklahvi</translation> <translation id="5978382165065462689">Ekraani juhtimise jagamine kaugabi kaudu.</translation> <translation id="5980301590375426705">Välju kül. seansist</translation> +<translation id="5983567367406220847">Tegevusetuse tõttu on kuumkoht välja lülitatud.</translation> <translation id="598407983968395253">Kasuta malli</translation> <translation id="598882571027504733">Värskenduse hankimiseks taaskäivitage Chromebook koos ühendatud klaviatuuriga.</translation> <translation id="6002179289567220515">Kasutasite füüsilist lülitit, et 1 kaamera välja lülitada. Samuti saate lülitada välja juurdepääsu kõigile kaameratele.</translation> @@ -1376,6 +1376,7 @@ <translation id="7452560014878697800">Rakendus kasutab teie kaamerat</translation> <translation id="7453330308669753048">Otsinguajaloo tulemus eemaldati</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> täitumiseni</translation> +<translation id="7459485586006128091">Sisemise vea tõttu on kuumkoht välja lülitatud. Proovige mõne minuti pärast uuesti ühendust luua.</translation> <translation id="7461924472993315131">Kinnita</translation> <translation id="746232733191930409">Ekraanisalvestuse režiim</translation> <translation id="7466449121337984263">Puudutage andurit</translation> @@ -1449,6 +1450,7 @@ <translation id="776344839111254542">Klõpsake värskenduse üksikasjade vaatamiseks</translation> <translation id="7768784765476638775">Vali ja kuula</translation> <translation id="7769299611924763557">Teie GIF on varsti valmis</translation> +<translation id="7773536009433685931">Lülita sisse hoopis WiFi</translation> <translation id="7780094051999721182">otseteid</translation> <translation id="7780159184141939021">Ekraanikuva pööramine</translation> <translation id="7796735576426975947">Uus märguanne on peidetud</translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb index 997a0043..e1d1f05 100644 --- a/ash/strings/ash_strings_eu.xtb +++ b/ash/strings/ash_strings_eu.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C gailua (aurrealdeko ataka)</translation> <translation id="1013598600051641573"><ph name="RESOLUTION" />-ko bereizmenera (<ph name="REFRESH_RATE" /> Hz) aldatu da <ph name="DISPLAY_NAME" /> pantaila. Aldaketak gordetzeko, sakatu berresteko botoia. <ph name="TIMEOUT_SECONDS" /> barru aurreko ezarpenak leheneratuko dira.</translation> <translation id="1013923882670373915">Bluetooth bidezko "<ph name="DEVICE_NAME" />" gailuak parekatzeko baimena nahi du. Idatzi PIN kode hau gailuan: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Honen bidez, <ph name="APP_NAME" /> aplikazioak, kokapena atzitzeko baimena daukaten aplikazio eta webgune guztiek eta ChromeOS-ek wifiaren eta sare mugikorren araberako kokapena erabili ahal izango dute.</translation> <translation id="1024364763893396229">Gorde <ph name="NAME" /> gailua</translation> <translation id="1032891413405719768">Pila agortzen ari zaio arkatzari</translation> <translation id="1036073649888683237">Jakinarazpenak kudeatzeko, joan ezarpenetara</translation> @@ -146,6 +147,7 @@ <translation id="1651914502370159744">Ireki Historia orria</translation> <translation id="1654477262762802994">Sortu ahozko kontsulta bat</translation> <translation id="1668469839109562275">VPN integratua</translation> +<translation id="1675844249244994876">Eguneratu eskuineko leihoa</translation> <translation id="1677472565718498478"><ph name="TIME" /> geratzen dira</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> ez dago konektatuta.</translation> <translation id="1677582821739292812">Norbait zure pantailari begira dago</translation> @@ -190,6 +192,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Aktibatu kokapenerako sarbidea</translation> <translation id="1830308660060964064">Kendu zaio aingura <ph name="ITEM_TITLE" /> elementuari</translation> <translation id="1838895407229022812">Gaueko argia itzalita dago.</translation> <translation id="1854180393107901205">Utzi igortzeari</translation> @@ -363,7 +366,6 @@ <translation id="2726420622004325180">Telefonoak datu-konexioa erabili behar du wifi-gune bat sortzeko</translation> <translation id="2727175239389218057">Erantzun</translation> <translation id="2727977024730340865">Potentzia txikiko kargagailu bat entxufatu duzu. Agian bateria kargatzeko prozesua ez da fidagarria izango.</translation> -<translation id="2740531572673183784">Ados</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" /> (<ph name="PRICE" />)</translation> <translation id="2750932254614666392">"Ezabatu"</translation> <translation id="2750941250130734256">Kendu zaio aingura leiho aktiboari.</translation> @@ -466,6 +468,7 @@ <translation id="3255483164551725916">Zer egin dezakezu?</translation> <translation id="3256109297135787951">Utzi apaleko elementu bat nabarmentzeari</translation> <translation id="3260969790895726815">Hizketa gailuan prozesatzen da eta diktaketak konexiorik gabe funtzionatzen du. Hala ere, ahozko agindu batzuek ez dute funtzionatuko.</translation> +<translation id="3265032511221679826">Kokapen zehatza erabiltzeko aukera aktibatu nahi duzu?</translation> <translation id="3269597722229482060">Egin klik eskuineko botoiarekin</translation> <translation id="3289364673986435196">Itzaltzeko menua</translation> <translation id="3289544412142055976">Une honetan ez dira onartzen Linux-eko aplikazioak</translation> @@ -576,6 +579,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" />, erabiltzaile kudeatua</translation> <translation id="3666266999138159418">Pasatu hatza leiho gainerakorra ezkutatzeko</translation> <translation id="367531336287639526">Hautatu helbide-barraren ezkerraldeko lehenengo ikonoa</translation> +<translation id="3677931086890821290">Honen bidez, kokapena atzitzeko baimena daukaten aplikazio eta webgune guztiek eta ChromeOS-ek wifiaren eta sare mugikorren araberako kokapena erabili ahal izango dute.</translation> <translation id="3679827876008292680">Joan leihoko azken fitxara</translation> <translation id="36813544980941320">Wifi-sareak telefonoaren eta <ph name="DEVICE_NAME" /> gailuaren artean partekatuko dira</translation> <translation id="3694122362646626770">Webguneak</translation> @@ -843,6 +847,7 @@ <translation id="493076006037866439">Txikitu pantaila</translation> <translation id="4936329710968938986">Denekin, desaktibatuta</translation> <translation id="4938176435186993759">Ezkutatu iradokizun guztiak</translation> +<translation id="4943007472417128747">Wifi-gunea desaktibatu da wifia erabiltzeko. Wifi-gunea erabiltzeko, desaktibatu wifia.</translation> <translation id="4945196315133970626">Desaktibatu jakinarazpenak</translation> <translation id="4946376291507881335">Atera argazkia</translation> <translation id="495046168593986294">Egin gora</translation> @@ -1382,6 +1387,7 @@ Itzaltzeko, eduki sakatuta berriro gailuaren etengailua.</translation> <translation id="7526573455193969409">Baliteke sarea gainbegiratuta egotea</translation> <translation id="7536035074519304529">IP helbidea: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Eguneratu ezkerreko leihoa</translation> <translation id="7543399541175347147">Une honetan ez dira onartzen Linux-eko aplikazioak eta ezkutuko moduko leihoak. Gainerako aplikazioak gorde egingo dira.</translation> <translation id="7544300628205093162">Teklatuaren ondoko argia piztuta dago</translation> <translation id="7548434653388805669">Ohera joateko garaia da</translation> @@ -1462,6 +1468,7 @@ <translation id="7893503627044934815">Ez dut fitxategi hau erakusterik nahi</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Pantaila biratzeko lasterbidea sakatu duzu. Pantaila biratu egin nahi duzu?</translation> +<translation id="7901190436359881020">Aldatu leihoak</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Ukitu hatz-marken sentsorea</translation> <translation id="7904094684485781019">Kontu honen administratzaileak saio-hasiera anitzerako baimenak kendu ditu.</translation> @@ -1737,6 +1744,7 @@ <translation id="9198992156681343238"><ph name="DISPLAY_NAME" /> bereizmena honako bereizmen honetara aldatu da: <ph name="RESOLUTION" />. Sakatu "Berretsi" aldaketak gordetzeko. <ph name="TIMEOUT_SECONDS" /> barru aurreko ezarpenak leheneratuko dira.</translation> <translation id="9201044636667689546">Konektatu <ph name="NAME" /> Chromebook honekin</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />. Administratzaileak kudeatua.</translation> +<translation id="9207682216934703221">Honen bidez, <ph name="APP_NAME" /> eta <ph name="APP2_NAME" /> aplikazioek, kokapena atzitzeko baimena daukaten aplikazio eta webgune guztiek eta ChromeOS-ek wifiaren eta sare mugikorren araberako kokapena erabili ahal izango dute.</translation> <translation id="9210037371811586452">Mahaigain bateratuko modutik irteten</translation> <translation id="9211490828691860325">Lan-eremu guztiak</translation> <translation id="9211681782751733685"><ph name="TIME_REMAINING" /> bateria guztiz kargatu arte.</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb index 8ad66a9..9534365 100644 --- a/ash/strings/ash_strings_fa.xtb +++ b/ash/strings/ash_strings_fa.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">تلفنتان برای ارائه نقطه اتصال باید به داده تلفن همراه دسترسی داشته باشد</translation> <translation id="2727175239389218057">پاسخ دادن</translation> <translation id="2727977024730340865">باتری به شارژر برق ضعیف متصل است. شارژ باتری ممکن است قابل اطمینان نباشد.</translation> -<translation id="2740531572673183784">تأیید</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />، <ph name="PRICE" /></translation> <translation id="2750932254614666392">«حذف»</translation> <translation id="2750941250130734256">پنجره فعال جدا شد.</translation> @@ -1072,6 +1071,7 @@ <translation id="5976112937189445008">برای ضبط پنجره، کلید «ورود» را فشار دهید</translation> <translation id="5978382165065462689">همرسانی کنترل صفحهتان از طریق راهنمایی ازراهدور.</translation> <translation id="5980301590375426705">خروج از مهمان</translation> +<translation id="5983567367406220847">نقطه اتصال بهدلیل عدم فعالیت خاموش شد.</translation> <translation id="598407983968395253">استفاده از الگو</translation> <translation id="598882571027504733">برای دریافت بهروزرسانی، Chromebook را با صفحهکلید متصل بازراهاندازی کنید.</translation> <translation id="6002179289567220515">با کلید فیزیکی یک دوربین را خاموش کردهاید. همچنین میتوانید دسترسی به همه دوربینها را خاموش کنید.</translation> @@ -1374,6 +1374,7 @@ <translation id="7452560014878697800">برنامهای درحال استفاده از دوربینتان است</translation> <translation id="7453330308669753048">نتیجه سابقه جستجو برداشته شد</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />٪ | <ph name="TIME" /> مانده تا شارژ کامل</translation> +<translation id="7459485586006128091">نقطه اتصال بهدلیل خطای داخلی خاموش شد. چند دقیقه دیگر دوباره متصل شوید.</translation> <translation id="7461924472993315131">پین</translation> <translation id="746232733191930409">حالت ضبط صفحهنمایش</translation> <translation id="7466449121337984263">لطفاً حسگر را لمس کنید</translation> @@ -1447,6 +1448,7 @@ <translation id="776344839111254542">برای مشاهده جزئیات بهروزرسانی کلیک کنید</translation> <translation id="7768784765476638775">انتخاب برای شنیدن</translation> <translation id="7769299611924763557">فایل GIF شما بهزودی آماده خواهد شد</translation> +<translation id="7773536009433685931">روشن کردن Wi-Fi</translation> <translation id="7780094051999721182">میانبرها</translation> <translation id="7780159184141939021">چرخش صفحه</translation> <translation id="7796735576426975947">اعلان جدید پنهان شده است</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb index 74e4922..f759ad0 100644 --- a/ash/strings/ash_strings_fi.xtb +++ b/ash/strings/ash_strings_fi.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Puhelimen käyttäminen modeemina edellyttää mobiilidataa</translation> <translation id="2727175239389218057">Vastaa</translation> <translation id="2727977024730340865">Pienitehoinen laturi kytketty. Akku ei ehkä lataudu luotettavasti.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">Poista</translation> <translation id="2750941250130734256">Aktiivinen ikkuna irrotettu</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Tallenna ikkunaa painamalla Enter</translation> <translation id="5978382165065462689">Näyttösi hallinta jaetaan Etätuen kautta.</translation> <translation id="5980301590375426705">Sulje vierailijatila</translation> +<translation id="5983567367406220847">Hotspot on laitettu pois päältä, koska sitä ei ole käytetty.</translation> <translation id="598407983968395253">Käytä mallia</translation> <translation id="598882571027504733">Voit asentaa päivityksen käynnistämällä Chromebookisi uudelleen niin, että näppäimistö on kytkettynä.</translation> <translation id="6002179289567220515">Laitoit yhden kameran pois päältä fyysisellä kytkimellä. Voit myös estää pääsyn kaikkiin kameroihin.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">Sovellus käyttää kameraasi</translation> <translation id="7453330308669753048">Hakuhistorian tulos poistettu</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" /> % | <ph name="TIME" /> täyteen lataukseen</translation> +<translation id="7459485586006128091">Hotspot on laitettu pois päältä sisäisen virheen takia. Yritä muodostaa yhteys uudelleen muutaman minuutin kuluttua.</translation> <translation id="7461924472993315131">Kiinnitä</translation> <translation id="746232733191930409">Näytön tallentajatila</translation> <translation id="7466449121337984263">Kosketa tunnistinta</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">Klikkaa nähdäksesi päivityksen tiedot</translation> <translation id="7768784765476638775">Teksti puhuttuna</translation> <translation id="7769299611924763557">GIF on valmis pian</translation> +<translation id="7773536009433685931">Laita Wi-Fi-yhteys päälle</translation> <translation id="7780094051999721182">pikakuvakkeista</translation> <translation id="7780159184141939021">Käännä näyttö</translation> <translation id="7796735576426975947">Uusi ilmoitus piilotettu</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb index 449e3d37..660db02a 100644 --- a/ash/strings/ash_strings_fil.xtb +++ b/ash/strings/ash_strings_fil.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Dapat na mayroong mobile data ang iyong telepono para makapagbigay ito ng hotspot</translation> <translation id="2727175239389218057">Sumagot</translation> <translation id="2727977024730340865">Naka-saksak sa isang low-power charger. Maaaring hindi maging tiyak ang pag-charge ng baterya.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"I-delete"</translation> <translation id="2750941250130734256">Naka-undock ang aktibong window.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Pindutin ang enter para i-record ang window</translation> <translation id="5978382165065462689">Pagbabahagi ng kontrol sa iyong screen sa pamamagitan ng Remote Assistance.</translation> <translation id="5980301590375426705">Lumabas</translation> +<translation id="5983567367406220847">Dahil sa kawalan ng aktibidad, na-off ang hotspot.</translation> <translation id="598407983968395253">Gamitin ang template</translation> <translation id="598882571027504733">Para makuha ang update, i-restart ang iyong Chromebook nang nakakabit ang keyboard.</translation> <translation id="6002179289567220515">Ginamit mo ang pisikal na switch para i-off ang 1 camera. Puwede mo ring i-off ang access para sa lahat ng camera.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">May application na gumagamit ng iyong camera</translation> <translation id="7453330308669753048">Naalis ang resulta ng history ng paghahanap</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> bago mapuno</translation> +<translation id="7459485586006128091">Dahil sa internal na error, na-off ang hotspot. Subukang kumonekta ulit sa loob ng ilang minuto.</translation> <translation id="7461924472993315131">I-pin</translation> <translation id="746232733191930409">Screen recording mode</translation> <translation id="7466449121337984263">Pakipindot ang sensor</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">I-click upang tingnan ang mga detalye ng update</translation> <translation id="7768784765476638775">Select to Speak</translation> <translation id="7769299611924763557">Handa na ang iyong GIF sa ilang sandali</translation> +<translation id="7773536009433685931">I-on na lang ang WiFi</translation> <translation id="7780094051999721182">mga shortcut</translation> <translation id="7780159184141939021">I-rotate ang Screen</translation> <translation id="7796735576426975947">Nakatago ang bagong notification</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb index 7841a59..bc34b9a 100644 --- a/ash/strings/ash_strings_fr-CA.xtb +++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Appareil USB-C (port avant)</translation> <translation id="1013598600051641573">La résolution de <ph name="DISPLAY_NAME" /> est passée à <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Cliquez sur Confirmer pour conserver les changements. Les paramètres précédents seront restaurés dans <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">L'appareil Bluetooth « <ph name="DEVICE_NAME" /> » demande l'autorisation de s'associer. Veuillez entrer le NIP suivant sur cet appareil : <ph name="PINCODE" />.</translation> +<translation id="1014722676793506285"><ph name="APP_NAME" />, toutes les applications et tous les sites Web disposant de l'autorisation de localisation ainsi que ChromeOS peuvent utiliser la localisation sur les réseaux Wi-Fi et mobiles.</translation> <translation id="1017556409696559990">Réduire la fenêtre supérieure lorsqu'il n'y a pas d'historique dans Chrome</translation> <translation id="1024364763893396229">Enregistrez votre <ph name="NAME" /></translation> <translation id="1032891413405719768">Le niveau de la pile du stylet est faible</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Ouvrir la page Historique</translation> <translation id="1654477262762802994">Démarrer une requête vocale</translation> <translation id="1668469839109562275">RPV intégré</translation> +<translation id="1675844249244994876">Mettre à jour la fenêtre de droite</translation> <translation id="1677472565718498478"><ph name="TIME" /> d'autonomie restante</translation> <translation id="1677507110654891115">La fonctionnalité <ph name="FEATURE_NAME" /> n'est pas connectée.</translation> <translation id="1677582821739292812">Quelqu'un regarde votre écran</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet : <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Activer l'accès aux données de localisation</translation> <translation id="1830308660060964064">L'épinglage de <ph name="ITEM_TITLE" /> été annulé</translation> <translation id="1838895407229022812">Le mode Éclairage nocturne est désactivé.</translation> <translation id="1854180393107901205">Arrêter l'envoi de contenu</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Les données cellulaires doivent être activées sur votre téléphone pour que celui-ci puisse offrir un point d'accès sans fil</translation> <translation id="2727175239389218057">Répondre</translation> <translation id="2727977024730340865">L'appareil est branché à un chargeur de faible puissance. Il se peut que la recharge de la batterie ne soit pas fiable.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">« Supprimer »</translation> <translation id="2750941250130734256">Fenêtre active désancrée.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">Que peux-tu faire?</translation> <translation id="3256109297135787951">Supprimer la mise en évidence d'un élément sur votre étagère</translation> <translation id="3260969790895726815">La voix est traitée localement et la dictée fonctionne hors ligne, mais certaines commandes vocales ne fonctionneront pas.</translation> +<translation id="3265032511221679826">Activer l'accès à la position exacte?</translation> <translation id="3269597722229482060">Clic droit</translation> <translation id="3289364673986435196">Menu de l'interrupteur</translation> <translation id="3289544412142055976">Les applications Linux ne sont pas prises en charge actuellement</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733">Utilisateur géré : <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="3666266999138159418">Balayez pour masquer votre fenêtre flottante</translation> <translation id="367531336287639526">Sélectionner la première icône à gauche de la barre d'adresse</translation> +<translation id="3677931086890821290">Toutes les applications et tous les sites Web disposant de l'autorisation de localisation ainsi que ChromeOS peuvent utiliser la localisation sur les réseaux Wi-Fi et mobiles.</translation> <translation id="3679827876008292680">Aller au dernier onglet de la fenêtre</translation> <translation id="36813544980941320">Les réseaux Wi-Fi seront partagés entre votre téléphone et votre <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Sites Web</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">Zoom arrière de l'écran</translation> <translation id="4936329710968938986">Tous les utilisateurs, désactiver</translation> <translation id="4938176435186993759">Masquer toutes les suggestions</translation> +<translation id="4943007472417128747">Le point d'accès sans fil a été désactivé pour utiliser le WiFi. Pour utiliser le point d'accès sans fil, désactivez le Wi-Fi.</translation> <translation id="4945196315133970626">Désactiver les notifications</translation> <translation id="4946376291507881335">Capturer</translation> <translation id="495046168593986294">Faire défiler vers le haut</translation> @@ -1388,6 +1393,7 @@ Pour éteindre l'appareil, appuyez à nouveau sur le bouton d'alimentation de l'appareil et maintenez-le enfoncé.</translation> <translation id="7526573455193969409">Le réseau peut être surveillé</translation> <translation id="7536035074519304529">Adresse IP : <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Mettre à jour la fenêtre de gauche</translation> <translation id="7543399541175347147">Les applications Linux et les fenêtres de navigation privée ne sont pas prises en charge actuellement. Les autres applications seront enregistrées.</translation> <translation id="7544300628205093162">Le rétroéclairage du clavier est activé</translation> <translation id="7548434653388805669">C'est l'heure du dodo</translation> @@ -1468,6 +1474,7 @@ <translation id="7893503627044934815">Ne pas afficher ce fichier</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Vous avez appuyé sur le raccourci-clavier de rotation d'écran. Voulez-vous faire pivoter l'écran?</translation> +<translation id="7901190436359881020">Basculez les fenêtres</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Touchez le capteur d'empreintes digitales</translation> <translation id="7904094684485781019">L'administrateur de ce compte a désactivé la connexion multicompte.</translation> @@ -1742,6 +1749,7 @@ <translation id="9198992156681343238">La résolution de l'écran <ph name="DISPLAY_NAME" /> est maintenant de <ph name="RESOLUTION" />. Cliquez sur Confirmer pour garder les changements. Les paramètres précédents seront restaurés dans <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Connectez <ph name="NAME" /> à ce Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, géré par votre administrateur</translation> +<translation id="9207682216934703221"><ph name="APP_NAME" />, <ph name="APP2_NAME" /> et toutes les applications et tous les sites Web disposant de l'autorisation de localisation ainsi que ChromeOS peuvent utiliser la localisation sur les réseaux Wi-Fi et mobiles.</translation> <translation id="9210037371811586452">Fermeture du mode Bureau unifié</translation> <translation id="9211490828691860325">Tous les bureaux</translation> <translation id="9211681782751733685">Il reste <ph name="TIME_REMAINING" /> avant que la pile soit complètement rechargée.</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb index 320dfd9..00aea34 100644 --- a/ash/strings/ash_strings_fr.xtb +++ b/ash/strings/ash_strings_fr.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Appareil USB de type C (port situé sur l'avant de l'appareil)</translation> <translation id="1013598600051641573">La résolution de "<ph name="DISPLAY_NAME" />" est passée à <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Cliquez sur "Confirmer" pour valider cette modification. Les paramètres précédents seront restaurés dans <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">L'appareil Bluetooth "<ph name="DEVICE_NAME" />" demande l'autorisation de s'associer. Veuillez saisir le code suivant sur l'appareil : <ph name="PINCODE" />.</translation> +<translation id="1014722676793506285">Cela permet à <ph name="APP_NAME" /> ainsi qu'à toutes les applis et à tous les sites Web autorisés d'accéder à votre position, et à ChromeOS d'utiliser la position des réseaux mobiles et Wi-Fi.</translation> <translation id="1017556409696559990">Réduire la fenêtre supérieure en l'absence d'historique dans Chrome</translation> <translation id="1024364763893396229">Enregistrez "<ph name="NAME" />"</translation> <translation id="1032891413405719768">Le niveau de charge des piles du stylet est faible</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet : <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Activer l'accès à la position</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> a été retiré</translation> <translation id="1838895407229022812">Éclairage nocturne désactivé.</translation> <translation id="1854180393107901205">Arrêter la diffusion</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">Les données mobiles doivent être activées sur votre téléphone pour qu'il puisse fournir un point d'accès</translation> <translation id="2727175239389218057">Répondre</translation> <translation id="2727977024730340865">L'appareil est branché à un chargeur de faible puissance. Il se peut que la charge ne soit pas fiable.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Supprimer"</translation> <translation id="2750941250130734256">Fenêtre active détachée.</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">Que sais-tu faire ?</translation> <translation id="3256109297135787951">Supprimer la mise en surbrillance d'un élément sur l'étagère</translation> <translation id="3260969790895726815">Les paroles sont traitées localement et la dictée fonctionne hors connexion, mais certaines commandes vocales ne sont pas prises en charge.</translation> +<translation id="3265032511221679826">Activer l'accès à la position exacte ?</translation> <translation id="3269597722229482060">Clic droit</translation> <translation id="3289364673986435196">Menu Marche/Arrêt</translation> <translation id="3289544412142055976">Les applis Linux ne sont pas prises en charge actuellement</translation> @@ -578,6 +580,7 @@ <translation id="366222428570480733">Utilisateur géré, <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="3666266999138159418">Balayez l'écran pour masquer la fenêtre flottante</translation> <translation id="367531336287639526">Sélectionner la première icône à gauche de la barre d'adresse</translation> +<translation id="3677931086890821290">Cela permet à toutes les applis et à tous les sites Web autorisés d'accéder à votre position, et à ChromeOS d'utiliser la position des réseaux mobiles et Wi-Fi.</translation> <translation id="3679827876008292680">Accéder au dernier onglet de la fenêtre</translation> <translation id="36813544980941320">Les réseaux Wi-Fi seront synchronisés sur votre téléphone et votre <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Sites Web</translation> @@ -1221,6 +1224,7 @@ <translation id="6683022854667115063">Casque audio</translation> <translation id="6696025732084565524">Votre clavier amovible nécessite une mise à jour critique</translation> <translation id="6700713906295497288">Bouton de menu IME</translation> +<translation id="6705577071209924099">Régler la luminosité</translation> <translation id="6707693040195709527">Délai de rétablissement d'une version antérieure de l'appareil expiré</translation> <translation id="6710213216561001401">Précédent</translation> <translation id="6723839937902243910">Alimentation</translation> @@ -1744,6 +1748,7 @@ <translation id="9198992156681343238">La résolution de <ph name="DISPLAY_NAME" /> est passée à <ph name="RESOLUTION" />. Cliquez sur "Confirmer" pour conserver les modifications. Les paramètres précédents seront restaurés dans <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Connectez l'appareil <ph name="NAME" /> à ce Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, géré par votre administrateur</translation> +<translation id="9207682216934703221">Cela permet à <ph name="APP_NAME" />, <ph name="APP2_NAME" />, ainsi qu'à toutes les applis et tous les sites Web autorisés d'accéder à votre position, et à ChromeOS d'utiliser la position des réseaux mobiles et Wi-Fi.</translation> <translation id="9210037371811586452">Sortie du mode Bureau unifié</translation> <translation id="9211490828691860325">Tous les bureaux</translation> <translation id="9211681782751733685">Temps restant avant que la batterie soit entièrement rechargée : <ph name="TIME_REMAINING" />.</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb index 0baf4715f..0b62cda 100644 --- a/ash/strings/ash_strings_gl.xtb +++ b/ash/strings/ash_strings_gl.xtb
@@ -4,7 +4,7 @@ <translation id="1012876632442809908">Dispositivo USB‑C (porto frontal)</translation> <translation id="1013598600051641573">A resolución do dispositivo <ph name="DISPLAY_NAME" /> cambiouse a <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Para gardar os cambios, fai clic en Confirmar. A configuración anterior restaurarase en <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">O dispositivo Bluetooth "<ph name="DEVICE_NAME" />" quere recibir permiso para sincronizarse. Introduce este código PIN nese dispositivo: <ph name="PINCODE" /></translation> -<translation id="1014722676793506285">Desta forma, <ph name="APP_NAME" />, todas as aplicacións e os sitios web con permiso de localización e ChromeOS poden utilizar a localización mediante wifi e redes de telefonía móbil.</translation> +<translation id="1014722676793506285">Desta forma, <ph name="APP_NAME" />, todas as aplicacións e os sitios web con permiso de localización e ChromeOS poderán utilizar a localización mediante wifi e redes de telefonía móbil.</translation> <translation id="1017556409696559990">Minimizar ventá superior cando non haxa historial en Chrome</translation> <translation id="1024364763893396229">Garda o dispositivo (<ph name="NAME" />)</translation> <translation id="1032891413405719768">O lapis óptico ten pouca batería</translation> @@ -148,6 +148,7 @@ <translation id="1651914502370159744">Abrir páxina do historial</translation> <translation id="1654477262762802994">Iniciar unha consulta de voz</translation> <translation id="1668469839109562275">VPN integrada</translation> +<translation id="1675844249244994876">Actualizar a ventá da dereita</translation> <translation id="1677472565718498478">Tempo restante: <ph name="TIME" /></translation> <translation id="1677507110654891115">A función <ph name="FEATURE_NAME" /> non está conectada.</translation> <translation id="1677582821739292812">Alguén está mirando a túa pantalla</translation> @@ -367,7 +368,6 @@ <translation id="2726420622004325180">O teu teléfono debe ter datos móbiles para ofrecer unha zona wifi</translation> <translation id="2727175239389218057">Responder</translation> <translation id="2727977024730340865">Conectado a un cargador de baixa potencia. É posible que a carga da batería non sexa fiable.</translation> -<translation id="2740531572673183784">Aceptar</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Elimina"</translation> <translation id="2750941250130734256">Ventá activa sen fixar.</translation> @@ -581,7 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Usuario xestionado</translation> <translation id="3666266999138159418">Pasa o dedo para ocultar a ventá flotante</translation> <translation id="367531336287639526">Selecciona a primeira icona á esquerda da barra de enderezos</translation> -<translation id="3677931086890821290">Desta forma, todas as aplicacións e os sitios web con permiso de localización e ChromeOS poden utilizar a localización mediante wifi e redes de telefonía móbil.</translation> +<translation id="3677931086890821290">Desta forma, todas as aplicacións e os sitios web con permiso de localización e ChromeOS poderán utilizar a localización mediante wifi e redes de telefonía móbil.</translation> <translation id="3679827876008292680">Ir á última pestana da ventá</translation> <translation id="36813544980941320">O teu teléfono e o dispositivo (<ph name="DEVICE_NAME" />) compartirán as redes wifi</translation> <translation id="3694122362646626770">Sitios web</translation> @@ -849,6 +849,7 @@ <translation id="493076006037866439">Afastar a pantalla</translation> <translation id="4936329710968938986">Todos (desactivado)</translation> <translation id="4938176435186993759">Ocultar todas as suxestións</translation> +<translation id="4943007472417128747">Desactivouse a zona wifi para poder usar a rede wifi. Desactiva esta última se prefires usar a zona wifi.</translation> <translation id="4945196315133970626">Desactivar notificacións</translation> <translation id="4946376291507881335">Zona que se capturará</translation> <translation id="495046168593986294">Desprazarse cara arriba</translation> @@ -1393,6 +1394,7 @@ Para apagar o dispositivo, mantén premido de novo o botón de acendido.</translation> <translation id="7526573455193969409">É posible que se controle a rede</translation> <translation id="7536035074519304529">Enderezo IP: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Actualizar a ventá da esquerda</translation> <translation id="7543399541175347147">As aplicacións de Linux e as ventás do modo de incógnito agora mesmo non son compatibles. Gardaranse outras aplicacións.</translation> <translation id="7544300628205093162">A luz traseira do teclado está acendida</translation> <translation id="7548434653388805669">É hora de deitarse</translation> @@ -1473,6 +1475,7 @@ <translation id="7893503627044934815">Non quero que se mostre este ficheiro</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Premiches o atallo de teclado para xirar a pantalla. Queres realizar esta acción?</translation> +<translation id="7901190436359881020">Cambiar as ventás</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Toca o sensor de impresión dixital</translation> <translation id="7904094684485781019">O administrador desta conta non permitiu o inicio de sesión múltiple.</translation> @@ -1748,7 +1751,7 @@ <translation id="9198992156681343238">A resolución de <ph name="DISPLAY_NAME" /> cambiouse a <ph name="RESOLUTION" />. Para gardar os cambios, fai clic en Confirmar. A configuración anterior restaurarase en <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Conecta o dispositivo (<ph name="NAME" />) a este Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, xestionada polo teu administrador</translation> -<translation id="9207682216934703221">Desta forma, <ph name="APP_NAME" />, <ph name="APP2_NAME" /> e todas as aplicacións e os sitios web con permiso de localización e ChromeOS poden utilizar a localización mediante wifi e redes de telefonía móbil.</translation> +<translation id="9207682216934703221">Desta forma, <ph name="APP_NAME" />, <ph name="APP2_NAME" />, todas as aplicacións e os sitios web con permiso de localización e ChromeOS poderán utilizar a localización mediante wifi e redes de telefonía móbil.</translation> <translation id="9210037371811586452">Saíndo do modo de escritorio unificado</translation> <translation id="9211490828691860325">Todos os ordenadores</translation> <translation id="9211681782751733685">Tempo restante para que se cargue a batería por completo: <ph name="TIME_REMAINING" />.</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index 7a47569..a11371db 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C ઉપકરણ (આગળનું પોર્ટ)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> બદલાઈને <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz) થયું. ફેરફારો રાખવા માટે કન્ફર્મ કરો પર ક્લિક કરો. અગાઉના સેટિંગ <ph name="TIMEOUT_SECONDS" />માં રિસ્ટોર કરવામાં આવશે.</translation> <translation id="1013923882670373915">Bluetooth ડિવાઇસ "<ph name="DEVICE_NAME" />" ને જોડી બનાવવા માટે પરવાનગી જોઈએ છે. કૃપા કરીને તે ડિવાઇસ પર આ PIN કોડ દાખલ કરો: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">આને કારણે <ph name="APP_NAME" /> અને બધી ઍપ તથા લોકેશનની પરવાનગી ધરાવતી વેબસાઇટ અને ChromeOSને વાઇ-ફાઇ તેમજ મોબાઇલ નેટવર્કના લોકેશનનો ઉપયોગ કરવાની મંજૂરી મળે છે.</translation> <translation id="1017556409696559990">જ્યારે Chromeમાં પાછળનો કોઈ ઇતિહાસ ન હોય, ત્યારે સૌથી ઉપરની વિન્ડો નાની કરો</translation> <translation id="1024364763893396229">તમારું <ph name="NAME" /> સાચવો</translation> <translation id="1032891413405719768">સ્ટાઇલસની બૅટરી ઓછી છે</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">ઇથરનેટ: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">લોકેશનનો ઍક્સેસ ચાલુ કરો</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" />ને અનપિન કરી હતી</translation> <translation id="1838895407229022812">રાત્રિ પ્રકાશ બંધ છે.</translation> <translation id="1854180393107901205">કાસ્ટ કરવાનું રોકો</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">હૉટસ્પૉટની સુવિધા આપવા માટે, તમારા ફોનમાં મોબાઇલ ડેટા હોવો જરૂરી છે</translation> <translation id="2727175239389218057">જવાબ આપો</translation> <translation id="2727977024730340865">નિમ્ન-પાવર ચાર્જરમાં પ્લગ કરેલું છે. બૅટરી ચાર્જિંગ વિશ્વસનીય હશે નહીં.</translation> -<translation id="2740531572673183784">બરાબર, સમજાઇ ગયું</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"ડિલીટ કરો"</translation> <translation id="2750941250130734256">સક્રિય વિન્ડોને અનડૉક કરી.</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">તમે શું કરી શકો?</translation> <translation id="3256109297135787951">તમારા શેલ્ફ પર આઇટમમાંથી હાઇલાઇટ કાઢી નાખો</translation> <translation id="3260969790895726815">સ્પીચની પ્રક્રિયા સ્થાનિક લેવલ પર જ કરવામાં આવે છે અને ડિક્ટેશન ઑફલાઇન કામ કરે છે, પરંતુ કેટલાક વૉઇસ આદેશો કામ કરશે નહીં.</translation> +<translation id="3265032511221679826">શું સચોટ લોકેશનનો ઍક્સેસ ચાલુ કરીએ?</translation> <translation id="3269597722229482060">રાઇટ ક્લિક કરો</translation> <translation id="3289364673986435196">પાવર મેનૂ</translation> <translation id="3289544412142055976">હાલમાં Linux ઍપને સપોર્ટ કરવામાં આવતો નથી</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> મેનેજ કરાયેલા વપરાશકર્તા</translation> <translation id="3666266999138159418">તમારી ફ્લોટિંગ વિન્ડો છુપાવવા માટે સ્વાઇપ કરો</translation> <translation id="367531336287639526">ઍડ્રેસ બારની ડાબી બાજુએ પહેલું આઇકન પસંદ કરો</translation> +<translation id="3677931086890821290">આને કારણે બધી ઍપ તથા લોકેશનની પરવાનગી ધરાવતી વેબસાઇટ અને ChromeOSને વાઇ-ફાઇ તેમજ મોબાઇલ નેટવર્કના લોકેશનનો ઉપયોગ કરવાની મંજૂરી મળે છે.</translation> <translation id="3679827876008292680">વિન્ડોમાં છેલ્લા ટૅબ પર જાઓ</translation> <translation id="36813544980941320">તમારા ફોન અને <ph name="DEVICE_NAME" /> વચ્ચે વાઇ-ફાઇ નેટવર્ક શેર કરવામાં આવશે</translation> <translation id="3694122362646626770">વેબસાઇટ્સ</translation> @@ -1069,6 +1072,7 @@ <translation id="5976112937189445008">વિન્ડો રેકોર્ડ કરવા માટે Enter કી દબાવો</translation> <translation id="5978382165065462689">દૂરસ્થ સહાય વડે તમારી સ્ક્રીનનું નિયંત્રણ શેર કરવું.</translation> <translation id="5980301590375426705">અતિથિથી બહાર નીકળો</translation> +<translation id="5983567367406220847">નિષ્ક્રિયતાને કારણે હૉટસ્પૉટની સુવિધા બંધ કરવામાં આવી છે.</translation> <translation id="598407983968395253">નમૂનાનો ઉપયોગ કરો</translation> <translation id="598882571027504733">અપડેટ મેળવવા માટે, તમારી Chromebookને જોડાયેલ કીબોર્ડ સાથે ફરીથી શરૂ કરો.</translation> <translation id="6002179289567220515">તમે 1 કૅમેરો બંધ કરવા માટે વાસ્તવિક સ્વિચનો ઉપયોગ કર્યો છે. તમે બધા કૅમેરા માટેનો ઍક્સેસ પણ બંધ કરી શકો છો.</translation> @@ -1371,6 +1375,7 @@ <translation id="7452560014878697800">કોઈ ઍપ્લિકેશન તમારા કૅમેરાનો ઉપયોગ કરી રહી છે</translation> <translation id="7453330308669753048">શોધ ઇતિહાસનું પરિણામ કાઢી નાખ્યું</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | પૂર્ણ ચાર્જ થવામાં <ph name="TIME" /> બાકી</translation> +<translation id="7459485586006128091">આંતરિક ભૂલને કારણે હૉટસ્પૉટની સુવિધા બંધ કરવામાં આવી છે. થોડા સમયમાં ફરીથી કનેક્ટ કરવાનો પ્રયાસ કરો.</translation> <translation id="7461924472993315131">પિન કરો</translation> <translation id="746232733191930409">સ્ક્રીન રેકોર્ડિંગ મોડ</translation> <translation id="7466449121337984263">કૃપા કરીને સેન્સરને સ્પર્શ કરો</translation> @@ -1444,6 +1449,7 @@ <translation id="776344839111254542">અપડેટની વિગતો જોવા માટે ક્લિક કરો</translation> <translation id="7768784765476638775">સાંભળવા માટે પસંદ કરો</translation> <translation id="7769299611924763557">તમારું GIF ટૂંક સમયમાં તૈયાર થઈ જશે</translation> +<translation id="7773536009433685931">તેના બદલે વાઇ-ફાઇ ચાલુ કરો</translation> <translation id="7780094051999721182">શૉર્ટકટ</translation> <translation id="7780159184141939021">સ્ક્રીનને ફેરવો</translation> <translation id="7796735576426975947">નવું નોટિફિકેશન છુપાવ્યું</translation> @@ -1747,6 +1753,7 @@ <translation id="9198992156681343238"><ph name="DISPLAY_NAME" />નું રિઝોલ્યુશન બદલીને <ph name="RESOLUTION" /> કરવામાં આવ્યું. ફેરફારો રાખવા માટે કન્ફર્મ પર ક્લિક કરો. અગાઉના સેટિંગ <ph name="TIMEOUT_SECONDS" />માં રિસ્ટોર કરવામાં આવશે.</translation> <translation id="9201044636667689546"><ph name="NAME" />ને આ Chromebook સાથે કનેક્ટ કરો</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, તમારા વ્યવસ્થાપક દ્વારા મેનેજ કરવામાં આવે છે</translation> +<translation id="9207682216934703221">આને કારણે <ph name="APP_NAME" />, <ph name="APP2_NAME" /> અને બધી ઍપ તથા લોકેશનની પરવાનગી ધરાવતી વેબસાઇટ અને ChromeOSને વાઇ-ફાઇ તેમજ મોબાઇલ નેટવર્કના લોકેશનનો ઉપયોગ કરવાની મંજૂરી મળે છે.</translation> <translation id="9210037371811586452">એકીકૃત ડેસ્કટૉપ મોડથી બહાર નીકળે છે</translation> <translation id="9211490828691860325">તમામ ડેસ્ક</translation> <translation id="9211681782751733685">બૅટરી સંપૂર્ણપણે ચાર્જ થવામાં <ph name="TIME_REMAINING" /> બાકી છે.</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb index 88bbf3c..e4d96886 100644 --- a/ash/strings/ash_strings_hi.xtb +++ b/ash/strings/ash_strings_hi.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">आपके फ़ोन में मोबाइल डेटा होना ज़रूरी है, ताकि हॉटस्पॉट की सुविधा दी जा सके</translation> <translation id="2727175239389218057">जवाब दें</translation> <translation id="2727977024730340865">कम-शक्ति वाले चार्जर में प्लग इन करें. बैटरी चार्ज करना संभवत: विश्वसनीय नहीं होगा.</translation> -<translation id="2740531572673183784">ठीक है</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"मिटाएं"</translation> <translation id="2750941250130734256">चालू विंडो को अनडॉक किया गया है.</translation> @@ -1074,6 +1073,7 @@ <translation id="5976112937189445008">विंडो को रिकॉर्ड करने के लिए, Enter दबाएं</translation> <translation id="5978382165065462689">आपकी स्क्रीन का नियंत्रण दूरस्थ सहायका के द्वारा शेयर किया जा रहा है.</translation> <translation id="5980301590375426705">मेहमान मोड से निकलें</translation> +<translation id="5983567367406220847">कोई गतिविधि न होने की वजह से, हॉटस्पॉट बंद कर दिया गया है.</translation> <translation id="598407983968395253">टेंप्लेट का इस्तेमाल करें</translation> <translation id="598882571027504733">अपडेट पाने के लिए, अटैच किए गए कीबोर्ड से अपने Chromebook को रीस्टार्ट करें.</translation> <translation id="6002179289567220515">1 कैमरा बंद करने के लिए, आपने फ़िज़िकल स्विच का इस्तेमाल किया. आपके पास सभी कैमरों का ऐक्सेस बंद करने का विकल्प भी है.</translation> @@ -1376,6 +1376,7 @@ <translation id="7452560014878697800">एक ऐप्लिकेशन आपके कैमरे का इस्तेमाल कर रहा है</translation> <translation id="7453330308669753048">खोज इतिहास का नतीजा हटा दिया गया</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | पूरा चार्ज होने में <ph name="TIME" /> बाकी</translation> +<translation id="7459485586006128091">किसी अंदरूनी गड़बड़ी की वजह से, हॉटस्पॉट बंद कर दिया गया है. कुछ मिनट बाद, फिर से कनेक्ट करने की कोशिश करें.</translation> <translation id="7461924472993315131">पिन करें</translation> <translation id="746232733191930409">स्क्रीन रिकॉर्डिंग मोड</translation> <translation id="7466449121337984263">कृपया सेंसर को छुएं</translation> @@ -1449,6 +1450,7 @@ <translation id="776344839111254542">अपडेट के विवरण देखने के लिए क्लिक करें</translation> <translation id="7768784765476638775">चुनें और सुनें</translation> <translation id="7769299611924763557">आपका GIF जल्द ही तैयार हो जाएगा</translation> +<translation id="7773536009433685931">इसके बजाय, वाई-फ़ाई चालू करें</translation> <translation id="7780094051999721182">शॉर्टकट</translation> <translation id="7780159184141939021">स्क्रीन घुमाएं</translation> <translation id="7796735576426975947">नई सूचना छिपाई गई</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb index cd5d828..d79339f 100644 --- a/ash/strings/ash_strings_hr.xtb +++ b/ash/strings/ash_strings_hr.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Telefon mora imati mobilne podatke da bi osigurao žarišnu točku</translation> <translation id="2727175239389218057">Odgovori</translation> <translation id="2727977024730340865">Uređaj je priključen na punjač male snage. Punjenje baterije možda nije pouzdano.</translation> -<translation id="2740531572673183784">U redu</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Izbriši"</translation> <translation id="2750941250130734256">Aktivan prozor je premješten.</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb index afcb14a..092b536 100644 --- a/ash/strings/ash_strings_hu.xtb +++ b/ash/strings/ash_strings_hu.xtb
@@ -148,6 +148,7 @@ <translation id="1651914502370159744">Az Előzmények oldal megnyitása</translation> <translation id="1654477262762802994">Hangalapú lekérdezés indítása</translation> <translation id="1668469839109562275">Beépített VPN</translation> +<translation id="1675844249244994876">A jobb oldali ablak frissítése</translation> <translation id="1677472565718498478"><ph name="TIME" /> van hátra</translation> <translation id="1677507110654891115">A(z) <ph name="FEATURE_NAME" /> nem csatlakozik.</translation> <translation id="1677582821739292812">Valaki az Ön képernyőjét nézi</translation> @@ -367,7 +368,6 @@ <translation id="2726420622004325180">Hotspot biztosításához telefonján engedélyeznie kell a mobiladat-használatot</translation> <translation id="2727175239389218057">Válasz</translation> <translation id="2727977024730340865">Kis teljesítményű töltőt csatlakoztatott. Az akkumulátor töltése nem megbízható.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Delete” (Törlés)</translation> <translation id="2750941250130734256">Az aktív ablak nincs dokkolva.</translation> @@ -849,6 +849,7 @@ <translation id="493076006037866439">A képernyő kicsinyítése</translation> <translation id="4936329710968938986">Mindenki, kikapcsolva</translation> <translation id="4938176435186993759">Összes javaslat elrejtése</translation> +<translation id="4943007472417128747">A hotspot ki lett kapcsolva, hogy használni lehessen a Wi-Fi-t. A hotspot használatához kapcsolja ki a Wi-Fi-t.</translation> <translation id="4945196315133970626">Az értesítések kikapcsolása</translation> <translation id="4946376291507881335">Rögzítés</translation> <translation id="495046168593986294">Görgetés felfelé</translation> @@ -1072,6 +1073,7 @@ <translation id="5976112937189445008">Nyomja le az Entert az ablak tartalmának rögzítéséhez</translation> <translation id="5978382165065462689">A képernyő irányításának megosztása a Távsegítség szolgáltatás keretein belül.</translation> <translation id="5980301590375426705">Kilépés vendégként</translation> +<translation id="5983567367406220847">Tétlenség miatt a hotspot ki lett kapcsolva.</translation> <translation id="598407983968395253">Sablon használata</translation> <translation id="598882571027504733">A frissítés lekéréséhez indítsa újra a Chromebookot a csatlakoztatott billentyűzet segítségével.</translation> <translation id="6002179289567220515">Kikapcsolt egy kamerát a fizikai kapcsolóval. A összes kamerához való hozzáférést is kikapcsolhatja.</translation> @@ -1374,6 +1376,7 @@ <translation id="7452560014878697800">Egy alkalmazás használja az Ön kameráját</translation> <translation id="7453330308669753048">Keresésielőzmény-találat eltávolítva</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> a teljes töltöttségig</translation> +<translation id="7459485586006128091">Belső hiba miatt a hotspot ki lett kapcsolva. Néhány perc múlva próbáljon meg újra csatlakozni.</translation> <translation id="7461924472993315131">Rögzítés</translation> <translation id="746232733191930409">Képernyőfelvétel mód</translation> <translation id="7466449121337984263">Érintse meg az érzékelőt</translation> @@ -1393,6 +1396,7 @@ Az eszköz leállításához tartsa ismét nyomva az eszköz bekapcsológombját.</translation> <translation id="7526573455193969409">Elképzelhető, hogy figyelik a hálózatot</translation> <translation id="7536035074519304529">IP-cím: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">A bal oldali ablak frissítése</translation> <translation id="7543399541175347147">A Linux-alkalmazások és az inkognitó ablakok jelenleg nem támogatottak. Az egyéb alkalmazásokat menti a rendszer.</translation> <translation id="7544300628205093162">Billentyűzet háttérvilágítása bekapcsolva</translation> <translation id="7548434653388805669">Ideje aludni</translation> @@ -1446,6 +1450,7 @@ <translation id="776344839111254542">Kattintson a frissítés részleteinek megtekintéséhez</translation> <translation id="7768784765476638775">Felolvasás</translation> <translation id="7769299611924763557">A GIF hamarosan elkészül.</translation> +<translation id="7773536009433685931">Helyette Wi-Fi bekapcsolása</translation> <translation id="7780094051999721182">billentyűparancsok</translation> <translation id="7780159184141939021">Képernyő elforgatása</translation> <translation id="7796735576426975947">Új értesítés elrejtve</translation> @@ -1473,6 +1478,7 @@ <translation id="7893503627044934815">Nem szeretném látni a fájlt</translation> <translation id="7895348134893321514">Tároló</translation> <translation id="7897375687985782769">Lenyomta a képernyő elforgatásának billentyűparancsát. Biztosan elforgatja a képernyőt?</translation> +<translation id="7901190436359881020">Az ablakok felcserélése</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Érintse meg az ujjlenyomat-érzékelőt</translation> <translation id="7904094684485781019">A fiók rendszergazdája letiltotta a többfiókos bejelentkezést.</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb index 2fb4b1c..bc252b49 100644 --- a/ash/strings/ash_strings_hy.xtb +++ b/ash/strings/ash_strings_hy.xtb
@@ -148,6 +148,7 @@ <translation id="1651914502370159744">Բացել պատմության էջը</translation> <translation id="1654477262762802994">Հնչեցնել հարցում</translation> <translation id="1668469839109562275">Ներկառուցված VPN</translation> +<translation id="1675844249244994876">Թարմացնել աջ պատուհանը</translation> <translation id="1677472565718498478">Մնացել է <ph name="TIME" /></translation> <translation id="1677507110654891115">«<ph name="FEATURE_NAME" />» գործառույթը միացված չէ։</translation> <translation id="1677582821739292812">Ինչ-որ մեկը նայում է ձեր էկրանին</translation> @@ -367,7 +368,6 @@ <translation id="2726420622004325180">Թեժ կետն ակտիվացնելու համար հեռախոսում պետք է միացված լինի բջջային ինտերնետը</translation> <translation id="2727175239389218057">Պատասխանել</translation> <translation id="2727977024730340865">Միացված է թույլ լիցքավորիչի: Մարտկոցի լիցքավորումը կարող է հուսալի չլինել:</translation> -<translation id="2740531572673183784">Եղավ</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">«Delete» (Ջնջել)</translation> <translation id="2750941250130734256">Ակտիվ պատուհանն ապամրացված է։</translation> @@ -847,6 +847,7 @@ <translation id="493076006037866439">Փոքրացնել էկրանի մասշտաբը</translation> <translation id="4936329710968938986">Բոլորը, անջատված է</translation> <translation id="4938176435186993759">Թաքցնել բոլոր առաջարկները</translation> +<translation id="4943007472417128747">Թեժ կետն անջատվել է՝ Wi-Fi-ն օգտագործելու համար։ Թեժ կետն օգտագործելու համար անջատեք Wi-Fi-ը։</translation> <translation id="4945196315133970626">Անջատել ծանուցումները</translation> <translation id="4946376291507881335">Լուսանկարել</translation> <translation id="495046168593986294">Ոլորել վեր</translation> @@ -1390,6 +1391,7 @@ Սրաքն անջատելու համար նորից սեղմեք և պահեք սնուցման կոճակը։</translation> <translation id="7526573455193969409">Ցանցը կարող է վերահսկվել</translation> <translation id="7536035074519304529">IP հասցե՝ <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Թարմացնել ձախ պատուհանը</translation> <translation id="7543399541175347147">Լինուքսի հավելվածներն ու ինկոգնիտո պատուհանները ներկայումս չեն աջակցվում։ Մյուս հավելվածները կպահվեն։</translation> <translation id="7544300628205093162">Ստեղնաշարի հետնալույսը միացված է</translation> <translation id="7548434653388805669">Քնելու ժամն է</translation> @@ -1470,6 +1472,7 @@ <translation id="7893503627044934815">Չեմ ուզում, որ այս ֆայլը ցուցադրվի</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Դուք սեղմել եք էկրանի պտտման դյուրանցման ստեղները: Ուզում եք պտտե՞լ էկրանը:</translation> +<translation id="7901190436359881020">Տեղերով փոխել պատուհանները</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Հպեք մատնահետքի սկաներին</translation> <translation id="7904094684485781019">Այս հաշվի ադմինիստրատորը բազմակի մուտք չի թույլատրել:</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb index d1a3ee89..1f12faa2 100644 --- a/ash/strings/ash_strings_id.xtb +++ b/ash/strings/ash_strings_id.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Ponsel harus memiliki data seluler agar dapat mengaktifkan hotspot</translation> <translation id="2727175239389218057">Balas</translation> <translation id="2727977024730340865">Dipasang ke pengisi daya rendah. Pengisian daya baterai mungkin tidak dapat diandalkan.</translation> -<translation id="2740531572673183784">Oke</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Hapus"</translation> <translation id="2750941250130734256">Jendela yang aktif dilepas kaitannya.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Tekan Enter untuk merekam jendela</translation> <translation id="5978382165065462689">Berbagi kontrol layar via Remote Assistance.</translation> <translation id="5980301590375426705">Hentikan sesi tamu</translation> +<translation id="5983567367406220847">Karena tidak ada aktivitas, hotspot telah dinonaktifkan.</translation> <translation id="598407983968395253">Gunakan template</translation> <translation id="598882571027504733">Untuk mendapatkan update, nyalakan ulang Chromebook dengan keyboard dalam keadaan terhubung.</translation> <translation id="6002179289567220515">Anda menggunakan tombol fisik untuk menonaktifkan 1 kamera. Anda juga dapat menonaktifkan akses untuk semua kamera.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">Aplikasi sedang menggunakan kamera Anda</translation> <translation id="7453330308669753048">Hasil histori penelusuran dihapus</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> hingga penuh</translation> +<translation id="7459485586006128091">Karena error internal, hotspot telah dinonaktifkan. Coba hubungkan kembali dalam beberapa menit.</translation> <translation id="7461924472993315131">Sematkan</translation> <translation id="746232733191930409">Mode perekaman layar</translation> <translation id="7466449121337984263">Sentuh sensor</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">Klik untuk melihat detail update</translation> <translation id="7768784765476638775">Klik untuk diucapkan</translation> <translation id="7769299611924763557">GIF Anda akan segera siap</translation> +<translation id="7773536009433685931">Aktifkan Wi-Fi</translation> <translation id="7780094051999721182">pintasan</translation> <translation id="7780159184141939021">Memutar Layar</translation> <translation id="7796735576426975947">Notifikasi baru disembunyikan</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb index a831e15..7bad319 100644 --- a/ash/strings/ash_strings_is.xtb +++ b/ash/strings/ash_strings_is.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C-tæki (tengi að framan)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> var breytt í <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Veldu „Staðfesta“ til að halda breytingunum. Fyrri stillingar verða endurheimtar eftir <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Bluetooth-tækið „<ph name="DEVICE_NAME" />“ óskar eftir heimild til pörunar. Sláðu þetta PIN-númer inn í því tæki: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Þetta gerir <ph name="APP_NAME" /> og öllum forritum og vefsvæðum með staðsetningarheimild og ChromeOS kleift að nota staðsetningu WiFi-nets og farsímakerfa.</translation> <translation id="1017556409696559990">Minnka efsta gluggann þegar enginn ferill er til staðar í Chrome</translation> <translation id="1024364763893396229">Vistaðu <ph name="NAME" /></translation> <translation id="1032891413405719768">Lítil hleðsla á pennarafhlöðu</translation> @@ -192,6 +193,7 @@ <ph name="IME" />, <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Kveikja á aðgangi að staðsetningu</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> var losað</translation> <translation id="1838895407229022812">Slökkt er á næturljósi.</translation> <translation id="1854180393107901205">Hætta útsendingu</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">Síminn verður að vera með farsímagögn til að útvega heitan reit</translation> <translation id="2727175239389218057">Svara</translation> <translation id="2727977024730340865">Tengt við afllítið hleðslutæki. Hleðsla rafhlöðunnar kann að vera brigðul.</translation> -<translation id="2740531572673183784">Í lagi</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Eyða“</translation> <translation id="2750941250130734256">Virkur gluggi losaður.</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">Hvað geturðu gert?</translation> <translation id="3256109297135787951">Fjarlægja auðkenningu atriðis á hillu</translation> <translation id="3260969790895726815">Unnið er úr tali í tækinu og raddinnsláttur virkar án nettengingar en sumar raddskipanir virka ekki.</translation> +<translation id="3265032511221679826">Kveikja á aðgangi að nákvæmri staðsetningu?</translation> <translation id="3269597722229482060">Hægrismella</translation> <translation id="3289364673986435196">Aflrofavalmynd</translation> <translation id="3289544412142055976">Linux-forrit eru ekki studd eins og er</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Stýrður notandi</translation> <translation id="3666266999138159418">Strjúktu til að fela fljótandi gluggann</translation> <translation id="367531336287639526">Velja fyrsta tákn vinstra megin við veffangastiku</translation> +<translation id="3677931086890821290">Þetta gerir öllum forritum og vefsvæðum með staðsetningarheimild og ChromeOS kleift að nota staðsetningu WiFi-nets og farsímakerfa.</translation> <translation id="3679827876008292680">Fara á síðasta flipann í glugganum</translation> <translation id="36813544980941320">Wi-Fi netum verður deilt á milli símans og <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Vefsvæði</translation> @@ -1069,6 +1072,7 @@ <translation id="5976112937189445008">Ýttu á Enter til að taka upp glugga</translation> <translation id="5978382165065462689">Stjórn yfir skjánum þínum er deilt í gegnum fjaraðstoð.</translation> <translation id="5980301590375426705">Loka gestastillingu</translation> +<translation id="5983567367406220847">Slökkt var á heitum reit vegna aðgerðaleysis.</translation> <translation id="598407983968395253">Nota sniðmát</translation> <translation id="598882571027504733">Endurræstu Chromebook með lyklaborðið tengt til að uppfæra</translation> <translation id="6002179289567220515">Þú notaðir rofann á tækinu til að slökkva á 1 myndavél. Þú getur einnig slökkt á aðgangi allra myndavéla.</translation> @@ -1371,6 +1375,7 @@ <translation id="7452560014878697800">Forrit er að nota myndavélina þína</translation> <translation id="7453330308669753048">Niðurstaða leitarferils fjarlægð</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> fram að fullri hleðslu</translation> +<translation id="7459485586006128091">Slökkt var á heitum reit vegna innri villu. Reyndu að tengjast aftur eftir nokkrar mínútur.</translation> <translation id="7461924472993315131">Festa</translation> <translation id="746232733191930409">Skjáupptökustilling</translation> <translation id="7466449121337984263">Snertu fingrafaralesarann</translation> @@ -1444,6 +1449,7 @@ <translation id="776344839111254542">Smelltu til að skoða upplýsingar um uppfærsluna</translation> <translation id="7768784765476638775">Textaupplestur</translation> <translation id="7769299611924763557">GIF verður tilbúið innan skamms</translation> +<translation id="7773536009433685931">Kveikja á WiFi í staðinn</translation> <translation id="7780094051999721182">flýtileiðir</translation> <translation id="7780159184141939021">Snúa skjánum</translation> <translation id="7796735576426975947">Ný tilkynning falin</translation> @@ -1747,6 +1753,7 @@ <translation id="9198992156681343238">Upplausn <ph name="DISPLAY_NAME" /> breytt í <ph name="RESOLUTION" />. Veldu „Staðfesta“ til að halda breytingum. Fyrri stillingar verða valdar eftir <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Tengja <ph name="NAME" /> við þessa Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, stjórnað af kerfisstjóra</translation> +<translation id="9207682216934703221">Þetta gerir <ph name="APP_NAME" />, <ph name="APP2_NAME" /> og öllum forritum og vefsvæðum með staðsetningarheimild og ChromeOS kleift að nota staðsetningu WiFi-nets og farsímakerfa.</translation> <translation id="9210037371811586452">Hættir í sameinaðri skjáborðsstillingu</translation> <translation id="9211490828691860325">Öll skrifborð</translation> <translation id="9211681782751733685"><ph name="TIME_REMAINING" /> eftir þar til rafhlaðan er fullhlaðin.</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb index f7668fec..8792b01 100644 --- a/ash/strings/ash_strings_it.xtb +++ b/ash/strings/ash_strings_it.xtb
@@ -148,6 +148,7 @@ <translation id="1651914502370159744">Apri la pagina Cronologia</translation> <translation id="1654477262762802994">Avvia una query vocale</translation> <translation id="1668469839109562275">VPN integrata</translation> +<translation id="1675844249244994876">Aggiorna la finestra destra</translation> <translation id="1677472565718498478"><ph name="TIME" /> rimanenti</translation> <translation id="1677507110654891115">La funzionalità <ph name="FEATURE_NAME" /> non è connessa.</translation> <translation id="1677582821739292812">Qualcuno sta guardando il tuo schermo</translation> @@ -367,7 +368,6 @@ <translation id="2726420622004325180">Il telefono deve avere i dati mobili per poter fornire un hotspot</translation> <translation id="2727175239389218057">Rispondi</translation> <translation id="2727977024730340865">Collegato a un caricabatterie a basso consumo. La carica della batteria potrebbe non essere affidabile.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Elimina"</translation> <translation id="2750941250130734256">Finestra attiva sganciata.</translation> @@ -845,6 +845,7 @@ <translation id="493076006037866439">Diminuisci lo zoom dello schermo</translation> <translation id="4936329710968938986">Per tutti, off</translation> <translation id="4938176435186993759">Nascondi tutti i suggerimenti</translation> +<translation id="4943007472417128747">L'hotspot è stato disattivato per utilizzare il Wi-Fi. Per utilizzare l'hotspot, disattiva il Wi-Fi.</translation> <translation id="4945196315133970626">Disattiva le notifiche</translation> <translation id="4946376291507881335">Acquisisci</translation> <translation id="495046168593986294">Scorri verso l'alto</translation> @@ -1389,6 +1390,7 @@ Per arrestare il dispositivo, tieni di nuovo premuto il relativo tasto di accensione.</translation> <translation id="7526573455193969409">La rete potrebbe essere monitorata</translation> <translation id="7536035074519304529">Indirizzo IP: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Aggiorna la finestra sinistra</translation> <translation id="7543399541175347147">Al momento le app Linux e le finestre di navigazione in incognito non sono supportate. Le altre app verranno salvate.</translation> <translation id="7544300628205093162">La retroilluminazione della tastiera è attiva</translation> <translation id="7548434653388805669">È ora di andare a letto</translation> @@ -1469,6 +1471,7 @@ <translation id="7893503627044934815">Non voglio che venga mostrato questo file</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Hai premuto la scorciatoia da tastiera per la rotazione dello schermo. Vuoi ruotare lo schermo?</translation> +<translation id="7901190436359881020">Scambia le finestre</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Tocca il sensore di impronte digitali</translation> <translation id="7904094684485781019">L'amministratore di questo account ha bloccato l'accesso simultaneo.</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb index 514d4e0..63576b6 100644 --- a/ash/strings/ash_strings_iw.xtb +++ b/ash/strings/ash_strings_iw.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">כדי לספק נקודה לשיתוף אינטרנט, נדרשת חבילת גלישה בטלפון</translation> <translation id="2727175239389218057">מענה</translation> <translation id="2727977024730340865">מחובר למטען בעל מתח נמוך. ייתכן שטעינת הסוללה לא תהיה אמינה.</translation> -<translation id="2740531572673183784">אישור</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Delete" (מחיקה)</translation> <translation id="2750941250130734256">בוטלה ההצמדה של החלון הפעיל.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">כדי להקליט את החלון, מקישים על Enter</translation> <translation id="5978382165065462689">שיתוף שליטה במסך דרך סיוע מרחוק.</translation> <translation id="5980301590375426705">יציאה מהפעלת אורח</translation> +<translation id="5983567367406220847">הנקודה לשיתוף האינטרנט הושבתה עקב חוסר פעילות.</translation> <translation id="598407983968395253">שימוש בתבנית</translation> <translation id="598882571027504733">כדי להתקין את העדכון, יש להפעיל מחדש את ה-Chromebook כשהמקלדת מחוברת.</translation> <translation id="6002179289567220515">כיבית מצלמה אחת באמצעות המתג הפיזי. אפשר גם להשבית את הגישה לכל המצלמות.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">אפליקציה כלשהי משתמשת במצלמה שלך</translation> <translation id="7453330308669753048">התוצאה מהיסטוריית החיפושים הוסרה</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | הזמן שנותר לטעינה מלאה: <ph name="TIME" /></translation> +<translation id="7459485586006128091">הנקודה לשיתוף האינטרנט הושבתה עקב שגיאה פנימית. אפשר לנסות להתחבר מחדש בעוד כמה דקות.</translation> <translation id="7461924472993315131">הצמדה</translation> <translation id="746232733191930409">מצב הקלטת מסך</translation> <translation id="7466449121337984263">יש לגעת בחיישן</translation> @@ -1450,6 +1451,7 @@ <translation id="776344839111254542">יש ללחוץ כדי להציג את פרטי העדכון</translation> <translation id="7768784765476638775">הקראה</translation> <translation id="7769299611924763557">קובץ ה-GIF יהיה מוכן בקרוב</translation> +<translation id="7773536009433685931">הפעלת Wi-Fi במקום זאת</translation> <translation id="7780094051999721182">קיצורי הדרך</translation> <translation id="7780159184141939021">סיבוב המסך</translation> <translation id="7796735576426975947">התראה חדשה מוסתרת</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb index 44d08f2f..a1902fc 100644 --- a/ash/strings/ash_strings_ja.xtb +++ b/ash/strings/ash_strings_ja.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">ホットスポットを提供するにはスマートフォンにモバイルデータが必要です</translation> <translation id="2727175239389218057">返信</translation> <translation id="2727977024730340865">低電力の充電器に接続しています。バッテリーが充電されない可能性があります。</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />、<ph name="PRICE" /></translation> <translation id="2750932254614666392">"削除"</translation> <translation id="2750941250130734256">アクティブなウィンドウの固定を解除しました。</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">ウィンドウを録画するには Enter キーを押してください</translation> <translation id="5978382165065462689">リモート サポート経由で画面の制御を共有しています。</translation> <translation id="5980301590375426705">ゲストを終了</translation> +<translation id="5983567367406220847">アクティビティがないため、アクセス ポイントはオフになっています。</translation> <translation id="598407983968395253">テンプレートを使用</translation> <translation id="598882571027504733">アップデートを取得するには、キーボードを接続した状態で Chromebook を再起動してください。</translation> <translation id="6002179289567220515">物理的なスイッチを使ってカメラを 1 つオフにしました。すべてのカメラに対してアクセスをオフにすることもできます。</translation> @@ -1376,6 +1376,7 @@ <translation id="7452560014878697800">アプリケーションがカメラを使用しています</translation> <translation id="7453330308669753048">検索履歴の結果が削除されました</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | あと <ph name="TIME" /> で充電完了</translation> +<translation id="7459485586006128091">内部エラーにより、アクセス ポイントはオフになっています。数分後にもう一度接続してみてください。</translation> <translation id="7461924472993315131">固定</translation> <translation id="746232733191930409">画面の録画モード</translation> <translation id="7466449121337984263">センサーをタッチしてください</translation> @@ -1449,6 +1450,7 @@ <translation id="776344839111254542">クリックしてアップデートの詳細を表示する</translation> <translation id="7768784765476638775">選択して読み上げ</translation> <translation id="7769299611924763557">GIF の作成はまもなく完了します</translation> +<translation id="7773536009433685931">代わりに Wi-Fi をオンにする</translation> <translation id="7780094051999721182">ショートカット</translation> <translation id="7780159184141939021">画面の回転</translation> <translation id="7796735576426975947">新しい通知は表示されません</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb index 5417548..0b23cbd8 100644 --- a/ash/strings/ash_strings_ka.xtb +++ b/ash/strings/ash_strings_ka.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">უსადენო ქსელის უზრუნველსაყოფად თქვენს ტელეფონს უნდ ჰქონდეს მობილური ინტერნეტი</translation> <translation id="2727175239389218057">პასუხი</translation> <translation id="2727977024730340865">შეერთებულია დაბალი სიმძლავრის დამტენთან. ბატარეის დატენვა შეიძლება არ იყოს სანდო.</translation> -<translation id="2740531572673183784">კარგი</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"წაშლა"</translation> <translation id="2750941250130734256">აქტიური ფანჯრის ჩამაგრება მოხსნილია.</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb index 5009608..f26a6415 100644 --- a/ash/strings/ash_strings_kk.xtb +++ b/ash/strings/ash_strings_kk.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Хотспотты ұсыну үшін телефоныңызда мобильдік интернет болуы керек.</translation> <translation id="2727175239389218057">Жауап беру</translation> <translation id="2727977024730340865">Төмен қуатты зарядтағышқа жалғанған. Батареяны зарядтау кезінде қиындықтар болуы мүмкін.</translation> -<translation id="2740531572673183784">Жарайды</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Жою"</translation> <translation id="2750941250130734256">Белсенді терезе бекітілмеген.</translation> @@ -918,7 +917,7 @@ <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" /> қолданбасы назар аударуыңызды сұрайды.</translation> <translation id="5283198616748585639">1 мин қосу</translation> <translation id="528468243742722775">Соңы</translation> -<translation id="5286194356314741248">Ізделуде</translation> +<translation id="5286194356314741248">Ізделіп жатыр</translation> <translation id="5293671101077843611">Бүгінге ешқандай іс-шара жоқ.</translation> <translation id="5297423144044956168">Ешқандай мобильдік құрылғы табылмады.</translation> <translation id="5297704307811127955">Өшірулі</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb index 733a94fe..ed38af0 100644 --- a/ash/strings/ash_strings_km.xtb +++ b/ash/strings/ash_strings_km.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">ទូរសព្ទរបស់អ្នកត្រូវតែមានទិន្នន័យទូរសព្ទចល័ត ដើម្បីផ្ដល់ហតស្ប៉ត</translation> <translation id="2727175239389218057">ឆ្លើយតប</translation> <translation id="2727977024730340865">បានដោតទៅឆ្នាំងសាកថាមពលខ្សោយ។ ការសាកថ្មប្រហែលជាមិនអាចជឿជាក់បានទេ។</translation> -<translation id="2740531572673183784">យល់ព្រម</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"លុប"</translation> <translation id="2750941250130734256">បានផ្ដាច់វិនដូសកម្ម។</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb index 86c968d..19a6e16 100644 --- a/ash/strings/ash_strings_kn.xtb +++ b/ash/strings/ash_strings_kn.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">ಹಾಟ್ಸ್ಪಾಟ್ ಒದಗಿಸಲು ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ ಮೊಬೈಲ್ ಡೇಟಾ ಇರಬೇಕು.</translation> <translation id="2727175239389218057">ಪ್ರತ್ಯುತ್ತರಿಸಿ</translation> <translation id="2727977024730340865">ಕಡಿಮೆ ವಿದ್ಯುತ್ ಚಾರ್ಜರ್ಗೆ ಪ್ಲಗ್ ಮಾಡಲಾಗಿದೆ. ಬ್ಯಾಟರಿ ಚಾರ್ಜಿಂಗ್ ವಿಶ್ವಾಸಾರ್ಹವಾಗಿಲ್ಲದಿರಬಹುದು.</translation> -<translation id="2740531572673183784">ಸರಿ</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"ಅಳಿಸಿ"</translation> <translation id="2750941250130734256">ಸಕ್ರಿಯ ವಿಂಡೋವನ್ನು ಅನ್ಡಾಕ್ ಮಾಡಲಾಗಿದೆ.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">ವಿಂಡೋವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು Enter ಅನ್ನು ಒತ್ತಿರಿ</translation> <translation id="5978382165065462689">ರಿಮೋಟ್ ಸಹಾಯಕದ ಮೂಲಕ ನಿಮ್ಮ ಪರದೆಯ ಹಂಚಿಕೆಯ ನಿಯಂತ್ರಣ</translation> <translation id="5980301590375426705">ಅತಿಥಿ ನಿಂದ ನಿರ್ಗಮಿಸಿ</translation> +<translation id="5983567367406220847">ನಿಷ್ಕ್ರಿಯತೆಯಿಂದಾಗಿ, ಹಾಟ್ಸ್ಪಾಟ್ ಅನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ.</translation> <translation id="598407983968395253">ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ಬಳಸಿ</translation> <translation id="598882571027504733">ಅಪ್ಡೇಟ್ ಪಡೆಯಲು, ಕೀಬೋರ್ಡ್ ಲಗತ್ತಿನೊಂದಿಗೆ ನಿಮ್ಮ Chromebook ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ.</translation> <translation id="6002179289567220515">1 ಕ್ಯಾಮರಾವನ್ನು ಆಫ್ ಮಾಡಲು ನೀವು ಭೌತಿಕ ಸ್ವಿಚ್ ಅನ್ನು ಬಳಸಿದ್ದೀರಿ. ನೀವು ಎಲ್ಲಾ ಕ್ಯಾಮರಾಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಸಹ ಆಫ್ ಮಾಡಬಹುದು.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">ಆ್ಯಪ್ವೊಂದು ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಬಳಸುತ್ತಿದೆ</translation> <translation id="7453330308669753048">ಹುಡುಕಾಟ ಇತಿಹಾಸದ ಫಲಿತಾಂಶವನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | ಭರ್ತಿಯಾಗಲು ಬೇಕಾದ ಸಮಯ <ph name="TIME" /></translation> +<translation id="7459485586006128091">ಆಂತರಿಕ ದೋಷದಿಂದಾಗಿ, ಹಾಟ್ಸ್ಪಾಟ್ ಅನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ. ಕೆಲವು ನಿಮಿಷಗಳ ನಂತರ ಮರುಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="7461924472993315131">ಪಿನ್</translation> <translation id="746232733191930409">ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡಿಂಗ್ ಮೋಡ್</translation> <translation id="7466449121337984263">ಸೆನ್ಸರ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">ಅಪ್ಡೇಟ್ ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ</translation> <translation id="7768784765476638775">ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಆಲಿಸಿ</translation> <translation id="7769299611924763557">ನಿಮ್ಮ GIF ಶೀಘ್ರದಲ್ಲೇ ಸಿದ್ಧವಾಗಲಿದೆ</translation> +<translation id="7773536009433685931">ಬದಲಿಗೆ ವೈಫೈ ಆನ್ ಮಾಡಿ</translation> <translation id="7780094051999721182">ಶಾರ್ಟ್ಕಟ್ಗಳು</translation> <translation id="7780159184141939021">ಪರದೆಯನ್ನು ತಿರುಗಿಸಿ</translation> <translation id="7796735576426975947">ಹೊಸ ಅಧಿಸೂಚನೆಯನ್ನು ಮರೆಮಾಡಲಾಗಿದೆ</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb index 0ff9740..427395c 100644 --- a/ash/strings/ash_strings_ko.xtb +++ b/ash/strings/ash_strings_ko.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">핫스팟을 제공하려면 휴대전화에서 모바일 데이터를 이용할 수 있어야 합니다.</translation> <translation id="2727175239389218057">답장</translation> <translation id="2727977024730340865">저출력 충전기에 연결되었습니다. 배터리 충전 상태가 불안정합니다.</translation> -<translation id="2740531572673183784">확인</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"삭제"</translation> <translation id="2750941250130734256">활성 창이 고정 해제되었습니다.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">창을 녹화하려면 Enter를 누르세요</translation> <translation id="5978382165065462689">원격 지원을 통해 화면 제어 공유</translation> <translation id="5980301590375426705">게스트 세션 종료</translation> +<translation id="5983567367406220847">활동이 없어 핫스팟이 사용 중지되었습니다.</translation> <translation id="598407983968395253">템플릿 사용</translation> <translation id="598882571027504733">업데이트하려면 키보드가 연결된 상태로 Chromebook을 다시 시작하세요.</translation> <translation id="6002179289567220515">물리적 스위치를 사용하여 카메라 1개를 사용 중지했습니다. 모든 카메라의 액세스를 사용 중지할 수도 있습니다.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">다른 애플리케이션에서 카메라를 사용 중입니다.</translation> <translation id="7453330308669753048">검색 기록 결과 삭제됨</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> 후 충전 완료</translation> +<translation id="7459485586006128091">내부 오류로 인해 핫스팟이 사용 중지되었습니다. 몇 분 후에 다시 연결해 보세요.</translation> <translation id="7461924472993315131">고정</translation> <translation id="746232733191930409">화면 녹화 모드</translation> <translation id="7466449121337984263">센서를 터치하세요.</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">업데이트 세부정보를 보려면 클릭하세요.</translation> <translation id="7768784765476638775">텍스트 읽어주기</translation> <translation id="7769299611924763557">곧 GIF가 준비됩니다</translation> +<translation id="7773536009433685931">대신 Wi-Fi 사용 설정하기</translation> <translation id="7780094051999721182">바로가기</translation> <translation id="7780159184141939021">화면 회전</translation> <translation id="7796735576426975947">새로운 알림 숨겨짐</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb index db78aeb4..434e522 100644 --- a/ash/strings/ash_strings_ky.xtb +++ b/ash/strings/ash_strings_ky.xtb
@@ -148,6 +148,7 @@ <translation id="1651914502370159744">Таржымал барагын ачуу</translation> <translation id="1654477262762802994">Айтып издеп баштоо</translation> <translation id="1668469839109562275">Камтылган VPN</translation> +<translation id="1675844249244994876">Оң жактагы терезени жаңыртуу</translation> <translation id="1677472565718498478"><ph name="TIME" /> калды</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> туташкан жок.</translation> <translation id="1677582821739292812">Кимдир бирөө экраныңызды көрүп турат</translation> @@ -367,7 +368,6 @@ <translation id="2726420622004325180">Хотспот катары колдонуу үчүн телефонуңузда мобилдик Интернет болушу керек.</translation> <translation id="2727175239389218057">Жооп берүү</translation> <translation id="2727977024730340865">Кубаттуулугу төмөн кубаттагычка сайылды. Батареяны кубаттоо аракети ишенимдүү эмес.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Өчүрүү"</translation> <translation id="2750941250130734256">Активдүү терезе ажыратылды.</translation> @@ -848,6 +848,7 @@ <translation id="493076006037866439">Экранды алыстатуу</translation> <translation id="4936329710968938986">Баары, өчүк</translation> <translation id="4938176435186993759">Бардык сунуштарды жашыруу</translation> +<translation id="4943007472417128747">WiFi'ды колдонуу үчүн хотспот өчүрүлдү. Хотспотту колдонуу үчүн WiFi'ды өчүрүңүз.</translation> <translation id="4945196315133970626">Билдирмелерди өчүрүү</translation> <translation id="4946376291507881335">Сүрөткө тартуу</translation> <translation id="495046168593986294">Өйдө сыдыруу</translation> @@ -1392,6 +1393,7 @@ Түзмөктү өчүрүү үчүн кубат баскычын кайра коё бербей басып туруңуз.</translation> <translation id="7526573455193969409">Тармак көзөмөлдөнүшү мүмкүн</translation> <translation id="7536035074519304529">IP дареги: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Сол жактагы терезени жаңыртуу</translation> <translation id="7543399541175347147">Linux колдонмолору жана жашыруун терезелер учурда колдоого алынбайт. Башка колдонмолор сакталат.</translation> <translation id="7544300628205093162">Баскычтоптун жарыгы күйүк</translation> <translation id="7548434653388805669">Уктоого убакыт келди</translation> @@ -1472,6 +1474,7 @@ <translation id="7893503627044934815">Бул файлды көргүм келбейт</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Экранды буруу үчүн тез баскычты бастыңыз. Экранды бургуңуз келеби?</translation> +<translation id="7901190436359881020">Терезелерди алмаштыруу</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Манжа изинин сенсорун басыңыз</translation> <translation id="7904094684485781019">Администратор бул аккаунтка бир нече профиль менен кирүүгө тыюу салган.</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb index 28185fa..687ca302 100644 --- a/ash/strings/ash_strings_lo.xtb +++ b/ash/strings/ash_strings_lo.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">ໂທລະສັບຂອງທ່ານຕ້ອງມີອິນເຕີເນັດມືຖືເພື່ອໃຫ້ຮັອດສະປອດ</translation> <translation id="2727175239389218057">ຕອບກັບ</translation> <translation id="2727977024730340865">ສຽບໃສ່ເຄື່ອງສາກໄຟຕໍ່າແລ້ວ. ການສາກແບັດເຕີຣີອາດຈະບໍ່ເຊື່ອຖືໄດ້.</translation> -<translation id="2740531572673183784">ຕົກລົງ</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"ລຶບ"</translation> <translation id="2750941250130734256">ຢຸດຈອດໜ້າຈໍທີ່ນຳໃຊ້ແລ້ວ.</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb index d97d4f6..2081c43 100644 --- a/ash/strings/ash_strings_lt.xtb +++ b/ash/strings/ash_strings_lt.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Telefone turi būti naudojami mobiliojo ryšio duomenys, kad jame būtų galima įjungti viešosios interneto prieigos tašką</translation> <translation id="2727175239389218057">Atsakyti</translation> <translation id="2727977024730340865">Prijungtas mažos galios įkroviklis. Akumuliatoriaus įkrovimas gali būti nepatikimas.</translation> -<translation id="2740531572673183784">Gerai</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Ištrinti“</translation> <translation id="2750941250130734256">Aktyvus langas pašalintas.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Paspauskite „Enter“, kad įrašytumėte langą</translation> <translation id="5978382165065462689">Leidžiama valdyti jūsų ekraną naudojant Nuotolinę pagalbą.</translation> <translation id="5980301590375426705">Išeiti iš sveč. rež.</translation> +<translation id="5983567367406220847">Dėl neaktyvumo viešosios interneto prieigos taškas išjungtas.</translation> <translation id="598407983968395253">Naudoti šabloną</translation> <translation id="598882571027504733">Kad gautumėte naujinį, iš naujo paleiskite „Chromebook“ su prijungta klaviatūra.</translation> <translation id="6002179289567220515">Fiziniu jungikliu išjungėte vieną vaizdo kamerą. Taip pat galite išjungti visų vaizdo kamerų prieigą.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">Programa naudoja fotoaparatą</translation> <translation id="7453330308669753048">Paieškos istorijos rezultatas pašalintas</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" /> proc. | <ph name="TIME" /> iki visiško įkrovimo</translation> +<translation id="7459485586006128091">Dėl vidinės klaidos viešosios interneto prieigos taškas buvo išjungtas. Bandykite prisijungti iš naujo po kelių minučių.</translation> <translation id="7461924472993315131">Prisegti</translation> <translation id="746232733191930409">Ekrano vaizdo įrašymo režimas</translation> <translation id="7466449121337984263">Palieskite jutiklį</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">Spustelėkite ir peržiūrėkite išsamią atnaujinimo informaciją</translation> <translation id="7768784765476638775">Teksto ištarimas</translation> <translation id="7769299611924763557">GIF elementas bus netrukus paruoštas</translation> +<translation id="7773536009433685931">Vietoj to įjungti „Wi-Fi“</translation> <translation id="7780094051999721182">sparčiųjų klavišų</translation> <translation id="7780159184141939021">Ekrano pasukimas</translation> <translation id="7796735576426975947">Nauji pranešimai paslėpti</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb index 6e31122..10a3d6e 100644 --- a/ash/strings/ash_strings_lv.xtb +++ b/ash/strings/ash_strings_lv.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C ierīce (priekšējā pieslēgvieta)</translation> <translation id="1013598600051641573">Displeja “<ph name="DISPLAY_NAME" />” izšķirtspēja tika mainīta uz <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Lai saglabātu izmaiņas, noklikšķiniet uz “Apstiprināt”. Iepriekšējie iestatījumi tiks atjaunoti pēc šāda laika: <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Bluetooth ierīce “<ph name="DEVICE_NAME" />” vēlas saņemt atļauju, lai izveidotu savienojumu pārī. Lūdzu, ierīcē ievadiet šo PIN: <ph name="PINCODE" />.</translation> +<translation id="1014722676793506285">Tādējādi lietotne <ph name="APP_NAME" />, kā arī visas lietotnes un vietnes ar atrašanās vietas atļauju un operētājsistēmu ChromeOS varēs izmantot Wi-Fi un mobilo tīklu atrašanās vietu.</translation> <translation id="1017556409696559990">Minimizēt augšējo logu, ja pārlūkprogrammā Chrome nav izmaiņu vēstures</translation> <translation id="1024364763893396229">Ierīces (<ph name="NAME" />) saglabāšana</translation> <translation id="1032891413405719768">Skārienekrāna pildspalvas akumulatora līmenis ir zems</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Atvērt lapu Vēsture</translation> <translation id="1654477262762802994">Sākt balss vaicājumu</translation> <translation id="1668469839109562275">Iebūvēts VPN</translation> +<translation id="1675844249244994876">Atjaunināt logu labajā pusē</translation> <translation id="1677472565718498478">Atlikušais laiks: <ph name="TIME" /></translation> <translation id="1677507110654891115">Nav savienojuma ar funkciju <ph name="FEATURE_NAME" />.</translation> <translation id="1677582821739292812">Kāds skatās uz jūsu ekrānu</translation> @@ -191,6 +193,7 @@ <ph name="IME" />. <ph name="LOCALE" />.</translation> <translation id="1823873187264960516">Ethernet adrese: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Ieslēgt piekļuvi atrašanās vietai</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> tika atsprausti</translation> <translation id="1838895407229022812">Nakts režīms ir izslēgts.</translation> <translation id="1854180393107901205">Apturēt apraidi</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Jūsu tālrunī ir jābūt aktivizētiem mobilajiem datiem, lai iespējotu tīklāju.</translation> <translation id="2727175239389218057">Atbildēt</translation> <translation id="2727977024730340865">Pievienots lādētājs ar mazu strāvas padevi. Akumulatora uzlāde var nebūt uzticama.</translation> -<translation id="2740531572673183784">Labi</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">“Delete” (Dzēst)</translation> <translation id="2750941250130734256">Aktīvā loga dokošana ir atcelta.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">Iespējamās darbības</translation> <translation id="3256109297135787951">Noņemt plauktā izceltā vienuma izcelšanu</translation> <translation id="3260969790895726815">Runa tiek apstrādāta lokāli, un diktēšana darbojas bezsaistē, taču dažas balss komandas nedarbosies.</translation> +<translation id="3265032511221679826">Vai ieslēgt piekļuvi precīzai atrašanās vietai?</translation> <translation id="3269597722229482060">Noklikšķināt ar peles labo pogu</translation> <translation id="3289364673986435196">Barošanas izvēlne</translation> <translation id="3289544412142055976">Linux lietotnes pašlaik netiek atbalstītas.</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733">Pārvaldīts lietotājs <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="3666266999138159418">Velciet, lai paslēptu peldošo logu</translation> <translation id="367531336287639526">Atlasīt pirmo ikonu pa kreisi no adreses joslas</translation> +<translation id="3677931086890821290">Tādējādi visas lietotnes un vietnes ar atrašanās vietas atļauju un operētājsistēmu ChromeOS varēs izmantot Wi-Fi un mobilo tīklu atrašanās vietu.</translation> <translation id="3679827876008292680">Pāriet uz loga pēdējo cilni</translation> <translation id="36813544980941320">Wi-Fi tīkli tiks kopīgoti jūsu tālrunī un <ph name="DEVICE_NAME" /> ierīcē.</translation> <translation id="3694122362646626770">Vietnes</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">Tālināt ekrāna saturu</translation> <translation id="4936329710968938986">Visiem, izslēgta</translation> <translation id="4938176435186993759">Paslēpt visus ieteikumus</translation> +<translation id="4943007472417128747">Tīklājs ir izslēgts, lai varētu izmantot Wi-Fi. Lai izmantotu tīklāju, izslēdziet Wi-Fi.</translation> <translation id="4945196315133970626">Izslēgt paziņojumus</translation> <translation id="4946376291507881335">Tvert</translation> <translation id="495046168593986294">Ritināt uz augšu</translation> @@ -1388,6 +1393,7 @@ Lai izslēgtu ierīci, vēlreiz nospiediet un turiet ierīces barošanas pogu.</translation> <translation id="7526573455193969409">Var tikt pārraudzītas tīklā veiktās darbības</translation> <translation id="7536035074519304529">IP adrese: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Atjaunināt logu kreisajā pusē</translation> <translation id="7543399541175347147">Linux lietotnes un inkognito režīma logi pašlaik netiek atbalstīti. Citas lietotnes tiks saglabātas.</translation> <translation id="7544300628205093162">Tastatūras fona apgaismojums ir ieslēgts.</translation> <translation id="7548434653388805669">Laiks naktsmieram</translation> @@ -1468,6 +1474,7 @@ <translation id="7893503627044934815">Nevēlos, lai šis fails tiktu rādīts</translation> <translation id="7895348134893321514">Starpliktuve</translation> <translation id="7897375687985782769">Jūs nospiedāt ekrāna pagriešanas īsinājumtaustiņu. Vai vēlaties pagriezt ekrānu?</translation> +<translation id="7901190436359881020">Apmainīt logus vietām</translation> <translation id="7901405293566323524">Tālruņu centrāle</translation> <translation id="7902625623987030061">Pieskarieties pirksta nospieduma sensoram</translation> <translation id="7904094684485781019">Šī konta administrators nav atļāvis vairākkārtēju pierakstīšanos.</translation> @@ -1743,6 +1750,7 @@ <translation id="9198992156681343238">Displeja <ph name="DISPLAY_NAME" /> izšķirtspēja ir nomainīta uz: <ph name="RESOLUTION" />. Lai saglabātu izmaiņas, noklikšķiniet uz Apstiprināt. Iepriekšējie iestatījumi tiks atjaunoti pēc: <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Izveidojiet savienojumu starp ierīci <ph name="NAME" /> un šo Chromebook datoru</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, pārvalda jūsu administrators</translation> +<translation id="9207682216934703221">Tādējādi lietotnes <ph name="APP_NAME" /> un <ph name="APP2_NAME" />, kā arī visas lietotnes un vietnes ar atrašanās vietas atļauju un operētājsistēmu ChromeOS varēs izmantot Wi-Fi un mobilo tīklu atrašanās vietu.</translation> <translation id="9210037371811586452">Notiek iziešana no vienotās darbvirsmas režīma</translation> <translation id="9211490828691860325">Visas darbvietas</translation> <translation id="9211681782751733685">Līdz pilnīgai akumulatora uzlādei atlikušais laiks: <ph name="TIME_REMAINING" />.</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb index f858864..dc63955 100644 --- a/ash/strings/ash_strings_mk.xtb +++ b/ash/strings/ash_strings_mk.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-Ц уред (предна порта)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> се промени на <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Кликнете „Потврди“ за да ги задржите промените. Претходната поставка ќе се врати за <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Уредот со Bluetooth „<ph name="DEVICE_NAME" />“ бара дозвола за спарување. Внесете го овој PIN-код на тој уред: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Ова овозможува <ph name="APP_NAME" /> и сите апликации и веб-сајтови со дозволата за локација и ChromeOS да користат локација на Wi-Fi и мобилни мрежи.</translation> <translation id="1017556409696559990">Минимизирајте го прозорецот најгоре кога нема задна историја во Chrome</translation> <translation id="1024364763893396229">Зачувајте: <ph name="NAME" /></translation> <translation id="1032891413405719768">Батеријата на пенкалото е слаба</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Ја отвора страницата со „Историја“</translation> <translation id="1654477262762802994">Започнете гласовно барање</translation> <translation id="1668469839109562275">Вградена VPN</translation> +<translation id="1675844249244994876">Ажурирање на прозорецот оддесно</translation> <translation id="1677472565718498478">Уште <ph name="TIME" /></translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> не е поврзана.</translation> <translation id="1677582821739292812">Некој го гледа вашиот екран</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Етернет: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Вклучи пристап до локацијата</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> веќе не е закачена</translation> <translation id="1838895407229022812">„Ноќното светло“ е исклучено.</translation> <translation id="1854180393107901205">Запри со емитување</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Телефонот мора да има мобилен интернет за да обезбеди точка на пристап</translation> <translation id="2727175239389218057">Одговори</translation> <translation id="2727977024730340865">Приклучен на полнач со мало напојување. Полнењето на батеријата може да не е веродостојно.</translation> -<translation id="2740531572673183784">Во ред</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Избриши“</translation> <translation id="2750941250130734256">Активниот прозорец е изваден од приклучок.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">Што можеш да направиш?</translation> <translation id="3256109297135787951">Отстранете го нагласувањето од ставка на полицата</translation> <translation id="3260969790895726815">Говорот се обработува локално, а диктирањето работи офлајн, но некои гласовни наредби нема да работат.</translation> +<translation id="3265032511221679826">Дали да се вклучи пристап до прецизна локација?</translation> <translation id="3269597722229482060">Десен клик</translation> <translation id="3289364673986435196">Мени на копчето за вклучување</translation> <translation id="3289544412142055976">Апликациите на Linux не се поддржани во моментов</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" />, управуван корисник</translation> <translation id="3666266999138159418">Повлечете за сокривање на лебдечкиот прозорец</translation> <translation id="367531336287639526">Изберете ја првата икона лево од лентата за адреси</translation> +<translation id="3677931086890821290">Ова овозможува сите апликации и веб-сајтови со дозволата за локација и ChromeOS да користат локација на Wi-Fi и мобилни мрежи.</translation> <translation id="3679827876008292680">Оди до последната картичка во прозорецот</translation> <translation id="36813544980941320">Wi-Fi мрежите ќе се споделуваат помеѓу вашиот телефон и <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Веб-страници</translation> @@ -845,6 +849,7 @@ <translation id="493076006037866439">Одзумирање на екранот</translation> <translation id="4936329710968938986">Сите, исклучено</translation> <translation id="4938176435186993759">Сокриј ги сите предлози</translation> +<translation id="4943007472417128747">Точката на пристап е исклучена за да се користи Wi-Fi. За да користите точка на пристап, исклучете ја Wi-Fi.</translation> <translation id="4945196315133970626">Исклучи известувања</translation> <translation id="4946376291507881335">Сликајте</translation> <translation id="495046168593986294">Оди нагоре</translation> @@ -1389,6 +1394,7 @@ За да го исклучите уредот, повторно притиснете и задржете го копчето за вклучување на уредот.</translation> <translation id="7526573455193969409">Мрежата можеби се следи</translation> <translation id="7536035074519304529">IP адреса: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Ажурирање на прозорецот одлево</translation> <translation id="7543399541175347147">Апликациите на Linux и прозорците „Инкогнито“ не се поддржани моментално. Другите апликации ќе се зачуваат.</translation> <translation id="7544300628205093162">Заднинското светло на тастатурата е вклучено</translation> <translation id="7548434653388805669">Време за спиење</translation> @@ -1469,6 +1475,7 @@ <translation id="7893503627044934815">Не сакам да се покажува датотекава</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Ја притиснавте кратенката од тастатура за ротација на екранот. Дали сакате да го ротирате екранот?</translation> +<translation id="7901190436359881020">Замена на прозорците</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Допрете го сензорот за отпечатоци</translation> <translation id="7904094684485781019">Администраторот за оваа сметка не дозволува повеќекратно пријавување.</translation> @@ -1744,6 +1751,7 @@ <translation id="9198992156681343238">Резолуцијата на <ph name="DISPLAY_NAME" /> е сменета во <ph name="RESOLUTION" />. Кликнете „Потврди“ за да ги задржите промените. Претходната поставка ќе се врати за <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Поврзи <ph name="NAME" /> со овој Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, управувана од администраторот</translation> +<translation id="9207682216934703221">Ова овозможува <ph name="APP_NAME" />, <ph name="APP2_NAME" /> и сите апликации и веб-сајтови со дозволата за локација и ChromeOS да користат локација на Wi-Fi и мобилни мрежи.</translation> <translation id="9210037371811586452">Се излегува од режим на единствена работна површина</translation> <translation id="9211490828691860325">Сите работни површини</translation> <translation id="9211681782751733685">Уште <ph name="TIME_REMAINING" /> до целосно полнење на батеријата.</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb index cd71a72..e7173b6 100644 --- a/ash/strings/ash_strings_ml.xtb +++ b/ash/strings/ash_strings_ml.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">ഹോട്ട്സ്പോട്ട് നൽകാൻ നിങ്ങളുടെ ഫോണിൽ മൊബൈൽ ഡാറ്റ ഉണ്ടായിരിക്കണം</translation> <translation id="2727175239389218057">മറുപടി നൽകുക</translation> <translation id="2727977024730340865">കുറഞ്ഞ തോതിൽ വൈദ്യുതി പ്രവഹിക്കുന്ന ചാർജ്ജറിലേക്ക് പ്ലഗ് ചെയ്തിരിക്കുന്നു. ബാറ്ററി ചാർജുചെയ്യൽ വിശ്വസനീയമാകണമെന്നില്ല.</translation> -<translation id="2740531572673183784">ശരി</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"ഇല്ലാതാക്കുക"</translation> <translation id="2750941250130734256">സജീവ വിൻഡോ അൺഡോക്ക് ചെയ്തു.</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb index 415548f..945e8e7 100644 --- a/ash/strings/ash_strings_mn.xtb +++ b/ash/strings/ash_strings_mn.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C төхөөрөмж (урд талын порт)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" />-г <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Гц) болгож өөрчилсөн. Өөрчлөлтийг хадгалахын тулд баталгаажуулахыг товшино уу. Өмнөх тохиргоог <ph name="TIMEOUT_SECONDS" />-н дараа сэргээнэ.</translation> <translation id="1013923882670373915">"<ph name="DEVICE_NAME" />" Bluetooth төхөөрөмж өөр төхөөрөмжтэй хослох зөвшөөрөл хүсэж байна. Энэ ПИН кодыг нөгөө төхөөрөмж дээр оруулна уу. ПИН код: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Энэ нь <ph name="APP_NAME" /> болон байршлын зөвшөөрөлтэй бүх апп, вебсайт ба ChromeOS-т Wi-Fi, мобайл сүлжээнүүдийн байршлыг ашиглахыг зөвшөөрнө.</translation> <translation id="1017556409696559990">Chrome-д арын түүх байхгүй үед дээд талын цонхыг багасгах</translation> <translation id="1024364763893396229">Өөрийн <ph name="NAME" />-г хадгалах уу?</translation> <translation id="1032891413405719768">Мэдрэгч үзэгний батарей бага байна</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Этернет: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Байршлын хандалтыг асаах</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" />-г тогтоосныг болиуллаа</translation> <translation id="1838895407229022812">Шөнийн гэрэл унтраалттай байна.</translation> <translation id="1854180393107901205">Каст хийхийг зогсоох</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">Таны утас сүлжээний цэг өгөхийн тулд мобайл дататай байх ёстой</translation> <translation id="2727175239389218057">Хариулах</translation> <translation id="2727977024730340865">Бага энергитэй цэнэглэгч залгасан байна. Тэжээлийг цэнэглэхгүй байж болох юм.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Устгах"</translation> <translation id="2750941250130734256">Идэвхтэй цонхыг салгасан.</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">Та юу хийх боломжтой вэ?</translation> <translation id="3256109297135787951">Тавиур дээрх зүйлээсээ тодруулгыг устгах</translation> <translation id="3260969790895726815">Яриаг дотоодод боловсруулдаг ба дуу хоолойгоор бичих офлайн үед ажилладаг хэдий ч зарим дуут тушаал ажиллахгүй.</translation> +<translation id="3265032511221679826">Нарийвчилсан байршлын хандалтыг асаах уу?</translation> <translation id="3269597722229482060">Баруун талыг товших</translation> <translation id="3289364673986435196">Асаах/унтраах цэс</translation> <translation id="3289544412142055976">Linux аппуудыг одоогоор дэмждэггүй</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Хяналттай хэрэглэгч</translation> <translation id="3666266999138159418">Хөвөгч цонхоо нуухын тулд шударна уу</translation> <translation id="367531336287639526">Хаяг оруулах хэсгийн зүүн талын эхний дүрс тэмдгийг сонгох</translation> +<translation id="3677931086890821290">Энэ нь байршлын зөвшөөрөлтэй бүх апп, вебсайт болон ChromeOS-т Wi-Fi, мобайл сүлжээнүүдийн байршлыг ашиглахыг зөвшөөрнө.</translation> <translation id="3679827876008292680">Цонхны сүүлийн таб руу очих</translation> <translation id="36813544980941320">Wi-Fi сүлжээг таны утас болон <ph name="DEVICE_NAME" />-н хооронд хуваалцана</translation> <translation id="3694122362646626770">Вебсайт</translation> @@ -1070,6 +1073,7 @@ <translation id="5976112937189445008">Цонхыг бичихийн тулд enter дээр дарна уу</translation> <translation id="5978382165065462689">Remote Assistance ашиглан өөрийн дэлгэцийн хяналтыг хуваалцах.</translation> <translation id="5980301590375426705">Зочноос гарах</translation> +<translation id="5983567367406220847">Идэвхгүй байдлын улмаас сүлжээний цэгийг унтраасан.</translation> <translation id="598407983968395253">Загварыг ашиглах</translation> <translation id="598882571027504733">Шинэчлэлт авахын тулд Chromebook-ээ хавсаргасан гараар шинэчилнэ үү.</translation> <translation id="6002179289567220515">Та 1 камерыг унтраахад биет сэлгүүр ашигласан. Та мөн бүх камерын хандалтыг унтраах боломжтой.</translation> @@ -1372,6 +1376,7 @@ <translation id="7452560014878697800">Аппликэйшн таны камерыг ашиглаж байна</translation> <translation id="7453330308669753048">Хайлтын түүхийн илэрцийг хассан</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | дүүрэх хүртэл <ph name="TIME" /></translation> +<translation id="7459485586006128091">Дотоод алдааны улмаас сүлжээний цэгийг унтраасан. Хэдэн минутын дараа дахин холбогдохоор оролдоно уу.</translation> <translation id="7461924472993315131">Pin</translation> <translation id="746232733191930409">Дэлгэцийн үйлдэл бичих горим</translation> <translation id="7466449121337984263">Мэдрэгчид хүрнэ үү</translation> @@ -1445,6 +1450,7 @@ <translation id="776344839111254542">Шинэчлэлтийн дэлгэрэнгүйг харахын тулд товшино уу</translation> <translation id="7768784765476638775">Ярихаар-сонгох</translation> <translation id="7769299611924763557">Таны GIF удахгүй бэлэн болно</translation> +<translation id="7773536009433685931">Оронд нь Wi-Fi-г асаах</translation> <translation id="7780094051999721182">товчлолууд</translation> <translation id="7780159184141939021">Дэлгэцийг эргүүлсэн</translation> <translation id="7796735576426975947">Шинэ мэдэгдлийг нуусан</translation> @@ -1749,6 +1755,7 @@ <translation id="9198992156681343238"><ph name="DISPLAY_NAME" />-н нягтралыг <ph name="RESOLUTION" /> болгож өөрчилсөн. Өөрчлөлтийг хадгалахын тулд баталгаажуулахыг товшино уу. Өмнөх тохиргоог <ph name="TIMEOUT_SECONDS" />-н дараа сэргээнэ.</translation> <translation id="9201044636667689546"><ph name="NAME" />-г энэ Chromebook-тэй холбох</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, таны администратор удирддаг</translation> +<translation id="9207682216934703221">Энэ нь <ph name="APP_NAME" />, <ph name="APP2_NAME" /> болон байршлын зөвшөөрөлтэй бүх апп, вебсайт ба ChromeOS-т Wi-Fi, мобайл сүлжээнүүдийн байршлыг ашиглахыг зөвшөөрнө.</translation> <translation id="9210037371811586452">Дэлгэцийн нэгдмэл горимоос гарч байна</translation> <translation id="9211490828691860325">Бүх дэлгэц</translation> <translation id="9211681782751733685">Батарейг бүрэн цэнэглэхэд <ph name="TIME_REMAINING" /> үлдсэн байна.</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb index 04a903a..a7f4769 100644 --- a/ash/strings/ash_strings_mr.xtb +++ b/ash/strings/ash_strings_mr.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">हॉटस्पॉट पुरवण्यासाठी तुमच्या फोनमध्ये मोबाइल डेटा असणे आवश्यक आहे</translation> <translation id="2727175239389218057">उत्तर द्या</translation> <translation id="2727977024730340865">एका निम्न-उर्जेच्या चार्जरवर प्लग इन केले. बॅटरी चार्जिंग विश्वसनीय असू शकत नाही.</translation> -<translation id="2740531572673183784">ठीक आहे</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"हटवा"</translation> <translation id="2750941250130734256">अॅक्टिव्ह विंडो अनडॉक केली आहे.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">विंडो रेकॉर्ड करण्यासाठी एंटर प्रेस करा</translation> <translation id="5978382165065462689">दूरस्थ सहाय्याद्वारे आपल्या स्क्रीनचे नियंत्रण शेअर करत आहे.</translation> <translation id="5980301590375426705">अतिथी निर्गमन करा</translation> +<translation id="5983567367406220847">इनॅक्टिव्हिटीमुळे हॉटस्पॉट बंद करण्यात आला आहे.</translation> <translation id="598407983968395253">टेंप्लेट वापरा</translation> <translation id="598882571027504733">अपडेट करण्यासाठी, संलग्न केलेल्या कीबोर्डसह तुमचे Chromebook रीस्टार्ट करा.</translation> <translation id="6002179289567220515">तुम्ही एक कॅमेरा बंद करण्यासाठी प्रत्यक्ष स्विच वापरले. तुम्ही सर्व कॅमेराचा अॅक्सेसदेखील बंद करू शकता.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">अॅप्लिकेशन तुमचा कॅमेरा वापरत आहे</translation> <translation id="7453330308669753048">शोध इतिहासाचे परिणाम काढून टाकले</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | पूर्ण होण्यासाठी <ph name="TIME" /></translation> +<translation id="7459485586006128091">अंतर्गत एररमुळे हॉटस्पॉट बंद करण्यात आला आहे. काही मिनिटांमध्ये पुन्हा कनेक्ट करण्याचा प्रयत्न करा.</translation> <translation id="7461924472993315131">पिन</translation> <translation id="746232733191930409">स्क्रीन रेकॉर्डिंग मोड</translation> <translation id="7466449121337984263">कृपया सेन्सरला स्पर्श करा</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">अपडेट तपशील पाहण्यासाठी क्लिक करा</translation> <translation id="7768784765476638775">बोलण्यासाठी निवडा</translation> <translation id="7769299611924763557">तुमची GIF लवकरच तयार होईल</translation> +<translation id="7773536009433685931">त्याऐवजी वायफाय सुरू करा</translation> <translation id="7780094051999721182">शॉर्टकट</translation> <translation id="7780159184141939021">स्क्रीन फिरवा</translation> <translation id="7796735576426975947">नवीन सूचना लपवलेल्या आहेत</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb index 0a27fec..ec126aa 100644 --- a/ash/strings/ash_strings_ms.xtb +++ b/ash/strings/ash_strings_ms.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Telefon anda mestilah mempunyai data mudah alih untuk menyediakan tempat liputan</translation> <translation id="2727175239389218057">Balas</translation> <translation id="2727977024730340865">Dipalamkan pada pengecas berkuasa rendah. Pengecasan bateri mungkin tidak boleh diharapkan.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Padam"</translation> <translation id="2750941250130734256">Tetingkap aktif tidak didok.</translation> @@ -1074,6 +1073,7 @@ <translation id="5976112937189445008">Tekan kekunci enter untuk merakam skrin tetingkap</translation> <translation id="5978382165065462689">Berkongsi kawalan skrin anda melalui Bantuan Jauh.</translation> <translation id="5980301590375426705">Keluar dari tetamu</translation> +<translation id="5983567367406220847">Tempat liputan telah dimatikan kerana tidak aktif.</translation> <translation id="598407983968395253">Gunakan templat</translation> <translation id="598882571027504733">Untuk mendapatkan kemas kini, mulakan semula Chromebook dengan papan kekunci yang dipasang.</translation> <translation id="6002179289567220515">Anda menggunakan suis fizikal untuk mematikan 1 kamera. Anda juga boleh mematikan akses untuk semua kamera.</translation> @@ -1376,6 +1376,7 @@ <translation id="7452560014878697800">Satu aplikasi sedang menggunakan kamera anda</translation> <translation id="7453330308669753048">Hasil sejarah carian dialih keluar</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> sehingga penuh</translation> +<translation id="7459485586006128091">Tempat liputan telah dimatikan kerana ralat dalaman. Cuba sambungkan semula tempat liputan dalam masa beberapa minit.</translation> <translation id="7461924472993315131">Pin</translation> <translation id="746232733191930409">Mod rakaman skrin</translation> <translation id="7466449121337984263">Sila sentuh penderia</translation> @@ -1449,6 +1450,7 @@ <translation id="776344839111254542">Klik untuk melihat butiran kemas kini</translation> <translation id="7768784765476638775">Pilih untuk bercakap</translation> <translation id="7769299611924763557">GIF anda akan tersedia tidak lama lagi</translation> +<translation id="7773536009433685931">Hidupkan Wi-Fi</translation> <translation id="7780094051999721182">pintasan</translation> <translation id="7780159184141939021">Putarkan Skrin</translation> <translation id="7796735576426975947">Pemberitahuan baharu disembunyikan</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb index 54c8e9e..1e19f6fb 100644 --- a/ash/strings/ash_strings_my.xtb +++ b/ash/strings/ash_strings_my.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">ဟော့စပေါ့ပေးရန် သင့်ဖုန်းတွင် မိုဘိုင်းဒေတာရှိရပါမည်</translation> <translation id="2727175239389218057">စာပြန်ရန်</translation> <translation id="2727977024730340865">ပါဝါနည်းသည့် အားသွင်းကိရိယာသို့ ချိတ်ဆက်ထားသည်။ ဘတ်ထရီအားသွင်းခြင်း အားကိုး၍ရမည် မဟုတ်ပါ။</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />၊ <ph name="PRICE" /></translation> <translation id="2750932254614666392">"ဖျက်ရန်"</translation> <translation id="2750941250130734256">ဖွင့်ထားသည့်ဝင်းဒိုးကို ဖြုတ်လိုက်သည်။</translation> @@ -953,7 +952,7 @@ <translation id="5426063383988017631">ဆက်တင်များမီနူး ပိတ်ထားသည်</translation> <translation id="5428899915242071344">ရွေးချယ်ခြင်းကို စတင်ရန်</translation> <translation id="5429993543155113935">‘ရုပ်ဖျက်’ ဝင်ဒိုးများကို လောလောဆယ် ပံ့ပိုးမထားပါ</translation> -<translation id="5430931332414098647">အမြန်ချိတ်ဆက်မျှဝေခြင်း</translation> +<translation id="5430931332414098647">အလိုအလျောက် ချိတ်ဆက်မျှဝေခြင်း</translation> <translation id="5431318178759467895">အရောင်</translation> <translation id="5433020815079095860">အသံ အဝင်</translation> <translation id="544691375626129091">အသုံးပြုနိုင်သူ အားလုံးအား ဤ ကဏ္ဍသို့ ပေါင်းထည့်ပြီး ဖြစ်၏။</translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb index 80209f1c..c318c16 100644 --- a/ash/strings/ash_strings_ne.xtb +++ b/ash/strings/ash_strings_ne.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C यन्त्र (अगाडि पोर्ट)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> को रिजोल्युसन परिवर्तन गरी <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> हर्ज) बनाइयो। यो परिवर्तन सुरक्षित गर्न पुष्टि गर्नुहोस् नामक बटनमा क्लिक गर्नुहोस्। अबको <ph name="TIMEOUT_SECONDS" /> मा यी सेटिङ परिवर्तन गरी पहिलेको जस्तै बनाइने छ।</translation> <translation id="1013923882670373915">ब्लुटुथ यन्त्र "<ph name="DEVICE_NAME" />" जोडा मिलाउने अनुमति चाहन्छ। कृपया त्यस यन्त्रमा यो पिन कोड प्रविष्टि गर्नुहोस्: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">तपाईंले यसो गर्नुभयो भने <ph name="APP_NAME" /> र लोकेसन प्रयोग गर्ने अनुमति दिइएका सबै एप तथा वेबसाइटहरू अनि ChromeOS ले Wi-Fi र मोबाइल नेटवर्कको लोकेसन प्रयोग गर्न पाउँछन्।</translation> <translation id="1017556409696559990">Chrome मा ब्याक हिस्ट्री नभएका खण्डमा सिरानको विन्डो मिनिमाइज गर्नुहोस्</translation> <translation id="1024364763893396229"><ph name="NAME" /> सेभ गर्नुहोस्</translation> <translation id="1032891413405719768">स्टाइलसको ब्याट्री कम छ</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">इथरनेट: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">लोकेसन प्रयोग गर्ने अनुमति दिनुहोस्</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> अनपिन गरिएको थियो</translation> <translation id="1838895407229022812">रात्रि प्रकाश निष्क्रिय छ।</translation> <translation id="1854180393107901205">Cast गर्न रोक्नुहोस्</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">हटस्पट सुविधा अन गर्न तपाईंको फोनमा अनिवार्य रूपमा मोबाइल डेटा उपलब्ध हुनु पर्छ</translation> <translation id="2727175239389218057">जवाफ दिनुहोस्</translation> <translation id="2727977024730340865">कम शक्ति भएको चार्जरमा प्लग इन गरिएको छ। ब्याट्री चार्जिङ भरपर्दो नहुन सक्छ।</translation> -<translation id="2740531572673183784">ठिक छ</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"मेटाऊ"</translation> <translation id="2750941250130734256">सक्रिय विन्डो अनडक गरिएको छ।</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">तपाईं के गर्न सक्नुहुन्छ?</translation> <translation id="3256109297135787951">आफ्नो सेल्फमा भएको कुनै वस्तुबाट हाइलाइट हटाउनुहोस्</translation> <translation id="3260969790895726815">बोलेको कुरा डिभाइसभित्रै प्रोसेस गरिन्छ र स्पिच-टु-टेक्स्टले अफलाइनमा काम गर्छ तर डिभाइसलाई बोलेर दिइने केही निर्देशनहरू दिँदा भने त्यसले काम गर्दैन।</translation> +<translation id="3265032511221679826">सटीक लोकेसन प्रयोग गर्ने अनुमति दिने हो?</translation> <translation id="3269597722229482060">दायाँ क्लिक गर्नुहोस्</translation> <translation id="3289364673986435196">पावर मेनु</translation> <translation id="3289544412142055976">Linux एपहरू हाल प्रयोग गर्न मिल्दैन</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> व्यवस्थापन गरिएका प्रयोगकर्ता</translation> <translation id="3666266999138159418">फ्लोटिङ विन्डो लुकाउन स्वाइप गर्नुहोस्</translation> <translation id="367531336287639526">एड्रेस बारमा भएको बायाँतिरको पहिलो वस्तु चयन गर्नुहोस्</translation> +<translation id="3677931086890821290">तपाईंले यसो गर्नुभयो भने लोकेसन प्रयोग गर्ने अनुमति दिइएका सबै एप तथा वेबसाइटहरू अनि ChromeOS ले Wi-Fi र मोबाइल नेटवर्कको लोकेसन प्रयोग गर्न पाउँछन्।</translation> <translation id="3679827876008292680">विन्डोमा रहेको अन्तिम ट्याबमा जानुहोस्</translation> <translation id="36813544980941320">तपाईंको फोन र <ph name="DEVICE_NAME" /> का बिचमा Wi-Fi नेटवर्कहरू सेयर गरिने छन्</translation> <translation id="3694122362646626770">वेबसाइटहरू</translation> @@ -1069,6 +1072,7 @@ <translation id="5976112937189445008">विन्डो रेकर्ड गर्न इन्टर थिच्नुहोस्</translation> <translation id="5978382165065462689">रिमोट सहायता मार्फत तपाईँको स्क्रीन नियन्त्रण साझेदारी गर्दै।</translation> <translation id="5980301590375426705">अतिथि सत्रबाट निस्कनु…</translation> +<translation id="5983567367406220847">कुनै पनि क्रियाकलाप नगरिएको हुनाले हटस्पट अफ गरिएको छ।</translation> <translation id="598407983968395253">टेम्प्लेट प्रयोग गर्नुहोस्</translation> <translation id="598882571027504733">अद्यावधिक प्राप्त गर्न, उक्त किबोर्ड जोडिएकै अवस्थामा आफ्नो Chromebook पुनः सुरु गर्नुहोस्।</translation> <translation id="6002179289567220515">तपाईंले एउटा क्यामेरा अफ गर्न स्विच प्रयोग गर्नुभयो। तपाईं सबै क्यामेरालाई दिइएको अनुमति अफ गर्न पनि सक्नुहुन्छ।</translation> @@ -1371,6 +1375,7 @@ <translation id="7452560014878697800">कुनै एपले तपाईंको डिभाइसको क्यामेरा प्रयोग गरिरहेको छ</translation> <translation id="7453330308669753048">सर्च हिस्ट्रको परिणाम हटाइयो</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | पूरा चार्ज हुन <ph name="TIME" /> लाग्छ</translation> +<translation id="7459485586006128091">आन्तरिक त्रुटि भएकाले हटस्पट अफ गरिएको छ। केही बेरपछि फेरि कनेक्ट गरी हेर्नुहोस्।</translation> <translation id="7461924472993315131">पिन</translation> <translation id="746232733191930409">स्क्रिन रेकर्डिङ मोड</translation> <translation id="7466449121337984263">कृपया फिंगरप्रिन्ट सेन्सरमा छुनुहोस्</translation> @@ -1444,6 +1449,7 @@ <translation id="776344839111254542">अद्यावधिकसम्बन्धी विवरणहरू हेर्न क्लिक गर्नुहोस्</translation> <translation id="7768784765476638775">सेलेक्ट टु स्पिक</translation> <translation id="7769299611924763557">तपाईंको GIF चाँडै नै तयार हुने छ</translation> +<translation id="7773536009433685931">बरु Wi-Fi अन गर्नुहोस्</translation> <translation id="7780094051999721182">सर्टकट</translation> <translation id="7780159184141939021">स्क्रिन घुमाउनुहोस्</translation> <translation id="7796735576426975947">नयाँ सूचना लुकाइएको छ</translation> @@ -1747,6 +1753,7 @@ <translation id="9198992156681343238"><ph name="DISPLAY_NAME" /> रिजोल्युसन परिवर्तन गरी <ph name="RESOLUTION" /> पारियो। परिवर्तनहरू सुरक्षित गर्न पुष्टि गर्नुहोस् नामक बटनमा क्लिक गर्नुहोस्। अघिल्ला सेटिङहरूलाई <ph name="TIMEOUT_SECONDS" /> भित्र पुनर्स्थापना गरिने छ।</translation> <translation id="9201044636667689546">यो Chromebook मा <ph name="NAME" /> कनेक्ट गर्नुहोस्</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, तपाईंका प्रशासकले व्यवस्थित गर्नुभएको छ</translation> +<translation id="9207682216934703221">तपाईंले यसो गर्नुभयो भने <ph name="APP_NAME" />, <ph name="APP2_NAME" /> र लोकेसन प्रयोग गर्ने अनुमति दिइएका सबै एप तथा वेबसाइटहरू अनि ChromeOS ले Wi-Fi र मोबाइल नेटवर्कको लोकेसन प्रयोग गर्न पाउँछन्।</translation> <translation id="9210037371811586452">एकीकृत डेस्कटप मोडबाट बाहिर निस्कँदै</translation> <translation id="9211490828691860325">सबै डेस्कहरू</translation> <translation id="9211681782751733685">ब्याट्री पूर्ण रूपमा चार्ज हुन <ph name="TIME_REMAINING" /> बाँकी छ।</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb index 3998feb..ddb709c 100644 --- a/ash/strings/ash_strings_nl.xtb +++ b/ash/strings/ash_strings_nl.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Je telefoon moet mobiele data hebben om als hotspot te werken</translation> <translation id="2727175239389218057">Reageren</translation> <translation id="2727977024730340865">Aangesloten op een laag-vermogen-lader. Opladen van de batterij mogelijk niet betrouwbaar.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">'Verwijderen'</translation> <translation id="2750941250130734256">Actief venster losgemaakt.</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb index cf126ad..99577e50 100644 --- a/ash/strings/ash_strings_no.xtb +++ b/ash/strings/ash_strings_no.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Telefonen må ha mobildata for å kunne tilby en wifi-sone</translation> <translation id="2727175239389218057">Svar</translation> <translation id="2727977024730340865">Tilkoblet laveffektslader. Batteriladingen kan være upålitelig.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" /> – <ph name="PRICE" /></translation> <translation id="2750932254614666392">«Slett»</translation> <translation id="2750941250130734256">Det aktive vinduet er løsnet.</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index 66736477..737443a3 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C ଡିଭାଇସ୍ (ସାମ୍ନା ପୋର୍ଟ)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> <ph name="RESOLUTION" />(<ph name="REFRESH_RATE" /> Hz)କୁ ପରିବର୍ତ୍ତନ କରାଯାଇଛି। ପରିବର୍ତ୍ତନଗୁଡ଼ିକ ରଖିବା ପାଇଁ ସୁନିଶ୍ଚିତ କରନ୍ତୁରେ କ୍ଲିକ୍ କରନ୍ତୁ। ପୂର୍ବବର୍ତ୍ତୀ ସେଟିଂସ୍ <ph name="TIMEOUT_SECONDS" />ରେ ରିଷ୍ଟୋର୍ କରାଯିବ।</translation> <translation id="1013923882670373915">ବ୍ଲୁଟୁଥ୍ ଡିଭାଇସ୍ "<ph name="DEVICE_NAME" />"କୁ ପେୟାର୍ କରିବାକୁ ଅନୁମତି ଚାହୁଁଛି। ଦୟାକରି ଏହି ଡିଭାଇସ୍ରେ ଏହି ପିନ୍କୋଡ୍ ଲେଖନ୍ତୁ: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">ୱାଇ-ଫାଇ ଓ ମୋବାଇଲ ନେଟୱାର୍କ ଲୋକେସନ ବ୍ୟବହର କରିବାକୁ ଏହା <ph name="APP_NAME" /> ଏବଂ ଲୋକେସନ ଅନୁମତି ଥିବା ସମସ୍ତ ଆପ୍ସ ଓ ୱେବସାଇଟ ଏବଂ ChromeOSକୁ ଅନୁମତି ଦିଏ।</translation> <translation id="1017556409696559990">Chromeରେ କୌଣସି ପୂର୍ବ ଇତିହାସ ନଥିବା ସମୟରେ ଟପ ୱିଣ୍ଡୋକୁ ଛୋଟ କରନ୍ତୁ</translation> <translation id="1024364763893396229">ଆପଣଙ୍କ <ph name="NAME" /> ସେଭ କରନ୍ତୁ</translation> <translation id="1032891413405719768">ଷ୍ଟାଇଲସ୍ ବ୍ୟାଟେରୀ ବହୁତ କମ୍ ଅଛି</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">ଇତିହାସ ପୃଷ୍ଠା ଖୋଲନ୍ତୁ</translation> <translation id="1654477262762802994">ଏକ ଭିଡିଓ କ୍ବେରୀ ଆରମ୍ଭ କରନ୍ତୁ</translation> <translation id="1668469839109562275">ବିଲ୍ଟ-ଇନ VPN</translation> +<translation id="1675844249244994876">ଡାହାଣ ୱିଣ୍ଡୋକୁ ଅପଡେଟ କରନ୍ତୁ</translation> <translation id="1677472565718498478"><ph name="TIME" /> ବାକି ଅଛି</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> ସଂଯୁକ୍ତ ହୋଇନାହିଁ।</translation> <translation id="1677582821739292812">କୌଣସି ବ୍ୟକ୍ତି ଆପଣଙ୍କ ସ୍କ୍ରିନକୁ ଦେଖୁଛନ୍ତି</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">ଇଥର୍ନେଟ୍: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">ଲୋକେସନ ଆକ୍ସେସକୁ ଚାଲୁ କରନ୍ତୁ</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" />କୁ ଅନ୍ପିନ୍ କରାଯାଇଛି</translation> <translation id="1838895407229022812">ନାଇଟ୍ ଲାଇଟ୍ ବନ୍ଦ ଅଛି।</translation> <translation id="1854180393107901205">କାଷ୍ଟ କରିବା ବନ୍ଦ କରନ୍ତୁ</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">ହଟସ୍ପଟ୍ ପ୍ରଦାନ କରିବାକୁ ଆପଣଙ୍କ ଫୋନରେ ନିଶ୍ଚିତ ରୂପେ ମୋବାଇଲ ଡାଟା ଥିବା ଆବଶ୍ୟକ</translation> <translation id="2727175239389218057">ପ୍ରତ୍ୟୁତ୍ତର ଦିଅନ୍ତୁ</translation> <translation id="2727977024730340865">କମ୍-ପାୱର୍ଯୁକ୍ତ ଚାର୍ଜର୍। ବ୍ୟାଟେରୀ ଚାର୍ଜିଂ ନିର୍ଭରଯୋଗ୍ୟ ହୋଇନପାରେ।</translation> -<translation id="2740531572673183784">ଠିକ୍ ଅଛି</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"ଡିଲିଟ କରନ୍ତୁ"</translation> <translation id="2750941250130734256">ସକ୍ରିୟ ୱିଣ୍ଡୋକୁ ଅନଡକ କରାଯାଇଛି।</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">ଆପଣ କ’ଣ କରିପାରିବେ?</translation> <translation id="3256109297135787951">ଆପଣଙ୍କ ସେଲ୍ଫରେ ଥିବା ଏକ ଆଇଟମ୍ରୁ ହାଇଲାଇଟ୍କୁ କାଢ଼ନ୍ତୁ</translation> <translation id="3260969790895726815">ସ୍ପିଚକୁ ସ୍ଥାନୀୟ ଭାବେ ପ୍ରକ୍ରିୟାନ୍ଵିତ କରାଯାଇଛି ଏବଂ ଡିକ୍ଟେସନ ଅଫଲାଇନରେ କାମ କରେ, କିନ୍ତୁ କିଛି ଭଏସ କମାଣ୍ଡ କାମ କରିବ ନାହିଁ।</translation> +<translation id="3265032511221679826">ସଠିକ ଲୋକେସନ ଆକ୍ସେସକୁ ଚାଲୁ କରିବେ?</translation> <translation id="3269597722229482060">ଡାହାଣ କ୍ଲିକ୍ କରନ୍ତୁ</translation> <translation id="3289364673986435196">ପାୱାର ମେନୁ</translation> <translation id="3289544412142055976">Linux ଆପ୍ସ ବର୍ତ୍ତମାନ ସମର୍ଥିତ ନୁହେଁ</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> ପରିଚାଳିତ ୟୁଜର</translation> <translation id="3666266999138159418">ଆପଣଙ୍କ ଫ୍ଲୋଟିଂ ୱିଣ୍ଡୋକୁ ଲୁଚାଇବା ପାଇଁ ସ୍ୱାଇପ କରନ୍ତୁ</translation> <translation id="367531336287639526">ଠିକଣା ବାରର ବାମରେ ଥିବା ପ୍ରଥମ ଆଇକନକୁ ଚୟନ କରନ୍ତୁ</translation> +<translation id="3677931086890821290">ୱାଇ-ଫାଇ ଓ ମୋବାଇଲ ନେଟୱାର୍କ ଲୋକେସନ ବ୍ୟବହର କରିବାକୁ ଏହା ଲୋକେସନ ଅନୁମତି ଥିବା ସମସ୍ତ ଆପ୍ସ ଓ ୱେବସାଇଟ ଏବଂ ChromeOSକୁ ଅନୁମତି ଦିଏ।</translation> <translation id="3679827876008292680">ୱିଣ୍ଡୋରେ ଥିବା ଶେଷ ଟାବକୁ ଯାଆନ୍ତୁ</translation> <translation id="36813544980941320">ଆପଣଙ୍କ ଫୋନ୍ ଏବଂ <ph name="DEVICE_NAME" /> ମଧ୍ୟରେ ୱାଇ-ଫାଇ ନେଟୱାର୍କଗୁଡ଼ିକୁ ସେୟାର୍ କରାଯିବ</translation> <translation id="3694122362646626770">ୱେବସାଇଟଗୁଡ଼ିକ</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">ସ୍କ୍ରିନରୁ ଜୁମ ଆଉଟ କରନ୍ତୁ</translation> <translation id="4936329710968938986">ସମସ୍ତେ, ବନ୍ଦ ଅଛି</translation> <translation id="4938176435186993759">ସମସ୍ତ ପରାମର୍ଶ ଲୁଚାନ୍ତୁ</translation> +<translation id="4943007472417128747">ୱାଇଫାଇ ବ୍ୟବହାର କରିବା ପାଇଁ ହଟସ୍ପଟକୁ ବନ୍ଦ କରାଯାଇଛି। ହଟସ୍ପଟ ବ୍ୟବହାର କରିବା ପାଇଁ ୱାଇଫାଇକୁ ବନ୍ଦ କରନ୍ତୁ।</translation> <translation id="4945196315133970626">ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="4946376291507881335">କ୍ୟାପଚର୍ କରନ୍ତୁ</translation> <translation id="495046168593986294">ଉପରକୁ ସ୍କ୍ରୋଲ୍ କରନ୍ତୁ</translation> @@ -1387,6 +1392,7 @@ ଡିଭାଇସକୁ ବନ୍ଦ କରିବା ପାଇଁ ପୁଣି ଡିଭାଇସରେ ପାୱାର ବଟନକୁ ଦବାଇ ଧରନ୍ତୁ।</translation> <translation id="7526573455193969409">ନେଟ୍ୱର୍କ ଉପରେ ହୁଏତ ନଜର ରଖାଯାଇପାରେ</translation> <translation id="7536035074519304529">IP ଠିକଣା: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">ବାମ ୱିଣ୍ଡୋକୁ ଅପଡେଟ କରନ୍ତୁ</translation> <translation id="7543399541175347147">ବର୍ତ୍ତମାନ Linux ଆପ ଏବଂ ଇନକଗ୍ନିଟୋ ୱିଣ୍ଡୋଗୁଡ଼ିକ ସମର୍ଥିତ ନୁହେଁ। ଅନ୍ୟ ଆପଗୁଡ଼ିକ ସେଭ ହୋଇଯିବ।</translation> <translation id="7544300628205093162">କୀବୋର୍ଡ ବ୍ୟାକଲାଇଟ ଚାଲୁ ଅଛି</translation> <translation id="7548434653388805669">ଶୋଇବାର ସମୟ</translation> @@ -1467,6 +1473,7 @@ <translation id="7893503627044934815">ଏହି ଫାଇଲଟି ଦେଖାଯାଉ ବୋଲି ଚାହୁଁ ନାହିଁ</translation> <translation id="7895348134893321514">ଟୋଟ୍</translation> <translation id="7897375687985782769">ଆପଣ ସ୍କ୍ରିନ୍ର ଘୂର୍ଣ୍ଣନ ପାଇଁ କୀବୋର୍ଡ ସର୍ଟକଟ୍ ଦବାଇଛନ୍ତି। ଆପଣ କ'ଣ ସ୍କ୍ରିନ୍କୁ ଘୂରାଇବାକୁ ଚାହୁଁଛନ୍ତି?</translation> +<translation id="7901190436359881020">ୱିଣ୍ଡୋଗୁଡ଼ିକୁ ସ୍ୱାପ କରନ୍ତୁ</translation> <translation id="7901405293566323524">ଫୋନ୍ ହବ୍</translation> <translation id="7902625623987030061">ଟିପଚିହ୍ନ ସେନ୍ସରକୁ ଛୁଅଁନ୍ତୁ</translation> <translation id="7904094684485781019">ଏହି ଆକାଉଣ୍ଟର ବ୍ୟବସ୍ଥାପକ ଏକାଧିକ ସାଇନ୍ ଇନ୍ ପାଇଁ ଅନୁମତି ଦେଇନାହାନ୍ତି।</translation> @@ -1742,6 +1749,7 @@ <translation id="9198992156681343238"><ph name="DISPLAY_NAME" /> ରିଜୋଲ୍ୟୁସନକୁ <ph name="RESOLUTION" />ରେ ବଦଳା ଯାଇଥିଲା। ପରିବର୍ତ୍ତନଗୁଡ଼ିକ ରଖିବା ପାଇଁ ସୁନିଶ୍ଚିତ କରନ୍ତୁରେ କ୍ଲିକ୍ କରନ୍ତୁ। ପୂର୍ବବର୍ତ୍ତୀ ସେଟିଂସ୍ <ph name="TIMEOUT_SECONDS" />ରେ ରିଷ୍ଟୋର୍ କରାଯିବ।</translation> <translation id="9201044636667689546">ଏହି Chromebookରେ <ph name="NAME" /> ସଂଯୋଗ କରନ୍ତୁ</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, ଆପଣଙ୍କ ଆଡ୍ମିନିଷ୍ଟ୍ରେଟର୍ଙ୍କ ଦ୍ୱାରା ପରିଚାଳିତ</translation> +<translation id="9207682216934703221">ୱାଇ-ଫାଇ ଓ ମୋବାଇଲ ନେଟୱାର୍କ ଲୋକେସନ ବ୍ୟବହର କରିବାକୁ ଏହା <ph name="APP_NAME" />, <ph name="APP2_NAME" /> ଏବଂ ଲୋକେସନ ଅନୁମତି ଥିବା ସମସ୍ତ ଆପ୍ସ ଓ ୱେବସାଇଟ ଏବଂ ChromeOSକୁ ଅନୁମତି ଦିଏ।</translation> <translation id="9210037371811586452">ଏକୀକୃତ ଡେସ୍କଟପ୍ ମୋଡ୍ରୁ ପ୍ରସ୍ଥାନ କରୁଛି</translation> <translation id="9211490828691860325">ସମସ୍ତ ଡେସ୍କ</translation> <translation id="9211681782751733685">ବ୍ୟାଟେରୀ ସମ୍ପୂର୍ଣ୍ଣ ଚାର୍ଜ ହେବା ପର୍ଯ୍ୟନ୍ତ ବାକିଥିବା ସମୟ, <ph name="TIME_REMAINING" />।</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index 058256a..6c8d248 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">ਹੌਟਸਪੌਟ ਮੁਹੱਈਆ ਕਰਵਾਉਣ ਲਈ ਤੁਹਾਡੇ ਫ਼ੋਨ ਵਿੱਚ ਮੋਬਾਈਲ ਡਾਟਾ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ</translation> <translation id="2727175239389218057">ਜਵਾਬ ਦਿਓ</translation> <translation id="2727977024730340865">ਇੱਕ ਘੱਟ-ਪਾਵਰ ਦੇ ਚਾਰਜਰ ਨਾਲ ਪਲੱਗ-ਇਨ ਕੀਤਾ ਗਿਆ। ਬੈਟਰੀ ਚਾਰਜਿੰਗ ਭਰੋਸੇਯੋਗ ਨਹੀਂ ਵੀ ਹੋ ਸਕਦੀ।</translation> -<translation id="2740531572673183784">ਠੀਕ</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"ਮਿਟਾਓ"</translation> <translation id="2750941250130734256">ਕਿਰਿਆਸ਼ੀਲ ਵਿੰਡੋ ਨੂੰ ਅਣਡੌਕ ਕੀਤਾ ਗਿਆ।</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb index cb6ea48..e1ff939 100644 --- a/ash/strings/ash_strings_pl.xtb +++ b/ash/strings/ash_strings_pl.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Aby telefon mógł działać jako punkt dostępu, musi korzystać z mobilnej transmisji danych</translation> <translation id="2727175239389218057">Odpowiedz</translation> <translation id="2727977024730340865">Podłączono ładowarkę o małej mocy. Ładowanie baterii może być nieprawidłowe.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Usuń”</translation> <translation id="2750941250130734256">Aktywne okno zostało oddokowane.</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb index cdd856c..54bd284 100644 --- a/ash/strings/ash_strings_pt-BR.xtb +++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Seu smartphone precisa usar dados móveis para fornecer um ponto de acesso</translation> <translation id="2727175239389218057">Responder</translation> <translation id="2727977024730340865">Conectado a um carregador de baixa potência. O carregamento da bateria pode não ser confiável.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Excluir"</translation> <translation id="2750941250130734256">Janela ativa desafixada.</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb index c297756..17164ca 100644 --- a/ash/strings/ash_strings_pt-PT.xtb +++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Dispositivo USB-C (porta frontal)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> alterado para <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Clique em confirmar para manter as alterações. As definições anteriores serão restauradas dentro de <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">O dispositivo Bluetooth "<ph name="DEVICE_NAME" />" necessita de autorização para sincronizar. Introduza este código PIN nesse dispositivo: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Isto permite que a app <ph name="APP_NAME" /> e todas as apps e Websites com a autorização de acesso à localização e o ChromeOS usem a localização de redes móveis e Wi-Fi.</translation> <translation id="1017556409696559990">Minimizar a janela superior quando não existir histórico anterior no Chrome</translation> <translation id="1024364763893396229">Guarde o dispositivo <ph name="NAME" /></translation> <translation id="1032891413405719768">A pilha da caneta stylus está fraca</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Ativar acesso à localização</translation> <translation id="1830308660060964064">O item <ph name="ITEM_TITLE" /> foi solto.</translation> <translation id="1838895407229022812">A Luz noturna está desativada.</translation> <translation id="1854180393107901205">Parar de transmitir</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">O seu telemóvel tem de ter dados móveis para fornecer uma zona Wi-Fi.</translation> <translation id="2727175239389218057">Responder</translation> <translation id="2727977024730340865">Ligado a um carregador de baixo consumo. O carregamento da bateria pode não ser fiável.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Eliminar"</translation> <translation id="2750941250130734256">Janela ativa desancorada.</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">O que podes fazer?</translation> <translation id="3256109297135787951">Remover o realce de um item na prateleira</translation> <translation id="3260969790895726815">A voz é processada localmente e o ditado funciona offline, mas alguns comandos de voz não funcionam.</translation> +<translation id="3265032511221679826">Ativar o acesso à localização exata?</translation> <translation id="3269597722229482060">Clicar com o botão direito do rato</translation> <translation id="3289364673986435196">Menu ligar/desligar</translation> <translation id="3289544412142055976">De momento, as apps para Linux não são suportadas</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733">Utilizador gerido por <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="3666266999138159418">Deslize rapidamente para ocultar a janela flutuante</translation> <translation id="367531336287639526">Selecionar o primeiro ícone à esquerda da barra de endereço</translation> +<translation id="3677931086890821290">Isto permite que todas as apps e Websites com a autorização de acesso à localização e o ChromeOS usem a localização de redes móveis e Wi-Fi.</translation> <translation id="3679827876008292680">Aceder ao último separador na janela</translation> <translation id="36813544980941320">As redes Wi-Fi serão partilhadas entre o seu telemóvel e o dispositivo <ph name="DEVICE_NAME" />.</translation> <translation id="3694122362646626770">Sites</translation> @@ -1750,6 +1753,7 @@ <translation id="9198992156681343238">Resolução de <ph name="DISPLAY_NAME" /> alterada para <ph name="RESOLUTION" />. Clique em confirmar para manter as alterações. As definições anteriores serão restauradas dentro de <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Ligue o dispositivo <ph name="NAME" /> a este Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, gerida pelo administrador</translation> +<translation id="9207682216934703221">Isto permite que a app <ph name="APP_NAME" />, <ph name="APP2_NAME" /> e todas as apps e Websites com a autorização de acesso à localização e o ChromeOS usem a localização de redes móveis e Wi-Fi.</translation> <translation id="9210037371811586452">A sair do Modo de ambiente de trabalho unificado</translation> <translation id="9211490828691860325">Todos os espaços de trabalho</translation> <translation id="9211681782751733685"><ph name="TIME_REMAINING" /> restante(s) até a bateria estar totalmente carregada.</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb index 2b3d82f..c64a85c5 100644 --- a/ash/strings/ash_strings_ro.xtb +++ b/ash/strings/ash_strings_ro.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Telefonul trebuie să aibă date mobile pentru a crea un hotspot</translation> <translation id="2727175239389218057">Răspunde</translation> <translation id="2727977024730340865">V-ați conectat la un încărcător de putere joasă. Încărcarea bateriei poate fi nesigură.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">Șterge</translation> <translation id="2750941250130734256">Fereastra activă a fost desprinsă.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Apasă pe Enter pentru a înregistra fereastra</translation> <translation id="5978382165065462689">În prezent, permiți controlul la ecran prin Asistență la distanță.</translation> <translation id="5980301590375426705">Ieși ca invitat</translation> +<translation id="5983567367406220847">Hotspotul a fost dezactivat din cauza inactivității.</translation> <translation id="598407983968395253">Folosește șablonul</translation> <translation id="598882571027504733">Pentru a obține actualizarea, repornește Chromebookul cu tastatura atașată.</translation> <translation id="6002179289567220515">Ai folosit comutatorul fizic pentru a dezactiva o cameră. Poți dezactiva accesul tuturor camerelor.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">O aplicație folosește camera</translation> <translation id="7453330308669753048">S-a eliminat rezultatul din istoricul căutărilor</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" /> % | <ph name="TIME" /> până la încărcarea completă</translation> +<translation id="7459485586006128091">Din cauza unei erori interne, hotspotul a fost dezactivat. Încearcă din nou peste câteva minute.</translation> <translation id="7461924472993315131">Fixează</translation> <translation id="746232733191930409">Modul de înregistrare a ecranului</translation> <translation id="7466449121337984263">Atinge senzorul</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">Dă clic pentru a vedea detaliile actualizării</translation> <translation id="7768784765476638775">Selectează și ascultă</translation> <translation id="7769299611924763557">GIF-ul va fi gata în curând</translation> +<translation id="7773536009433685931">Activează conexiunea Wi-Fi</translation> <translation id="7780094051999721182">comenzi rapide</translation> <translation id="7780159184141939021">Rotește ecranul</translation> <translation id="7796735576426975947">Notificare nouă ascunsă</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb index 89648af..d46b3fc 100644 --- a/ash/strings/ash_strings_ru.xtb +++ b/ash/strings/ash_strings_ru.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Чтобы включить точку доступа на телефоне, требуется подключение к мобильному Интернету</translation> <translation id="2727175239389218057">Ответить</translation> <translation id="2727977024730340865">Подключено маломощное зарядное устройство. Возможны проблемы при зарядке.</translation> -<translation id="2740531572673183784">ОК</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Удалить"</translation> <translation id="2750941250130734256">Активное окно откреплено.</translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb index 41a3db9..b709ebb 100644 --- a/ash/strings/ash_strings_si.xtb +++ b/ash/strings/ash_strings_si.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C උපාංගය (ඉදිරිපස තොට)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz) ලෙස වෙනස් කළා. වෙනස්කම් තබා ගැනීමට තහවුරු කිරීම ක්ලික් කරන්න. පෙර සැකසුම් <ph name="TIMEOUT_SECONDS" /> තුළ ප්රතිසාධන කෙරේ.</translation> <translation id="1013923882670373915">යුගලගත වීමට "<ph name="DEVICE_NAME" />" අවසර ඉල්ලා සිටිනු ඇත. උපකරණයේ මෙම PIN කේතය ඇතුළු කරන්න: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">මෙය <ph name="APP_NAME" /> සහ ස්ථාන අවසරය ඇති සියලු යෙදුම් සහ වෙබ් අඩවි සහ ChromeOS හට Wi-Fi සහ ජංගම ජාල ස්ථානය භාවිතා කිරීමට ඉඩ දෙයි.</translation> <translation id="1017556409696559990">Chrome තුළ ආපසු ඉතිහාසයක් නොමැති විට ඉහළ කවුළුව අවම කරන්න</translation> <translation id="1024364763893396229">ඔබගේ <ph name="NAME" /> සුරකින්න</translation> <translation id="1032891413405719768">පන්හිඳ බැටරිය අඩුයි</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">ඊතර්නෙට්: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">ස්ථාන ප්රවේශය ක්රියාත්මක කරන්න</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> නො-අමුණා ඇත</translation> <translation id="1838895407229022812">රාත්රී ආලෝකය අක්රියයි.</translation> <translation id="1854180393107901205">Cast කිරීම නවත්වන්න</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">හොට්ස්පොට් එකක් ලබා දීමට ඔබගේ දුරකථනයේ ජංගම දත්ත තිබිය යුතුය</translation> <translation id="2727175239389218057">පිළිතුරු දෙන්න</translation> <translation id="2727977024730340865">අඩු බල චාජරයකට ප්ලග් ඉන් කර ඇත. බැටරිය චාජ් කිරිම විශ්වාස නැති විය හැක.</translation> -<translation id="2740531572673183784">හරි</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"මකන්න"</translation> <translation id="2750941250130734256">සක්රිය කවුළුව ඈඳීම ඉවත් කර ඇත.</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">ඔබට කළ හැක්කේ කුමක්ද?</translation> <translation id="3256109297135787951">ඔබේ රාක්කයෙහි අයිතමයකින් උද්දීපනය ඉවත් කරන්න</translation> <translation id="3260969790895726815">කථනය ස්ථානීයව සකසන අතර අනුලේඛනය නොබැඳිව ක්රියා කරන නමුත්, සමහර හඬ විධාන ක්රියා නොකරයි.</translation> +<translation id="3265032511221679826">නිශ්චිත ස්ථාන ප්රවේශය ක්රියාත්මක කරන්න ද?</translation> <translation id="3269597722229482060">දකුණු ක්ලික් කිරීම</translation> <translation id="3289364673986435196">බල මෙනුව</translation> <translation id="3289544412142055976">Linux යෙදුම් දැනට සහාය නොදක්වයි</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> කළමනා කරන පරිශීලකයා</translation> <translation id="3666266999138159418">ඔබේ පාවෙන කවුළුව සැඟවීමට ස්වයිප් කරන්න</translation> <translation id="367531336287639526">ලිපින තීරුවේ වම් පස පළමු නිරූපකය තෝරන්න</translation> +<translation id="3677931086890821290">මෙය ස්ථාන අවසරය ඇති සියලු යෙදුම් සහ වෙබ් අඩවිවලට සහ ChromeOS හට Wi-Fi සහ ජංගම ජාල ස්ථානය භාවිතා කිරීමට ඉඩ දෙයි.</translation> <translation id="3679827876008292680">කවුළුවේ අවසාන පටිත්ත වෙත යන්න</translation> <translation id="36813544980941320">Wi-Fi ජාල ඔබගේ දුරකථනය සහ <ph name="DEVICE_NAME" /> අතර බෙදා ගනු ඇත</translation> <translation id="3694122362646626770">වෙබ් අඩවි</translation> @@ -1747,6 +1750,7 @@ <translation id="9198992156681343238"><ph name="DISPLAY_NAME" /> විභේදනය <ph name="RESOLUTION" /> ට වෙනස් කළා. වෙනස්කම් තබා ගැනීමට තහවුරු කිරීම ක්ලික් කරන්න. පෙර සැකසුම් <ph name="TIMEOUT_SECONDS" /> තුළ ප්රතිසාධන කෙරේ.</translation> <translation id="9201044636667689546"><ph name="NAME" /> මෙම Chromebook වෙත සම්බන්ධ කරන්න</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, ඔබේ පරිපාලකයා විසින් කළමනාකරණය කරයි</translation> +<translation id="9207682216934703221">මෙය <ph name="APP_NAME" />, <ph name="APP2_NAME" /> සහ ස්ථාන අවසරය ඇති සියලු යෙදුම් සහ වෙබ් අඩවි සහ ChromeOS හට Wi-Fi සහ ජංගම ජාල ස්ථානය භාවිතා කිරීමට ඉඩ දෙයි.</translation> <translation id="9210037371811586452">එකාබද්ධ ඩෙස්ක්ටොප් ප්රකාරයෙන් ඉවත් වෙමින්</translation> <translation id="9211490828691860325">සියලු වැඩතල</translation> <translation id="9211681782751733685">බැටරිය සම්පූර්ණයෙන් ආරෝපණ වන තෙක් <ph name="TIME_REMAINING" />ක් ඉතුරුයි.</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index 8742300..6c36518 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -148,6 +148,7 @@ <translation id="1651914502370159744">Otvorenie stránky História</translation> <translation id="1654477262762802994">Spustiť hlasový dopyt</translation> <translation id="1668469839109562275">Vstavaná sieť VPN</translation> +<translation id="1675844249244994876">Aktualizovať pravé okno</translation> <translation id="1677472565718498478">Zostávajúci čas: <ph name="TIME" /></translation> <translation id="1677507110654891115">Funkcia <ph name="FEATURE_NAME" /> nie je pripojená.</translation> <translation id="1677582821739292812">Niekto sa pozerá na vašu obrazovku</translation> @@ -367,7 +368,6 @@ <translation id="2726420622004325180">Ak chcete aktivovať hotspot, musíte v telefóne používať mobilné dáta</translation> <translation id="2727175239389218057">Odpovedať</translation> <translation id="2727977024730340865">Batéria je zapojená do nabíjačky s nízkym výkonom. Nabíjanie batérie nemusí byť spoľahlivé.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">Odstrániť</translation> <translation id="2750941250130734256">Aktívne okno bolo uvoľnené.</translation> @@ -848,6 +848,7 @@ <translation id="493076006037866439">Oddialenie obrazovky</translation> <translation id="4936329710968938986">Všetci, vypnuté</translation> <translation id="4938176435186993759">Skryť všetky návrhy</translation> +<translation id="4943007472417128747">Hotspot bol vypnutý, aby sa mohla používať sieť Wi‐Fi. Ak chcete používať hotspot, vypnite Wi‐Fi.</translation> <translation id="4945196315133970626">Vypnúť upozornenia</translation> <translation id="4946376291507881335">Nasnímať</translation> <translation id="495046168593986294">Posunúť nahor</translation> @@ -1394,6 +1395,7 @@ Ak chcete zariadenie vypnúť, znova pridržte jeho vypínač.</translation> <translation id="7526573455193969409">Sieť môže byť sledovaná</translation> <translation id="7536035074519304529">Adresa IP: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Aktualizovať ľavé okno</translation> <translation id="7543399541175347147">Aplikácie pre Linux a okná inkognito momentálne nie sú podporované. Ostatné aplikácie budú uložené.</translation> <translation id="7544300628205093162">Podsvietenie klávesnice je zapnuté</translation> <translation id="7548434653388805669">Je čas ísť do postele</translation> @@ -1475,6 +1477,7 @@ <translation id="7893503627044934815">Nechcem, aby sa mi zobrazoval tento súbor</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Stlačili ste klávesovú skratku pre otáčanie obrazovky. Chcete otočiť obrazovku?</translation> +<translation id="7901190436359881020">Vymeniť okná</translation> <translation id="7901405293566323524">Telefónne centrum</translation> <translation id="7902625623987030061">Dotknite sa senzora odtlačkov prstov</translation> <translation id="7904094684485781019">Správca tohto účtu zakázal viacnásobné prihlásenie.</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb index 89b473f..4c116496 100644 --- a/ash/strings/ash_strings_sl.xtb +++ b/ash/strings/ash_strings_sl.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Naprava USB-C (sprednja vrata)</translation> <translation id="1013598600051641573">Ločljivost zaslona <ph name="DISPLAY_NAME" /> je spremenjena na <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Kliknite »Potrdi«, če želite ohraniti spremembe. Prejšnja nastavitev bo obnovljena čez <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Naprava Bluetooth »<ph name="DEVICE_NAME" />« želi dovoljenje za seznanjanje. V napravi vnesite ta PIN: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">To aplikaciji <ph name="APP_NAME" /> in vsem aplikacijam ter spletnim mestom, ki imajo dovoljenje za lokacijo, in sistemu ChromeOS omogoča uporabo lokacije omrežij Wi-Fi in mobilnih omrežij.</translation> <translation id="1017556409696559990">Minimiranje zgornjega okna, ko v Chromu ni zgodovine</translation> <translation id="1024364763893396229">Shranite napravo <ph name="NAME" /></translation> <translation id="1032891413405719768">Baterija pisala je skoraj izpraznjena</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Vklop dostopa do lokacije</translation> <translation id="1830308660060964064">Element <ph name="ITEM_TITLE" /> je bil odpet</translation> <translation id="1838895407229022812">Nočna svetloba je izklopljena.</translation> <translation id="1854180393107901205">Ustavi predvajanje</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">Če želite, da telefon da na voljo dostopno točko, mora imeti vklopljen prenos podatkov v mobilnem omrežju.</translation> <translation id="2727175239389218057">Odgovori</translation> <translation id="2727977024730340865">Priključen je nizkoenergijski polnilnik. Polnjenje akumulatorja morda ne bo zanesljivo.</translation> -<translation id="2740531572673183784">V redu</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">»Izbriši«</translation> <translation id="2750941250130734256">Aktivno okno je odsidrano.</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">Kakšne možnosti so na voljo?</translation> <translation id="3256109297135787951">Opustitev označevanja elementa na polici</translation> <translation id="3260969790895726815">Govor se obdeluje lokalno in narek deluje brez povezave, vendar nekateri glasovni ukazi ne bodo delovali.</translation> +<translation id="3265032511221679826">Želite vklopiti dostop do natančne lokacije?</translation> <translation id="3269597722229482060">Desni klik</translation> <translation id="3289364673986435196">Meni za vklop/izklop</translation> <translation id="3289544412142055976">Aplikacije za Linux trenutno niso podprte.</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Upravljani uporabnik</translation> <translation id="3666266999138159418">Povlecite, če želite skriti plavajoče okno</translation> <translation id="367531336287639526">Izbira prve ikone levo od naslovne vrstice</translation> +<translation id="3677931086890821290">To vsem aplikacijam ter spletnim mestom, ki imajo dovoljenje za lokacijo, in sistemu ChromeOS omogoča uporabo lokacije omrežij Wi-Fi in mobilnih omrežij.</translation> <translation id="3679827876008292680">Premik na zadnji zavihek v oknu</translation> <translation id="36813544980941320">Omrežja Wi-Fi bodo deljena med telefonom in napravo <ph name="DEVICE_NAME" />.</translation> <translation id="3694122362646626770">Spletna mesta</translation> @@ -1069,6 +1072,7 @@ <translation id="5976112937189445008">Pritisnite Enter, če želite snemati okno</translation> <translation id="5978382165065462689">Deljenje nadzora nad zaslonom prek pomoči na daljavo.</translation> <translation id="5980301590375426705">Zapusti sejo gosta</translation> +<translation id="5983567367406220847">Zaradi nedejavnosti je bila dostopna točka izklopljena.</translation> <translation id="598407983968395253">Uporabi predlogo</translation> <translation id="598882571027504733">Če želite prejeti posodobitev, znova zaženite Chromebook s priklopljeno tipkovnico.</translation> <translation id="6002179289567220515">Eno kamero ste izklopili s fizičnim stikalom. Prav tako lahko izklopite dostop za vse kamere.</translation> @@ -1371,6 +1375,7 @@ <translation id="7452560014878697800">Aplikacija uporablja vašo kamero.</translation> <translation id="7453330308669753048">Rezultat iz zgodovine iskanja je odstranjen.</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" /> % | <ph name="TIME" /> do napolnjenosti</translation> +<translation id="7459485586006128091">Zaradi notranje napake je bila dostopna točka izklopljena. Poskusite se znova povezati čez nekaj minut.</translation> <translation id="7461924472993315131">Pripni</translation> <translation id="746232733191930409">Način snemanja zaslona</translation> <translation id="7466449121337984263">Dotaknite se tipala</translation> @@ -1444,6 +1449,7 @@ <translation id="776344839111254542">Kliknite, če si želite ogledati podrobnosti o posodobitvi</translation> <translation id="7768784765476638775">Izberite in poslušajte</translation> <translation id="7769299611924763557">GIF bo kmalu pripravljen</translation> +<translation id="7773536009433685931">Vklopi Wi-Fi</translation> <translation id="7780094051999721182">bližnjicah</translation> <translation id="7780159184141939021">Zasuk zaslona</translation> <translation id="7796735576426975947">Novo obvestilo je skrito</translation> @@ -1747,6 +1753,7 @@ <translation id="9198992156681343238">Ločljivost zaslona <ph name="DISPLAY_NAME" /> je bila spremenjena na: <ph name="RESOLUTION" />. Kliknite »Potrdi«, če želite ohraniti spremembe. Prejšnja nastavitev bo obnovljena čez <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Povežite <ph name="NAME" /> s tem Chromebookom</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, upravlja ga vaš skrbnik</translation> +<translation id="9207682216934703221">To aplikacijama <ph name="APP_NAME" />, <ph name="APP2_NAME" /> in vsem aplikacijam ter spletnim mestom, ki imajo dovoljenje za lokacijo, in sistemu ChromeOS omogoča uporabo lokacije omrežij Wi-Fi in mobilnih omrežij.</translation> <translation id="9210037371811586452">Izhod iz načina enotnega namizja</translation> <translation id="9211490828691860325">Vsa namizja</translation> <translation id="9211681782751733685">Še <ph name="TIME_REMAINING" />, da bo akumulator povsem napolnjen.</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb index 19b052c1..c0a262f 100644 --- a/ash/strings/ash_strings_sq.xtb +++ b/ash/strings/ash_strings_sq.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Pajisja USB-C (porta përpara)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> ndryshoi në <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). Kliko te "Konfirmo" për t'i mbajtur ndryshimet. Cilësimet e mëparshme do të restaurohen për <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Pajisja me Bluetooth, "<ph name="DEVICE_NAME" />" kërkon leje për çiftim. Fut këtë kod PIN në atë pajisje: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Kjo lejon që <ph name="APP_NAME" /> dhe të gjitha aplikacionet dhe sajtet e uebit që kanë lejen për vendndodhjen dhe ChromeOS të përdorin vendndodhjen e rrjeteve celulare dhe Wi-Fi.</translation> <translation id="1017556409696559990">Minimizo dritaren e sipërme kur nuk ka historik nëse kthehesh prapa në Chrome</translation> <translation id="1024364763893396229">Ruaj <ph name="NAME" /></translation> <translation id="1032891413405719768">Bateria e stilolapsit është e ulët</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Hap faqen e "Historikut"</translation> <translation id="1654477262762802994">Nis një pyetje me zë</translation> <translation id="1668469839109562275">VPN e integruar</translation> +<translation id="1675844249244994876">Përditëso dritaren në të djathtë</translation> <translation id="1677472565718498478">Koha e mbetur <ph name="TIME" /></translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> nuk është lidhur.</translation> <translation id="1677582821739292812">Dikush po shikon ekranin tënd</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Eternet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Aktivizo qasjen te vendndodhja</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> u zhgozhdua</translation> <translation id="1838895407229022812">"Drita e natës" është joaktive.</translation> <translation id="1854180393107901205">Ndalo transmetimin</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Telefoni yt duhet të përdorë të dhënat celulare për të ofruar një zonë qasjeje për internet</translation> <translation id="2727175239389218057">Përgjigju</translation> <translation id="2727977024730340865">E lidhur me një karikues me fuqi të ulët. Ngarkimi i baterisë mund të mos jetë i sigurt.</translation> -<translation id="2740531572673183784">Në rregull</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Fshi"</translation> <translation id="2750941250130734256">Dritarja aktive u hoq nga pozicioni.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">Çfarë mund të bësh?</translation> <translation id="3256109297135787951">Hiq theksimin nga një artikull në raftin tënd</translation> <translation id="3260969790895726815">Ligjërimi përpunohet në nivel lokal dhe diktimi funksionon jashtë linje, por disa komanda zanore nuk do të funksionojnë.</translation> +<translation id="3265032511221679826">Të aktivizohet qasja te vendndodhja e saktë?</translation> <translation id="3269597722229482060">Kliko me butonin djathtas</translation> <translation id="3289364673986435196">Menyja e energjisë</translation> <translation id="3289544412142055976">Aplikacionet për Linux nuk mbështeten aktualisht</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733">Përdorues i menaxhuar (<ph name="USER_EMAIL_ADDRESS" />)</translation> <translation id="3666266999138159418">Rrëshqit shpejt për të fshehur dritaren pluskuese</translation> <translation id="367531336287639526">Zgjidh ikonën e parë në të majtë të shiritit të adresave</translation> +<translation id="3677931086890821290">Kjo lejon që të gjitha aplikacionet dhe sajtet e uebit që kanë lejen për vendndodhjen dhe ChromeOS të përdorin vendndodhjen e rrjeteve celulare dhe Wi-Fi.</translation> <translation id="3679827876008292680">Shko te skeda e fundit në dritare</translation> <translation id="36813544980941320">Rrjetet Wi-Fi do të ndahen mes telefonit tënd dhe <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Sajtet e uebit</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">Zvogëlo ekranin</translation> <translation id="4936329710968938986">Të gjithë, veçoria joaktive</translation> <translation id="4938176435186993759">Fshihi të gjitha sugjerimet</translation> +<translation id="4943007472417128747">Zona e qasjes për internet është çaktivizuar për të përdorur WiFi. Për të përdorur zonën e qasjes për internet, çaktivizo WiFi.</translation> <translation id="4945196315133970626">Çaktivizo njoftimet</translation> <translation id="4946376291507881335">Regjistrimi</translation> <translation id="495046168593986294">Lëviz lart</translation> @@ -1388,6 +1393,7 @@ Për ta fikur pajisjen, shtyp dhe mbaj shtypur përsëri butonin e energjisë në pajisje.</translation> <translation id="7526573455193969409">Rrjeti mund të jetë i monitoruar</translation> <translation id="7536035074519304529">Adresa IP: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Përditëso dritaren në të majtë</translation> <translation id="7543399541175347147">Aplikacionet për Linux dhe dritaret "E fshehta" nuk mbështeten aktualisht. Aplikacionet e tjera do të ruhen.</translation> <translation id="7544300628205093162">Drita e pasme e tastierës është e ndezur</translation> <translation id="7548434653388805669">Koha për gjumë</translation> @@ -1468,6 +1474,7 @@ <translation id="7893503627044934815">Nuk dëshiroj që ky skedar të shfaqet</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Ke shtypur shkurtoren e tastierës për rrotullimin e ekranit. Dëshiron ta rrotullosh ekranin?</translation> +<translation id="7901190436359881020">Ndërro dritaret</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Prek sensorin e gjurmës së gishtit</translation> <translation id="7904094684485781019">Administratori për këtë faqe ka ndaluar identifikimin e shumëfishtë.</translation> @@ -1743,6 +1750,7 @@ <translation id="9198992156681343238">Rezolucioni i <ph name="DISPLAY_NAME" /> u ndryshua në <ph name="RESOLUTION" />. Kliko te "Konfirmo" për t'i mbajtur ndryshimet. Cilësimet e mëparshme do të restaurohen për <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Lidh <ph name="NAME" /> me këtë pajisje Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, menaxhuar nga administratori yt</translation> +<translation id="9207682216934703221">Kjo lejon që <ph name="APP_NAME" />, <ph name="APP2_NAME" /> dhe të gjitha aplikacionet dhe sajtet e uebit që kanë lejen për vendndodhjen dhe ChromeOS të përdorin vendndodhjen e rrjeteve celulare dhe Wi-Fi.</translation> <translation id="9210037371811586452">Po del nga modaliteti i desktopit të unifikuar</translation> <translation id="9211490828691860325">Të gjitha tavolinat e punës</translation> <translation id="9211681782751733685"><ph name="TIME_REMAINING" /> të mbetura deri sa bateria të karikohet plotësisht.</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb index d34e19c..9c20fbf 100644 --- a/ash/strings/ash_strings_sr-Latn.xtb +++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Telefon mora da ima mobilne podatke da bi pružao funkciju hotspota</translation> <translation id="2727175239389218057">Odgovori</translation> <translation id="2727977024730340865">Uređaj je uključen u punjač male snage. Punjenje baterije možda neće biti pouzdano.</translation> -<translation id="2740531572673183784">Potvrdi</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Izbriši“</translation> <translation id="2750941250130734256">Aktivni prozor je odvojen.</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb index 58b217b..af36e69 100644 --- a/ash/strings/ash_strings_sr.xtb +++ b/ash/strings/ash_strings_sr.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Телефон мора да има мобилне податке да би пружао функцију хотспота</translation> <translation id="2727175239389218057">Одговори</translation> <translation id="2727977024730340865">Уређај је укључен у пуњач мале снаге. Пуњење батерије можда неће бити поуздано.</translation> -<translation id="2740531572673183784">Потврди</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">„Избриши“</translation> <translation id="2750941250130734256">Активни прозор је одвојен.</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb index c3d7194..81f3a91b 100644 --- a/ash/strings/ash_strings_sv.xtb +++ b/ash/strings/ash_strings_sv.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Telefonen måste ha mobildata för att användas som surfzon</translation> <translation id="2727175239389218057">Svara</translation> <translation id="2727977024730340865">Ansluten till en laddare med låg effekt. Batteriet kanske inte laddas ordentligt.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">”Radera”</translation> <translation id="2750941250130734256">Det aktiva fönstret är inte längre dockat.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Tryck på retur för att spela in fönstret</translation> <translation id="5978382165065462689">Dela kontroll över skärmen via Fjärrhjälp.</translation> <translation id="5980301590375426705">Avsluta gästsession</translation> +<translation id="5983567367406220847">Surfzonen har inaktiverats på grund av inaktivitet.</translation> <translation id="598407983968395253">Använd mall</translation> <translation id="598882571027504733">Starta om Chromebook-enheten med tangentbordet tillkopplat för att uppdatera.</translation> <translation id="6002179289567220515">Du inaktiverade en kamera med det fysiska reglaget. Du kan även inaktivera åtkomsten för alla kameror.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">Kameran används av en app</translation> <translation id="7453330308669753048">Sökresultat från sökhistoriken borttaget</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" /> % | <ph name="TIME" /> tills fulladdat</translation> +<translation id="7459485586006128091">Surfzonen har inaktiverats på grund av ett internt fel. Testa att återansluta om några minuter.</translation> <translation id="7461924472993315131">Fäst</translation> <translation id="746232733191930409">Skärminspelningsläge</translation> <translation id="7466449121337984263">Tryck på sensorn</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">Klicka här om du vill se mer information om uppdateringen</translation> <translation id="7768784765476638775">Textuppläsning</translation> <translation id="7769299611924763557">Giffen är snart redo</translation> +<translation id="7773536009433685931">Aktivera wifi i stället</translation> <translation id="7780094051999721182">genvägar</translation> <translation id="7780159184141939021">Rotera skärmen</translation> <translation id="7796735576426975947">En ny avisering har dolts</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index f09c0e5..669f070 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Kifaa cha USB-C (mlango wa mbele)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> imebadilika kuwa <ph name="RESOLUTION" /> (Hz <ph name="REFRESH_RATE" />). Bofya 'thibitisha' ili uhifadhi mabadiliko. Mipangilio ya awali itarejeshwa baada ya <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="1013923882670373915">Kifaa cha Bluetooth cha "<ph name="DEVICE_NAME" />" kinaomba idhini ya kuoanisha. Tafadhali weka nambari hii ya PIN kwenye kifaa hicho: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Hatua hii huruhusu <ph name="APP_NAME" />, programu na tovuti zote zilizo na ruhusa ya mahali na ChromeOS kutumia data ya mahali ya Wi-Fi na mitandao ya simu.</translation> <translation id="1017556409696559990">Punguza dirisha la juu kukiwa hakuna historia ya kuvinjari kwenye Chrome</translation> <translation id="1024364763893396229">Hifadhi <ph name="NAME" /> yako</translation> <translation id="1032891413405719768">Chaji ya betri ya Stylus imepungua</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethaneti: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Washa kipengele cha kufikia data ya mahali</translation> <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> imebanduliwa</translation> <translation id="1838895407229022812">Umezima Mwanga wa Usiku.</translation> <translation id="1854180393107901205">Acha kutuma</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">Ni lazima simu yako iwe na data ya mtandao wa simu ili utumie kipengele cha mtandao pepe</translation> <translation id="2727175239389218057">Jibu</translation> <translation id="2727977024730340865">Imechomekwa katika chaja ya kawi ya chini. Huenda kuchaji kwa betri hakutakuwa kuzuri.</translation> -<translation id="2740531572673183784">Sawa</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Futa"</translation> <translation id="2750941250130734256">Dirisha linalotumika limepachuliwa.</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">Unaweza kufanya nini?</translation> <translation id="3256109297135787951">Acha kuangazia kipengee kwenye rafu yako</translation> <translation id="3260969790895726815">Matamshi huchakatwa ndani ya kifaa na kipengele cha kuandika kwa kutamka hufanya kazi nje ya mtandao, lakini baadhi ya amri za sauti hazitafanya kazi.</translation> +<translation id="3265032511221679826">Je, ungependa kuwasha kipengele cha uwezo wa kufikia eneo mahsusi?</translation> <translation id="3269597722229482060">Bofya Kulia</translation> <translation id="3289364673986435196">Menyu ya kuzima au kuwasha</translation> <translation id="3289544412142055976">Programu za Linux haziwezi kutumika kwa sasa</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Mtumiaji anayesimamiwa</translation> <translation id="3666266999138159418">Telezesha kidole ili ufiche dirisha lako linaloelea</translation> <translation id="367531336287639526">Chagua aikoni ya kwanza kushoto mwa sehemu ya anwani</translation> +<translation id="3677931086890821290">Hatua hii huruhusu programu na tovuti zote zilizo na ruhusa ya mahali na ChromeOS kutumia data ya mahali ya Wi-Fi na mitandao ya simu.</translation> <translation id="3679827876008292680">Nenda hadi kichupo cha mwisho kwenye dirisha</translation> <translation id="36813544980941320">Mitandao ya Wi-Fi itashirikiwa kati ya simu yako na <ph name="DEVICE_NAME" /></translation> <translation id="3694122362646626770">Tovuti</translation> @@ -1748,6 +1751,7 @@ <translation id="9198992156681343238">Ubora wa <ph name="DISPLAY_NAME" /> umebadilika kuwa <ph name="RESOLUTION" />. Bofya thibitisha ili uhifadhi mabadiliko. Mipangilio ya awali itarejeshwa baada ya <ph name="TIMEOUT_SECONDS" />.</translation> <translation id="9201044636667689546">Unganisha <ph name="NAME" /> kwenye Chromebook hii</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, Unadhibitiwa na Msimamizi wako</translation> +<translation id="9207682216934703221">Hatua hii huruhusu <ph name="APP_NAME" />, <ph name="APP2_NAME" />, programu na tovuti zote zilizo na ruhusa ya mahali na ChromeOS kutumia data ya mahali ya Wi-Fi na mitandao ya simu.</translation> <translation id="9210037371811586452">Mfumo unaondoka kwenye hali ya eneo-kazi lililounganishwa</translation> <translation id="9211490828691860325">Maeneokazi yote</translation> <translation id="9211681782751733685">Zimebaki <ph name="TIME_REMAINING" /> kabla ya chaji ya betri kujaa.</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb index 2935a02..33f7dfd 100644 --- a/ash/strings/ash_strings_ta.xtb +++ b/ash/strings/ash_strings_ta.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">ஹாட்ஸ்பாட் இணைப்பை வழங்க உங்கள் ஃபோனில் மொபைல் டேட்டா இருக்க வேண்டும்</translation> <translation id="2727175239389218057">பதிலளி</translation> <translation id="2727977024730340865">குறைந்த சக்தியிலான சார்ஜர் செருகப்பட்டுள்ளது. பேட்டரி சார்ஜிங் நம்பகமானதாக இல்லாமல் இருக்கலாம்.</translation> -<translation id="2740531572673183784">சரி</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"நீக்கு"</translation> <translation id="2750941250130734256">செயலிலுள்ள சாளரம் அன்-டாக் செய்யப்பட்டது.</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb index ce697284..e980d929 100644 --- a/ash/strings/ash_strings_te.xtb +++ b/ash/strings/ash_strings_te.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">హాట్స్పాట్ను అందించడానికి మీ ఫోన్ తప్పనిసరిగా మొబైల్ డేటాను కలిగి ఉండాలి</translation> <translation id="2727175239389218057">రిప్లయి ఇవ్వండి</translation> <translation id="2727977024730340865">తక్కువ-పవర్ గల ఛార్జర్కు ప్లగిన్ చేయబడింది. బ్యాటరీ ఛార్జింగ్ విశ్వసనీయంగా ఉండకపోవచ్చు.</translation> -<translation id="2740531572673183784">సరే</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"తొలగించండి"</translation> <translation id="2750941250130734256">అన్డాక్ చేసిన విండోను యాక్టివేట్ చేయండి.</translation> @@ -1074,6 +1073,7 @@ <translation id="5976112937189445008">విండోను రికార్డ్ చేయడానికి enterను నొక్కండి</translation> <translation id="5978382165065462689">రిమోట్ సహాయం విధానంలో మీ స్క్రీన్ నియంత్రణను షేర్ చేస్తోంది.</translation> <translation id="5980301590375426705">అతిథిగా నిష్క్రమించండి</translation> +<translation id="5983567367406220847">ఇన్యాక్టివిటీ కారణంగా, హాట్స్పాట్ ఆఫ్ చేయబడింది.</translation> <translation id="598407983968395253">టెంప్లేట్ను ఉపయోగించండి</translation> <translation id="598882571027504733">అప్డేట్ను పొందడానికి, కీబోర్డ్ను అలానే జోడించి ఉంచి మీ Chromebookను పునఃప్రారంభించండి.</translation> <translation id="6002179289567220515">మీరు భౌతిక స్విచ్ను ఉపయోగించి 1 కెమెరాను ఆఫ్ చేశారు. అలాగే, మీరు అన్ని కెమెరాలకు యాక్సెస్ను ఆఫ్ చేయవచ్చు.</translation> @@ -1376,6 +1376,7 @@ <translation id="7452560014878697800">ఒక యాప్ మీ కెమెరాను ఉపయోగిస్తోంది</translation> <translation id="7453330308669753048">సెర్చ్ హిస్టరీ ఫలితం తీసివేయబడింది</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | పూర్తిగా ఛార్జ్ అవ్వడానికి <ph name="TIME" /> సమయం మిగిలి ఉంది</translation> +<translation id="7459485586006128091">అంతర్గత ఎర్రర్ కారణంగా, హాట్స్పాట్ ఆఫ్ చేయబడింది. కొన్ని నిమిషాల్లో మళ్లీ కనెక్ట్ చేయడానికి ట్రై చేయండి.</translation> <translation id="7461924472993315131">పిన్ చేయి</translation> <translation id="746232733191930409">స్క్రీన్ రికార్డింగ్ మోడ్</translation> <translation id="7466449121337984263">దయచేసి సెన్సార్ను తాకండి</translation> @@ -1449,6 +1450,7 @@ <translation id="776344839111254542">అప్డేట్ వివరాలను చూడటం కోసం క్లిక్ చేయండి</translation> <translation id="7768784765476638775">వినడానికి ఎంచుకోండి</translation> <translation id="7769299611924763557">మీ GIF త్వరలో సిద్ధంగా ఉంటుంది</translation> +<translation id="7773536009433685931">బదులుగా Wi-Fiని ఆన్ చేయండి</translation> <translation id="7780094051999721182">షార్ట్కట్లు</translation> <translation id="7780159184141939021">స్క్రీన్ను తిప్పండి</translation> <translation id="7796735576426975947">కొత్త నోటిఫికేషన్ దాచబడింది</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb index 82a459b..19b9af1 100644 --- a/ash/strings/ash_strings_th.xtb +++ b/ash/strings/ash_strings_th.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">โทรศัพท์ต้องมืออินเทอร์เน็ตมือถือเพื่อการใช้งานเป็นฮอตสปอต</translation> <translation id="2727175239389218057">ตอบ</translation> <translation id="2727977024730340865">เสียบอยู่กับที่ชาร์จพลังงานต่ำ การชาร์จแบตเตอรี่อาจไม่น่าเชื่อถือ</translation> -<translation id="2740531572673183784">ตกลง</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"ลบ"</translation> <translation id="2750941250130734256">เลิกตรึงหน้าต่างที่ใช้งานแล้ว</translation> @@ -1069,6 +1068,7 @@ <translation id="5976112937189445008">กด Enter เพื่อบันทึกหน้าต่าง</translation> <translation id="5978382165065462689">กำลังแชร์การควบคุมหน้าจอผ่านความช่วยเหลือระยะไกล</translation> <translation id="5980301590375426705">ออกเซสชันผู้มาเยือน</translation> +<translation id="5983567367406220847">ปิดฮอตสปอตแล้วเนื่องจากไม่มีการใช้งาน</translation> <translation id="598407983968395253">ใช้เทมเพลต</translation> <translation id="598882571027504733">หากต้องการรับอัปเดต ให้รีสตาร์ท Chromebook ในขณะที่ยังเชื่อมต่อกับแป้นพิมพ์</translation> <translation id="6002179289567220515">คุณใช้สวิตช์จริงเพื่อปิดกล้อง 1 ตัว คุณยังปิดการเข้าถึงกล้องทุกตัวได้ด้วย</translation> @@ -1371,6 +1371,7 @@ <translation id="7452560014878697800">มีแอปพลิเคชันกำลังใช้กล้อง</translation> <translation id="7453330308669753048">นำผลลัพธ์ในประวัติการค้นหาออกแล้ว</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | อีก <ph name="TIME" /> จะเต็ม</translation> +<translation id="7459485586006128091">ปิดฮอตสปอตแล้วเนื่องจากมีข้อผิดพลาดภายใน โปรดลองเชื่อมต่อใหม่ในอีกสักครู่</translation> <translation id="7461924472993315131">ปักหมุด</translation> <translation id="746232733191930409">โหมดบันทึกหน้าจอ</translation> <translation id="7466449121337984263">โปรดแตะเซ็นเซอร์</translation> @@ -1444,6 +1445,7 @@ <translation id="776344839111254542">คลิกเพื่อดูรายละเอียดการอัปเดต</translation> <translation id="7768784765476638775">เลือกเพื่อให้อ่าน</translation> <translation id="7769299611924763557">GIF จะพร้อมใช้งานในไม่ช้า</translation> +<translation id="7773536009433685931">เปิด Wi-Fi แทน</translation> <translation id="7780094051999721182">ทางลัด</translation> <translation id="7780159184141939021">หมุนหน้าจอ</translation> <translation id="7796735576426975947">การแจ้งเตือนใหม่ซ่อนอยู่</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb index 0416c1a..49700bf 100644 --- a/ash/strings/ash_strings_tr.xtb +++ b/ash/strings/ash_strings_tr.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Hotspot sunabilmesi için telefonunuzun mobil verisi olmalıdır</translation> <translation id="2727175239389218057">Yanıtla</translation> <translation id="2727977024730340865">Düşük güçlü bir şarj cihazına takıldı. Şarj durumu güvenilir olmayabilir.</translation> -<translation id="2740531572673183784">Tamam</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Sil"</translation> <translation id="2750941250130734256">Etkin pencere çıkarıldı.</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb index 131a50c..1e4634fe 100644 --- a/ash/strings/ash_strings_uk.xtb +++ b/ash/strings/ash_strings_uk.xtb
@@ -148,6 +148,7 @@ <translation id="1651914502370159744">Відкрити сторінку "Історія"</translation> <translation id="1654477262762802994">Ввести голосовий запит</translation> <translation id="1668469839109562275">Вбудована мережа VPN</translation> +<translation id="1675844249244994876">Оновити вікно праворуч</translation> <translation id="1677472565718498478">Залишилося <ph name="TIME" /></translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> не підключено.</translation> <translation id="1677582821739292812">Хтось дивиться на ваш екран</translation> @@ -367,7 +368,6 @@ <translation id="2726420622004325180">Щоб увімкнути функцію "Точка доступу", на телефоні має бути мобільний Інтернет</translation> <translation id="2727175239389218057">Відповісти</translation> <translation id="2727977024730340865">Підключено до зарядного пристрою низької потужності. Акумулятор може заряджатися неналежним чином.</translation> -<translation id="2740531572673183784">OK</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Видалити"</translation> <translation id="2750941250130734256">Активне вікно відкріплено.</translation> @@ -848,6 +848,7 @@ <translation id="493076006037866439">Віддалити екран</translation> <translation id="4936329710968938986">Усі, вимкнено</translation> <translation id="4938176435186993759">Приховати всі пропозиції</translation> +<translation id="4943007472417128747">Точку доступу вимкнено, щоб підключитися до Wi-Fi. Щоб використовувати точку доступу, вимкніть Wi-Fi.</translation> <translation id="4945196315133970626">Вимкнути сповіщення</translation> <translation id="4946376291507881335">Зробити знімок</translation> <translation id="495046168593986294">Прокрутити вгору</translation> @@ -1071,6 +1072,7 @@ <translation id="5976112937189445008">Щоб записати вікно, натисніть клавішу Enter</translation> <translation id="5978382165065462689">Спільний доступ до екрана через віддалену допомогу.</translation> <translation id="5980301590375426705">Закрити сеанс гостя</translation> +<translation id="5983567367406220847">Точку доступу вимкнено, оскільки ви нею не користувалися.</translation> <translation id="598407983968395253">Використати шаблон</translation> <translation id="598882571027504733">Щоб завантажити оновлення, перезапустіть Chromebook із під’єднаною клавіатурою.</translation> <translation id="6002179289567220515">Ви вимкнули 1 камеру за допомогою фізичного перемикача. Також можна вимкнути доступ для всіх камер.</translation> @@ -1373,6 +1375,7 @@ <translation id="7452560014878697800">Додаток використовує вашу камеру</translation> <translation id="7453330308669753048">Вилучено з результатів історії пошуку</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | <ph name="TIME" /> до повного заряду</translation> +<translation id="7459485586006128091">Точку доступу вимкнено через внутрішню помилку. Спробуйте підключитися за кілька хвилин.</translation> <translation id="7461924472993315131">Закріпити</translation> <translation id="746232733191930409">Режим запису екрана</translation> <translation id="7466449121337984263">Торкніться сканера</translation> @@ -1392,6 +1395,7 @@ Щоб завершити роботу, знову утримуйте кнопку живлення на пристрої.</translation> <translation id="7526573455193969409">Мережевий трафік може відстежуватися</translation> <translation id="7536035074519304529">ІР-адреса: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Оновити вікно ліворуч</translation> <translation id="7543399541175347147">Додатки Linux і вікна в режимі анонімного перегляду наразі не підтримуються. Інші додатки буде збережено.</translation> <translation id="7544300628205093162">Підсвітку клавіатури ввімкнено</translation> <translation id="7548434653388805669">Час спати</translation> @@ -1445,6 +1449,7 @@ <translation id="776344839111254542">Натисніть, щоб переглянути деталі оновлення</translation> <translation id="7768784765476638775">Читання з екрана</translation> <translation id="7769299611924763557">Зображення GIF буде готове незабаром</translation> +<translation id="7773536009433685931">Увімкнути Wi-Fi</translation> <translation id="7780094051999721182">комбінації клавіш</translation> <translation id="7780159184141939021">Обернути екран</translation> <translation id="7796735576426975947">Нове сповіщення приховано</translation> @@ -1472,6 +1477,7 @@ <translation id="7893503627044934815">Не показувати цей файл</translation> <translation id="7895348134893321514">Сховище</translation> <translation id="7897375687985782769">Ви натиснули комбінацію клавіш для обертання екрана. Обернути?</translation> +<translation id="7901190436359881020">Поміняти вікна місцями</translation> <translation id="7901405293566323524">Телефонний центр</translation> <translation id="7902625623987030061">Торкніться сканера відбитків пальців</translation> <translation id="7904094684485781019">Адміністратор цього облікового запису заборонив паралельний вхід.</translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb index 5387438f8..a0afba1 100644 --- a/ash/strings/ash_strings_ur.xtb +++ b/ash/strings/ash_strings_ur.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">ہاٹ سپاٹ فراہم کرنے کے لیے آپ کے فون میں موبائل ڈیٹا کا ہونا ضروری ہے</translation> <translation id="2727175239389218057">جواب دیں</translation> <translation id="2727977024730340865">ایک کم پاور کے چارجر میں پلگ ان ہے۔ بیٹری چارجنگ ممکن ہے بھروسہ مند نہ ہو۔</translation> -<translation id="2740531572673183784">ٹھیک ہے</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />، <ph name="PRICE" /></translation> <translation id="2750932254614666392">"حذف کریں"</translation> <translation id="2750941250130734256">فعال ونڈو کو غیر مقفل کیا گیا۔</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">ونڈو ریکارڈ کرنے کے لیے اینٹر دبائیں</translation> <translation id="5978382165065462689">ریموٹ اسسٹنس کے ذریعے آپ کی اسکرین کے کنٹرول کا اشتراک کیا جا رہا ہے۔</translation> <translation id="5980301590375426705">مہمان سیشن ختم کریں</translation> +<translation id="5983567367406220847">غیرفعالیت کی وجہ سے ہاٹ اسپاٹ کو آف کر دیا گیا ہے۔</translation> <translation id="598407983968395253">تمثیل استعمال کریں</translation> <translation id="598882571027504733">اپ ڈیٹ حاصل کرنے کیلئے، منسلک شدہ کی بورڈ سے اپنا Chromebook دوبارہ شروع کریں۔</translation> <translation id="6002179289567220515">آپ نے 1 کیمرا آف کرنے کے لیے فزیکل سوئچ کا استعمال کیا۔ آپ تمام کیمروں کے لیے رسائی آف بھی کر سکتے ہیں۔</translation> @@ -1374,6 +1374,7 @@ <translation id="7452560014878697800">ایک ایپلیکیشن آپ کا کیمرا استعمال کر رہی ہے</translation> <translation id="7453330308669753048">تلاش کی سرگزشت کا نتیجہ ہٹا دیا گیا</translation> <translation id="7455047553373871740">%<ph name="BATTERY_PERCENTAGE" /> | مکمل ہونے میں <ph name="TIME" /> باقی</translation> +<translation id="7459485586006128091">داخلی خرابی کی وجہ سے ہاٹ اسپاٹ کو آف کر دیا گیا ہے۔ چند منٹوں میں دوبارہ منسلک ہونے کی کوشش کریں۔</translation> <translation id="7461924472993315131">پن کریں</translation> <translation id="746232733191930409">اسکرین ریکارڈنگ کی وضع</translation> <translation id="7466449121337984263">براہ کرم سینسر کو ٹچ کریں</translation> @@ -1447,6 +1448,7 @@ <translation id="776344839111254542">اپ ڈیٹ کی تفصیلات ملاحظہ کرنے کیلئے کلک کریں</translation> <translation id="7768784765476638775">سننے کیلئے منتخب کریں</translation> <translation id="7769299611924763557">آپ کا GIF جلد ہی تیار ہو جائے گا</translation> +<translation id="7773536009433685931">اس کے بجائے WiFi آن کریں</translation> <translation id="7780094051999721182">شارٹ کٹس</translation> <translation id="7780159184141939021">اسکرین کو گھمائیں</translation> <translation id="7796735576426975947">نئی اطلاع پوشیدہ ہے</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index 07fb7cc9..c5c1b0b 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C qurilma (old port)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> tasviri <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz) tiniqligiga oʻtkazildi. Tasdiqlash uchun bosing. Eski sozlamalar <ph name="TIMEOUT_SECONDS" /> dan keyin tiklanadi.</translation> <translation id="1013923882670373915">“<ph name="DEVICE_NAME" />” qurilmasi Bluetooth orqali bog‘lanishga ruxsat so‘ramoqda. Bu qurilmada quyidagi PIN-kodni kiriting: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285"><ph name="APP_NAME" />, ChromeOS operatsion tizimi va joylashuv maʼlumotlariga ruxsati boʻlgan barcha ilova va saytlarga geolokatsiya uchun Wi-Fi va mobil tarmoqdan foydalanishga ruxsat beriladi.</translation> <translation id="1017556409696559990">Chrome orqaga qaytish tarixi yoʻqligida yuqori oynani kichraytirish</translation> <translation id="1024364763893396229"><ph name="NAME" /> nomli qurilmangizni saqlang</translation> <translation id="1032891413405719768">Stilus batareyasi quvvati kam</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Tarix sahifasini ochish</translation> <translation id="1654477262762802994">Ovozli qidiruvni boshlash</translation> <translation id="1668469839109562275">Ichki oʻrnatilgan VPN</translation> +<translation id="1675844249244994876">Oʻng oynani yangilash</translation> <translation id="1677472565718498478"><ph name="TIME" /> qoldi</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> ulanmadi.</translation> <translation id="1677582821739292812">Kimdir ekranga qarayapti</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Joylashuv axborotiga ruxsatni yoqish</translation> <translation id="1830308660060964064">Yechib olindi: <ph name="ITEM_TITLE" /></translation> <translation id="1838895407229022812">Tungi rejim oʻchiq.</translation> <translation id="1854180393107901205">Translatsiyani to‘xtatish</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Telefon mobil internetsiz hotspot tarqata olmaydi</translation> <translation id="2727175239389218057">Javob berish</translation> <translation id="2727977024730340865">Kam quvvatli zaryadlash vositasi ulanildi. Quvvatlantirishda muammolar bo‘lishi mumkin.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">“Oʻchirish”</translation> <translation id="2750941250130734256">Faol oyna ajratildi.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">Assistent nimalarga qodir?</translation> <translation id="3256109297135787951">Javondagi narsaning ajratib belgilanishini bekor qilish</translation> <translation id="3260969790895726815">Nutq qurilmada qayta ishlanadi va ovoz bilan yozish oflayn rejimda ishlaydi, lekin ayrim ovozli buyruqlar ishlamaydi.</translation> +<translation id="3265032511221679826">Aniq joylashuv maʼlumotlariga ruxsat berilsinmi?</translation> <translation id="3269597722229482060">Oʻng klik</translation> <translation id="3289364673986435196">Quvvat menyusi</translation> <translation id="3289544412142055976">Linux ilovalari hozirda ishlamaydi</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> boshqariladigan hisob</translation> <translation id="3666266999138159418">Maullaq oynani yopish uchun suring</translation> <translation id="367531336287639526">Manzil qatori chapidagi birinchi belgini tanlang</translation> +<translation id="3677931086890821290">ChromeOS operatsion tizimi, shuningdek, joylashuv maʼlumotlariga kirish huquqiga ega boʻlgan barcha ilovalar va saytlarga geolokatsiya uchun Wi-Fi va mobil tarmoqdan foydalanishga ruxsat beriladi.</translation> <translation id="3679827876008292680">Oynadagi oxirgi varaqni ochish</translation> <translation id="36813544980941320">Telefoningiz va <ph name="DEVICE_NAME" /> qurilmangizda bitta Wi-Fi tarmoq ishlatiladi</translation> <translation id="3694122362646626770">Veb-saytlar</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">Ekranni kichilashtirish</translation> <translation id="4936329710968938986">Hammaga, oʻchiq</translation> <translation id="4938176435186993759">Barcha takliflarni berkitish</translation> +<translation id="4943007472417128747">Wi-Fi ishlatish uchun hotspot oʻchirildi. Hotspot ishlatish uchun Wi-Fi aloqasini oʻchiring.</translation> <translation id="4945196315133970626">Bildirishnoma kelmasin</translation> <translation id="4946376291507881335">Tasvirga olish</translation> <translation id="495046168593986294">Tepaga chiqish</translation> @@ -1390,6 +1395,7 @@ Qurilmani oʻchirish uchun uning quvvat tugmasini biroz bosib turing.</translation> <translation id="7526573455193969409">Tarmoq kuzatilishi mumkin</translation> <translation id="7536035074519304529">IP manzil: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Chap oynani yangilash</translation> <translation id="7543399541175347147">Linux ilovalari va inkognito oynalarida ishlamaydi. Boshqa ilovalar saqlanadi.</translation> <translation id="7544300628205093162">Klaviatura orqa chirogʻi yoniq</translation> <translation id="7548434653388805669">Uyqu vaqti keldi</translation> @@ -1471,6 +1477,7 @@ <translation id="7893503627044934815">Bu fayl chiqishini istamayman</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Ekranni burish tugmasi bosildi. Ekranni burmoqchimisiz?</translation> +<translation id="7901190436359881020">Oynalar joyini almashtirish</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Barmoq izi skaneriga tegining</translation> <translation id="7904094684485781019">Administrator bu hisobga boshqa hisoblar bilan birdaniga kirishni taqiqlab qo‘ygan.</translation> @@ -1746,6 +1753,7 @@ <translation id="9198992156681343238"><ph name="DISPLAY_NAME" /> displeyining ekrani <ph name="RESOLUTION" /> hajmiga oʻzgartirildi. Tasdiqlash uchun bosing. Eski sozlamalar <ph name="TIMEOUT_SECONDS" /> dan keyin tiklanadi.</translation> <translation id="9201044636667689546"><ph name="NAME" /> qurilmasini bu Chromebookka ulang</translation> <translation id="9201374708878217446">Ulanish: <ph name="CONNECTION_STATUS" />, Administrator boshqaruvida</translation> +<translation id="9207682216934703221"><ph name="APP_NAME" />, <ph name="APP2_NAME" />, ChromeOS operatsion tizimi va joylashuv maʼlumotlariga ruxsati boʻlgan barcha ilova va saytlarga geolokatsiya uchun Wi-Fi va mobil tarmoqdan foydalanishga ruxsat beriladi.</translation> <translation id="9210037371811586452">Birlashgan ish stoli rejimidan chiqilmoqda</translation> <translation id="9211490828691860325">Barcha ish stollari</translation> <translation id="9211681782751733685">Batareya toʻliq quvvatlanishigacha qolgan vaqt: <ph name="TIME_REMAINING" /></translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb index b3cd56b..e09509f 100644 --- a/ash/strings/ash_strings_vi.xtb +++ b/ash/strings/ash_strings_vi.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">Thiết bị USB-C (cổng phía trước)</translation> <translation id="1013598600051641573"><ph name="DISPLAY_NAME" /> đã đổi thành <ph name="RESOLUTION" /> (<ph name="REFRESH_RATE" /> Hz). 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="1013923882670373915">Thiết bị Bluetooth "<ph name="DEVICE_NAME" />" muốn được phép ghép nối. Vui lòng nhập mã PIN này trên thiết bị đó: <ph name="PINCODE" /></translation> +<translation id="1014722676793506285">Việc này cho phép <ph name="APP_NAME" /> và mọi ứng dụng cũng như trang web có quyền truy cập vào thông tin vị trí và ChromeOS sử dụng thông tin vị trí của Wi-Fi và mạng di động.</translation> <translation id="1017556409696559990">Thu nhỏ cửa sổ trên cùng khi không có nhật ký nội dung quay lại trong Chrome</translation> <translation id="1024364763893396229">Lưu <ph name="NAME" /></translation> <translation id="1032891413405719768">Pin của bút cảm ứng ở mức thấp</translation> @@ -147,6 +148,7 @@ <translation id="1651914502370159744">Mở trang Nhật ký</translation> <translation id="1654477262762802994">Bắt đầu đặt câu hỏi bằng giọng nói</translation> <translation id="1668469839109562275">VPN tích hợp sẵn</translation> +<translation id="1675844249244994876">Cập nhật cửa sổ bên phải</translation> <translation id="1677472565718498478">Còn <ph name="TIME" /></translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> chưa kết nối.</translation> <translation id="1677582821739292812">Có người đang nhìn vào màn hình của bạn</translation> @@ -191,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">Bật quyền truy cập thông tin vị trí</translation> <translation id="1830308660060964064">Đã bỏ ghim <ph name="ITEM_TITLE" /></translation> <translation id="1838895407229022812">Chế độ Ánh sáng đêm đang tắt.</translation> <translation id="1854180393107901205">Dừng truyền</translation> @@ -365,7 +368,6 @@ <translation id="2726420622004325180">Điện thoại của bạn phải có dữ liệu di động thì mới dùng làm điểm phát sóng được</translation> <translation id="2727175239389218057">Trả lời</translation> <translation id="2727977024730340865">Được cắm vào bộ sạc công suất thấp. Việc sạc pin có thể không được đảm bảo.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Xoá"</translation> <translation id="2750941250130734256">Đã gỡ cửa sổ đang hoạt động.</translation> @@ -468,6 +470,7 @@ <translation id="3255483164551725916">Bạn có thể làm gì?</translation> <translation id="3256109297135787951">Xóa mục đã đánh dấu trên giá</translation> <translation id="3260969790895726815">Lời nói được xử lý trên thiết bị còn tính năng nhập bằng giọng nói hoạt động khi không có mạng, nhưng một số lệnh thoại sẽ không hoạt động.</translation> +<translation id="3265032511221679826">Bật quyền truy cập vào thông tin vị trí chính xác?</translation> <translation id="3269597722229482060">Nhấp chuột phải</translation> <translation id="3289364673986435196">Trình đơn nguồn</translation> <translation id="3289544412142055976">Hiện không hỗ trợ ứng dụng Linux</translation> @@ -498,7 +501,7 @@ <translation id="3378442621503952303">Đang kết nối với hồ sơ. Hãy chờ ít phút.</translation> <translation id="3386978599540877378">tính năng phóng to toàn màn hình</translation> <translation id="3387527074123400161">ChromiumOS</translation> -<translation id="3400357268283240774">Tùy chọn cài đặt bổ sung</translation> +<translation id="3400357268283240774">Chế độ cài đặt bổ sung</translation> <translation id="3405101454990027959">Cho phép truy cập micrô</translation> <translation id="3409584356742878290">Hiển thị hoặc ẩn trình kiểm tra Công cụ cho nhà phát triển</translation> <translation id="3410336247007142655">Hiển thị các tùy chọn cài đặt giao diện tối</translation> @@ -578,6 +581,7 @@ <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> Người dùng được quản lý</translation> <translation id="3666266999138159418">Vuốt để ẩn cửa sổ nổi</translation> <translation id="367531336287639526">Chọn biểu tượng đầu tiên ở bên trái thanh địa chỉ</translation> +<translation id="3677931086890821290">Chế độ này cho phép tất cả ứng dụng và trang web có quyền truy cập thông tin vị trí và ChromeOS dùng thông tin vị trí của Wi-Fi và mạng di động.</translation> <translation id="3679827876008292680">Chuyển đến thẻ cuối cùng trong cửa sổ</translation> <translation id="36813544980941320">Điện thoại và <ph name="DEVICE_NAME" /> của bạn sẽ dùng chung mạng Wi-Fi</translation> <translation id="3694122362646626770">Trang web</translation> @@ -844,6 +848,7 @@ <translation id="493076006037866439">Thu nhỏ màn hình</translation> <translation id="4936329710968938986">Mọi người, đang tắt</translation> <translation id="4938176435186993759">Ẩn tất cả đề xuất</translation> +<translation id="4943007472417128747">Điểm phát sóng đã bị tắt để sử dụng Wi-Fi. Để sử dụng Điểm phát sóng, hãy tắt Wi-Fi.</translation> <translation id="4945196315133970626">Tắt thông báo</translation> <translation id="4946376291507881335">Chụp</translation> <translation id="495046168593986294">Cuộn lên</translation> @@ -1390,6 +1395,7 @@ Để tắt thiết bị, hãy nhấn và giữ lại nguồn trên thiết bị một lần nữa.</translation> <translation id="7526573455193969409">Mạng có thể được giám sát</translation> <translation id="7536035074519304529">Địa chỉ IP: <ph name="ADDRESS" /></translation> +<translation id="7536832381700852123">Cập nhật cửa sổ bên trái</translation> <translation id="7543399541175347147">Hiện không hỗ trợ ứng dụng Linux và cửa sổ ẩn danh. Các ứng dụng khác sẽ được lưu.</translation> <translation id="7544300628205093162">Đèn nền bàn phím đang bật</translation> <translation id="7548434653388805669">Giờ đi ngủ</translation> @@ -1471,6 +1477,7 @@ <translation id="7893503627044934815">Không muốn hiện tệp này</translation> <translation id="7895348134893321514">Tote</translation> <translation id="7897375687985782769">Bạn đã nhấn phím tắt để xoay màn hình. Bạn có muốn xoay màn hình không?</translation> +<translation id="7901190436359881020">Hoán đổi cửa sổ</translation> <translation id="7901405293566323524">Trung tâm điều khiển điện thoại</translation> <translation id="7902625623987030061">Chạm vào cảm biến vân tay</translation> <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> @@ -1746,6 +1753,7 @@ <translation id="9198992156681343238">Độ phân giải của <ph name="DISPLAY_NAME" /> đã được thay đổi thành <ph name="RESOLUTION" />. 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="9201044636667689546">Kết nối <ph name="NAME" /> với Chromebook này</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />, Do quản trị viên của bạn quản lý</translation> +<translation id="9207682216934703221">Việc này cho phép <ph name="APP_NAME" />, <ph name="APP2_NAME" /> và mọi ứng dụng cũng như trang web có quyền truy cập vào thông tin vị trí và ChromeOS sử dụng thông tin vị trí của Wi-Fi và mạng di động.</translation> <translation id="9210037371811586452">Đang thoát chế độ màn hình hợp nhất</translation> <translation id="9211490828691860325">Tất cả các không gian làm việc</translation> <translation id="9211681782751733685">Còn <ph name="TIME_REMAINING" /> nữa là sạc đầy pin.</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb index d95b2cf..15caccb 100644 --- a/ash/strings/ash_strings_zh-CN.xtb +++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -4,6 +4,7 @@ <translation id="1012876632442809908">USB-C 设备(前方端口)</translation> <translation id="1013598600051641573">“<ph name="DISPLAY_NAME" />”的分辨率已改为 <ph name="RESOLUTION" />(<ph name="REFRESH_RATE" /> 赫兹)。点击“确认”即可保留更改。将在 <ph name="TIMEOUT_SECONDS" />后恢复以前的设置。</translation> <translation id="1013923882670373915">蓝牙设备“<ph name="DEVICE_NAME" />”需要配对许可。请在该设备上输入以下PIN码:<ph name="PINCODE" /></translation> +<translation id="1014722676793506285">如果您开启地理定位,即意味着允许“<ph name="APP_NAME" />”、所有具有位置信息权限的应用和网站以及 ChromeOS 使用 Wi-Fi 和移动网络位置信息。</translation> <translation id="1017556409696559990">当 Chrome 中没有任何后退历史记录时,将顶部窗口最小化</translation> <translation id="1024364763893396229">保存您的“<ph name="NAME" />”</translation> <translation id="1032891413405719768">触控笔电池电量较低</translation> @@ -192,6 +193,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="1823873187264960516">以太网:<ph name="ADDRESS" /></translation> +<translation id="1824922790784036530">开启位置信息访问权限</translation> <translation id="1830308660060964064">“<ph name="ITEM_TITLE" />”已被取消固定</translation> <translation id="1838895407229022812">当前已关闭护眼模式。</translation> <translation id="1854180393107901205">停止投放</translation> @@ -366,7 +368,6 @@ <translation id="2726420622004325180">您的手机必须有移动数据网络,才能提供热点</translation> <translation id="2727175239389218057">回复</translation> <translation id="2727977024730340865">已插入低功率充电器;可能无法保证充电成功。</translation> -<translation id="2740531572673183784">确定</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />,<ph name="PRICE" /></translation> <translation id="2750932254614666392">“删除”</translation> <translation id="2750941250130734256">取消停靠活动窗口。</translation> @@ -469,6 +470,7 @@ <translation id="3255483164551725916">你能做些什么?</translation> <translation id="3256109297135787951">取消任务栏中某项内容的突出显示状态</translation> <translation id="3260969790895726815">系统会在本地处理语音,并支持离线语音输入,但部分语音指令会不起作用。</translation> +<translation id="3265032511221679826">开启确切位置信息访问权限?</translation> <translation id="3269597722229482060">右键点击</translation> <translation id="3289364673986435196">电源菜单</translation> <translation id="3289544412142055976">尚不支持 Linux 应用</translation> @@ -579,6 +581,7 @@ <translation id="366222428570480733">受管用户:<ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="3666266999138159418">滑动即可隐藏浮动窗口</translation> <translation id="367531336287639526">选择地址栏左侧的第一个图标</translation> +<translation id="3677931086890821290">如果您开启地理定位,即意味着允许所有具有位置信息权限的应用和网站以及 ChromeOS 使用 Wi-Fi 和移动网络位置信息。</translation> <translation id="3679827876008292680">转到窗口中的最后一个标签页</translation> <translation id="36813544980941320">您的手机和 <ph name="DEVICE_NAME" />将会共用 Wi-Fi 网络</translation> <translation id="3694122362646626770">网站</translation> @@ -1069,6 +1072,7 @@ <translation id="5976112937189445008">按 Enter 键即可录制窗口</translation> <translation id="5978382165065462689">正在通过远程协助共享您屏幕的控制权限。</translation> <translation id="5980301590375426705">退出访客模式</translation> +<translation id="5983567367406220847">由于闲置过久,热点已关闭。</translation> <translation id="598407983968395253">使用模板</translation> <translation id="598882571027504733">要想获取此项更新,请在已连接该键盘的情况下重新启动您的 Chromebook。</translation> <translation id="6002179289567220515">您使用实物开关关闭了 1 个摄像头。您还可以关闭所有摄像头的使用权限。</translation> @@ -1368,6 +1372,7 @@ <translation id="7452560014878697800">有一个应用正在使用您的摄像头</translation> <translation id="7453330308669753048">已移除搜索记录结果</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | 还需 <ph name="TIME" />才能充满</translation> +<translation id="7459485586006128091">由于内部错误,热点已关闭。请过几分钟后尝试重新连接。</translation> <translation id="7461924472993315131">固定</translation> <translation id="746232733191930409">录屏模式</translation> <translation id="7466449121337984263">请轻触传感器</translation> @@ -1441,6 +1446,7 @@ <translation id="776344839111254542">点击即可查看相关更新的详情</translation> <translation id="7768784765476638775">随选朗读</translation> <translation id="7769299611924763557">您的 GIF 很快便能就绪</translation> +<translation id="7773536009433685931">改为开启 Wi-Fi</translation> <translation id="7780094051999721182">快捷方式</translation> <translation id="7780159184141939021">旋转屏幕</translation> <translation id="7796735576426975947">已隐藏新通知</translation> @@ -1744,6 +1750,7 @@ <translation id="9198992156681343238">“<ph name="DISPLAY_NAME" />”的分辨率已改为 <ph name="RESOLUTION" />。点击“确认”即可保留更改。将在 <ph name="TIMEOUT_SECONDS" />后恢复以前的设置。</translation> <translation id="9201044636667689546">将“<ph name="NAME" />”连接到此 Chromebook</translation> <translation id="9201374708878217446"><ph name="CONNECTION_STATUS" />,由您的管理员管理</translation> +<translation id="9207682216934703221">如果您开启地理定位,即意味着允许“<ph name="APP_NAME" />”“<ph name="APP2_NAME" />”、所有具有位置信息权限的应用和网站以及 ChromeOS 使用 Wi-Fi 和移动网络位置信息。</translation> <translation id="9210037371811586452">正在退出统一桌面模式</translation> <translation id="9211490828691860325">所有桌面</translation> <translation id="9211681782751733685">电池电量将在 <ph name="TIME_REMAINING" />后充满。</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb index 63d5e41..44f47be6 100644 --- a/ash/strings/ash_strings_zh-HK.xtb +++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -355,7 +355,7 @@ <translation id="2658778018866295321">按一下並拖曳</translation> <translation id="2665788051462227163">此裝置未安裝「<ph name="UNAVAILABLE_APPS_ONE" />」和「<ph name="UNAVAILABLE_APPS_TWO" />」。</translation> <translation id="2673968385134502798">遊戲</translation> -<translation id="2678852583403169292">選取以朗讀選單</translation> +<translation id="2678852583403169292">揀選朗讀內容選單</translation> <translation id="2689613560355655046">桌面 8</translation> <translation id="2695305337569143674">網絡</translation> <translation id="2697697418792422688">顯示鍵盤設定。已選取<ph name="KEYBOARD_NAME" />。</translation> @@ -368,7 +368,6 @@ <translation id="2726420622004325180">您的手機必須具備流動數據,才能啟用熱點功能</translation> <translation id="2727175239389218057">回覆</translation> <translation id="2727977024730340865">使用低功率充電器,可能導致充電狀態不穩定。</translation> -<translation id="2740531572673183784">確定</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />,<ph name="PRICE" /></translation> <translation id="2750932254614666392">「刪除」</translation> <translation id="2750941250130734256">已經取消固定用緊嘅視窗。</translation> @@ -608,7 +607,7 @@ <translation id="380165613292957338">你好,有咩可以幫到你?</translation> <translation id="3804737937830804242">收合相機調整大小的按鈕</translation> <translation id="3826099427150913765">改用密碼</translation> -<translation id="383058930331066723">「省電模式」已開啟</translation> +<translation id="383058930331066723">「慳電模式」已開啟</translation> <translation id="383629559565718788">顯示鍵盤設定</translation> <translation id="384082539148746321">要刪除範本嗎?</translation> <translation id="3846575436967432996">沒有可用的網絡資料</translation> @@ -1072,7 +1071,7 @@ <translation id="5976112937189445008">㩒 Enter 掣就可以錄視窗畫面</translation> <translation id="5978382165065462689">透過「遠端協助」共用螢幕控制權。</translation> <translation id="5980301590375426705">結束訪客工作階段</translation> -<translation id="5983567367406220847">由於閒置過久,無線基地台已關閉。</translation> +<translation id="5983567367406220847">由於閒置過久,因此熱點已關閉。</translation> <translation id="598407983968395253">使用範本</translation> <translation id="598882571027504733">如要下載更新,請連接鍵盤並重新啟動 Chromebook。</translation> <translation id="6002179289567220515">您已使用實體開關關閉 1 部相機。您亦可關閉所有相機的存取權。</translation> @@ -1357,7 +1356,7 @@ <translation id="7377481913241237033">使用代碼進行連結</translation> <translation id="7378203170292176219">拖曳以選取要錄影的範圍</translation> <translation id="7378594059915113390">媒體控制項</translation> -<translation id="7378889811480108604">「省電模式」已關閉</translation> +<translation id="7378889811480108604">「慳電模式」已關閉</translation> <translation id="7382680553121047388">開啟</translation> <translation id="7384028040782072252">在任何地方按一下右鍵,即可將應用程式重新排序</translation> <translation id="7386767620098596324">切換網絡連線。<ph name="STATE_TEXT" />。</translation> @@ -1374,7 +1373,7 @@ <translation id="7452560014878697800">某個應用程式正在使用攝錄機</translation> <translation id="7453330308669753048">移除咗搜尋記錄結果</translation> <translation id="7455047553373871740"><ph name="BATTERY_PERCENTAGE" />% | 還有 <ph name="TIME" />便完成充電</translation> -<translation id="7459485586006128091">由於發生內部錯誤,無線基地台已關閉。請過幾分鐘再重試連線。</translation> +<translation id="7459485586006128091">由於發生內部問題,因此熱點已關閉。請過幾分鐘再重試連線。</translation> <translation id="7461924472993315131">Pin</translation> <translation id="746232733191930409">螢幕錄影模式</translation> <translation id="7466449121337984263">請輕觸感應器</translation> @@ -1446,7 +1445,7 @@ <translation id="7742327441377685481">沒有通知</translation> <translation id="7749443890790263709">桌面數量已達上限。</translation> <translation id="776344839111254542">按一下即可查看更新詳情</translation> -<translation id="7768784765476638775">選取以朗讀</translation> +<translation id="7768784765476638775">揀選朗讀內容</translation> <translation id="7769299611924763557">GIF 很快就能使用</translation> <translation id="7773536009433685931">改為開啟 Wi-Fi</translation> <translation id="7780094051999721182">捷徑</translation> @@ -1521,7 +1520,7 @@ <translation id="8098591350844501178">停止將畫面投放到「<ph name="RECEIVER_NAME" />」</translation> <translation id="810637681351706236">取消將應用程式固定至捷徑列</translation> <translation id="8113423164597455979">已在所有應用程式上啟用通知</translation> -<translation id="8113515504791187892">「選取以朗讀」掣</translation> +<translation id="8113515504791187892">「揀選朗讀內容」掣</translation> <translation id="8120151603115102514">您的手機沒有上鎖畫面。如要解鎖 Chromebook,請輸入密碼。</translation> <translation id="8127095419621171197">開啟「計算機」應用程式</translation> <translation id="8129620843620772246"><ph name="TEMPERATURE_C" />°C</translation> @@ -1597,7 +1596,7 @@ <translation id="8444246603146515890">已啟用桌面 <ph name="DESK_TITILE" /></translation> <translation id="8446884382197647889">瞭解詳情</translation> <translation id="8456543082656546101"><ph name="SHORTCUT_KEY_NAME" /> + V</translation> -<translation id="8462305545768648477">關閉「選取以朗讀」</translation> +<translation id="8462305545768648477">關閉「揀選朗讀內容」</translation> <translation id="847056008324733326">顯示比例設定</translation> <translation id="8473301994082929012"><ph name="ORGANIZATION_NAME" /> 已 <ph name="FEATURE_STATE" /><ph name="FEATURE_NAME" />。</translation> <translation id="8477270416194247200">按下 Alt + 搜尋鍵或 Shift 鍵即可取消。</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb index 44bbd34..0a3fdf02 100644 --- a/ash/strings/ash_strings_zh-TW.xtb +++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">你的手機必須有行動數據才能提供無線基地台</translation> <translation id="2727175239389218057">回覆</translation> <translation id="2727977024730340865">使用低功率充電器,可能導致充電狀態不穩定。</translation> -<translation id="2740531572673183784">確定</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />,<ph name="PRICE" /></translation> <translation id="2750932254614666392">「刪除」</translation> <translation id="2750941250130734256">已取消固定使用中的視窗。</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb index 495a129..38b414e 100644 --- a/ash/strings/ash_strings_zu.xtb +++ b/ash/strings/ash_strings_zu.xtb
@@ -368,7 +368,6 @@ <translation id="2726420622004325180">Ifoni yakho kumele ibe nedatha yeselula ukuze inikeze i-hotspot</translation> <translation id="2727175239389218057">Phendula</translation> <translation id="2727977024730340865">Ixhunye kushaja yamandla aphansi. Ukushaja ibhethri kungenzeka kungathembeki.</translation> -<translation id="2740531572673183784">Ok</translation> <translation id="2749082172777216925"><ph name="APP_NAME_INFO" />, <ph name="PRICE" /></translation> <translation id="2750932254614666392">"Sula"</translation> <translation id="2750941250130734256">Iwindi elisebenzayo lisuse ukudokha.</translation> @@ -1073,6 +1072,7 @@ <translation id="5976112937189445008">Cindezela u-enter ukuze urekhode iwindi</translation> <translation id="5978382165065462689">Ukulawula ukwabelana kwesikrini sakho nge-Remote Assistance.</translation> <translation id="5980301590375426705">Phuma kusihambeli</translation> +<translation id="5983567367406220847">Ngenxa yokungasebenzi, i-hotspot ivaliwe.</translation> <translation id="598407983968395253">Sebenzisa isifanekiso</translation> <translation id="598882571027504733">Ukuze uthole izibuyekezo, qalisa kabusha i-Chromebook ngekhibhodi enamathiselwe.</translation> <translation id="6002179289567220515">Usebenzise iswishi engokoqobo ukuvala ikhamera e-1. Ungavala futhi ukufinyelela kuwo wonke amakhamera.</translation> @@ -1375,6 +1375,7 @@ <translation id="7452560014878697800">Uhlelo lokusebenza lusebenzisa ikhamera yakho</translation> <translation id="7453330308669753048">Umphumela womlando wosesho ususiwe</translation> <translation id="7455047553373871740">Ngu-<ph name="BATTERY_PERCENTAGE" />% - ngu-<ph name="TIME" /> kuze kugcwale</translation> +<translation id="7459485586006128091">Ngenxa yephutha langaphakathi, i-hotspot ivaliwe. Zama ukuxhuma kabusha emizuzwini embalwa.</translation> <translation id="7461924472993315131">Phina</translation> <translation id="746232733191930409">Imodi yokurekhoda isikrini</translation> <translation id="7466449121337984263">Sicela uthinte inzwa</translation> @@ -1448,6 +1449,7 @@ <translation id="776344839111254542">Chofoza ukuze ubuke imininingwane yokubuyekeza</translation> <translation id="7768784765476638775">Khetha ukuze ukhulume</translation> <translation id="7769299611924763557">I-GIF yakho izolunga maduze</translation> +<translation id="7773536009433685931">Vula i-WiFi esikhundleni salokho</translation> <translation id="7780094051999721182">izinqamuleli</translation> <translation id="7780159184141939021">Zungezisa isikrini</translation> <translation id="7796735576426975947">Isaziso esisha sifihliwe</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_af.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_af.xtb index 8963618..80d556a 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_af.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_af.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Beweeg tans na onder</translation> <translation id="695140971690006676">Stel alles terug</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Portret</translation> <translation id="698156982839284926">3 sekondes</translation> <translation id="7134221860976209830">Afteller van 10 sekondes</translation> <translation id="7191890674911603392">Soort opname</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb index 9eb4dcad..f0c197a 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_am.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">ወደ ታች አቅጣጫ በመንቀሳቀስ ላይ</translation> <translation id="695140971690006676">ሁሉንም ዳግም አስጀምር</translation> <translation id="6965382102122355670">እሺ</translation> +<translation id="6965830616442491568">የቁም ፎቶ</translation> <translation id="698156982839284926">3 ሰከንዶች</translation> <translation id="7134221860976209830">10 ሰከንዶች መቁጠሪያ</translation> <translation id="7191890674911603392">የቀረጻ ዓይነት</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_as.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_as.xtb index ec6059e..61466683 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_as.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_as.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">একেবাৰে তলফাললৈ গতি কৰি আছে</translation> <translation id="695140971690006676">সকলো ৰিছেট কৰক</translation> <translation id="6965382102122355670">ঠিক আছে</translation> +<translation id="6965830616442491568">প’ৰ্ট্ৰেইট</translation> <translation id="698156982839284926">৩ ছেকেণ্ড</translation> <translation id="7134221860976209830">১০ ছেকেণ্ডৰ টাইমাৰ</translation> <translation id="7191890674911603392">ৰেকৰ্ডৰ প্ৰকাৰ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb index 6401df6..cb0febe 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_az.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Aşağı tərəfə daşınır</translation> <translation id="695140971690006676">Hamısını sıfırlayın</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Portret</translation> <translation id="698156982839284926">3 saniyə</translation> <translation id="7134221860976209830">10 saniyəlik taymer</translation> <translation id="7191890674911603392">Qeydəalma növü</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_be.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_be.xtb index faaa9da2..abe378f 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_be.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_be.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Перамяшчаецца ўніз</translation> <translation id="695140971690006676">Скінуць усе</translation> <translation id="6965382102122355670">ОК</translation> +<translation id="6965830616442491568">Кніжная арыентацыя</translation> <translation id="698156982839284926">3 секунды</translation> <translation id="7134221860976209830">Таймер на 10 секунд</translation> <translation id="7191890674911603392">Тып запісу</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb index 0d7f765..d025644 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Премества се надолу</translation> <translation id="695140971690006676">Повторно задаване на всичко</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Портрет</translation> <translation id="698156982839284926">3 секунди</translation> <translation id="7134221860976209830">Таймер за 10 секунди</translation> <translation id="7191890674911603392">Тип запис</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb index 9859863..021abda 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Yn symud i'r cyfeiriad isaf</translation> <translation id="695140971690006676">Ailosod popeth</translation> <translation id="6965382102122355670">Iawn</translation> +<translation id="6965830616442491568">Fertigol</translation> <translation id="698156982839284926">3 eiliad</translation> <translation id="7134221860976209830">Amserydd 10 eiliad</translation> <translation id="7191890674911603392">Math o recordio</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb index fc29d5cc..51ce61c 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb
@@ -123,6 +123,7 @@ <translation id="6888362557094394345">Flyttes nedad</translation> <translation id="695140971690006676">Nulstil alle</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Portræt</translation> <translation id="698156982839284926">3 sekunder</translation> <translation id="7134221860976209830">Timer på 10 sekunder</translation> <translation id="7191890674911603392">Optagelsestype</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb index 657adfbbb..6dd5995 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_de.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Wird nach unten verschoben</translation> <translation id="695140971690006676">Alle zurücksetzen</translation> <translation id="6965382102122355670">Ok</translation> +<translation id="6965830616442491568">Hochformat</translation> <translation id="698156982839284926">3 Sekunden</translation> <translation id="7134221860976209830">10-Sekunden-Timer</translation> <translation id="7191890674911603392">Aufnahmetyp</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb index 1823260..f628cdf 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_et.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Liigub alla</translation> <translation id="695140971690006676">Lähtesta kõik</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Portreevõtterežiim</translation> <translation id="698156982839284926">3 sekundit</translation> <translation id="7134221860976209830">10-sekundiline taimer</translation> <translation id="7191890674911603392">Kirjetüüp</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb index 80f0dd09..d90c236 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">درحال انتقال بهسمت پایین</translation> <translation id="695140971690006676">بازنشانی همه</translation> <translation id="6965382102122355670">قبول</translation> +<translation id="6965830616442491568">پرتره</translation> <translation id="698156982839284926">۳ ثانیه</translation> <translation id="7134221860976209830">زمانسنج ۱۰ ثانیهای</translation> <translation id="7191890674911603392">نوع ضبط</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb index 1053d0a..9616a86 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Siirretään alaspäin</translation> <translation id="695140971690006676">Palauta kaikki</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Pystysuunta</translation> <translation id="698156982839284926">3 sekuntia</translation> <translation id="7134221860976209830">10 sekunnin ajastin</translation> <translation id="7191890674911603392">Tietuetyyppi</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb index e253c9a..319924a6 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Gumagalaw pababa</translation> <translation id="695140971690006676">I-reset lahat</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Portrait</translation> <translation id="698156982839284926">3 segundo</translation> <translation id="7134221860976209830">10 segundong timer</translation> <translation id="7191890674911603392">Uri ng pag-record</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb index 2978408..640622a1 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">સૌથી નીચેની દિશામાં ખસેડી રહ્યાં છીએ</translation> <translation id="695140971690006676">બધુ રીસેટ કરો</translation> <translation id="6965382102122355670">બરાબર, સમજાઇ ગયું</translation> +<translation id="6965830616442491568">પોર્ટ્રેટ</translation> <translation id="698156982839284926">3 સેકન્ડ</translation> <translation id="7134221860976209830">10 સેકન્ડનું ટાઇમર</translation> <translation id="7191890674911603392">રેકોર્ડનો પ્રકાર</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb index daafa96..3a65db8f 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_hi.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">सबसे नीचे की ओर जा रहा है</translation> <translation id="695140971690006676">सभी को रीसेट करें</translation> <translation id="6965382102122355670">ठीक है</translation> +<translation id="6965830616442491568">पोर्ट्रेट</translation> <translation id="698156982839284926">तीन सेकंड</translation> <translation id="7134221860976209830">10 सेकंड का टाइमर</translation> <translation id="7191890674911603392">रिकॉर्ड टाइप</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb index c6ddbfe..1786d2f0 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Mozgatás lefelé</translation> <translation id="695140971690006676">Az összes visszaállítása</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Álló</translation> <translation id="698156982839284926">3 másodperc</translation> <translation id="7134221860976209830">Tíz másodperces időzítő</translation> <translation id="7191890674911603392">Rögzítés típusa</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb index 44d21e1..2bddbbf 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Berpindah ke arah bawah</translation> <translation id="695140971690006676">Reset semua</translation> <translation id="6965382102122355670">Oke</translation> +<translation id="6965830616442491568">Potret</translation> <translation id="698156982839284926">3 detik</translation> <translation id="7134221860976209830">Timer 10 detik</translation> <translation id="7191890674911603392">Jenis perekaman</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_is.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_is.xtb index 883eb7c..ded4f39b6e 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_is.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_is.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Færist niður á við</translation> <translation id="695140971690006676">Endurstilla allt</translation> <translation id="6965382102122355670">Í lagi</translation> +<translation id="6965830616442491568">Andlitsmynd</translation> <translation id="698156982839284926">3 sekúndur</translation> <translation id="7134221860976209830">10 sekúndna teljari</translation> <translation id="7191890674911603392">Gerð upptöku</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb index fc1b7ec..0f5d8c9a 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">מתבצעת תזוזה למטה</translation> <translation id="695140971690006676">איפוס של הכול</translation> <translation id="6965382102122355670">אישור</translation> +<translation id="6965830616442491568">לאורך</translation> <translation id="698156982839284926">3 שניות</translation> <translation id="7134221860976209830">טיימר ל-10 שניות</translation> <translation id="7191890674911603392">סוג רשומה</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb index dc686d0..d9f8f7e 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">下に移動しています</translation> <translation id="695140971690006676">すべてリセット</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">ポートレート</translation> <translation id="698156982839284926">3 秒</translation> <translation id="7134221860976209830">10 秒タイマー</translation> <translation id="7191890674911603392">記録の種類</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb index 8584eeb..88ff64e7 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">ಕೆಳ ದಿಕ್ಕಿನಲ್ಲಿ ಚಲಿಸುತ್ತಿದೆ</translation> <translation id="695140971690006676">ಎಲ್ಲವನ್ನೂ ಮರುಹೊಂದಿಸಿ</translation> <translation id="6965382102122355670">ಸರಿ</translation> +<translation id="6965830616442491568">ಪೋರ್ಟ್ರೇಟ್</translation> <translation id="698156982839284926">3 ಸೆಕೆಂಡುಗಳು</translation> <translation id="7134221860976209830">10 ಸೆಕೆಂಡುಗಳ ಟೈಮರ್</translation> <translation id="7191890674911603392">ರೆಕಾರ್ಡ್ ಪ್ರಕಾರ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb index 19e2da3..03e3c24 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">하단으로 이동</translation> <translation id="695140971690006676">모두 재설정</translation> <translation id="6965382102122355670">확인</translation> +<translation id="6965830616442491568">세로 모드</translation> <translation id="698156982839284926">3초</translation> <translation id="7134221860976209830">10초 타이머</translation> <translation id="7191890674911603392">녹화 유형</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_lt.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_lt.xtb index 938ab7e1..13bcfc2 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_lt.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_lt.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Perkeliama žemyn</translation> <translation id="695140971690006676">Nustatyti viską iš naujo</translation> <translation id="6965382102122355670">Gerai</translation> +<translation id="6965830616442491568">Portreto režimas</translation> <translation id="698156982839284926">3 sekundės</translation> <translation id="7134221860976209830">10 sek. laikmatis</translation> <translation id="7191890674911603392">Įrašo tipas</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_mn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_mn.xtb index 0d01bc69..77e154f 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_mn.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_mn.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Доош зөөж байна</translation> <translation id="695140971690006676">Бүгдийг шинэчлэх</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Хөрөг</translation> <translation id="698156982839284926">3 секунд</translation> <translation id="7134221860976209830">10 секундийн цаг тооцогч</translation> <translation id="7191890674911603392">Бичлэгийн төрөл</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb index 8a05275..3db9fca 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">तळाच्या दिशेने हलत आहे</translation> <translation id="695140971690006676">सर्व रीसेट करा</translation> <translation id="6965382102122355670">ठीक आहे</translation> +<translation id="6965830616442491568">पोर्ट्रेट</translation> <translation id="698156982839284926">तीन सेकंद</translation> <translation id="7134221860976209830">१० सेकंदांचा टायमर</translation> <translation id="7191890674911603392">रेकॉर्डचा प्रकार</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ms.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ms.xtb index 17d1d891..42c7a4e2 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ms.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ms.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Bergerak ke arah bawah</translation> <translation id="695140971690006676">Tetapkan semula semua</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Potret</translation> <translation id="698156982839284926">3 saat</translation> <translation id="7134221860976209830">Pemasa 10 saat</translation> <translation id="7191890674911603392">Jenis rakaman</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb index 7c8e470..72014974 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ne.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">पुछारतिर सारिँदै छ</translation> <translation id="695140971690006676">सबै रिसेट गर्नुहोस्</translation> <translation id="6965382102122355670">ठिक छ</translation> +<translation id="6965830616442491568">पोर्ट्रेट</translation> <translation id="698156982839284926">३ सेकेन्ड</translation> <translation id="7134221860976209830">१० सेकेन्डको टाइमर</translation> <translation id="7191890674911603392">रेकर्डको प्रकार</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ro.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ro.xtb index 12186fa..5c45fe2b 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ro.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ro.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Se deplasează în jos</translation> <translation id="695140971690006676">Resetează-le pe toate</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Portret</translation> <translation id="698156982839284926">3 secunde</translation> <translation id="7134221860976209830">Cronometru de 10 secunde</translation> <translation id="7191890674911603392">Tip de înregistrare</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb index a5de3dc1..ef44049 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Premikanje proti dnu</translation> <translation id="695140971690006676">Ponastavi vse</translation> <translation id="6965382102122355670">V redu</translation> +<translation id="6965830616442491568">Pokončno</translation> <translation id="698156982839284926">3 sekunde</translation> <translation id="7134221860976209830">10-sekundni časovnik</translation> <translation id="7191890674911603392">Vrsta zapisa</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb index 40c943b..02d7c35 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Flyttas nedåt</translation> <translation id="695140971690006676">Återställ alla</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Porträtt</translation> <translation id="698156982839284926">Tre sekunder</translation> <translation id="7134221860976209830">Timer för 10 sekunder</translation> <translation id="7191890674911603392">Inspelningstyp</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb index 79a620a..b262fc61 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">దిగువకు కదులుతోంది</translation> <translation id="695140971690006676">అన్నీ రీసెట్ చేయి</translation> <translation id="6965382102122355670">సరే</translation> +<translation id="6965830616442491568">పోర్ట్రెయిట్</translation> <translation id="698156982839284926">3 సెకన్లు</translation> <translation id="7134221860976209830">10 సెకన్ల టైమర్</translation> <translation id="7191890674911603392">రికార్డ్ రకం</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_th.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_th.xtb index d1fc27d..6bc37f5 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_th.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_th.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">ย้ายไปทางด้านล่าง</translation> <translation id="695140971690006676">รีเซ็ตทั้งหมด</translation> <translation id="6965382102122355670">ตกลง</translation> +<translation id="6965830616442491568">แนวตั้ง</translation> <translation id="698156982839284926">3 วินาที</translation> <translation id="7134221860976209830">ตัวจับเวลา 10 วินาที</translation> <translation id="7191890674911603392">ประเภทการบันทึก</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_uk.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_uk.xtb index b331235..7c450f1 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_uk.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_uk.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Переміщення вниз</translation> <translation id="695140971690006676">Скинути все</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Портрет</translation> <translation id="698156982839284926">3 секунди</translation> <translation id="7134221860976209830">Таймер на 10 секунд</translation> <translation id="7191890674911603392">Тип запису</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb index bdfee07..a0ae5d4 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ur.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">نیچے کی سمت میں جا رہا ہے</translation> <translation id="695140971690006676">تمام کو ری سیٹ کریں</translation> <translation id="6965382102122355670">ٹھیک ہے</translation> +<translation id="6965830616442491568">پورٹریٹ</translation> <translation id="698156982839284926">3 سیکنڈ</translation> <translation id="7134221860976209830">10 سیکنڈ کا ٹائمر</translation> <translation id="7191890674911603392">ریکارڈ کی قسم</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb index 0283b9a..f7c0546 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-CN.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">正在向下移动</translation> <translation id="695140971690006676">全部重置</translation> <translation id="6965382102122355670">确定</translation> +<translation id="6965830616442491568">人像</translation> <translation id="698156982839284926">3 秒</translation> <translation id="7134221860976209830">10 秒定时器</translation> <translation id="7191890674911603392">录制类型</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb index c8d1a5f..47a14e5 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-HK.xtb
@@ -122,7 +122,7 @@ <translation id="6888362557094394345">向下移</translation> <translation id="695140971690006676">全部重設</translation> <translation id="6965382102122355670">確定</translation> -<translation id="6965830616442491568">肖像模式</translation> +<translation id="6965830616442491568">人像</translation> <translation id="698156982839284926">3 秒</translation> <translation id="7134221860976209830">10 秒計時器</translation> <translation id="7191890674911603392">錄製類型</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb index bddda2d..7fc933e7 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_zu.xtb
@@ -122,6 +122,7 @@ <translation id="6888362557094394345">Ihambela ngasohlangothini oluphansi</translation> <translation id="695140971690006676">Setha kabusha konke</translation> <translation id="6965382102122355670">OK</translation> +<translation id="6965830616442491568">Ukuma ngobude</translation> <translation id="698156982839284926">3 amasekhondi</translation> <translation id="7134221860976209830">Isibali sikhathi samasekhondi ayi-10</translation> <translation id="7191890674911603392">Uhlobo lokurekhoda</translation>
diff --git a/ash/wm/client_controlled_state_unittest.cc b/ash/wm/client_controlled_state_unittest.cc index bacaa12..91b0c62 100644 --- a/ash/wm/client_controlled_state_unittest.cc +++ b/ash/wm/client_controlled_state_unittest.cc
@@ -917,7 +917,7 @@ gfx::Rect(gfx::Point(padding, padding), initial_bounds.size())); } -TEST_F(ClientControlledStateTest, TuckFloatedWindowInTabletMode) { +TEST_F(ClientControlledStateTest, TuckAndUntuckFloatedWindowInTabletMode) { ui::ScopedAnimationDurationScaleMode test_duration_mode( ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION); @@ -942,6 +942,7 @@ EXPECT_TRUE(window_state()->IsFloated()); EXPECT_EQ(kShellWindowId_FloatContainer, window()->parent()->GetId()); + // Test tucking. // Start dragging in the center of the header and fling it to offscreen. auto* const header_view = GetHeaderView(); auto* const event_generator = GetEventGenerator(); @@ -962,6 +963,14 @@ ShellTestApi().WaitForWindowFinishAnimating(window()); EXPECT_FALSE(window()->IsVisible()); EXPECT_TRUE(float_controller->IsFloatedWindowTuckedForTablet(window())); + + // Test untucking. + float_controller->MaybeUntuckFloatedWindowForTablet(window()); + ShellTestApi().WaitForWindowFinishAnimating(window()); + EXPECT_TRUE(window()->IsVisible()); + EXPECT_FALSE(float_controller->IsFloatedWindowTuckedForTablet(window())); + EXPECT_EQ(FloatController::GetPreferredFloatWindowTabletBounds(window()), + delegate()->requested_bounds()); } TEST_P(ClientControlledStateTestClamshellAndTablet, MoveFloatedWindow) {
diff --git a/ash/wm/float/float_controller.cc b/ash/wm/float/float_controller.cc index e2461d9..df575001 100644 --- a/ash/wm/float/float_controller.cc +++ b/ash/wm/float/float_controller.cc
@@ -237,7 +237,16 @@ TabletModeTuckEducation::OnWindowTucked(); } - void OnUntuckAnimationEnded() { scoped_window_tucker_.reset(); } + void OnUntuckAnimationEnded() { + scoped_window_tucker_.reset(); + + // No-op for non-client-controlled windows. For the client-controlled + // windows, this ensures the bounds is sync between Chrome and the client. + // We don't send the offscreen bounds to the client when tucked, so we need + // to send the proper floated bounds when untucked. + UpdateWindowBoundsForTablet(floated_window_, + WindowState::BoundsChangeAnimationType::kNone); + } void MaybeUntuckWindow(bool animate) { // The order here matters: `is_tucked_for_tablet_` must be set to false
diff --git a/base/BUILD.gn b/base/BUILD.gn index df71fc2..b03c9723 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn
@@ -1998,6 +1998,7 @@ "mac/scoped_mach_msg_destroy.h", "mac/scoped_sending_event.h", "mac/scoped_sending_event.mm", + "mac/wrap_cg_display.h", "message_loop/message_pump_kqueue.cc", "message_loop/message_pump_kqueue.h", "native_library_mac.mm",
diff --git a/base/mac/wrap_cg_display.h b/base/mac/wrap_cg_display.h new file mode 100644 index 0000000..a579ef1 --- /dev/null +++ b/base/mac/wrap_cg_display.h
@@ -0,0 +1,148 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_MAC_WRAP_CG_DISPLAY_H_ +#define BASE_MAC_WRAP_CG_DISPLAY_H_ + +// All these symbols have incorrect availability annotations in the 13.3 SDK. +// These have the correct annotation. See https://crbug.com/1431897. +// TODO(thakis): Remove this once FB12109479 is fixed and we updated to an SDK +// with the fix. + +#include <CoreGraphics/CoreGraphics.h> + +inline CGDisplayStreamRef __nullable wrapCGDisplayStreamCreate( + CGDirectDisplayID display, + size_t outputWidth, + size_t outputHeight, + int32_t pixelFormat, + CFDictionaryRef __nullable properties, + CGDisplayStreamFrameAvailableHandler __nullable handler) + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "Please use ScreenCaptureKit API's " + "initWithFilter:configuration:delegate: instead") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return CGDisplayStreamCreate(display, outputWidth, outputHeight, pixelFormat, + properties, handler); +#pragma clang diagnostic pop +} + +inline CFRunLoopSourceRef __nullable wrapCGDisplayStreamGetRunLoopSource( + CGDisplayStreamRef cg_nullable displayStream) + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "There is no direct replacement for this function. Please use " + "ScreenCaptureKit API's SCStream to replace CGDisplayStream") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return CGDisplayStreamGetRunLoopSource(displayStream); +#pragma clang diagnostic pop +} + +inline CGError wrapCGDisplayStreamStart( + CGDisplayStreamRef cg_nullable displayStream) + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "Please use ScreenCaptureKit API's " + "startCaptureWithCompletionHandler: to start a stream instead") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return CGDisplayStreamStart(displayStream); +#pragma clang diagnostic pop +} + +inline CGError wrapCGDisplayStreamStop( + CGDisplayStreamRef cg_nullable displayStream) + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "Please use ScreenCaptureKit API's " + "stopCaptureWithCompletionHandler: to stop a stream instead") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return CGDisplayStreamStop(displayStream); +#pragma clang diagnostic pop +} + +inline _Null_unspecified CFStringRef wrapkCGDisplayStreamColorSpace() + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "Please use ScreenCaptureKit API's SCStreamConfiguration " + "colorSpaceName property instead") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return kCGDisplayStreamColorSpace; +#pragma clang diagnostic pop +} + +inline _Null_unspecified CFStringRef wrapkCGDisplayStreamDestinationRect() + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "Please use ScreenCaptureKit API's SCStreamConfiguration " + "destinationRect property instead") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return kCGDisplayStreamDestinationRect; +#pragma clang diagnostic pop +} + +inline _Null_unspecified CFStringRef wrapkCGDisplayStreamMinimumFrameTime() + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "Please use ScreenCaptureKit API's SCStreamConfiguration " + "minimumFrameInterval property instead") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return kCGDisplayStreamMinimumFrameTime; +#pragma clang diagnostic pop +} + +inline _Null_unspecified CFStringRef wrapkCGDisplayStreamPreserveAspectRatio() + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "Please use ScreenCaptureKit API's SCStreamConfiguration " + "preserveAspectRatio property instead") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return kCGDisplayStreamPreserveAspectRatio; +#pragma clang diagnostic pop +} + +inline _Null_unspecified CFStringRef wrapkCGDisplayStreamShowCursor() + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "Please use ScreenCaptureKit API's SCStreamConfiguration showsCursor " + "property instead") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return kCGDisplayStreamShowCursor; +#pragma clang diagnostic pop +} + +inline const CGRect* __nullable +wrapCGDisplayStreamUpdateGetRects(CGDisplayStreamUpdateRef __nullable updateRef, + CGDisplayStreamUpdateRectType rectType, + size_t* _Null_unspecified rectCount) + CG_AVAILABLE_BUT_DEPRECATED( + 10.8, + 14.0, + "Please use ScreenCaptureKit API's SCStreamFrameInfo with " + "SCStreamFrameInfoContentRect instead") { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + return CGDisplayStreamUpdateGetRects(updateRef, rectType, rectCount); +#pragma clang diagnostic pop +} + +#endif // BASE_MAC_WRAP_CG_DISPLAY_H_
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1 index a34f9e2..c89eb9f 100644 --- a/build/fuchsia/linux_internal.sdk.sha1 +++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@ -12.20230413.0.1 +12.20230413.1.1
diff --git a/cc/metrics/average_lag_tracking_manager_unittest.cc b/cc/metrics/average_lag_tracking_manager_unittest.cc index c374d8ce..7548c0f9 100644 --- a/cc/metrics/average_lag_tracking_manager_unittest.cc +++ b/cc/metrics/average_lag_tracking_manager_unittest.cc
@@ -97,7 +97,7 @@ ui::ET_GESTURE_SCROLL_UPDATE, ui::ScrollInputType::kTouchscreen, kScrollIsNotInertial, scroll_update_type, delta, event_time, arrived_in_browser_main_timestamp, - base::IdType64<class ui::LatencyInfo>(trace_id)); + base::IdType64<class ui::LatencyInfo>(trace_id), base::TimeTicks()); } AverageLagTrackingManager average_lag_tracking_manager_;
diff --git a/cc/metrics/compositor_frame_reporter_unittest.cc b/cc/metrics/compositor_frame_reporter_unittest.cc index 7a3c45d..0d8d6a1 100644 --- a/cc/metrics/compositor_frame_reporter_unittest.cc +++ b/cc/metrics/compositor_frame_reporter_unittest.cc
@@ -103,7 +103,7 @@ if (stage_durations[i] >= 0) { AdvanceNowByUs(stage_durations[i]); metrics->SetDispatchStageTimestamp( - EventMetrics::DispatchStage(i + 1)); + EventMetrics::DispatchStage(i + 2)); } } } @@ -112,9 +112,11 @@ std::unique_ptr<EventMetrics> CreateEventMetrics(ui::EventType type) { const base::TimeTicks event_time = AdvanceNowByUs(3); + const base::TimeTicks arrived_in_browser_main_timestamp = AdvanceNowByUs(2); AdvanceNowByUs(3); - return SetupEventMetrics( - EventMetrics::CreateForTesting(type, event_time, &test_tick_clock_)); + return SetupEventMetrics(EventMetrics::CreateForTesting( + type, event_time, arrived_in_browser_main_timestamp, + &test_tick_clock_)); } // Creates EventMetrics with elements in stage_durations representing each @@ -1584,13 +1586,15 @@ // Test with no previous stage predictions. std::vector<base::TimeDelta> expected_predictions1(kNumDispatchStages, base::Microseconds(-1)); - IntToTimeDeltaVector(expected_predictions1, - std::vector<int>{/*kArrivedInBrowserMain=*/300, - /*kArrivedInRendererCompositor=*/300, - /*kRendererCompositorStarted=*/300, - /*kRendererCompositorFinished=*/300, - /*kRendererMainStarted=*/300, - /*kRendererMainFinished=*/300}); + IntToTimeDeltaVector( + expected_predictions1, + std::vector<int>{/*kScrollsBlockingTouchDispatchedToRenderer=*/-1, + /*kArrivedInBrowserMain=*/300, + /*kArrivedInRendererCompositor=*/300, + /*kRendererCompositorStarted=*/300, + /*kRendererCompositorFinished=*/300, + /*kRendererMainStarted=*/300, + /*kRendererMainFinished=*/300}); base::TimeDelta expected_transition1 = base::Microseconds(300); base::TimeDelta expected_total1 = base::Microseconds(2400); CompositorFrameReporter::EventLatencyInfo actual_predictions1 = @@ -1603,14 +1607,14 @@ std::vector<base::TimeDelta> expected_predictions2(kNumDispatchStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_predictions2, - std::vector<int>{262, 262, 300, 412, 225, 450}); + std::vector<int>{300, 262, 262, 300, 412, 225, 450}); base::TimeDelta expected_transition2 = base::Microseconds(390); - base::TimeDelta expected_total2 = base::Microseconds(2601); + base::TimeDelta expected_total2 = base::Microseconds(2901); CompositorFrameReporter::EventLatencyInfo actual_predictions2 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions2.dispatch_durations, - std::vector<int>{250, 250, 300, 450, 200, 500}); + std::vector<int>{300, 250, 250, 300, 450, 200, 500}); actual_predictions2.transition_duration = base::Microseconds(420); pipeline_reporter_->CalculateEventLatencyPrediction( actual_predictions2, kLatencyPredictionDeviationThreshold); @@ -1619,14 +1623,14 @@ std::vector<base::TimeDelta> expected_predictions3(kNumDispatchStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_predictions3, - std::vector<int>{300, 375, 450, 300, 300, 300}); + std::vector<int>{300, 300, 375, 450, 300, 300, 300}); base::TimeDelta expected_transition3 = base::Microseconds(270); - base::TimeDelta expected_total3 = base::Microseconds(2595); + base::TimeDelta expected_total3 = base::Microseconds(2895); CompositorFrameReporter::EventLatencyInfo actual_predictions3 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions3.dispatch_durations, - std::vector<int>{-1, 400, 500, 300, -1, -1}); + std::vector<int>{300, -1, 400, 500, 300, -1, -1}); actual_predictions3.transition_duration = base::Microseconds(260); pipeline_reporter_->CalculateEventLatencyPrediction( actual_predictions3, kLatencyPredictionDeviationThreshold); @@ -1688,7 +1692,7 @@ std::vector<base::TimeDelta> expected_predictions1(kNumDispatchStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_predictions1, - std::vector<int>{200, 400, 600, 700, -1, -1}); + std::vector<int>{-1, 200, 400, 600, 700, -1, -1}); base::TimeDelta expected_transition1 = base::Microseconds(470); base::TimeDelta expected_total1 = base::Microseconds(2670); CompositorFrameReporter::EventLatencyInfo actual_predictions1 = @@ -1701,14 +1705,14 @@ std::vector<base::TimeDelta> expected_predictions2(kNumDispatchStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_predictions2, - std::vector<int>{125, 250, 375, 475, 200, 500}); + std::vector<int>{100, 125, 250, 375, 475, 200, 500}); base::TimeDelta expected_transition2 = base::Microseconds(402); - base::TimeDelta expected_total2 = base::Microseconds(2627); + base::TimeDelta expected_total2 = base::Microseconds(2727); CompositorFrameReporter::EventLatencyInfo actual_predictions2 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions2.dispatch_durations, - std::vector<int>{100, 200, 300, 400, 200, 500}); + std::vector<int>{100, 100, 200, 300, 400, 200, 500}); actual_predictions2.transition_duration = base::Microseconds(380); pipeline_reporter_->CalculateEventLatencyPrediction( actual_predictions2, kLatencyPredictionDeviationThreshold); @@ -1717,14 +1721,14 @@ std::vector<base::TimeDelta> expected_predictions3(kNumDispatchStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_predictions3, - std::vector<int>{143, 400, 525, 745, -1, -1}); + std::vector<int>{125, 143, 400, 525, 745, -1, -1}); base::TimeDelta expected_transition3 = base::Microseconds(492); - base::TimeDelta expected_total3 = base::Microseconds(2605); + base::TimeDelta expected_total3 = base::Microseconds(2730); CompositorFrameReporter::EventLatencyInfo actual_predictions3 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions3.dispatch_durations, - std::vector<int>{125, 400, 500, 760, -1, -1}); + std::vector<int>{125, 125, 400, 500, 760, -1, -1}); actual_predictions3.transition_duration = base::Microseconds(500); pipeline_reporter_->CalculateEventLatencyPrediction( actual_predictions3, kLatencyPredictionDeviationThreshold); @@ -1796,13 +1800,15 @@ // Test with no previous stage predictions. std::vector<base::TimeDelta> expected_dispatch1(kNumDispatchStages, base::Microseconds(-1)); - IntToTimeDeltaVector(expected_dispatch1, - std::vector<int>{/*kArrivedInBrowserMain=*/300, - /*kArrivedInRendererCompositor=*/300, - /*kRendererCompositorStarted=*/300, - /*kRendererCompositorFinished=*/300, - /*kRendererMainStarted=*/300, - /*kRendererMainFinished=*/300}); + IntToTimeDeltaVector( + expected_dispatch1, + std::vector<int>{/*kScrollsBlockingTouchDispatchedToRenderer=*/-1, + /*kArrivedInBrowserMain=*/300, + /*kArrivedInRendererCompositor=*/300, + /*kRendererCompositorStarted=*/300, + /*kRendererCompositorFinished=*/300, + /*kRendererMainStarted=*/300, + /*kRendererMainFinished=*/300}); base::TimeDelta expected_transition1 = base::Microseconds(300); std::vector<base::TimeDelta> expected_compositor1(kNumOfCompositorStages, base::Microseconds(-1)); @@ -1819,18 +1825,18 @@ std::vector<base::TimeDelta> expected_dispatch2(kNumDispatchStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_dispatch2, - std::vector<int>{262, 262, 300, 412, 225, 450}); + std::vector<int>{250, 262, 262, 300, 412, 225, 450}); base::TimeDelta expected_transition2 = base::Microseconds(390); std::vector<base::TimeDelta> expected_compositor2(kNumOfCompositorStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_compositor2, std::vector<int>{465, 500, 90, 720, 410, 742, 390}); - base::TimeDelta expected_total2 = base::Microseconds(5618); + base::TimeDelta expected_total2 = base::Microseconds(5868); CompositorFrameReporter::EventLatencyInfo actual_predictions2 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions2.dispatch_durations, - std::vector<int>{250, 250, 300, 450, 200, 500}); + std::vector<int>{250, 250, 250, 300, 450, 200, 500}); actual_predictions2.transition_duration = base::Microseconds(420); IntToTimeDeltaVector(actual_predictions2.compositor_durations, std::vector<int>{520, 500, 90, 720, 410, 890, 420}); @@ -1841,18 +1847,18 @@ std::vector<base::TimeDelta> expected_dispatch3(kNumDispatchStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_dispatch3, - std::vector<int>{375, 375, 450, 300, 300, 300}); + std::vector<int>{400, 375, 375, 450, 300, 300, 300}); base::TimeDelta expected_transition3 = base::Microseconds(270); std::vector<base::TimeDelta> expected_compositor3(kNumOfCompositorStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_compositor3, std::vector<int>{300, 500, -1, -1, 410, 742, 390}); - base::TimeDelta expected_total3 = base::Microseconds(4712); + base::TimeDelta expected_total3 = base::Microseconds(5112); CompositorFrameReporter::EventLatencyInfo actual_predictions3 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions3.dispatch_durations, - std::vector<int>{400, 400, 500, 300, -1, -1}); + std::vector<int>{400, 400, 400, 500, 300, -1, -1}); actual_predictions3.transition_duration = base::Microseconds(260); IntToTimeDeltaVector(actual_predictions3.compositor_durations, std::vector<int>{-1, 500, -1, -1, 410, 890, 420}); @@ -1939,21 +1945,23 @@ // Test with no previous stage predictions. std::vector<base::TimeDelta> expected_dispatch1(kNumDispatchStages, base::Microseconds(-1)); - IntToTimeDeltaVector(expected_dispatch1, - std::vector<int>{/*kArrivedInBrowserMain=*/300, - /*kArrivedInRendererCompositor=*/300, - /*kRendererCompositorStarted=*/300, - /*kRendererCompositorFinished=*/300, - /*kRendererMainStarted=*/300, - /*kRendererMainFinished=*/300}); + IntToTimeDeltaVector( + expected_dispatch1, + std::vector<int>{/*kScrollsBlockingTouchDispatchedToRenderer=*/-1, + /*kArrivedInBrowserMain=*/300, + /*kArrivedInRendererCompositor=*/300, + /*kRendererCompositorStarted=*/300, + /*kRendererCompositorFinished=*/300, + /*kRendererMainStarted=*/300, + /*kRenderePrMainFinished=*/300}); base::TimeDelta expected_transition1 = - base::Microseconds(300) + kTouchEventTransition; + base::Microseconds(302) + kTouchEventTransition; std::vector<base::TimeDelta> expected_compositor1(kNumOfCompositorStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_compositor1, std::vector<int>{300, -1, -1, -1, -1, 300, 300}); base::TimeDelta expected_total1 = - base::Microseconds(3000) + kTouchEventTransition; + base::Microseconds(3002) + kTouchEventTransition; CompositorFrameReporter::EventLatencyInfo actual_predictions1 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); @@ -1964,18 +1972,18 @@ std::vector<base::TimeDelta> expected_dispatch2(kNumDispatchStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_dispatch2, - std::vector<int>{262, 262, 300, 412, 225, 450}); + std::vector<int>{250, 262, 262, 300, 412, 225, 450}); base::TimeDelta expected_transition2 = base::Microseconds(393); std::vector<base::TimeDelta> expected_compositor2(kNumOfCompositorStages, base::Microseconds(-1)); IntToTimeDeltaVector(expected_compositor2, std::vector<int>{465, 500, 90, 720, 410, 742, 390}); - base::TimeDelta expected_total2 = base::Microseconds(5621); + base::TimeDelta expected_total2 = base::Microseconds(5871); CompositorFrameReporter::EventLatencyInfo actual_predictions2 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions2.dispatch_durations, - std::vector<int>{250, 250, 300, 450, 200, 500}); + std::vector<int>{250, 250, 250, 300, 450, 200, 500}); actual_predictions2.transition_duration = base::Microseconds(420); IntToTimeDeltaVector(actual_predictions2.compositor_durations, std::vector<int>{520, 500, 90, 720, 410, 890, 420}); @@ -2052,7 +2060,7 @@ CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(expected_predictions1.dispatch_durations, - std::vector<int>{300, 300, 300, 300, 50000, 300}); + std::vector<int>{-1, 300, 300, 300, 300, 50000, 300}); expected_predictions1.transition_duration = base::Microseconds(300); IntToTimeDeltaVector(expected_predictions1.compositor_durations, std::vector<int>{300, -1, -1, -1, -1, 50000, 300}); @@ -2075,17 +2083,17 @@ CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(expected_predictions2.dispatch_durations, - std::vector<int>{300, 300, 300, 300, 12725, 300}); + std::vector<int>{300, 300, 300, 300, 300, 12725, 300}); expected_predictions2.transition_duration = base::Microseconds(300); IntToTimeDeltaVector(expected_predictions2.compositor_durations, std::vector<int>{300, -1, -1, -1, -1, 50000, 300}); - expected_predictions2.total_duration = base::Microseconds(65125); + expected_predictions2.total_duration = base::Microseconds(65425); CompositorFrameReporter::EventLatencyInfo actual_predictions2 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions2.dispatch_durations, - std::vector<int>{300, 300, 300, 300, 300, 300}); + std::vector<int>{300, 300, 300, 300, 300, 300, 300}); actual_predictions2.transition_duration = base::Microseconds(300); IntToTimeDeltaVector(actual_predictions2.compositor_durations, std::vector<int>{300, -1, -1, -1, -1, 50000, 300}); @@ -2103,17 +2111,17 @@ CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(expected_predictions3.dispatch_durations, - std::vector<int>{300, 300, 300, 300, 12725, 300}); + std::vector<int>{300, 300, 300, 300, 300, 12725, 300}); expected_predictions3.transition_duration = base::Microseconds(300); IntToTimeDeltaVector(expected_predictions3.compositor_durations, std::vector<int>{300, -1, -1, -1, -1, 12725, 300}); - expected_predictions3.total_duration = base::Microseconds(27850); + expected_predictions3.total_duration = base::Microseconds(28150); CompositorFrameReporter::EventLatencyInfo actual_predictions3 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions3.dispatch_durations, - std::vector<int>{300, 300, 300, 300, 300, 300}); + std::vector<int>{300, 300, 300, 300, 300, 300, 300}); actual_predictions3.transition_duration = base::Microseconds(300); IntToTimeDeltaVector(actual_predictions3.compositor_durations, std::vector<int>{300, -1, -1, -1, -1, 300, 300}); @@ -2132,21 +2140,16 @@ actual_predictions1.dispatch_durations[i]); EXPECT_EQ(expected_predictions2.dispatch_durations[i], actual_predictions2.dispatch_durations[i]); - ; EXPECT_EQ(expected_predictions3.dispatch_durations[i], actual_predictions3.dispatch_durations[i]); - ; } for (int i = 0; i < kNumOfCompositorStages; i++) { EXPECT_EQ(expected_predictions1.compositor_durations[i], actual_predictions1.compositor_durations[i]); - ; EXPECT_EQ(expected_predictions2.compositor_durations[i], actual_predictions2.compositor_durations[i]); - ; EXPECT_EQ(expected_predictions3.compositor_durations[i], actual_predictions3.compositor_durations[i]); - ; } EXPECT_EQ(expected_predictions1.transition_duration, actual_predictions1.transition_duration); @@ -2217,7 +2220,7 @@ CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(expected_predictions1.dispatch_durations, - std::vector<int>{10300, 262, -1, -1, 262, 42500}); + std::vector<int>{-1, 10300, 262, -1, -1, 262, 42500}); expected_predictions1.transition_duration = base::Microseconds(300); IntToTimeDeltaVector(expected_predictions1.compositor_durations, std::vector<int>{300, -1, -1, -1, -1, 15200, 300}); @@ -2227,7 +2230,7 @@ CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions1.dispatch_durations, - std::vector<int>{400, 300, -1, -1, 300, 40000}); + std::vector<int>{-1, 400, 300, -1, -1, 300, 40000}); actual_predictions1.transition_duration = base::Microseconds(300); IntToTimeDeltaVector(actual_predictions1.compositor_durations, std::vector<int>{300, -1, -1, -1, -1, 3600, 300}); @@ -2248,18 +2251,18 @@ CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(expected_predictions2.dispatch_durations, - std::vector<int>{10225, 262, -1, -1, 262, 12725}); + std::vector<int>{300, 10225, 262, -1, -1, 262, 12725}); expected_predictions2.transition_duration = base::Microseconds(300); IntToTimeDeltaVector(expected_predictions2.compositor_durations, std::vector<int>{300, -1, -1, -1, -1, 12725, 300}); - expected_predictions2.total_duration = base::Microseconds(37099); + expected_predictions2.total_duration = base::Microseconds(37399); CompositorFrameReporter::EventLatencyInfo actual_predictions2 = CompositorFrameReporter::EventLatencyInfo(kNumDispatchStages, kNumOfCompositorStages); IntToTimeDeltaVector(actual_predictions2.dispatch_durations, - std::vector<int>{300, 300, -1, -1, 300, 300}); + std::vector<int>{300, 300, 300, -1, -1, 300, 300}); actual_predictions2.transition_duration = base::Microseconds(300); IntToTimeDeltaVector(actual_predictions2.compositor_durations, std::vector<int>{300, -1, -1, -1, -1, 300, 300});
diff --git a/cc/metrics/compositor_frame_reporting_controller_unittest.cc b/cc/metrics/compositor_frame_reporting_controller_unittest.cc index 654e1dc..142335b 100644 --- a/cc/metrics/compositor_frame_reporting_controller_unittest.cc +++ b/cc/metrics/compositor_frame_reporting_controller_unittest.cc
@@ -253,9 +253,11 @@ std::unique_ptr<EventMetrics> CreateEventMetrics(ui::EventType type) { const base::TimeTicks event_time = AdvanceNowByMs(10); + const base::TimeTicks arrived_in_browser_main_timestamp = AdvanceNowByMs(3); AdvanceNowByMs(10); - return SetupEventMetrics( - EventMetrics::CreateForTesting(type, event_time, &test_tick_clock_)); + return SetupEventMetrics(EventMetrics::CreateForTesting( + type, event_time, arrived_in_browser_main_timestamp, + &test_tick_clock_)); } std::unique_ptr<EventMetrics> CreateScrollBeginEventMetrics(
diff --git a/cc/metrics/event_latency_tracing_recorder.cc b/cc/metrics/event_latency_tracing_recorder.cc index 6877c9d6..7d8d11ac0 100644 --- a/cc/metrics/event_latency_tracing_recorder.cc +++ b/cc/metrics/event_latency_tracing_recorder.cc
@@ -63,12 +63,26 @@ switch (start_stage) { case EventMetrics::DispatchStage::kGenerated: switch (end_stage) { + case EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer: case EventMetrics::DispatchStage::kArrivedInBrowserMain: return "GenerationToBrowserMain"; case EventMetrics::DispatchStage::kArrivedInRendererCompositor: return "GenerationToRendererCompositor"; default: - NOTREACHED(); + NOTREACHED() << static_cast<int>(end_stage); + return ""; + } + case EventMetrics::DispatchStage::kScrollsBlockingTouchDispatchedToRenderer: + switch (end_stage) { + case EventMetrics::DispatchStage::kArrivedInBrowserMain: + // This stage can only be in a Scroll EventLatency. It means a path of + // a corresponding blocking TouchMove from BrowserMain To Renderer To + // BrowserMain. Look at the corresponding TouchMove EventLatency for + // a more detailed breakdown of this stage. + return "TouchRendererHandlingToBrowserMain"; + default: + NOTREACHED() << static_cast<int>(end_stage); return ""; } case EventMetrics::DispatchStage::kArrivedInBrowserMain: @@ -82,7 +96,7 @@ case EventMetrics::DispatchStage::kRendererMainStarted: return "RendererCompositorToMain"; default: - NOTREACHED(); + NOTREACHED() << static_cast<int>(end_stage); return ""; } case EventMetrics::DispatchStage::kRendererCompositorStarted:
diff --git a/cc/metrics/event_metrics.cc b/cc/metrics/event_metrics.cc index 14d56dd6..882896b 100644 --- a/cc/metrics/event_metrics.cc +++ b/cc/metrics/event_metrics.cc
@@ -213,6 +213,14 @@ // static std::unique_ptr<EventMetrics> EventMetrics::Create(ui::EventType type, base::TimeTicks timestamp) { + return Create(type, timestamp, base::TimeTicks()); +} + +// static +std::unique_ptr<EventMetrics> EventMetrics::Create( + ui::EventType type, + base::TimeTicks timestamp, + base::TimeTicks arrived_in_browser_main_timestamp) { // TODO(crbug.com/1157090): We expect that `timestamp` is not null, but there // seems to be some tests that are emitting events with null timestamp. We // should investigate and try to fix those cases and add a `DCHECK` here to @@ -221,7 +229,8 @@ DCHECK(!IsGestureScroll(type) && !IsGesturePinch(type)); std::unique_ptr<EventMetrics> metrics = - CreateInternal(type, timestamp, base::DefaultTickClock::GetInstance()); + CreateInternal(type, timestamp, arrived_in_browser_main_timestamp, + base::DefaultTickClock::GetInstance()); if (!metrics) return nullptr; @@ -234,11 +243,12 @@ std::unique_ptr<EventMetrics> EventMetrics::CreateForTesting( ui::EventType type, base::TimeTicks timestamp, + base::TimeTicks arrived_in_browser_main_timestamp, const base::TickClock* tick_clock) { DCHECK(!timestamp.is_null()); std::unique_ptr<EventMetrics> metrics = - CreateInternal(type, timestamp, tick_clock); + CreateInternal(type, timestamp, base::TimeTicks(), tick_clock); if (!metrics) return nullptr; @@ -260,8 +270,8 @@ if (!existing) return nullptr; - std::unique_ptr<EventMetrics> metrics = - CreateInternal(type, base::TimeTicks(), existing->tick_clock_); + std::unique_ptr<EventMetrics> metrics = CreateInternal( + type, base::TimeTicks(), base::TimeTicks(), existing->tick_clock_); if (!metrics) return nullptr; @@ -276,14 +286,16 @@ std::unique_ptr<EventMetrics> EventMetrics::CreateInternal( ui::EventType type, base::TimeTicks timestamp, + base::TimeTicks arrived_in_browser_main_timestamp, const base::TickClock* tick_clock) { absl::optional<EventType> interesting_type = ToInterestingEventType(type, /*scroll_is_inertial=*/absl::nullopt, /*scroll_update_type=*/absl::nullopt); if (!interesting_type) return nullptr; - return base::WrapUnique( - new EventMetrics(*interesting_type, timestamp, tick_clock)); + return base::WrapUnique(new EventMetrics(*interesting_type, timestamp, + arrived_in_browser_main_timestamp, + tick_clock)); } EventMetrics::EventMetrics(EventType type, @@ -343,6 +355,13 @@ tick_clock_->NowTicks(); } +void EventMetrics::SetDispatchStageTimestamp(DispatchStage stage, + base::TimeTicks timestamp) { + DCHECK(dispatch_stage_timestamps_[static_cast<size_t>(stage)].is_null()); + + dispatch_stage_timestamps_[static_cast<size_t>(stage)] = timestamp; +} + base::TimeTicks EventMetrics::GetDispatchStageTimestamp( DispatchStage stage) const { return dispatch_stage_timestamps_[static_cast<size_t>(stage)]; @@ -405,7 +424,8 @@ ui::ScrollInputType input_type, bool is_inertial, base::TimeTicks timestamp, - base::TimeTicks arrived_in_browser_main_timestamp) { + base::TimeTicks arrived_in_browser_main_timestamp, + base::TimeTicks blocking_touch_dispatched_to_renderer) { // TODO(crbug.com/1157090): We expect that `timestamp` is not null, but there // seems to be some tests that are emitting events with null timestamp. We // should investigate and try to fix those cases and add a `DCHECK` here to @@ -421,6 +441,9 @@ metrics->SetDispatchStageTimestamp( DispatchStage::kArrivedInRendererCompositor); + metrics->SetDispatchStageTimestamp( + DispatchStage::kScrollsBlockingTouchDispatchedToRenderer, + blocking_touch_dispatched_to_renderer); return metrics; } @@ -430,7 +453,9 @@ ui::ScrollInputType input_type, bool is_inertial, base::TimeTicks timestamp) { - return Create(type, input_type, is_inertial, timestamp, base::TimeTicks()); + return Create(type, input_type, is_inertial, timestamp, + /*arrived_in_browser_main_timestamp=*/base::TimeTicks(), + /*blocking_touch_dispatched_to_renderer=*/base::TimeTicks()); } // static @@ -544,7 +569,8 @@ float delta, base::TimeTicks timestamp, base::TimeTicks arrived_in_browser_main_timestamp, - TraceId trace_id) { + TraceId trace_id, + base::TimeTicks blocking_touch_dispatched_to_renderer) { // TODO(crbug.com/1157090): We expect that `timestamp` is not null, but there // seems to be some tests that are emitting events with null timestamp. We // should investigate and try to fix those cases and add a `DCHECK` here to @@ -561,6 +587,9 @@ metrics->SetDispatchStageTimestamp( DispatchStage::kArrivedInRendererCompositor); + metrics->SetDispatchStageTimestamp( + DispatchStage::kScrollsBlockingTouchDispatchedToRenderer, + blocking_touch_dispatched_to_renderer); return metrics; } @@ -573,8 +602,10 @@ float delta, base::TimeTicks timestamp, TraceId trace_id) { - return Create(type, input_type, is_inertial, scroll_update_type, delta, - timestamp, base::TimeTicks(), trace_id); + return Create( + type, input_type, is_inertial, scroll_update_type, delta, timestamp, + /*arrived_in_browser_main_timestamp=*/base::TimeTicks(), trace_id, + /*blocking_touch_dispatched_to_renderer=*/base::TimeTicks()); } // static
diff --git a/cc/metrics/event_metrics.h b/cc/metrics/event_metrics.h index 1b1d68b..480fe35 100644 --- a/cc/metrics/event_metrics.h +++ b/cc/metrics/event_metrics.h
@@ -68,6 +68,11 @@ // Stages of event dispatch in different processes/threads. enum class DispatchStage { kGenerated, + // 'kScrollsBlockingTouchDispatchedToRenderer' is used by Scroll events to + // understand when a corresponding TouchMove event arrived in the Browser + // Main. If the related TouchMove wasn't blocking, this stage field is not + // set. + kScrollsBlockingTouchDispatchedToRenderer, kArrivedInBrowserMain, kArrivedInRendererCompositor, kRendererCompositorStarted, @@ -77,16 +82,22 @@ kMaxValue = kRendererMainFinished, }; + static std::unique_ptr<EventMetrics> Create(ui::EventType type, + base::TimeTicks timestamp); + // Returns a new instance if the event is of a type we are interested in. // Otherwise, returns `nullptr`. For scroll and pinch events, use the // appropriate subcalss instead. - static std::unique_ptr<EventMetrics> Create(ui::EventType type, - base::TimeTicks timestamp); + static std::unique_ptr<EventMetrics> Create( + ui::EventType type, + base::TimeTicks timestamp, + base::TimeTicks arrived_in_browser_main_timestamp); // Similar to `Create()` with an extra `base::TickClock` to use in tests. static std::unique_ptr<EventMetrics> CreateForTesting( ui::EventType type, base::TimeTicks timestamp, + base::TimeTicks arrived_in_browser_main_timestamp, const base::TickClock* tick_clock); // Used to create an instance for an event generated based on an existing @@ -182,6 +193,9 @@ void CopyTimestampsFrom(const EventMetrics& other, DispatchStage last_dispatch_stage); + void SetDispatchStageTimestamp(DispatchStage stage, + base::TimeTicks timestamp); + private: friend class ScrollEventMetrics; friend class ScrollUpdateEventMetrics; @@ -189,6 +203,7 @@ static std::unique_ptr<EventMetrics> CreateInternal( ui::EventType type, base::TimeTicks timestamp, + base::TimeTicks arrived_in_browser_main_timestamp, const base::TickClock* tick_clock); EventType type_; @@ -232,6 +247,8 @@ // Returns a new instance if the event is of a type we are interested in. // Otherwise, returns `nullptr`. Should only be used for scroll events other // than scroll-update. + // The |blocking_touch_dispatched_to_renderer| must be not null only for + // scrolls which corresponding TouchMove was blocking. // // TODO(b/224960731): Fix tests and stop supporting the case when // `arrived_in_browser_main_timestamp` is null. @@ -240,11 +257,13 @@ ui::ScrollInputType input_type, bool is_inertial, base::TimeTicks timestamp, - base::TimeTicks arrived_in_browser_main_timestamp); + base::TimeTicks arrived_in_browser_main_timestamp, + base::TimeTicks blocking_touch_dispatched_to_renderer); // Prefer to use `Create()` above. This method is used only by the Browser // process which have own breakdowns. - // Similar to `Create()` above but doesn't set kArrivedInBrowserMain. + // Similar to `Create()` above but doesn't set kArrivedInBrowserMain and + // kScrollsBlockingTouchDispatchedToRenderer. static std::unique_ptr<ScrollEventMetrics> CreateForBrowser( ui::EventType type, ui::ScrollInputType input_type, @@ -319,6 +338,8 @@ // Returns a new instance if the event is of a type we are interested in. // Otherwise, returns `nullptr`. Should only be used for scroll-update events. + // The |blocking_touch_dispatched_to_renderer| must be not null only for + // scrolls which corresponding TouchMove was blocking. // // TODO(b/224960731): Fix tests and stop supporting the case when // `arrived_in_browser_main_timestamp` is null. @@ -330,11 +351,13 @@ float delta, base::TimeTicks timestamp, base::TimeTicks arrived_in_browser_main_timestamp, - TraceId trace_id); + TraceId trace_id, + base::TimeTicks blocking_touch_dispatched_to_renderer); // Prefer to use `Create()` above. This method is used only by the Browser // process which have own breakdowns. - // Similar to `Create()` above but doesn't set kArrivedInBrowserMain. + // Similar to `Create()` above but doesn't set kArrivedInBrowserMain and + // kScrollsBlockingTouchDispatchedToRenderer. static std::unique_ptr<ScrollUpdateEventMetrics> CreateForBrowser( ui::EventType type, ui::ScrollInputType input_type,
diff --git a/cc/metrics/event_metrics_unittest.cc b/cc/metrics/event_metrics_unittest.cc index 758e9c7..81e88c7 100644 --- a/cc/metrics/event_metrics_unittest.cc +++ b/cc/metrics/event_metrics_unittest.cc
@@ -25,6 +25,7 @@ TEST_F(EventMetricsTest, ScrollBeginCreateWithNullBeginRwhTime) { // Arrange base::TimeTicks event_time = base::TimeTicks::Now() - base::Microseconds(100); + base::TimeTicks blocking_touch_dispatched_to_renderer_timestamp; base::TimeTicks arrived_in_browser_main_timestamp; base::TimeTicks now = base::TimeTicks::Now(); @@ -32,7 +33,8 @@ std::unique_ptr<ScrollEventMetrics> scroll_event_metric = ScrollEventMetrics::Create( ui::ET_GESTURE_SCROLL_BEGIN, ui::ScrollInputType::kTouchscreen, - /*is_inertial=*/false, event_time, arrived_in_browser_main_timestamp); + /*is_inertial=*/false, event_time, arrived_in_browser_main_timestamp, + blocking_touch_dispatched_to_renderer_timestamp); // Assert EXPECT_EQ(event_time, scroll_event_metric->GetDispatchStageTimestamp( @@ -43,6 +45,11 @@ // not set EXPECT_TRUE(scroll_event_metric ->GetDispatchStageTimestamp( + EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer) + .is_null()); + EXPECT_TRUE(scroll_event_metric + ->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kArrivedInBrowserMain) .is_null()); EXPECT_TRUE(scroll_event_metric @@ -66,6 +73,8 @@ TEST_F(EventMetricsTest, ScrollBeginCreate) { // Arrange base::TimeTicks event_time = base::TimeTicks::Now() - base::Microseconds(100); + base::TimeTicks blocking_touch_dispatched_to_renderer_timestamp = + base::TimeTicks::Now() - base::Microseconds(70); base::TimeTicks arrived_in_browser_main_timestamp = base::TimeTicks::Now() - base::Microseconds(50); base::TimeTicks now = base::TimeTicks::Now(); @@ -74,11 +83,16 @@ std::unique_ptr<ScrollEventMetrics> scroll_event_metric = ScrollEventMetrics::Create( ui::ET_GESTURE_SCROLL_BEGIN, ui::ScrollInputType::kTouchscreen, - /*is_inertial=*/false, event_time, arrived_in_browser_main_timestamp); + /*is_inertial=*/false, event_time, arrived_in_browser_main_timestamp, + blocking_touch_dispatched_to_renderer_timestamp); // Assert EXPECT_EQ(event_time, scroll_event_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kGenerated)); + EXPECT_EQ(blocking_touch_dispatched_to_renderer_timestamp, + scroll_event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer)); EXPECT_EQ(arrived_in_browser_main_timestamp, scroll_event_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kArrivedInBrowserMain)); @@ -107,12 +121,15 @@ TEST_F(EventMetricsTest, ScrollBeginCreateFromExisting) { // Arrange base::TimeTicks event_time = base::TimeTicks::Now() - base::Microseconds(100); + base::TimeTicks blocking_touch_dispatched_to_renderer_timestamp = + base::TimeTicks::Now() - base::Microseconds(70); base::TimeTicks arrived_in_browser_main_timestamp = base::TimeTicks::Now() - base::Microseconds(50); std::unique_ptr<ScrollEventMetrics> scroll_metric = ScrollEventMetrics::Create( ui::ET_GESTURE_SCROLL_BEGIN, ui::ScrollInputType::kTouchscreen, - /*is_inertial=*/false, event_time, arrived_in_browser_main_timestamp); + /*is_inertial=*/false, event_time, arrived_in_browser_main_timestamp, + blocking_touch_dispatched_to_renderer_timestamp); // Act std::unique_ptr<ScrollEventMetrics> copy_scroll_metric = @@ -128,6 +145,12 @@ copy_scroll_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kGenerated)); EXPECT_EQ(scroll_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer), + copy_scroll_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer)); + EXPECT_EQ(scroll_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kArrivedInBrowserMain), copy_scroll_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kArrivedInBrowserMain)); @@ -161,6 +184,7 @@ TEST_F(EventMetricsTest, ScrollUpdateCreateWithNullBeginRwhTime) { // Arrange base::TimeTicks event_time = base::TimeTicks::Now() - base::Microseconds(100); + base::TimeTicks blocking_touch_dispatched_to_renderer_timestamp; base::TimeTicks arrived_in_browser_main_timestamp; base::TimeTicks now = base::TimeTicks::Now(); TraceId trace_id(123); @@ -171,7 +195,8 @@ ui::ET_GESTURE_SCROLL_UPDATE, ui::ScrollInputType::kTouchscreen, /*is_inertial=*/false, ScrollUpdateEventMetrics::ScrollUpdateType::kContinued, /*delta=*/0.4, - event_time, arrived_in_browser_main_timestamp, trace_id); + event_time, arrived_in_browser_main_timestamp, trace_id, + blocking_touch_dispatched_to_renderer_timestamp); // Assert EXPECT_EQ(trace_id, scroll_event_metric->trace_id()); @@ -183,6 +208,11 @@ // not set EXPECT_TRUE(scroll_event_metric ->GetDispatchStageTimestamp( + EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer) + .is_null()); + EXPECT_TRUE(scroll_event_metric + ->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kArrivedInBrowserMain) .is_null()); EXPECT_TRUE(scroll_event_metric @@ -206,6 +236,8 @@ TEST_F(EventMetricsTest, ScrollUpdateCreate) { // Arrange base::TimeTicks event_time = base::TimeTicks::Now() - base::Microseconds(100); + base::TimeTicks blocking_touch_dispatched_to_renderer_timestamp = + base::TimeTicks::Now() - base::Microseconds(70); base::TimeTicks arrived_in_browser_main_timestamp = base::TimeTicks::Now() - base::Microseconds(50); base::TimeTicks now = base::TimeTicks::Now(); @@ -217,12 +249,17 @@ ui::ET_GESTURE_SCROLL_UPDATE, ui::ScrollInputType::kTouchscreen, /*is_inertial=*/false, ScrollUpdateEventMetrics::ScrollUpdateType::kContinued, /*delta=*/0.4, - event_time, arrived_in_browser_main_timestamp, TraceId(trace_id)); + event_time, arrived_in_browser_main_timestamp, TraceId(trace_id), + blocking_touch_dispatched_to_renderer_timestamp); // Assert EXPECT_EQ(trace_id, scroll_event_metric->trace_id()); EXPECT_EQ(event_time, scroll_event_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kGenerated)); + EXPECT_EQ(blocking_touch_dispatched_to_renderer_timestamp, + scroll_event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer)); EXPECT_EQ(arrived_in_browser_main_timestamp, scroll_event_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kArrivedInBrowserMain)); @@ -251,6 +288,8 @@ TEST_F(EventMetricsTest, ScrollUpdateCreateFromExisting) { // Arrange base::TimeTicks event_time = base::TimeTicks::Now() - base::Microseconds(100); + base::TimeTicks blocking_touch_dispatched_to_renderer_timestamp = + base::TimeTicks::Now() - base::Microseconds(70); base::TimeTicks arrived_in_browser_main_timestamp = base::TimeTicks::Now() - base::Microseconds(50); TraceId trace_id(123); @@ -259,7 +298,8 @@ ui::ET_GESTURE_SCROLL_UPDATE, ui::ScrollInputType::kTouchscreen, /*is_inertial=*/false, ScrollUpdateEventMetrics::ScrollUpdateType::kContinued, /*delta=*/0.4, - event_time, arrived_in_browser_main_timestamp, trace_id); + event_time, arrived_in_browser_main_timestamp, trace_id, + blocking_touch_dispatched_to_renderer_timestamp); // Act std::unique_ptr<ScrollUpdateEventMetrics> copy_scroll_metric = @@ -277,6 +317,12 @@ copy_scroll_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kGenerated)); EXPECT_EQ(scroll_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer), + copy_scroll_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer)); + EXPECT_EQ(scroll_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kArrivedInBrowserMain), copy_scroll_metric->GetDispatchStageTimestamp( EventMetrics::DispatchStage::kArrivedInBrowserMain)); @@ -307,5 +353,95 @@ EventMetrics::DispatchStage::kRendererMainFinished)); } +TEST_F(EventMetricsTest, Create) { + // Arrange + base::TimeTicks event_time = base::TimeTicks::Now() - base::Microseconds(100); + base::TimeTicks arrived_in_browser_main_timestamp = + base::TimeTicks::Now() - base::Microseconds(50); + base::TimeTicks now = base::TimeTicks::Now(); + + // Act + std::unique_ptr<EventMetrics> event_metric = EventMetrics::Create( + ui::ET_TOUCH_MOVED, event_time, arrived_in_browser_main_timestamp); + + // Assert + EXPECT_EQ(event_time, event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kGenerated)); + EXPECT_EQ(arrived_in_browser_main_timestamp, + event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kArrivedInBrowserMain)); + EXPECT_LE(now, + event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kArrivedInRendererCompositor)); + // not set + EXPECT_TRUE(event_metric + ->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererCompositorStarted) + .is_null()); + EXPECT_TRUE(event_metric + ->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererCompositorFinished) + .is_null()); + EXPECT_TRUE(event_metric + ->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererMainStarted) + .is_null()); + EXPECT_TRUE(event_metric + ->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererMainFinished) + .is_null()); +} + +TEST_F(EventMetricsTest, CreateFromExisting) { + // Arrange + base::TimeTicks event_time = base::TimeTicks::Now() - base::Microseconds(100); + base::TimeTicks arrived_in_browser_main_timestamp = + base::TimeTicks::Now() - base::Microseconds(50); + std::unique_ptr<EventMetrics> event_metric = EventMetrics::Create( + ui::ET_TOUCH_MOVED, event_time, arrived_in_browser_main_timestamp); + + // Act + std::unique_ptr<EventMetrics> copy_event_metric = + EventMetrics::CreateFromExisting( + ui::ET_TOUCH_MOVED, + EventMetrics::DispatchStage::kRendererMainFinished, + event_metric.get()); + + // Assert + EXPECT_EQ(event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kGenerated), + copy_event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kGenerated)); + EXPECT_EQ(event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kArrivedInBrowserMain), + copy_event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kArrivedInBrowserMain)); + + EXPECT_EQ(event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kArrivedInRendererCompositor), + copy_event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kArrivedInRendererCompositor)); + + EXPECT_EQ(event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererCompositorStarted), + copy_event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererCompositorStarted)); + + EXPECT_EQ(event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererCompositorFinished), + copy_event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererCompositorFinished)); + + EXPECT_EQ(event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererMainStarted), + copy_event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererMainStarted)); + + EXPECT_EQ(event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererMainFinished), + copy_event_metric->GetDispatchStageTimestamp( + EventMetrics::DispatchStage::kRendererMainFinished)); +} + } // namespace } // namespace cc
diff --git a/cc/metrics/events_metrics_manager_unittest.cc b/cc/metrics/events_metrics_manager_unittest.cc index 2692020..713705c 100644 --- a/cc/metrics/events_metrics_manager_unittest.cc +++ b/cc/metrics/events_metrics_manager_unittest.cc
@@ -54,8 +54,12 @@ std::unique_ptr<EventMetrics> CreateEventMetrics(ui::EventType type) { test_tick_clock_.Advance(base::Microseconds(10)); base::TimeTicks event_time = test_tick_clock_.NowTicks(); + test_tick_clock_.Advance(base::Microseconds(5)); + base::TimeTicks arrived_in_browser_main_timestamp = + test_tick_clock_.NowTicks(); test_tick_clock_.Advance(base::Microseconds(10)); - return EventMetrics::CreateForTesting(type, event_time, &test_tick_clock_); + return EventMetrics::CreateForTesting( + type, event_time, arrived_in_browser_main_timestamp, &test_tick_clock_); } EventsMetricsManager manager_;
diff --git a/cc/tiles/gpu_image_decode_cache.cc b/cc/tiles/gpu_image_decode_cache.cc index 2735d250e..e6d296b 100644 --- a/cc/tiles/gpu_image_decode_cache.cc +++ b/cc/tiles/gpu_image_decode_cache.cc
@@ -637,7 +637,7 @@ ~GpuImageDecodeTaskImpl() override = default; private: - raw_ptr<GpuImageDecodeCache> cache_; + raw_ptr<GpuImageDecodeCache, DanglingUntriaged> cache_; DrawImage image_; const ImageDecodeCache::TracingInfo tracing_info_; const GpuImageDecodeCache::DecodeTaskType task_type_;
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc index 4b3b837..1c4fb260 100644 --- a/cc/trees/layer_tree_host_impl_unittest.cc +++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -14370,7 +14370,8 @@ : ScrollUpdateEventMetrics::ScrollUpdateType::kContinued, /*delta=*/10.0f, base::TimeTicks::Now(), base::TimeTicks::Now() + base::Milliseconds(1), - /*trace_id*/ base::IdType64<class ui::LatencyInfo>(123))); + /*trace_id*/ base::IdType64<class ui::LatencyInfo>(123), + base::TimeTicks())); host_impl_->active_tree()->AppendEventsMetricsFromMainThread( std::move(events_metrics));
diff --git a/cc/trees/ukm_manager.cc b/cc/trees/ukm_manager.cc index d5c2704..fa6f393 100644 --- a/cc/trees/ukm_manager.cc +++ b/cc/trees/ukm_manager.cc
@@ -206,6 +206,8 @@ switch (dispatch_stage) { case EventMetrics::DispatchStage::kGenerated: switch (end_stage) { + case EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer: case EventMetrics::DispatchStage::kArrivedInBrowserMain: // Will build the `GenerationToRendererCompositor` metric on the // `kArrivedInBrowserMain` stage. @@ -218,6 +220,9 @@ break; } break; + case EventMetrics::DispatchStage:: + kScrollsBlockingTouchDispatchedToRenderer: + break; case EventMetrics::DispatchStage::kArrivedInBrowserMain: DCHECK_EQ(end_stage, EventMetrics::DispatchStage::kArrivedInRendererCompositor);
diff --git a/chrome/VERSION b/chrome/VERSION index 4ba305c..e389504 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=114 MINOR=0 -BUILD=5713 +BUILD=5714 PATCH=0
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index d7b49d2..b0110cee 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -2352,50 +2352,6 @@ ] } - # Defines a target that derives from the chrome public application. This - # can be either an APK or an app bundle module. This supports - # chrome_public_xxx targets (for Android L-M). For Android N+, see instead - # monochrome_public_apk_or_module_tmpl() below. - # - # Variables: - # target_type: Determines the final target type. Should be one of - # 'android_apk', or 'android_app_bundle_module'. - # apk_name: For 'android_apk' target types, name of the final APK without - # an .apk suffix (e.g. 'ChromePublic'). - # is_base_module: For 'android_app_bundle_module' target types only, - # set to true to indicate that this is a base application module - # (instead of a feature module). - template("chrome_public_apk_or_module_tmpl") { - _is_bundle_module = invoker.target_type == "android_app_bundle_module" - chrome_public_common_apk_or_module_tmpl(target_name) { - forward_variables_from(invoker, - [ - "add_view_trace_events", - "apk_name", - "bundle_target", - "is_base_module", - "target_type", - "enable_lint", - "enable_multidex", - "lint_baseline_file", - "lint_suppressions_dep", - "lint_suppressions_file", - "manual_jni_registration", - ]) - deps = chrome_public_shared_deps - - if (_is_bundle_module) { - deps += [ ":chrome_bundle_module_pak_assets" ] - } else { - deps += [ ":chrome_apk_pak_assets" ] - } - - shared_libraries = [ ":libchrome" ] - - version_name = chrome_version_name - } - } - chrome_public_apk_or_module_tmpl("chrome_public_apk") { target_type = "android_apk" apk_name = "ChromePublic" @@ -2548,83 +2504,6 @@ annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] } - # Defines a target that derives from the monochrome public application. This - # can be either an APK or an app bundle module. Note that these only work - # on Android N+ devices, see chrome_public_apk_or_module_tmpl() for a template - # that supports generating targets for older Android releases. - # - # Variables: - # target_type: Either 'android_apk' or 'android_app_bundle_module'. - # apk_name: For APK target types, the final APK name without an .apk - # suffix (e.g. "MonochromePublic"). - # is_base_module: For module target types, a boolean indicating whether - # this is a base bundle module (instead of a feature one). - # is_64_bit_browser: When compiling in a 64-bit configuration, a boolean - # indicating whether the browser is 64-bit or 32-bit. - # include_32_bit_webview: When compiling a 64-bit browser configuration, if - # true, a 32-bit WebView library will also be built and included. - template("monochrome_public_apk_or_module_tmpl") { - _is_trichrome = defined(invoker.is_trichrome) && invoker.is_trichrome - _is_bundle = invoker.target_type == "android_app_bundle_module" - - monochrome_public_common_apk_or_module_tmpl(target_name) { - forward_variables_from(invoker, - [ - "add_view_trace_events", - "apk_name", - "bundle_target", - "expected_android_manifest", - "include_32_bit_webview", - "include_64_bit_webview", - "is_64_bit_browser", - "is_base_module", - "is_trichrome", - "resource_ids_provider_dep", - "static_library_provider", - "target_type", - "use_chromium_linker", - ]) - - if (!_is_trichrome) { - # Resource allowlist used when generating R.java files and causes - # only the webview subset of resources to be marked as non-final. - # Strings in this target will also be kept in the base apk rather than placed in the language splits. - shared_resources_allowlist_target = - "//android_webview:system_webview_no_weblayer_apk" - - # Ensure the localized resources for all locales are used, even when - # a smaller set is specified through aapt_locale_allowlist. - shared_resources_allowlist_locales = platform_pak_locales - } - - deps = [] - if (_is_bundle) { - deps += [ - "//chrome/android:chrome_base_module_resources", - - # deps in delegate_public_impl_java are put into the Chrome module, but the language deps - # are needed by the base module. - "//components/language/android:ulp_delegate_public_java", - ] - } else { - deps += [ ":delegate_public_impl_java" ] - } - if (!_is_trichrome) { - deps += [ - "//android_webview:platform_service_bridge_upstream_implementation_java", - "//android_webview/nonembedded:icon_resources", - "//android_webview/nonembedded:monochrome_devui_launcher_icon_resources", - ] - if (!_is_bundle) { - deps += [ ":monochrome_java" ] - } - if (webview_includes_weblayer) { - deps += [ "//weblayer/browser/java:upstream_java" ] - } - } - } - } - if (android_64bit_target_cpu && skip_secondary_abi_for_cq) { group("trichrome_library_apk") { deps = [ ":trichrome_library_64_apk" ] @@ -2633,7 +2512,8 @@ deps = [ ":monochrome_64_public_apk" ] } } else { - monochrome_public_apk_or_module_tmpl("monochrome_public_apk") { + chrome_public_apk_or_module_tmpl("monochrome_public_apk") { + is_monochrome = true apk_name = "MonochromePublic" target_type = "android_apk" if (android_64bit_target_cpu) { @@ -2672,7 +2552,8 @@ } if (android_64bit_target_cpu) { - monochrome_public_apk_or_module_tmpl("monochrome_64_public_apk") { + chrome_public_apk_or_module_tmpl("monochrome_64_public_apk") { + is_monochrome = true apk_name = "MonochromePublic64" target_type = "android_apk" is_64_bit_browser = true @@ -2850,48 +2731,7 @@ include_32_bit_webview = !skip_secondary_abi_for_cq } - # This is where we would add the shared_libraries entry for - # :libchromefortest in the non-Monochrome version. However, doing so in the - # Monochrome version causes Chrome to crash on startup due to being unable - # to load the library, and looking at the libraries included in the APK - # shows both libchromefortest and libmonochrome, when only one should be - # present. The tests currently work fine with just libmonochrome, so keep - # it this way until we actually need the test-only library. This may be - # related to monochrome_public_common_apk_or_module_tmpl adding its own - # shared libraries, but chrome_public_common_apk_or_module_tmpl not. See - # https://crbug.com/974017. - deps = [ - ":chrome_test_ar_java", - "//third_party/android_sdk:android_test_mock_java", - ] - - # Include ArCore files directly instead of using bundles. This does - # require us to explicitly re-declare our dependency on ARCore, which - # otherwise should have already been included, since the native libraries - # need to know that it is available. Though we'd always need to forcibly - # include the manifest DEP here as well - deps += [ - "//third_party/arcore-android-sdk-client:com_google_ar_core_java", - "//third_party/arcore-android-sdk-client:com_google_ar_core_java__ignored_manifest", - ] - - _libarcore_dir = get_label_info( - "//third_party/arcore-android-sdk-client:com_google_ar_core_java($default_toolchain)", - "target_out_dir") + "/com_google_ar_core_java/jni" - - # We store this as a separate .so in the APK and only load as needed. - if (android_64bit_target_cpu) { - if (skip_secondary_abi_for_cq) { - loadable_modules = [ "$_libarcore_dir/arm64-v8a/libarcore_sdk_c.so" ] - } else { - secondary_abi_loadable_modules = - [ "$_libarcore_dir/armeabi-v7a/libarcore_sdk_c.so" ] - } - } else { - loadable_modules = [ "$_libarcore_dir/armeabi-v7a/libarcore_sdk_c.so" ] - } - - additional_apks = [ "//net/android:net_test_support_apk" ] + deps = [ ":chrome_test_ar_java" ] } } @@ -3114,22 +2954,19 @@ ] } - template("monochrome_or_trichrome_public_bundle_tmpl") { - _base_module_target_name = "${invoker.target_name}__base_bundle_module" + template("chrome_bundle_tmpl") { + _is_monochrome = defined(invoker.is_monochrome) && invoker.is_monochrome _is_trichrome = defined(invoker.is_trichrome) && invoker.is_trichrome + assert(_is_monochrome || _is_trichrome, "TODO: https://crbug.com/1426950") - if (_is_trichrome) { - _bundle_name = "TrichromeChrome${invoker.bundle_suffix}" - } else { - _bundle_name = "MonochromePublic${invoker.bundle_suffix}" - } - - monochrome_public_apk_or_module_tmpl(_base_module_target_name) { + _base_module_target_name = "${invoker.target_name}__base_bundle_module" + chrome_public_apk_or_module_tmpl(_base_module_target_name) { forward_variables_from(invoker, [ "add_view_trace_events", "expected_android_manifest", "is_64_bit_browser", + "is_monochrome", "is_trichrome", "include_32_bit_webview", "include_64_bit_webview", @@ -3137,7 +2974,6 @@ "resource_ids_provider_dep", ]) target_type = "android_app_bundle_module" - is_base_module = true bundle_target = ":${invoker.target_name}" if (defined(invoker.expected_android_manifest_template)) { @@ -3156,6 +2992,7 @@ "include_32_bit_webview", "include_64_bit_webview", "is_64_bit_browser", + "is_monochrome", "is_trichrome", "lint_baseline_file", "lint_min_sdk_version", @@ -3165,20 +3002,19 @@ "expected_libs_and_assets", "expected_proguard_config", ]) - is_monochrome = !_is_trichrome base_module_target = ":$_base_module_target_name" - bundle_name = _bundle_name manifest_package = chrome_public_manifest_package - if (is_monochrome) { - module_descs = monochrome_module_descs - } else { + if (_is_trichrome) { + bundle_name = "TrichromeChrome${invoker.bundle_suffix}" module_descs = chrome_module_descs + } else if (_is_monochrome) { + bundle_name = "MonochromePublic${invoker.bundle_suffix}" + module_descs = monochrome_module_descs } chrome_deps = [ ":delegate_public_impl_java" ] if (!_is_trichrome) { chrome_deps += [ "//chrome/android:monochrome_java" ] } - if (!is_java_debug) { proguard_android_sdk_dep = webview_framework_dep } @@ -3207,7 +3043,9 @@ } else { # Public webview targets don't work with non-public sdks. # https://crbug.com/1000763 - monochrome_or_trichrome_public_bundle_tmpl("monochrome_public_bundle") { + chrome_bundle_tmpl("monochrome_public_bundle") { + is_monochrome = true + # Monochrome bundle is used as our unified lint target, so it needs to set the # lowest shipping minSdkVersion to catch all potential NewApi errors. lint_min_sdk_version = default_min_sdk_version @@ -3247,7 +3085,7 @@ } } - monochrome_or_trichrome_public_bundle_tmpl("trichrome_chrome_bundle") { + chrome_bundle_tmpl("trichrome_chrome_bundle") { bundle_suffix = "" is_trichrome = true static_library_provider = ":trichrome_library_apk" @@ -3360,13 +3198,14 @@ } if (android_64bit_target_cpu) { - monochrome_or_trichrome_public_bundle_tmpl("monochrome_64_public_bundle") { + chrome_bundle_tmpl("monochrome_64_public_bundle") { + is_monochrome = true bundle_suffix = "64" is_64_bit_browser = true include_32_bit_webview = false } - monochrome_or_trichrome_public_bundle_tmpl("trichrome_chrome_64_bundle") { + chrome_bundle_tmpl("trichrome_chrome_64_bundle") { is_trichrome = true bundle_suffix = "64" is_64_bit_browser = true @@ -3379,22 +3218,21 @@ } if (!skip_secondary_abi_for_cq) { - monochrome_or_trichrome_public_bundle_tmpl( - "monochrome_32_public_bundle") { + chrome_bundle_tmpl("monochrome_32_public_bundle") { + is_monochrome = true bundle_suffix = "32" is_64_bit_browser = false include_64_bit_webview = false } - monochrome_or_trichrome_public_bundle_tmpl( - "monochrome_64_32_public_bundle") { + chrome_bundle_tmpl("monochrome_64_32_public_bundle") { + is_monochrome = true bundle_suffix = "6432" is_64_bit_browser = true include_32_bit_webview = true } - monochrome_or_trichrome_public_bundle_tmpl( - "trichrome_chrome_64_32_bundle") { + chrome_bundle_tmpl("trichrome_chrome_64_32_bundle") { is_trichrome = true bundle_suffix = "6432" is_64_bit_browser = true @@ -3405,7 +3243,7 @@ "expectations/$target_name.$target_cpu.libs_and_assets.expected" } } - monochrome_or_trichrome_public_bundle_tmpl("trichrome_chrome_32_bundle") { + chrome_bundle_tmpl("trichrome_chrome_32_bundle") { is_trichrome = true bundle_suffix = "32" is_64_bit_browser = false
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni index 28fe242..ef17c6e 100644 --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -109,8 +109,6 @@ # Variables: # target_type: Either 'android_apk' or 'android_app_bundle_module'. # apk_name: For APK target types, the final APK name without a suffix. -# is_base_module: For bundle module target types, true iff this is a base -# application module, instead of a feature module. # shared_libraries: List of native shared libraries targets to include in # the final target (e.g. [ ":libchrome" ]). # is_monochrome: Indicates that this target contains chrome and webview @@ -124,29 +122,44 @@ # Plus all other variables accepted by android_apk() or # android_app_bundle_module(), depending on the target type. # -template("chrome_public_common_apk_or_module_tmpl") { - assert( - invoker.target_type == "android_apk" || - invoker.target_type == "android_app_bundle_module" || - invoker.target_type == "instrumentation_test_apk", - "Invalid target_type definition, should be 'android_apk' or 'android_app_bundle_module'") +template("chrome_common_apk_or_module_tmpl") { + _target_type = invoker.target_type + assert(_target_type == "android_apk" || + _target_type == "android_app_bundle_module" || + _target_type == "instrumentation_test_apk") _is_monochrome = defined(invoker.is_monochrome) && invoker.is_monochrome _is_trichrome = defined(invoker.is_trichrome) && invoker.is_trichrome - _is_bundle = invoker.target_type == "android_app_bundle_module" + _is_bundle = _target_type == "android_app_bundle_module" + _is_64_bit_browser = + android_64bit_target_cpu && + (!defined(invoker.is_64_bit_browser) || invoker.is_64_bit_browser) if (_is_trichrome || _is_monochrome) { _include_64_bit_webview = android_64bit_target_cpu && (!defined(invoker.include_64_bit_webview) || invoker.include_64_bit_webview) _include_32_bit_webview = !defined(invoker.include_32_bit_webview) || invoker.include_32_bit_webview + _include_primary_abi = !android_64bit_target_cpu || _is_64_bit_browser || + _include_64_bit_webview + _include_secondary_abi = android_64bit_target_cpu && + (!_is_64_bit_browser || _include_32_bit_webview) + if (_include_secondary_abi) { + _secondary_out_dir = + get_label_info("X($android_secondary_abi_toolchain)", "root_out_dir") + not_needed([ "_secondary_out_dir" ]) + } + } else { + _include_primary_abi = true + _include_secondary_abi = false + + # TODO(agrieve): not_needed needed only when not using crashpad trampoline. + not_needed([ + "_include_primary_abi", + "_include_secondary_abi", + ]) } - _is_64_bit_browser = - android_64bit_target_cpu && - (!defined(invoker.is_64_bit_browser) || invoker.is_64_bit_browser) - _is_secondary_abi_primary = !_is_64_bit_browser && android_64bit_target_cpu - not_needed([ "_is_secondary_abi_primary" ]) assert(!(_is_monochrome && _is_trichrome), "Cannot be both trichrome and monochrome!") @@ -154,12 +167,6 @@ "If trichrome library is used, static_library_provider must be set " + "so that a dep can be added on the library APK.") - if (!defined(invoker.target_type)) { - _target_type = "android_apk" - } else { - _target_type = invoker.target_type - } - if (_is_trichrome) { _version_code = TRICHROME_VERSION_MAP["${android_64bit_target_cpu}_${_is_64_bit_browser}_${_include_64_bit_webview}_${_include_32_bit_webview}"] } else if (_is_monochrome) { @@ -169,104 +176,150 @@ _version_code = chrome_modern_version_code } - # TODO(crbug.com/1411557): Remove option for custom manifest. - if (!defined(invoker.android_manifest)) { - if (defined(invoker.manifest_package)) { - _manifest_package = invoker.manifest_package - } else { - _manifest_package = chrome_public_manifest_package - } + if (defined(invoker.manifest_package)) { + _manifest_package = invoker.manifest_package + } else { + _manifest_package = chrome_public_manifest_package + } - _android_manifest = "$target_gen_dir/$target_name/AndroidManifest.xml" + _android_manifest = "$target_gen_dir/$target_name/AndroidManifest.xml" - # TODO(crbug.com/1411557): Move out of manifest/ when downstream is updated. - # _split.xml is used in chrome_bundle template. - _split_android_manifest = - "$target_gen_dir/manifest/$target_name/AndroidManifest_split.xml" - _android_manifest_target_name = "${target_name}__android_manifest" - split_manifest_template(_android_manifest_target_name) { - definitions_in_split = _is_bundle - split_input = "//chrome/android/java/AndroidManifest_split.xml" - split_output = _split_android_manifest - includes = [] - output = _android_manifest - variables = default_chrome_public_jinja_variables + - [ "manifest_package=$_manifest_package" ] - if (_is_trichrome) { - input = "//chrome/android/java/AndroidManifest_trichrome_chrome.xml" - includes = [ "//chrome/android/java/AndroidManifest.xml" ] - variables += - trichrome_jinja_variables + [ "trichrome_version=$_version_code" ] - } else if (_is_monochrome) { - input = "//chrome/android/java/AndroidManifest_monochrome.xml" - includes = [ - "//android_webview/nonembedded/java/AndroidManifest.xml", - "//chrome/android/java/AndroidManifest.xml", - ] - variables += monochrome_android_manifest_jinja_variables - if (_is_64_bit_browser) { - variables += [ "webview_library=libmonochrome_64.so" ] - } else { - variables += [ "webview_library=libmonochrome.so" ] - } + # TODO(crbug.com/1411557): Move out of manifest/ when downstream is updated. + # _split.xml is used in chrome_bundle template. + _split_android_manifest = + "$target_gen_dir/manifest/$target_name/AndroidManifest_split.xml" + _android_manifest_target_name = "${target_name}__android_manifest" + split_manifest_template(_android_manifest_target_name) { + definitions_in_split = _is_bundle + split_input = "//chrome/android/java/AndroidManifest_split.xml" + split_output = _split_android_manifest + includes = [] + output = _android_manifest + variables = default_chrome_public_jinja_variables + + [ "manifest_package=$_manifest_package" ] + if (_is_trichrome) { + input = "//chrome/android/java/AndroidManifest_trichrome_chrome.xml" + includes = [ "//chrome/android/java/AndroidManifest.xml" ] + variables += + trichrome_jinja_variables + [ "trichrome_version=$_version_code" ] + } else if (_is_monochrome) { + input = "//chrome/android/java/AndroidManifest_monochrome.xml" + includes = [ + "//android_webview/nonembedded/java/AndroidManifest.xml", + "//chrome/android/java/AndroidManifest.xml", + ] + variables += monochrome_android_manifest_jinja_variables + if (_is_64_bit_browser) { + variables += [ "webview_library=libmonochrome_64.so" ] } else { - input = "//chrome/android/java/AndroidManifest.xml" + variables += [ "webview_library=libmonochrome.so" ] } - if (_is_monochrome || _is_trichrome) { - _force_32_bit = _include_32_bit_webview && _include_64_bit_webview && - !_is_64_bit_browser - variables += [ - "force_32_bit=$_force_32_bit", - "include_arcore_manifest_flag=$enable_arcore", - ] + } else { + input = "//chrome/android/java/AndroidManifest.xml" + } + if (_is_monochrome || _is_trichrome) { + _force_32_bit = _include_32_bit_webview && _include_64_bit_webview && + !_is_64_bit_browser + variables += [ + "force_32_bit=$_force_32_bit", + "include_arcore_manifest_flag=$enable_arcore", + ] - # TODO(crbug.com/1411557): Remove block. - if (_is_64_bit_browser) { - variables -= [ use_32bit_abi_jinja_variable ] - } + # TODO(crbug.com/1411557): Remove block. + if (_is_64_bit_browser) { + variables -= [ use_32bit_abi_jinja_variable ] } - if (defined(invoker.jinja_input)) { - includes += [ input ] - input = invoker.jinja_input - } - if (defined(invoker.jinja_extra_variables)) { - variables += invoker.jinja_extra_variables - } - if (defined(invoker.jinja_extra_includes)) { - includes += invoker.jinja_extra_includes - } + } + if (defined(invoker.jinja_input)) { + includes += [ input ] + input = invoker.jinja_input + } + if (defined(invoker.jinja_extra_variables)) { + variables += invoker.jinja_extra_variables + } + if (defined(invoker.jinja_extra_includes)) { + includes += invoker.jinja_extra_includes } } target(_target_type, target_name) { - forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) - forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + android_manifest = _android_manifest + android_manifest_dep = ":$_android_manifest_target_name" + manifest_package = _manifest_package - if (!defined(assert_no_deps)) { - assert_no_deps = [] - } - - # https://crbug.com/1415351 - assert_no_deps += [ - "//third_party/androidx:androidx_window_extensions_core_core_java", - "//third_party/androidx:androidx_window_sidecar_sidecar_java", - "//third_party/androidx:androidx_window_window_java_java", - ] - - # TODO(crbug.com/1411557): Do not allows custom manifest dep. - if (defined(_android_manifest_target_name)) { - android_manifest = _android_manifest - android_manifest_dep = ":$_android_manifest_target_name" - manifest_package = _manifest_package - } - - if (!defined(min_sdk_version) && _is_trichrome) { + if (defined(invoker.min_sdk_version)) { + min_sdk_version = invoker.min_sdk_version + } else if (_is_trichrome) { min_sdk_version = 29 } - if (defined(expected_android_manifest)) { + if (defined(invoker.version_name)) { + version_name = invoker.version_name + } else { + version_name = chrome_version_name + } + if (defined(invoker.version_code)) { + # Override for the actual versionCode, but not for trichrome_version. + version_code = invoker.version_code + } else { + version_code = _version_code + } + if (defined(invoker.expected_android_manifest)) { expected_android_manifest_version_code_offset = chrome_version_code expected_android_manifest_library_version_offset = chrome_version_code } + if (_target_type == "android_apk") { + command_line_flags_file = "chrome-command-line" + } + + if (_is_bundle) { + is_base_module = true + + # Sets ISOLATED_SPLITS_ENABLED in BuildConfig.java. + isolated_splits_enabled = true + } + + if (_is_monochrome) { + alternative_android_sdk_dep = webview_framework_dep + app_as_shared_lib = true + + # Resource allowlist used when generating R.java files and causes + # only the webview subset of resources to be marked as non-final. + # Strings in this target will also be kept in the base apk rather than placed in the language splits. + shared_resources_allowlist_target = + "//android_webview:system_webview_no_weblayer_apk" + + # Ensure the localized resources for all locales are used, even when + # a smaller set is specified through aapt_locale_allowlist. + shared_resources_allowlist_locales = platform_pak_locales + + product_config_java_packages = [ + "org.chromium.chrome.browser", + webview_product_config_java_package, + ] + + if (webview_includes_weblayer) { + product_config_java_packages += [ weblayer_product_config_java_package ] + } + } else { + product_config_java_packages = [ "org.chromium.chrome.browser" ] + } + + if (enable_silent_java_assert_reporting) { + custom_assertion_handler = crash_reporting_assertion_handler + } + + if (allow_jni_multiplexing) { + enable_jni_multiplexing = true + } + + # TODO(agrieve): Make this the default for apks with minSdkVersion > 21. + if (_is_monochrome || _is_trichrome) { + no_xml_namespaces = true + } + + # Include resource strings files only for supported locales. + aapt_locale_allowlist = platform_pak_locales + resource_exclusion_regex = common_resource_exclusion_regex resource_exclusion_exceptions = common_resource_exclusion_exceptions @@ -276,7 +329,7 @@ "*ic_lock.*", # Bottom edge seems misaligned. ] - # Note most of these, with the exception of resource_exclusion_exceptions, + # Most of these, with the exception of resource_exclusion_exceptions, # are currently duplicated in system_webview_apk_tmpl.gni. # Used only by alert dialog on tiny screens. @@ -290,256 +343,236 @@ # Instead of manually filtering, unused resource removal would be better: # https://crbug.com/636448 resource_exclusion_regex += "|${_material_package}/xml.*badge_" - _material_package = "*com_google_android_material*" - if (!_is_monochrome) { - product_config_java_packages = [ "org.chromium.chrome.browser" ] - } + if (!is_java_debug) { + # Android supports webp transparent resources properly since API level 18, + # so this can only be activated for modern ones (which target API >= 21). + png_to_webp = true - # Android supports webp transparent resources properly since API level 18, - # so this can only be activated for modern ones (which target API >= 21). - if (!defined(png_to_webp)) { - png_to_webp = !is_java_debug - } + proguard_enabled = true + proguard_configs = [ "//chrome/android/proguard/main.flags" ] + if (_is_monochrome) { + proguard_configs += + [ "//android_webview/nonembedded/java/proguard.flags" ] + } + if (defined(invoker.proguard_configs)) { + proguard_configs += invoker.proguard_configs + } - # We only optimize resources for bundles since APKs are not shipped. - # Resources only live in the base module atm as such we only need to set - # these on the base module - if (_is_bundle) { - # Removes metadata needed for Resources.getIdentifier("resource_name"). - strip_resource_names = !is_java_debug + # We only optimize resources for bundles since APKs are not shipped. + # Resources only live in the base module atm as such we only need to set + # these on the base module + if (_is_bundle) { + # Removes metadata needed for Resources.getIdentifier("resource_name"). + strip_resource_names = true - # Shortens resource file names in apk eg: res/drawable/button.xml -> res/a.xml - short_resource_paths = !is_java_debug + # Shortens resource file names in apk eg: res/drawable/button.xml -> res/a.xml + short_resource_paths = true - # Removes unused resources from the apk. Only enabled on official builds - # since it adds a slow step and serializes the build graph causing fewer - # expensive tasks (eg: proguarding, resource optimization) to be run in - # parallel by adding dependencies between them (adds around 10-20 - # seconds on my machine). - strip_unused_resources = is_official_build - } + # Removes unused resources from the apk. Only enabled on official builds + # since it adds a slow step and serializes the build graph causing fewer + # expensive tasks (eg: proguarding, resource optimization) to be run in + # parallel by adding dependencies between them (adds around 10-20 + # seconds on my machine). + strip_unused_resources = is_official_build - if (!defined(aapt_locale_allowlist)) { - # Include resource strings files only for supported locales. - aapt_locale_allowlist = platform_pak_locales - } - - if (!defined(use_chromium_linker)) { - # The Chromium Linker depends on ASharedMemory_create() introduced in O. - use_chromium_linker = chromium_linker_supported && _is_trichrome - } - - if (_is_trichrome) { - static_library_provider_use_secondary_abi = _is_secondary_abi_primary - - # http://crbug.com/1042107. - if (is_component_build) { - if (android_64bit_target_cpu && _is_64_bit_browser) { - main_component_library = "libmonochrome_64.cr.so" - } else { - main_component_library = "libmonochrome.cr.so" + # Resources config for blocklisting resource names from obfuscation + resources_config_paths = [ "//chrome/android/aapt2.config" ] + if (_is_monochrome || _is_trichrome) { + resources_config_paths += [ "//android_webview/aapt2.config" ] + } + if (defined(invoker.resources_config_paths)) { + resources_config_paths += invoker.resources_config_paths } } } - if (!_is_monochrome && !_is_trichrome) { + deps = [ + "//chrome/android:chrome_base_module_resources", + "//chrome/android:chrome_public_non_pak_assets", + ] + + # TODO(agrieve): Make uncondtional when moving to trampoline. + if (_is_monochrome || _is_trichrome) { + deps += [ "//components/crash/android:handler_java" ] + } + if (_is_monochrome) { + deps += [ "//chrome/android:base_monochrome_module_java" ] + } else { + deps += [ "//chrome/android:base_module_java" ] + } + if (defined(invoker.deps)) { + deps += invoker.deps + } + + if (!_is_trichrome) { + # These go in trichrome library. deps += [ - "//components/crash/core/app:chrome_crashpad_handler_named_as_so", "//gin:v8_snapshot_assets", "//third_party/icu:icu_assets", ] - if (!defined(loadable_modules)) { - loadable_modules = [] - } - loadable_modules += [ "$root_out_dir/libchrome_crashpad_handler.so" ] - if (!defined(library_always_compress)) { - library_always_compress = [] - } - library_always_compress += [ - "libchrome_crashpad_handler.so", - "libchromium_android_linker.so", - ] - } - if (dfmify_dev_ui && !_is_bundle) { - # Dev UI is a feature in a DFM, and APKs don't use DFMs. To make the code - # available for APKs add a dependency on it. - deps += [ "//chrome/android/features/dev_ui:java" ] - } - if (enable_vr && !_is_bundle) { - # VR is a feature in a DFM, and APKs don't use DFMs, but we - # unconditionally include vr code in our native library. To make the code - # available for APKs, add a dependency on it. - deps += [ "//chrome/android/features/vr:java" ] - } - - if (!is_java_debug) { - proguard_enabled = true - if (!defined(proguard_configs)) { - proguard_configs = [] - } - proguard_configs += [ "//chrome/android/proguard/main.flags" ] - } - - if (use_chromium_linker) { - if (_is_secondary_abi_primary) { - _secondary_linker = "//base/android/linker:chromium_android_linker($android_secondary_abi_toolchain)" - deps += [ _secondary_linker ] - _secondary_out_dir = get_label_info(_secondary_linker, "root_out_dir") - secondary_abi_loadable_modules += - [ "$_secondary_out_dir/libchromium_android_linker$shlib_extension" ] - } else { - deps += [ "//base/android/linker:chromium_android_linker" ] - loadable_modules += - [ "$root_out_dir/libchromium_android_linker$shlib_extension" ] - } - } - if (build_with_internal_optimization_guide) { - if (_is_secondary_abi_primary) { - _secondary_optimization_guide = "//components/optimization_guide/internal:optimization_guide_internal($android_secondary_abi_toolchain)" - deps += [ _secondary_optimization_guide ] - _secondary_out_dir = - get_label_info(_secondary_optimization_guide, "root_out_dir") - secondary_abi_loadable_modules += - [ "$_secondary_out_dir/liboptimization_guide_internal.so" ] - } else { - deps += [ "//components/optimization_guide/internal:optimization_guide_internal" ] - loadable_modules += - [ "$root_out_dir/liboptimization_guide_internal.so" ] - } - } - if (_target_type == "android_apk") { - command_line_flags_file = "chrome-command-line" - } - if (!_is_trichrome) { + # TODO(agrieve): This is excluded from trichrome in preparation for + # "synchronized proguarding", which we've since abandoned. Enable for + # trichrome, or just remove the version check altogether. build_config_include_product_version_resource = true deps += [ "//chrome/android:product_version_resources" ] } - if (!_is_bundle || !(_is_monochrome || _is_trichrome)) { - deps += [ "//chrome/android:chrome_all_java" ] - } - if (_is_bundle) { # Required to support macro resources. # See https://crbug.com/1278419 deps += [ ":${target_name}__all_dfm_resources" ] + } else { + # For bundles, this exists in the "chrome" split. + deps += [ "//chrome/android:chrome_all_java" ] + + if (dfmify_dev_ui) { + # For bundles, Dev UI is a feature in a DFM. + deps += [ "//chrome/android/features/dev_ui:java" ] + } + if (enable_vr) { + # For bundles, VR is a feature in a DFM. + deps += [ "//chrome/android/features/vr:java" ] + } + } + + if (_is_monochrome) { + deps += [ + "//android_webview/glue:glue_java", + "//android_webview/nonembedded:monochrome_devui_launcher_icon_resources", + "//android_webview/nonembedded:nonembedded_java", + ] + + # For bundles, this lives in chrome split. + if (!_is_bundle) { + deps += [ "//chrome/android:monochrome_java" ] + } + + if (_include_primary_abi) { + deps += [ "//android_webview:monochrome_webview_primary_abi_assets" ] + } + if (_include_secondary_abi) { + deps += [ "//android_webview:monochrome_webview_secondary_abi_assets" ] + } + } + + if (_is_bundle && _is_monochrome) { + deps += [ "//chrome/android:monochrome_bundle_module_pak_assets" ] + } else if (_is_bundle && _is_trichrome) { + deps += [ "//chrome/android:trichrome_chrome_bundle_module_pak_assets" ] + } else if (_is_bundle) { + deps += [ "//chrome/android:chrome_bundle_module_pak_assets" ] + } else if (_is_monochrome) { + deps += [ "//chrome/android:monochrome_apk_pak_assets" ] + } else { + assert(!_is_trichrome) + deps += [ "//chrome/android:chrome_apk_pak_assets" ] + } + + # https://crbug.com/1415351 + assert_no_deps = [ + "//third_party/androidx:androidx_window_extensions_core_core_java", + "//third_party/androidx:androidx_window_sidecar_sidecar_java", + "//third_party/androidx:androidx_window_window_java_java", + ] + if (defined(invoker.assert_no_deps)) { + assert_no_deps += invoker.assert_no_deps } # Unwind tables are included in the stack_unwinder DFM on Android, so they # aren't needed for bundle builds. However, we keep them for non-bundle # builds, such as test and development apks (e.g. chrome_public_apk), to # allow tests and developers to use them directly. - if (!_is_bundle && add_unwind_tables_in_chrome_32bit_apk) { - _needs_32bit_lib = - target_cpu == "arm" || ((_is_monochrome || _is_trichrome) && - target_cpu == "arm64" && !_is_64_bit_browser) - - if (_needs_32bit_lib) { - if (_is_monochrome || _is_trichrome) { - deps += [ "//chrome/android:libmonochrome_unwind_table_assets" ] - } else { - deps += [ "//chrome/android:libchrome_unwind_table_assets" ] - } + if (!defined(invoker.shared_libraries) && !_is_bundle && + add_unwind_tables_in_chrome_32bit_apk && + (target_cpu == "arm" || + (target_cpu == "arm64" && !_is_64_bit_browser))) { + if (_is_monochrome || _is_trichrome) { + deps += [ "//chrome/android:libmonochrome_unwind_table_assets" ] + } else { + deps += [ "//chrome/android:libchrome_unwind_table_assets" ] } } + data_deps = [] + if (defined(invoker.data_deps)) { + data_deps += invoker.data_deps + } + # Prefer to add this data_dep on the final target instead of java targets # like chrome_all_java so that all other targets can build in parallel with # lint. if (!disable_android_lint) { - if (!defined(data_deps)) { - data_deps = [] - } data_deps += [ "//chrome/android:android_lint" ] } - if (enable_silent_java_assert_reporting) { - custom_assertion_handler = crash_reporting_assertion_handler - } - - if (allow_jni_multiplexing) { - enable_jni_multiplexing = true - } - - if (!defined(version_name)) { - version_name = chrome_version_name - } - version_code = _version_code - - # Override for the actual versionCode, but not for trichrome_version. - if (defined(invoker.version_code)) { - version_code = invoker.version_code - } - } -} - -# The equivalent of chrome_common_apk_or_module_tmpl for all builds of -# monochrome and trichrome chrome. -template("monochrome_public_common_apk_or_module_tmpl") { - chrome_public_common_apk_or_module_tmpl(target_name) { - _overrides = { - _is_bundle_module = defined(invoker.target_type) && - invoker.target_type == "android_app_bundle_module" - - if (_is_bundle_module) { - assert( - defined(invoker.is_base_module), - "_is_bundle_module is true but the invoker does not define is_base_module!") - } - - is_trichrome = defined(invoker.is_trichrome) && invoker.is_trichrome - is_monochrome = !is_trichrome - - shared_libraries = [] - if (defined(invoker.shared_libraries)) { - shared_libraries += invoker.shared_libraries - } + shared_libraries = [] + loadable_modules = [] + if (android_64bit_target_cpu) { secondary_abi_shared_libraries = [] - if (defined(invoker.secondary_abi_shared_libraries)) { - secondary_abi_shared_libraries += invoker.secondary_abi_shared_libraries - } - loadable_modules = [] - if (defined(invoker.loadable_modules)) { - loadable_modules = invoker.loadable_modules - } secondary_abi_loadable_modules = [] - if (defined(invoker.secondary_abi_loadable_modules)) { - secondary_abi_loadable_modules = invoker.secondary_abi_loadable_modules - } - native_lib_placeholders = [] - if (defined(invoker.native_lib_placeholders)) { - native_lib_placeholders = invoker.native_lib_placeholders - } - secondary_native_lib_placeholders = [] - if (defined(invoker.secondary_native_lib_placeholders)) { - secondary_native_lib_placeholders = - invoker.secondary_native_lib_placeholders - } + } + if (defined(invoker.loadable_modules)) { + loadable_modules = invoker.loadable_modules + } + if (defined(invoker.secondary_abi_loadable_modules)) { + secondary_abi_loadable_modules = invoker.secondary_abi_loadable_modules + } - deps = [ - "//chrome/android:chrome_public_non_pak_assets", - "//components/crash/android:handler_java", + if (_is_64_bit_browser && build_hwasan_splits) { + _hwasan_toolchain = "//build/toolchain/android:android_clang_arm64_hwasan" + } + + if (defined(invoker.shared_libraries)) { + shared_libraries += invoker.shared_libraries + } else if (_is_monochrome) { + if (android_64bit_target_cpu) { + # Build //android_webview:monochrome with the opposite bitness that + # Chrome runs in. + if (_is_64_bit_browser) { + shared_libraries += [ "//chrome/android:libmonochrome_64" ] + if (_include_32_bit_webview) { + secondary_abi_shared_libraries += [ "//android_webview:monochrome_64($android_secondary_abi_toolchain)" ] + } + if (build_hwasan_splits) { + shared_libraries += + [ "//chrome/android:libmonochrome_64($_hwasan_toolchain)" ] + } + } else { + if (_include_64_bit_webview) { + shared_libraries += [ "//android_webview:monochrome" ] + } + secondary_abi_shared_libraries += [ + "//chrome/android:libmonochrome($android_secondary_abi_toolchain)", + ] + } + } else { + shared_libraries += [ "//chrome/android:libmonochrome" ] + } + } else if (!_is_trichrome) { + shared_libraries += [ "//chrome/android:libchrome" ] + } + + # TODO(agrieve): Enable for chrome_public_apk as well. + if (enable_arcore && (_is_monochrome || _is_trichrome)) { + # The arcore manifest needs to be merged into the base module because + # the Play Store verifies the com.google.ar.core.min_apk_version + # meta-data tag is in the base manifest. + deps += [ + "//third_party/arcore-android-sdk-client:com_google_ar_core_java", + "//third_party/arcore-android-sdk-client:com_google_ar_core_java__ignored_manifest", ] - if (defined(invoker.deps)) { - deps += invoker.deps - } - if (_is_bundle_module && invoker.is_base_module && enable_arcore && - is_monochrome) { - # AR DFM is disabled - set the loadable_modules / - # secondary_abi_loadable_modules to what would be brought in by the - # module. The AR Java will be brought in by the chrome_bundle target. - # This needs to happen for monochrome builds of base module if ARCore is - # enabled. For Trichrome, the native library is added to - # TrichromeLibrary.apk so it's not needed here. - _libarcore_dir = get_label_info( - "//third_party/arcore-android-sdk-client:com_google_ar_core_java($default_toolchain)", - "target_out_dir") + "/com_google_ar_core_java/jni" + # For Trichrome, the native library is added to TrichromeLibrary.apk so + # it's not needed here. + if (!_is_trichrome) { + _arcore_target = "//third_party/arcore-android-sdk-client:com_google_ar_core_J__unpack_aar" + _libarcore_dir = get_label_info(_arcore_target, "target_out_dir") + + "/com_google_ar_core_java/jni" if (android_64bit_target_cpu) { - if (invoker.is_64_bit_browser) { + if (_is_64_bit_browser) { loadable_modules += [ "$_libarcore_dir/arm64-v8a/libarcore_sdk_c.so" ] } else { @@ -551,234 +584,164 @@ [ "$_libarcore_dir/armeabi-v7a/libarcore_sdk_c.so" ] } } + } + library_always_compress = [] + if (defined(invoker.library_always_compress)) { + library_always_compress = invoker.library_always_compress + } - if (_is_bundle_module) { - # Sets ISOLATED_SPLITS_ENABLED in BuildConfig.java. - isolated_splits_enabled = true - } - - if (_is_bundle_module && invoker.is_base_module) { - # The arcore manifest needs to be merged into the base module because - # the Play Store verifies the com.google.ar.core.min_apk_version - # meta-data tag is in the base manifest. - if (enable_arcore) { - deps += [ - "//third_party/arcore-android-sdk-client:com_google_ar_core_java", - "//third_party/arcore-android-sdk-client:com_google_ar_core_java__ignored_manifest", - ] - } - - if (is_monochrome) { - deps += [ "//chrome/android:base_monochrome_module_java" ] - } else { - deps += [ "//chrome/android:base_module_java" ] - } - } - - if (android_64bit_target_cpu && (is_monochrome || is_trichrome)) { - _include_64_bit_webview = !defined(invoker.include_64_bit_webview) || - invoker.include_64_bit_webview - _include_32_bit_webview = !defined(invoker.include_32_bit_webview) || - invoker.include_32_bit_webview - } - if (is_monochrome) { - product_config_java_packages = [ - "org.chromium.chrome.browser", - webview_product_config_java_package, - ] - - if (webview_includes_weblayer) { - product_config_java_packages += - [ weblayer_product_config_java_package ] - } - - # Flag whether additional deps and libs should be included for each ABI. - _include_primary_support = false - _include_secondary_support = false - - if (android_64bit_target_cpu) { - # Build //android_webview:monochrome with the opposite bitness that - # Chrome runs in. - if (invoker.is_64_bit_browser) { - _include_primary_support = true - shared_libraries += [ "//chrome/android:libmonochrome_64" ] - if (_include_32_bit_webview) { - secondary_abi_shared_libraries += [ "//android_webview:monochrome_64($android_secondary_abi_toolchain)" ] - _include_secondary_support = true - } - } else { - secondary_abi_shared_libraries += - [ "//chrome/android:monochrome_secondary_abi_lib" ] - _include_secondary_support = true - if (_include_64_bit_webview) { - shared_libraries += [ "//android_webview:monochrome" ] - _include_primary_support = true - } - } - } else { - shared_libraries += [ "//chrome/android:libmonochrome" ] - _include_primary_support = true - } - + # TODO(agrieve): Use Crashpad trampoline in chrome_public_apk. + if (!_is_monochrome && !_is_trichrome) { + deps += + [ "//components/crash/core/app:chrome_crashpad_handler_named_as_so" ] + loadable_modules += [ "$root_out_dir/libchrome_crashpad_handler.so" ] + library_always_compress += [ "libchrome_crashpad_handler.so" ] + } else if (!_is_trichrome) { + # Crashpad trampoline lives in TrichromeLibrary.apk. + # https://chromium.googlesource.com/chromium/src/+/main/docs/android_native_libraries.md#Crashpad-Packaging + if (_include_primary_abi) { deps += [ - "//android_webview/glue:glue_java", - "//android_webview/nonembedded:nonembedded_java", + "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline", ] - if (!_is_bundle_module) { - deps += [ "//chrome/android:monochrome_java" ] - } - - if (_include_primary_support) { - deps += [ - "//android_webview:monochrome_webview_primary_abi_assets", - "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline", - ] - loadable_modules += - [ "$root_out_dir/libcrashpad_handler_trampoline.so" ] - } - if (_include_secondary_support) { - _trampoline = - "//third_party/crashpad/crashpad/handler:" + - "crashpad_handler_trampoline($android_secondary_abi_toolchain)" - - deps += [ - "//android_webview:monochrome_webview_secondary_abi_assets", - _trampoline, - ] - - _secondary_out_dir = get_label_info(_trampoline, "root_out_dir") - secondary_abi_loadable_modules += - [ "$_secondary_out_dir/libcrashpad_handler_trampoline.so" ] - } - - if (defined(invoker.alternative_android_sdk_dep)) { - alternative_android_sdk_dep = invoker.alternative_android_sdk_dep - } else { - alternative_android_sdk_dep = webview_framework_dep - } - if (defined(invoker.app_as_shared_lib)) { - app_as_shared_lib = invoker.app_as_shared_lib - } else { - app_as_shared_lib = true - } - _pak_prefix = "monochrome" + loadable_modules += + [ "$root_out_dir/libcrashpad_handler_trampoline.so" ] } - if (is_trichrome) { - # Include placeholder libraries to make Chrome multiarch in the same way - # as Monochrome, even though Chrome only runs with one of the two - # bitnesses. This allows the "32-bit" and "64-bit" versions of Chrome to - # depend on their respective versions of the shared library APK even - # though they're functionally the same. - if (android_64bit_target_cpu) { - if (invoker.is_64_bit_browser) { - native_lib_placeholders += [ "libdummy.so" ] - if (_include_32_bit_webview) { - secondary_native_lib_placeholders += [ "libdummy.so" ] - } - } else { - secondary_native_lib_placeholders += [ "libdummy.so" ] - if (_include_64_bit_webview) { - native_lib_placeholders += [ "libdummy.so" ] - } - } - } else { - native_lib_placeholders += [ "libdummy.so" ] - } - - _pak_prefix = "trichrome_chrome" + if (_include_secondary_abi) { + deps += [ "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline($android_secondary_abi_toolchain)" ] + secondary_abi_loadable_modules += + [ "$_secondary_out_dir/libcrashpad_handler_trampoline.so" ] } + } - # The Chromium Linker depends on ASharedMemory_create() introduced in O. - use_chromium_linker = is_trichrome && chromium_linker_supported + # The Chromium Linker depends on ASharedMemory_create() introduced in O. + use_chromium_linker = chromium_linker_supported && _is_trichrome - if (build_hwasan_splits && android_64bit_target_cpu && - invoker.is_64_bit_browser) { - _hwasan_toolchain = - "//build/toolchain/android:android_clang_arm64_hwasan" - shared_libraries += - [ "//chrome/android:libmonochrome_64($_hwasan_toolchain)" ] - - if (use_chromium_linker) { - shared_libraries += [ - "//base/android/linker:chromium_android_linker($_hwasan_toolchain)", - ] - } + if (use_chromium_linker) { + if (android_64bit_target_cpu && !_is_64_bit_browser) { + deps += [ "//base/android/linker:chromium_android_linker($android_secondary_abi_toolchain)" ] + secondary_abi_loadable_modules += + [ "$_secondary_out_dir/libchromium_android_linker$shlib_extension" ] + } else { + deps += [ "//base/android/linker:chromium_android_linker" ] + loadable_modules += + [ "$root_out_dir/libchromium_android_linker$shlib_extension" ] } - - # We only optimize resources in bundles. - if (_is_bundle_module) { - # Resources config for blocklisting resource names from obfuscation - resources_config_paths = [ - "//android_webview/aapt2.config", - "//chrome/android/aapt2.config", + if (_is_64_bit_browser && build_hwasan_splits) { + deps += [ + "//base/android/linker:chromium_android_linker($_hwasan_toolchain)", ] - if (defined(invoker.resources_config_paths)) { - resources_config_paths += invoker.resources_config_paths - } + _hwasan_outdir = get_label_info(":($_hwasan_toolchain)", "root_out_dir") + loadable_modules += + [ "$_hwasan_outdir/libchromium_android_linker$shlib_extension" ] } + } - if (defined(invoker.never_incremental)) { - never_incremental = invoker.never_incremental - } else if (!defined(invoker.target_type) || - invoker.target_type == "android_apk") { - # Incremental install doesn't work for monochrome. See crbug.com/663492. - } - - # Strip xml namespaces for monochrome. This should only be done for apks - # targeting API > 21 which for chrome is only Monochrome. This is due to - # how android public and private resource ids are namespaced. - if (defined(invoker.no_xml_namespaces)) { - no_xml_namespaces = invoker.no_xml_namespaces + if (build_with_internal_optimization_guide) { + if (android_64bit_target_cpu && !_is_64_bit_browser) { + _secondary_optimization_guide = "//components/optimization_guide/internal:optimization_guide_internal($android_secondary_abi_toolchain)" + deps += [ _secondary_optimization_guide ] + secondary_abi_loadable_modules += + [ "$_secondary_out_dir/liboptimization_guide_internal.so" ] } else { - no_xml_namespaces = true + deps += [ "//components/optimization_guide/internal:optimization_guide_internal" ] + loadable_modules += + [ "$root_out_dir/liboptimization_guide_internal.so" ] + } + } + + if (_is_trichrome) { + if (android_64bit_target_cpu && !_is_64_bit_browser) { + static_library_provider_use_secondary_abi = true } - if (_is_bundle_module) { - _pak_prefix += "_bundle_module" - } else { - _pak_prefix += "_apk" + # Include placeholder libraries to make Chrome multiarch in the same way + # as Monochrome, even though Chrome only runs with one of the two + # bitnesses. This allows the "32-bit" and "64-bit" versions of Chrome to + # depend on their respective versions of the shared library APK even + # though they're functionally the same. + if (_include_primary_abi && loadable_modules == []) { + native_lib_placeholders = [ "libdummy.so" ] } - deps += [ "//chrome/android:${_pak_prefix}_pak_assets" ] + if (_include_secondary_abi && secondary_abi_loadable_modules == []) { + secondary_native_lib_placeholders = [ "libdummy.so" ] + } - if (!is_java_debug) { - proguard_configs = [] - if (defined(invoker.proguard_configs)) { - proguard_configs += invoker.proguard_configs - } - if (is_monochrome) { - proguard_configs += - [ "//android_webview/nonembedded/java/proguard.flags" ] + # http://crbug.com/1042107. + if (is_component_build) { + if (_is_64_bit_browser) { + main_component_library = "libmonochrome_64.cr.so" + } else { + main_component_library = "libmonochrome.cr.so" } } } - # The _overrides scope is used to ensure that: - # * Values set in invoker cannot accidentally clobber values set in - # _overrides. - # * Values set in _overrides cannot accidentaly clobber values set in - # invoker (since the forward_variables_from will fail). - _override_args = [ - "alternative_android_sdk_dep", - "app_as_shared_lib", - "deps", - "is_monochrome", - "is_trichrome", - "isolated_splits_enabled", - "loadable_modules", - "native_lib_placeholders", - "never_incremental", - "no_xml_namespaces", - "product_config_java_packages", - "proguard_configs", - "resources_config_paths", - "secondary_abi_loadable_modules", - "secondary_abi_shared_libraries", - "secondary_native_lib_placeholders", - "shared_libraries", - "use_chromium_linker", - "webview_product_config_java_package", - ] - forward_variables_from(invoker, "*", _override_args) - forward_variables_from(_overrides, _override_args) + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, + "*", + TESTONLY_AND_VISIBILITY + [ + "deps", + "shared_libraries", + "loadable_modules", + "secondary_abi_shared_libraries", + "secondary_abi_loadable_modules", + "data_deps", + "proguard_configs", + "manifest_package", + "version_code", + "assert_no_deps", + "version_name", + "resources_config_paths", + ]) + } +} + +# For creating chrome targets without internal customizations. +template("chrome_public_apk_or_module_tmpl") { + chrome_common_apk_or_module_tmpl(target_name) { + _is_trichrome = defined(invoker.is_trichrome) && invoker.is_trichrome + _is_monochrome = defined(invoker.is_monochrome) && invoker.is_monochrome + _is_bundle = invoker.target_type == "android_app_bundle_module" + + deps = [] + if (defined(invoker.deps)) { + deps += invoker.deps + } + if (_is_monochrome) { + deps += upstream_only_webview_deps + } else if (!_is_trichrome) { + deps += [ + "//chrome/android:chrome_public_apk_base_module_resources", + "//chrome/android:chrome_public_base_module_java", + "//chrome/android:chrome_public_non_pak_assets", + "//components/browser_ui/styles/android:chrome_public_apk_resources", + ] + } + if (_is_bundle) { + deps += [ + # deps in delegate_public_impl_java are put into the Chrome module, but the language deps + # are needed by the base module. + "//components/language/android:ulp_delegate_public_java", + ] + } else { + deps += [ "//chrome/android:delegate_public_impl_java" ] + } + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY + [ "deps" ]) + } +} + +# TODO(https://crbug.com/1427610): Remove. +template("monochrome_public_common_apk_or_module_tmpl") { + chrome_common_apk_or_module_tmpl(target_name) { + forward_variables_from(invoker, "*") + if (!defined(is_monochrome)) { + is_trichrome = true + } + } +} +template("chrome_public_common_apk_or_module_tmpl") { + chrome_common_apk_or_module_tmpl(target_name) { + forward_variables_from(invoker, "*") } }
diff --git a/chrome/android/chrome_test_apk_tmpl.gni b/chrome/android/chrome_test_apk_tmpl.gni index 5ca00db6a..b9d6791 100644 --- a/chrome/android/chrome_test_apk_tmpl.gni +++ b/chrome/android/chrome_test_apk_tmpl.gni
@@ -4,50 +4,40 @@ import("//chrome/android/chrome_public_apk_tmpl.gni") -# Dependencies that are common to any chrome_public derivative targets. -chrome_public_shared_deps = [ - "//chrome/android:chrome_app_java_resources", - "//chrome/android:chrome_public_apk_base_module_resources", - "//chrome/android:chrome_public_base_module_java", - "//chrome/android:chrome_public_non_pak_assets", - "//components/browser_ui/styles/android:chrome_public_apk_resources", - "//gin:v8_snapshot_assets", - "//third_party/icu:icu_assets", -] - chrome_public_test_manifest_package = "org.chromium.chrome.tests" template("chrome_test_apk_tmpl") { - chrome_public_common_apk_or_module_tmpl(target_name) { + chrome_common_apk_or_module_tmpl(target_name) { testonly = true target_type = "instrumentation_test_apk" bundles_supported = true - jinja_input = "//chrome/android/javatests/AndroidManifest.xml" - manifest_package = chrome_public_test_manifest_package + + if (!defined(invoker.is_monochrome)) { + jinja_input = "//chrome/android/javatests/AndroidManifest.xml" + manifest_package = chrome_public_test_manifest_package + } shared_libraries = [ "//chrome/android:libchromefortest" ] - deps = chrome_public_shared_deps + invoker.deps + [ - "//chrome/android:chrome_apk_pak_assets", - "//chrome/android:chrome_public_base_module_java_for_test", - "//third_party/android_sdk:android_test_base_java", - "//third_party/android_sdk:android_test_mock_java", - "//third_party/android_sdk:android_test_runner_java", - "//third_party/androidx:androidx_test_runner_java", - ] + deps = [ + "//chrome/android:chrome_public_base_module_java_for_test", + "//third_party/android_sdk:android_test_base_java", + "//third_party/android_sdk:android_test_mock_java", + "//third_party/android_sdk:android_test_runner_java", + "//third_party/androidx:androidx_test_runner_java", + ] + if (defined(invoker.deps)) { + deps += invoker.deps + } if (add_unwind_tables_in_chrome_32bit_apk && current_cpu == "arm") { deps += [ "//chrome/android:libchromefortest_unwind_table_assets" ] } - if (enable_vr) { - # Contains VrFirstRunActivity, which is referenced by AndroidManifest.xml. - deps += [ "//chrome/android/features/vr:java" ] - } + # For EmbeddedTestServer. additional_apks = [ "//net/android:net_test_support_apk" ] if (defined(invoker.additional_apks)) { additional_apks += invoker.additional_apks } if (!is_java_debug) { - proguard_enabled = true proguard_configs = [ "//chrome/android/proguard/apk_for_test.flags" ] if (defined(invoker.proguard_configs)) { proguard_configs += invoker.proguard_configs @@ -68,54 +58,18 @@ } } +# TODO(agrieve): Delete this and have all tests use chrome_test_apk_tmpl. template("monochrome_test_apk_tmpl") { - monochrome_public_common_apk_or_module_tmpl(target_name) { - forward_variables_from(invoker, - [ - "apk_name", - "data_deps", - "is_64_bit_browser", - "include_64_bit_webview", - "include_32_bit_webview", - "loadable_modules", - "proguard_configs", - "secondary_abi_loadable_modules", - "target_sdk_version", - ]) - testonly = true - target_type = "instrumentation_test_apk" - - # TODO(agrieve): Add: manifest_package = chrome_public_test_manifest_package + chrome_test_apk_tmpl(target_name) { + is_monochrome = true + manifest_package = chrome_public_manifest_package jinja_input = "//chrome/android/javatests/AndroidManifest_monochrome.xml" jinja_extra_includes = [ "//chrome/android/javatests/AndroidManifest.xml" ] jinja_extra_variables = [ "test_manifest_package=$chrome_public_test_manifest_package" ] - deps = chrome_public_shared_deps + invoker.deps + [ - "//android_webview:platform_service_bridge_upstream_implementation_java", - "//chrome/android:chrome_public_base_module_java_for_test", - "//chrome/android:monochrome_apk_pak_assets", - "//third_party/android_sdk:android_test_base_java", - "//third_party/android_sdk:android_test_mock_java", - "//third_party/android_sdk:android_test_runner_java", - "//third_party/androidx:androidx_test_runner_java", - ] - - if (webview_includes_weblayer) { - deps += [ "//weblayer/browser/java:upstream_java" ] - } - - additional_apks = [ "//net/android:net_test_support_apk" ] - if (defined(invoker.additional_apks)) { - additional_apks += invoker.additional_apks - } - if (!is_java_debug) { - if (!defined(proguard_configs)) { - proguard_configs = [] - } - proguard_enabled = true - proguard_configs += [ "//chrome/android/proguard/apk_for_test.flags" ] - } + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) } }
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayoutTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayoutTest.java index 2ba6b11..9d8d424d 100644 --- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayoutTest.java +++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayoutTest.java
@@ -1930,8 +1930,10 @@ boolean checkThumbnail = !currentTab.isNativePage(); if (checkThumbnail) { - mActivityTestRule.getActivity().getTabContentManager().removeTabThumbnail( - currentTab.getId()); + TestThreadUtils.runOnUiThreadBlocking(() -> { + mActivityTestRule.getActivity().getTabContentManager().removeTabThumbnail( + currentTab.getId()); + }); } int count = getCaptureCount();
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherTabletTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherTabletTest.java index c9050a77c..926f099 100644 --- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherTabletTest.java +++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherTabletTest.java
@@ -346,8 +346,10 @@ boolean checkThumbnail = !currentTab.isNativePage(); if (checkThumbnail) { - sActivityTestRule.getActivity().getTabContentManager().removeTabThumbnail( - currentTab.getId()); + TestThreadUtils.runOnUiThreadBlocking(() -> { + sActivityTestRule.getActivity().getTabContentManager().removeTabThumbnail( + currentTab.getId()); + }); } TabUiTestHelper.enterTabSwitcher(sActivityTestRule.getActivity());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AddressEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AddressEditor.java index d016556..8dbdc43 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AddressEditor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AddressEditor.java
@@ -22,7 +22,6 @@ import org.chromium.chrome.browser.autofill.settings.AutofillProfileBridge.AddressUiComponent; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.payments.AutofillAddress; -import org.chromium.chrome.browser.payments.AutofillAddress.CompletenessCheckType; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.chrome.browser.sync.SyncService; @@ -202,9 +201,8 @@ : mContext.getString(R.string.autofill_edit_address_dialog_title); // When creating a new autofill profile, we use the country code of the default locale on // the device. - final AutofillAddress address = mIsProfileNew - ? new AutofillAddress(mContext, new AutofillProfile(), CompletenessCheckType.NORMAL) - : toEdit; + final AutofillAddress address = + mIsProfileNew ? new AutofillAddress(mContext, new AutofillProfile()) : toEdit; mProfile = address.getProfile();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/AutofillAddress.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/AutofillAddress.java index 434ef44..fe2bc45 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/AutofillAddress.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/AutofillAddress.java
@@ -53,15 +53,6 @@ int MAX_VALUE = 1 << 4; } - @IntDef({CompletenessCheckType.NORMAL, CompletenessCheckType.IGNORE_PHONE}) - @Retention(RetentionPolicy.SOURCE) - public @interface CompletenessCheckType { - /** A normal completeness check. */ - int NORMAL = 0; - /** A completeness check that ignores phone numbers. */ - int IGNORE_PHONE = 1; - } - @Nullable private static Pattern sRegionCodePattern; private final Context mContext; @@ -69,7 +60,6 @@ @Nullable private String mShippingLabelWithCountry; @Nullable private String mShippingLabelWithoutCountry; @Nullable private String mBillingLabel; - private final @CompletenessCheckType int mCheckType; /** * Builds the autofill address. @@ -78,24 +68,11 @@ * @param profile The autofill profile containing the address information. */ public AutofillAddress(Context context, AutofillProfile profile) { - this(context, profile, CompletenessCheckType.NORMAL); - } - - /** - * Builds the autofill address. - * - * @param context The context where this address was created. - * @param profile The autofill profile containing the address information. - * @param checkType The type of completeness to check. - */ - public AutofillAddress( - Context context, AutofillProfile profile, @CompletenessCheckType int checkType) { super(profile.getGUID(), profile.getFullName(), profile.getLabel(), profile.getPhoneNumber(), null); mContext = context; mProfile = profile; mIsEditable = true; - mCheckType = checkType; checkAndUpdateAddressCompleteness(); } @@ -193,7 +170,7 @@ */ private void checkAndUpdateAddressCompleteness() { Pair<Integer, Integer> messageResIds = - getEditMessageAndTitleResIds(checkAddressCompletionStatus(mProfile, mCheckType)); + getEditMessageAndTitleResIds(checkAddressCompletionStatus(mProfile)); mEditMessage = messageResIds.first.intValue() == 0 ? null @@ -252,12 +229,10 @@ * renderer. * * @param profile The autofill profile containing the address information. - * @param checkType The type of completeness to check. * @return int The completion status. */ @CompletionStatus - public static int checkAddressCompletionStatus( - AutofillProfile profile, @CompletenessCheckType int checkType) { + public static int checkAddressCompletionStatus(AutofillProfile profile) { @CompletionStatus int completionStatus = CompletionStatus.COMPLETE; @@ -268,9 +243,8 @@ // TODO(crbug.com/999286): PhoneNumberUtils internally trigger disk reads for certain // devices/configurations. try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) { - if (checkType != CompletenessCheckType.IGNORE_PHONE - && !PhoneNumberUtils.isGlobalPhoneNumber(PhoneNumberUtils.stripSeparators( - profile.getPhoneNumber().toString()))) { + if (!PhoneNumberUtils.isGlobalPhoneNumber( + PhoneNumberUtils.stripSeparators(profile.getPhoneNumber().toString()))) { completionStatus |= CompletionStatus.INVALID_PHONE_NUMBER; } } @@ -344,7 +318,7 @@ } private int calculateCompletenessScore() { - int missingFields = checkAddressCompletionStatus(mProfile, mCheckType); + int missingFields = checkAddressCompletionStatus(mProfile); // Count how many are set. The completeness of the address is weighted so as // to dominate the other fields.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java index f3fd326..eddd402 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java
@@ -476,8 +476,7 @@ if (mParams.getPaymentOptions().requestShipping) { boolean haveCompleteShippingAddress = false; for (int i = 0; i < mAutofillProfiles.size(); i++) { - if (AutofillAddress.checkAddressCompletionStatus( - mAutofillProfiles.get(i), AutofillAddress.CompletenessCheckType.NORMAL) + if (AutofillAddress.checkAddressCompletionStatus(mAutofillProfiles.get(i)) == AutofillAddress.CompletionStatus.COMPLETE) { haveCompleteShippingAddress = true; break;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java index 42f1861..88f5632 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java
@@ -327,7 +327,7 @@ SigninPreferencesManager.getInstance().setLegacySyncAccountEmail( mSignInState.mCoreAccountInfo.getEmail()); - SyncService.get().setSyncRequested(true); + SyncService.get().setSyncRequested(); RecordUserAction.record("Signin_Signin_Succeed"); RecordHistogram.recordEnumeratedHistogram("Signin.SigninCompletedAccessPoint",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java index 25ee846c..e70b8d7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java
@@ -147,10 +147,8 @@ // Contains preferences for all sync data types. private CheckBoxPreference[] mSyncTypePreferences; - private Preference mTurnOffSync; private Preference mGoogleActivityControls; private Preference mSyncEncryption; - private Preference mReviewSyncData; private PreferenceCategory mSearchAndBrowseCategory; private ChromeSwitchPreference mUrlKeyedAnonymizedData; @@ -197,24 +195,24 @@ mSyncRecentTabs = (CheckBoxPreference) findPreference(PREF_SYNC_RECENT_TABS); mSyncSettings = (CheckBoxPreference) findPreference(PREF_SYNC_SETTINGS); - mTurnOffSync = findPreference(PREF_TURN_OFF_SYNC); + Preference turnOffSync = findPreference(PREF_TURN_OFF_SYNC); Profile profile = Profile.getLastUsedRegularProfile(); if (!mIsFromSigninScreen) { - mTurnOffSync.setVisible(true); + turnOffSync.setVisible(true); if (!profile.isChild()) { // Non-child users have an option to sign out and turn off sync. This is to ensure // that revoking consents for sign in and sync does not require more steps than // enabling them. - mTurnOffSync.setIcon(R.drawable.ic_signout_40dp); - mTurnOffSync.setTitle(R.string.sign_out_and_turn_off_sync); - mTurnOffSync.setOnPreferenceClickListener(SyncSettingsUtils.toOnClickListener( + turnOffSync.setIcon(R.drawable.ic_signout_40dp); + turnOffSync.setTitle(R.string.sign_out_and_turn_off_sync); + turnOffSync.setOnPreferenceClickListener(SyncSettingsUtils.toOnClickListener( this, this::onSignOutAndTurnOffSyncClicked)); } else { // Child users are force signed-in, so have an option which only turns off sync. - mTurnOffSync.setIcon(R.drawable.ic_turn_off_sync_48dp); - mTurnOffSync.setTitle(R.string.turn_off_sync); - mTurnOffSync.setOnPreferenceClickListener( + turnOffSync.setIcon(R.drawable.ic_turn_off_sync_48dp); + turnOffSync.setTitle(R.string.turn_off_sync); + turnOffSync.setOnPreferenceClickListener( SyncSettingsUtils.toOnClickListener(this, this::onTurnOffSyncClicked)); } @@ -225,8 +223,8 @@ mSyncEncryption = findPreference(PREF_ENCRYPTION); mSyncEncryption.setOnPreferenceClickListener( SyncSettingsUtils.toOnClickListener(this, this::onSyncEncryptionClicked)); - mReviewSyncData = findPreference(PREF_SYNC_REVIEW_DATA); - mReviewSyncData.setOnPreferenceClickListener(SyncSettingsUtils.toOnClickListener( + Preference reviewSyncData = findPreference(PREF_SYNC_REVIEW_DATA); + reviewSyncData.setOnPreferenceClickListener(SyncSettingsUtils.toOnClickListener( this, () -> SyncSettingsUtils.openSyncDashboard(getActivity()))); mSyncTypePreferences = new CheckBoxPreference[] {mSyncAutofill, mSyncBookmarks, @@ -245,9 +243,8 @@ mUrlKeyedAnonymizedData = (ChromeSwitchPreference) findPreference(PREF_URL_KEYED_ANONYMIZED_DATA); boolean urlKeyedAnonymizedDataShouldBeEnabled = - UnifiedConsentServiceBridge.isUrlKeyedAnonymizedDataCollectionManaged(profile) - ? UnifiedConsentServiceBridge.isUrlKeyedAnonymizedDataCollectionEnabled(profile) - : true; + !UnifiedConsentServiceBridge.isUrlKeyedAnonymizedDataCollectionManaged(profile) + || UnifiedConsentServiceBridge.isUrlKeyedAnonymizedDataCollectionEnabled(profile); mUrlKeyedAnonymizedData.setChecked(urlKeyedAnonymizedDataShouldBeEnabled); mUrlKeyedAnonymizedData.setManagedPreferenceDelegate(( ChromeManagedPreferenceDelegate) (preference @@ -592,43 +589,31 @@ private void updateDataTypeState() { boolean syncEverything = mSyncService.hasKeepEverythingSynced(); mSyncEverything.setChecked(syncEverything); - if (syncEverything) { - for (CheckBoxPreference pref : mSyncTypePreferences) { - // TODO(https://crbug.com/1407184): Remove this special-casing - // SyncPaymentsIntegration is not checked for child users as it is disabled - if (pref.equals(mSyncPaymentsIntegration) - && !PersonalDataManager.isPaymentsIntegrationEnabled()) { - pref.setChecked(false); - } else { - pref.setChecked(true); - } - pref.setEnabled(false); - } - return; - } + // TODO(https://crbug.com/1407184): Use a loop on {@code mSyncTypePreferences} to update + // these states. Set<Integer> syncTypes = mSyncService.getSelectedTypes(); mSyncAutofill.setChecked(syncTypes.contains(UserSelectableType.AUTOFILL)); - mSyncAutofill.setEnabled(true); + mSyncAutofill.setEnabled(!syncEverything); mSyncBookmarks.setChecked(syncTypes.contains(UserSelectableType.BOOKMARKS)); - mSyncBookmarks.setEnabled(true); + mSyncBookmarks.setEnabled(!syncEverything); mSyncHistory.setChecked(syncTypes.contains(UserSelectableType.HISTORY)); - mSyncHistory.setEnabled(true); + mSyncHistory.setEnabled(!syncEverything); mSyncPasswords.setChecked(syncTypes.contains(UserSelectableType.PASSWORDS)); - mSyncPasswords.setEnabled(true); + mSyncPasswords.setEnabled(!syncEverything); mSyncReadingList.setChecked(syncTypes.contains(UserSelectableType.READING_LIST)); - mSyncReadingList.setEnabled(true); + mSyncReadingList.setEnabled(!syncEverything); mSyncRecentTabs.setChecked(syncTypes.contains(UserSelectableType.TABS)); - mSyncRecentTabs.setEnabled(true); + mSyncRecentTabs.setEnabled(!syncEverything); mSyncSettings.setChecked(syncTypes.contains(UserSelectableType.PREFERENCES)); - mSyncSettings.setEnabled(true); + mSyncSettings.setEnabled(!syncEverything); // Payments integration requires AUTOFILL user selectable type boolean syncAutofill = syncTypes.contains(UserSelectableType.AUTOFILL); - mSyncPaymentsIntegration.setChecked( - syncAutofill && PersonalDataManager.isPaymentsIntegrationEnabled()); + mSyncPaymentsIntegration.setChecked((syncEverything || syncAutofill) + && PersonalDataManager.isPaymentsIntegrationEnabled()); mSyncPaymentsIntegration.setEnabled( - syncAutofill && !Profile.getLastUsedRegularProfile().isChild()); + !syncEverything && syncAutofill && !Profile.getLastUsedRegularProfile().isChild()); } /** @@ -713,7 +698,7 @@ primaryAccountInfo, REQUEST_CODE_TRUSTED_VAULT_RECOVERABILITY_DEGRADED); return; case SyncError.SYNC_SETUP_INCOMPLETE: - mSyncService.setSyncRequested(true); + mSyncService.setSyncRequested(); mSyncService.setFirstSetupComplete( SyncFirstSetupCompleteSource.ADVANCED_FLOW_INTERRUPTED_TURN_SYNC_ON); return;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/site_settings/PermissionInfoTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/site_settings/PermissionInfoTest.java index 1ab4832..0e4cfbb 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/site_settings/PermissionInfoTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/site_settings/PermissionInfoTest.java
@@ -6,7 +6,8 @@ import androidx.test.filters.SmallTest; -import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; @@ -16,9 +17,7 @@ import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CriteriaHelper; -import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; -import org.chromium.base.test.util.RequiresRestart; import org.chromium.chrome.browser.browsing_data.BrowsingDataBridge; import org.chromium.chrome.browser.browsing_data.BrowsingDataType; import org.chromium.chrome.browser.browsing_data.TimePeriod; @@ -55,8 +54,17 @@ public BlankCTATabInitialStateRule mBlankCTATabInitialStateRule = new BlankCTATabInitialStateRule(sActivityTestRule, false); - @After - public void tearDown() throws TimeoutException { + @Before + public void setUp() throws TimeoutException { + clearPermissions(); + } + + @AfterClass + public static void tearDown() throws TimeoutException { + clearPermissions(); + } + + private static void clearPermissions() throws TimeoutException { // Clean up cookies and permissions. CallbackHelper helper = new CallbackHelper(); TestThreadUtils.runOnUiThreadBlocking(() -> { @@ -107,7 +115,6 @@ @Test @SmallTest @Feature({"Preferences"}) - @DisabledTest(message = "https://crbug.com/1342630") public void testResetDSEGeolocation_InPrimaryOTRProfile_DefaultsToAskFromBlock() throws Throwable { Profile primaryOTRProfile = getPrimaryOTRProfile(); @@ -120,7 +127,6 @@ @Test @SmallTest @Feature({"Preferences"}) - @DisabledTest(message = "https://crbug.com/1342630") public void testResetDSEGeolocation_InNonPrimaryOTRProfile_DefaultsToAskFromBlock() throws Throwable { Profile nonPrimaryOTRProfile = getNonPrimaryOTRProfile(); @@ -133,8 +139,6 @@ @Test @SmallTest @Feature({"Preferences"}) - @RequiresRestart - @DisabledTest(message = "https://crbug.com/1342630") public void testResetDSEGeolocation_RegularProfile_DefaultsToAskFromBlock() throws Throwable { Profile regularProfile = getRegularProfile(); setSettingAndExpectValue(ContentSettingsType.GEOLOCATION, DSE_ORIGIN, null, @@ -146,7 +150,6 @@ @Test @SmallTest @Feature({"Preferences"}) - @DisabledTest(message = "https://crbug.com/1342630") public void testResetDSENotification_InPrimaryOTRProfile_DefaultsToAskFromBlock() throws Throwable { Profile primaryOTRProfile = getPrimaryOTRProfile(); @@ -162,7 +165,6 @@ @Test @SmallTest @Feature({"Preferences"}) - @DisabledTest(message = "https://crbug.com/1342630") public void testResetDSENotification_InNonPrimaryOTRProfile_DefaultsToAskFromBlock() throws Throwable { Profile nonPrimaryOTRProfile = getNonPrimaryOTRProfile(); @@ -178,7 +180,6 @@ @Test @SmallTest @Feature({"Preferences"}) - @RequiresRestart public void testResetDSENotification_RegularProfile_DefaultsToAskFromBlock() throws Throwable { Profile regularProfile = getRegularProfile(); resetNotificationsSettingsForTest();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java index bfc661f8..dc8089a 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java
@@ -5,11 +5,9 @@ package org.chromium.chrome.browser.sync; 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.RootMatchers.isDialog; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; import android.app.Dialog; @@ -207,7 +205,6 @@ public void testTogglingSyncEverythingDoesNotStopSync() { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); mSyncTestRule.setSelectedTypes(false, new HashSet<>()); - mSyncTestRule.startSync(); ManageSyncSettings fragment = startManageSyncPreferences(); // Sync is requested to start. Toggling SyncEverything will call setSelectedTypes with @@ -366,17 +363,25 @@ mSyncTestRule.setUpAccountAndEnableSyncForTesting(); mSyncTestRule.setPaymentsIntegrationEnabled(true); + // Get the UI elements. ManageSyncSettings fragment = startManageSyncPreferences(); - assertSyncOnState(fragment); ChromeSwitchPreference syncEverything = getSyncEverything(fragment); - mSyncTestRule.togglePreference(syncEverything); - CheckBoxPreference syncAutofill = (CheckBoxPreference) fragment.findPreference(ManageSyncSettings.PREF_SYNC_AUTOFILL); - mSyncTestRule.togglePreference(syncAutofill); - CheckBoxPreference paymentsIntegration = (CheckBoxPreference) fragment.findPreference( ManageSyncSettings.PREF_SYNC_PAYMENTS_INTEGRATION); + + assertSyncOnState(fragment); + Assert.assertFalse(paymentsIntegration.isEnabled()); + Assert.assertTrue(paymentsIntegration.isChecked()); + + mSyncTestRule.togglePreference(syncEverything); + + Assert.assertTrue(paymentsIntegration.isEnabled()); + Assert.assertTrue(paymentsIntegration.isChecked()); + + mSyncTestRule.togglePreference(syncAutofill); + Assert.assertFalse(paymentsIntegration.isEnabled()); Assert.assertFalse(paymentsIntegration.isChecked()); @@ -435,8 +440,12 @@ clickPreference(encryption); final PassphraseTypeDialogFragment typeFragment = getPassphraseTypeDialogFragment(); - mSyncTestRule.stopSync(); - onView(withId(R.id.explicit_passphrase_checkbox)).perform(click()); + mSyncTestRule.signOut(); + + // Mimic the user clicking on the explicit passphrase checkbox immediately after signing + // out. + TestThreadUtils.runOnUiThreadBlocking(fragment::onChooseCustomPassphraseRequested); + // No crash means we passed. } @@ -449,7 +458,7 @@ public void testEnterPassphraseWhenSyncIsOff() { mSyncTestRule.setUpAccountAndEnableSyncForTesting(); final ManageSyncSettings fragment = startManageSyncPreferences(); - mSyncTestRule.stopSync(); + mSyncTestRule.signOut(); TestThreadUtils.runOnUiThreadBlockingNoException( () -> fragment.onPassphraseEntered("passphrase")); // No crash means we passed.
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTest.java index 3b6dc4e..2aba50ba 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTest.java
@@ -105,12 +105,17 @@ @Feature({"Sync"}) public void testStopAndStartSync() { CoreAccountInfo accountInfo = mSyncTestRule.setUpAccountAndEnableSyncForTesting(); - - mSyncTestRule.stopSync(); Assert.assertEquals(accountInfo, mSyncTestRule.getPrimaryAccount(ConsentLevel.SYNC)); - Assert.assertFalse(SyncTestUtil.isSyncFeatureEnabled()); - mSyncTestRule.startSyncAndWait(); + // Signing out should disable sync. + mSyncTestRule.signOut(); + Assert.assertFalse(SyncTestUtil.isSyncFeatureEnabled()); + Assert.assertNull(mSyncTestRule.getPrimaryAccount(ConsentLevel.SYNC)); + + accountInfo = mSyncTestRule.setUpAccountAndEnableSyncForTesting(); + + Assert.assertTrue(SyncTestUtil.isSyncFeatureEnabled()); + Assert.assertEquals(accountInfo, mSyncTestRule.getPrimaryAccount(ConsentLevel.SYNC)); } @Test
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java index 0378200..f406bea 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
@@ -191,7 +191,6 @@ private void ruleTearDown() { TestThreadUtils.runOnUiThreadBlocking(() -> { - mSyncService.setSyncRequested(false); mFakeServerHelper = null; FakeServerHelper.destroyInstance(); SyncService.resetForTests(); @@ -281,20 +280,6 @@ return accountInfo; } - public void startSync() { - TestThreadUtils.runOnUiThreadBlocking(() -> { mSyncService.setSyncRequested(true); }); - } - - public void startSyncAndWait() { - startSync(); - SyncTestUtil.waitForSyncFeatureActive(); - } - - public void stopSync() { - TestThreadUtils.runOnUiThreadBlocking(() -> { mSyncService.setSyncRequested(false); }); - InstrumentationRegistry.getInstrumentation().waitForIdleSync(); - } - public void signinAndEnableSync(final CoreAccountInfo accountInfo) { SigninTestUtil.signinAndEnableSync(accountInfo, mSyncService); // Enable UKM when enabling sync as it is done by the sync confirmation UI.
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/signin/SigninManagerImplTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/signin/SigninManagerImplTest.java index c5a6d34e..fad19f818b 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/signin/SigninManagerImplTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/signin/SigninManagerImplTest.java
@@ -180,7 +180,7 @@ mSigninManager.finishSignInAfterPolicyEnforced(); verify(mIdentityMutator).setPrimaryAccount(ACCOUNT_INFO.getId(), ConsentLevel.SYNC); - verify(mSyncService).setSyncRequested(true); + verify(mSyncService).setSyncRequested(); // Signin should be complete and callback should be invoked. verify(callback).onSignInComplete(); verify(callback, never()).onSignInAborted(); @@ -213,7 +213,7 @@ verify(mIdentityMutator).setPrimaryAccount(ACCOUNT_INFO.getId(), ConsentLevel.SIGNIN); - verify(mSyncService, never()).setSyncRequested(true); + verify(mSyncService, never()).setSyncRequested(); // Signin should be complete and callback should be invoked. verify(callback).onSignInComplete(); verify(callback, never()).onSignInAborted();
diff --git a/chrome/android/trichrome.gni b/chrome/android/trichrome.gni index 32ebe22..c693f23 100644 --- a/chrome/android/trichrome.gni +++ b/chrome/android/trichrome.gni
@@ -44,6 +44,14 @@ invoker.include_64_bit_webview) && android_64bit_target_cpu _include_32_bit_webview = !defined(invoker.include_32_bit_webview) || invoker.include_32_bit_webview + _include_primary_abi = + !android_64bit_target_cpu || _is_64_bit_browser || _include_64_bit_webview + _include_secondary_abi = android_64bit_target_cpu && + (!_is_64_bit_browser || _include_32_bit_webview) + if (_include_secondary_abi) { + _secondary_out_dir = + get_label_info("X($android_secondary_abi_toolchain)", "root_out_dir") + } _version_code = TRICHROME_VERSION_MAP["${android_64bit_target_cpu}_${_is_64_bit_browser}_${_include_64_bit_webview}_${_include_32_bit_webview}"] # TODO(crbug.com/1411557): Remove option for custom manifest. @@ -87,40 +95,35 @@ expected_android_manifest_library_version_offset = chrome_version_code } - # TODO(torne): since there's no real java code in the library right now, - # leave out the build hooks and let them get compiled into each APK. Later - # this should probably be in the library. - no_build_hooks = true + omit_dex = true include_size_info = is_official_build - alternative_android_sdk_dep = webview_framework_dep r_java_root_package_name = "trichrome_lib" app_as_shared_lib = true + version_name = chrome_version_name + version_code = _version_code + min_sdk_version = 29 # No support for this has been added, also not supported by test runner # since trichrome library is used in "additional_apks" in the trichrome # bundle smoke tests. never_incremental = true - version_name = chrome_version_name - version_code = _version_code - min_sdk_version = 29 - # TODO(torne): using icon_resources just to get a temporary icon deps = [ "//android_webview/nonembedded:icon_resources", "//third_party/icu:icu_assets", ] + if (_include_primary_abi) { + deps += [ "//gin:v8_snapshot_assets" ] + } + if (_include_secondary_abi) { + deps += [ "//gin:v8_snapshot_secondary_abi_assets" ] + } if (defined(invoker.deps)) { deps += invoker.deps } - omit_dex = true - - # Flag whether additional deps and libs should be included for each ABI. - _include_primary_support = false - _include_secondary_support = false - if (android_64bit_target_cpu) { # Include the actual browser-bitness libmonochrome library, dependencies # (crashpad and linker), and an opposite-bitness placeholder library to @@ -128,64 +131,54 @@ # precompiled for both architectures. if (_is_64_bit_browser) { shared_libraries = [ "//chrome/android:libmonochrome_64" ] - _include_primary_support = true if (_include_32_bit_webview) { secondary_native_lib_placeholders = [ "libdummy.so" ] } + if (build_hwasan_splits) { + _hwasan_toolchain = + "//build/toolchain/android:android_clang_arm64_hwasan" + shared_libraries += + [ "//chrome/android:libmonochrome_64($_hwasan_toolchain)" ] + } } else { secondary_abi_shared_libraries = [ "//chrome/android:monochrome_secondary_abi_lib" ] - _include_secondary_support = true if (invoker.include_64_bit_webview) { native_lib_placeholders = [ "libdummy.so" ] } } } else { shared_libraries = [ "//chrome/android:libmonochrome" ] - _include_primary_support = true } - if (_include_primary_support) { + # https://chromium.googlesource.com/chromium/src/+/main/docs/android_native_libraries.md#Crashpad-Packaging + loadable_modules = [] + secondary_abi_loadable_modules = [] + if (_include_primary_abi) { deps += [ - "//gin:v8_snapshot_assets", "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline", ] - loadable_modules = [ "$root_out_dir/libcrashpad_handler_trampoline.so" ] + loadable_modules += [ "$root_out_dir/libcrashpad_handler_trampoline.so" ] } - if (_include_secondary_support) { - _trampoline = - "//third_party/crashpad/crashpad/handler:" + - "crashpad_handler_trampoline($android_secondary_abi_toolchain)" - deps += [ - "//gin:v8_snapshot_secondary_abi_assets", - _trampoline, - ] - _secondary_out_dir = get_label_info(_trampoline, "root_out_dir") - secondary_abi_loadable_modules = + if (_include_secondary_abi) { + deps += [ "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline($android_secondary_abi_toolchain)" ] + secondary_abi_loadable_modules += [ "$_secondary_out_dir/libcrashpad_handler_trampoline.so" ] } if (enable_arcore) { - _libarcore_dir = get_label_info( - "//third_party/arcore-android-sdk-client:com_google_ar_core_java($default_toolchain)", - "target_out_dir") + "/com_google_ar_core_java/jni" - not_needed([ "_libarcore_dir" ]) + _arcore_target = "//third_party/arcore-android-sdk-client:com_google_ar_core_J__unpack_aar" + _libarcore_dir = get_label_info(_arcore_target, "target_out_dir") + + "/com_google_ar_core_java/jni" + deps += [ "//third_party/arcore-android-sdk-client:com_google_ar_core_J__unpack_aar" ] - _arcore_extra_deps = [ "//third_party/arcore-android-sdk-client:com_google_ar_core_J__unpack_aar" ] - not_needed([ "_arcore_extra_deps" ]) - - if (_include_primary_support) { + if (_include_primary_abi) { loadable_modules += [ "$_libarcore_dir/$android_app_abi/libarcore_sdk_c.so" ] - deps += _arcore_extra_deps } - if (_include_secondary_support) { - if (enable_arcore) { - secondary_abi_loadable_modules += [ - "$_libarcore_dir/$android_app_secondary_abi/libarcore_sdk_c.so", - ] - deps += _arcore_extra_deps - } + if (_include_secondary_abi) { + secondary_abi_loadable_modules += + [ "$_libarcore_dir/$android_app_secondary_abi/libarcore_sdk_c.so" ] } } forward_variables_from(invoker,
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp index 505a966..39f7515b 100644 --- a/chrome/app/chromeos_strings.grdp +++ b/chrome/app/chromeos_strings.grdp
@@ -6579,6 +6579,19 @@ Scroll with two fingers on your touchpad in this area </message> + <!-- Drive Offline--> + <!-- TODO(b/278024582): Remove translateable tags when strings are finalized. --> + <message name="IDS_OOBE_DRIVE_OFFLINE_TITLE" desc="Title of the drive offline screen." translateable="false"> + Keep your files available when you're offline + </message> + <message name="IDS_OOBE_DRIVE_OFFLIBE_SUBTITLE" desc="Description of the drive offline screen." translateable="false"> + Automatically download files in your My Drive so you can access and edit them without an internet connection. + </message> + <message name="IDS_OOBE_DRIVE_OFFLIBE_ADDITIONAL_SUBTITLE" desc="Additional description of the drive offline screen." translateable="false"> + This will use about <ph name="REQUIRED_SPACE">$1<ex>12.2 GB</ex></ph> leaving <ph name="FREE_SPACE">$2<ex>96.8 GB</ex></ph> available + </message> + + <!-- Strings for the locale switch notification inside the OOBE. --> <message name="IDS_LOCALE_SWITCH_NOTIFICATION_TITLE" desc="Title of the notification that is displayed at the bottom-right corner of the screen."> Switch device language?
diff --git a/chrome/app/password_manager_ui_strings.grdp b/chrome/app/password_manager_ui_strings.grdp index cf690678..8cf3814 100644 --- a/chrome/app/password_manager_ui_strings.grdp +++ b/chrome/app/password_manager_ui_strings.grdp
@@ -436,4 +436,13 @@ <message name="IDS_PASSWORD_MANAGER_UI_BACK_TO_PASSWORDS_ARIA_DESCRIPTION" desc="An accessibility description for a button that navigates user from Password details to Passwords page."> Go to Passwords page </message> + <message name="IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_TITLE" desc="A title for the dialog which allows users to move all their passwords from device to Google account."> + Move saved passwords to your Google Account? + </message> + <message name="IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_DESCRIPTION" desc="A description for the dialog which allows users to move all their passwords from device to Google account."> + When you save passwords to your Google Account, you can use them on this device and any others where you're signed in + </message> + <message name="IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_BUTTON" desc="An action button for the dialog which allows users to move all their passwords from device to Google account."> + Move + </message> </grit-part>
diff --git a/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_BUTTON.png.sha1 b/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_BUTTON.png.sha1 new file mode 100644 index 0000000..7599430 --- /dev/null +++ b/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_BUTTON.png.sha1
@@ -0,0 +1 @@ +c9a6db8cd235cedcbfb4f2674d13355763d511ec \ No newline at end of file
diff --git a/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_DESCRIPTION.png.sha1 b/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_DESCRIPTION.png.sha1 new file mode 100644 index 0000000..7599430 --- /dev/null +++ b/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_DESCRIPTION.png.sha1
@@ -0,0 +1 @@ +c9a6db8cd235cedcbfb4f2674d13355763d511ec \ No newline at end of file
diff --git a/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_TITLE.png.sha1 b/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_TITLE.png.sha1 new file mode 100644 index 0000000..7599430 --- /dev/null +++ b/chrome/app/password_manager_ui_strings_grdp/IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_TITLE.png.sha1
@@ -0,0 +1 @@ +c9a6db8cd235cedcbfb4f2674d13355763d511ec \ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_kk.xtb b/chrome/app/resources/chromium_strings_kk.xtb index e815f7ed..44f5916 100644 --- a/chrome/app/resources/chromium_strings_kk.xtb +++ b/chrome/app/resources/chromium_strings_kk.xtb
@@ -86,7 +86,7 @@ <translation id="3032787606318309379">Chromium жүйесіне қосылуда…</translation> <translation id="3038232873781883849">Сәлден соң орнатыла бастайды…</translation> <translation id="3068515742935458733">Google компаниясына жаңылыс туралы есептер және <ph name="UMA_LINK" /> жіберу арқылы Chromium жақсартуға көмектесіңіз</translation> -<translation id="3101560983689755071">Браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамаларға және қызығушылықтарға әсер етеді. Құпиялылығыңызды сақтау үшін Chromium қызығушылықтарды ай сайын автоматты түрде жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла беруі мүмкін.</translation> +<translation id="3101560983689755071">Браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамаларға және қызығушылықтарға әсер етеді. Құпиялығыңызды сақтау үшін Chromium қызығушылықтарды ай сайын автоматты түрде жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла беруі мүмкін.</translation> <translation id="3103660991484857065">Орнату құралы мұрағаттан шығара алмады. Chromium қолданбасын қайта жүктеңіз.</translation> <translation id="3130323860337406239">Chromium микрофоныңызды пайдалануда.</translation> <translation id="3155163173539279776">Chromium қолданбасын қайта іске қосу</translation> @@ -109,7 +109,7 @@ <translation id="3474745554856756813">Құрылғыдан <ph name="ITEMS_COUNT" /> элемент жойылады. Деректерді кейінірек алу үшін Chromium браузеріне <ph name="USER_EMAIL" /> болып кіріңіз.</translation> <translation id="3497319089134299931"><ph name="SHORTCUT" /> арқылы Chromium профильдерін ауыстыруға болады.</translation> <translation id="3509308970982693815">Барлық Chromium терезелерін жауып, әрекетті қайталап көріңіз.</translation> -<translation id="3533435340678213462">Құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chromium-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> +<translation id="3533435340678213462">Құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chromium-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> <translation id="3567254597502212821">Браузерді қолдану тарихы, осы құрылғыда Chromium көмегімен кірген сайттардың жазбасы.</translation> <translation id="3575459661164320785">Компьютеріңізде зиянды бағдарламалық құрал бар. Chromium браузері оны өшіріп, параметрлеріңізді қалпына келтіреді де, кеңейтімдерді ажыратады. Соның арқасында браузеріңіз қалыпты жұмысын жалғастырады.</translation> <translation id="3593091352817399191">Басқа аккаунт кіріп қойған. Браузерді пайдалану тарихын бөлек сақтау үшін Chromium сізге жеке профиль жасай алады.</translation> @@ -180,7 +180,7 @@ <translation id="5224391634244552924">Ешқандай құпия сөз сақталмаған. Құпия сөздер сақталған кезде, Chromium оларды тексере алады.</translation> <translation id="5252179775517634216"><ph name="EXISTING_USER" /> бұл Chromium профиліне кіріп қойған. <ph name="USER_EMAIL_ADDRESS" /> үшін жаңа Chromium профилі жасалады.</translation> <translation id="5277894862589591112">Өзгерістер енуі үшін, Chromium браузерін қайта қосыңыз</translation> -<translation id="5296845517486664001">Сынақ нұсқалары қосылғанда, Chromium сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялылығыңызды сақтау үшін Chromium қызығушылықтарды ай сайын жойып отырады.</translation> +<translation id="5296845517486664001">Сынақ нұсқалары қосылғанда, Chromium сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялығыңызды сақтау үшін 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="538767207339317086">Chromium браузеріне кіруге рұқсат ету</translation> @@ -190,7 +190,7 @@ <translation id="5438241569118040789"><ph name="PAGE_TITLE" /> - Chromium бета нұсқасы</translation> <translation id="5473971139929175403">Chromium дұрыс жұмыс істемеуі мүмкін, себебі оған Linux жүйесінде қолдау көрсетілмейді.</translation> <translation id="5480860683791598150">Бұл сайтқа көрсету үшін Chromium браузері орналасқан жеріңізді білуі керек</translation> -<translation id="5487574057737591516">Құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Егер Chromium браузері қателессе немесе белгілі бір жарнамаларды көргіңіз келмесе, қызығушылықты өшіре аласыз.</translation> +<translation id="5487574057737591516">Құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Егер Chromium браузері қателессе немесе белгілі бір жарнамаларды көргіңіз келмесе, қызығушылықты өшіре аласыз.</translation> <translation id="549669000822060376">Chromium ең соңғы жүйе жаңартуларын орнатуда, күте тұрыңыз.</translation> <translation id="5496810170689441661">Chromium құпия сөздерді өзгерткісі келеді. Бұған рұқсат беру үшін Windows құпия сөзіңізді теріңіз.</translation> <translation id="5527463683072221100">PDF-терді Chromium-де ашу</translation> @@ -205,7 +205,7 @@ <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Желіге кіру</translation> <translation id="5924017743176219022">Интернетке қосылып жатыр…</translation> <translation id="5941711191222866238">Жию</translation> -<translation id="5972142260211327093">Chromium сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялылығыңызды сақтау үшін Chromium қызығушылықтарды ай сайын жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла береді.</translation> +<translation id="5972142260211327093">Chromium сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялығыңызды сақтау үшін Chromium қызығушылықтарды ай сайын жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла береді.</translation> <translation id="5987687638152509985">Chromium браузерін жаңартып, синхрондауды бастаңыз</translation> <translation id="5988505247484123880">Әдетте кіретін сайттарыңыз тәжірибені жекелендіру үшін сізді қызықтыратын нәрселерді есте сақтайды. Сондай-ақ сайттар Chromium браузерінде қызығушылықтарыңыз туралы ақпаратты сақтай алады.</translation> <translation id="6003112304606738118">Жүктеп алынып жатыр… <ph name="HOURS" /> сағат қалды.</translation> @@ -323,7 +323,7 @@ <translation id="7859018312476869945">Мекенжай жолағында немесе іздеу өрісінде терген кезде, Chromium браузері жақсырақ ұсыныстар алу үшін тергеніңізді әдепкі іздеу жүйесіне жібереді. Бұл Инкогнито режимінде өшірілген.</translation> <translation id="7867198900892795913">Chromium браузерінің ең соңғы нұсқасы орнатылмады, сондықтан жаңа мүмкіндіктер мен қауіпсіздікке қатысты түзетілген функцияларды пайдалана алмайсыз.</translation> <translation id="7872446069773932638">Жүктеп алынып жатыр… <ph name="SECONDS" /> секунд қалды.</translation> -<translation id="7877292582355102282"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chromium-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> +<translation id="7877292582355102282"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chromium-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> <translation id="7937630085815544518">Chromium жүйесіне <ph name="USER_EMAIL_ADDRESS" /> ретінде кірдіңіз. Қайта кіру үшін бірдей аккаунтты пайдаланыңыз.</translation> <translation id="7975919845073681630">Бұл – Chromium браузерінің қайта орнатылған нұсқасы және әдепкі браузер бола алмайды.</translation> <translation id="7997934263947464652">Белгісіз дереккөздерден алынған кеңейтім, қолданба, тақырыптар құрылғыңызға зиянын тигізуі мүмкін. Chromium оларды тек <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> дүкенінен орнатуды ұсынады.</translation>
diff --git a/chrome/app/resources/chromium_strings_ne.xtb b/chrome/app/resources/chromium_strings_ne.xtb index 57a7e301..40daa7fa 100644 --- a/chrome/app/resources/chromium_strings_ne.xtb +++ b/chrome/app/resources/chromium_strings_ne.xtb
@@ -252,7 +252,7 @@ <translation id="6613594504749178791">तपाईंले अर्को पटक Chromium लाई पुन: लन्च गर्दा तपाईंका परिवर्तनहरू प्रभावमा आउनेछन्।</translation> <translation id="665732753414869868">तपाईं वरपरको ठाउँको 3D नक्सा बनाउन Chromium लाई क्यामेरा प्रयोग गर्ने अनुमति दिनु पर्ने हुन्छ</translation> <translation id="6663852025006259149">साइटहरूले सम्भवतः तपाईंले अपेक्षा गरेअनुसार काम गर्ने छन् तर तपाईंले Chromium का सबै विन्डोहरू बन्द गरेपछि ती साइटहरूले तपाईंको जानकारी याद राख्ने छैनन्</translation> -<translation id="6676384891291319759">इन्टरनेट पहुँच गर्नुहोस्</translation> +<translation id="6676384891291319759">इन्टरनेट एक्सेस गर्नुहोस्</translation> <translation id="668175097507315160">साइन इन गर्ने क्रममा त्रुटि भएकाले ChromiumOS ले तपाईंको डेटा सिंक गर्न सकेन।</translation> <translation id="6709350901466051922">यो साइट चलाउन Chromium लाई माइक्रोफोन प्रयोग गर्ने अनुमति दिनु पर्ने हुन्छ</translation> <translation id="6717134281241384636">तपाईंको प्रोफाइललाई प्रयोग गर्न सकिँदैन किनभने यो Chromium एउटा नयाँ संस्करणबाट ल्याइएको हो।
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index 77ca173a..a9c02f5 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -2165,6 +2165,7 @@ <translation id="2804043232879091219">Die alternatiewe blaaier kon nie oopgemaak word nie</translation> <translation id="2804667941345577550">Jy sal by hierdie werf afgemeld word, insluitend in oop oortjies</translation> <translation id="2804680522274557040">Kamera is afgeskakel</translation> +<translation id="2804742109948581745">Langs mekaar</translation> <translation id="2805539617243680210">Jy's gereed!</translation> <translation id="2805646850212350655">Microsoft-enkripterende lêerstelsel</translation> <translation id="2805756323405976993">Programme</translation> @@ -2736,6 +2737,7 @@ <translation id="3336855445806447827">Nie seker nie</translation> <translation id="3337568642696914359">Moenie werwe toelaat om protokolle te hanteer nie</translation> <translation id="3340620525920140773">Aflaai voltooi: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">instellings</translation> <translation id="3341699307020049241">Verkeerde PIN. Jy het <ph name="RETRIES" /> pogings oor.</translation> <translation id="3341703758641437857">Laat toegang tot lêer-ULR'e toe</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" wil graag hierdie uitbreiding verwyder.</translation> @@ -4658,6 +4660,7 @@ <translation id="5056950756634735043">Koppel tans aan die houer</translation> <translation id="5057110919553308744">Wanneer jy die uitbreiding klik</translation> <translation id="5059241099014281248">Beperk aanmelding</translation> +<translation id="5059429103770496207">Skermstyl</translation> <translation id="5059526285558225588">Kies wat om te deel</translation> <translation id="5060332552815861872">Daar is 1 drukker beskikbaar om te stoor.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Hierdie vouer bevat 'n boekmerk. Is jy seker jy wil dit uitvee?}other{Hierdie vouer bevat # boekmerke. Is jy seker jy wil dit uitvee?}}</translation> @@ -5592,6 +5595,7 @@ <translation id="5904614460720589786">Kon nie <ph name="APP_NAME" /> opstel nie weens 'n opstellingprobleem. Kontak jou administrateur. Foutkode: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Amper op datum! Herbegin jou toestel om opdatering te voltooi.</translation> <translation id="5906732635754427568">Data wat met hierdie program geassosieer word, sal van hierdie toestel af verwyder word.</translation> +<translation id="5906974869830879618">Voer asseblief 'n PIN in</translation> <translation id="5908474332780919512">Begin program wanneer jy aanmeld</translation> <translation id="5908695239556627796">Muis se rolleesspoed</translation> <translation id="5909379458939060601">Vee hierdie profiel en blaaierdata uit?</translation> @@ -6979,6 +6983,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> gebruik tans jou mikrofoon</translation> <translation id="7141105143012495934">Kon nie aanmeld nie omdat jou rekeningbesonderhede nie gehaal kon word nie. Kontak jou administrateur of probeer weer.</translation> <translation id="7141844554192012199">Kontrole</translation> +<translation id="7143207342074048698">Koppel tans</translation> <translation id="7144878232160441200">Probeer weer</translation> <translation id="7148426638542880639">Werwe sal dalk nie werk soos jy sou verwag nie. Kies hierdie opsie as jy nie inligting op jou toestel wil agterlaat oor werwe wat jy besoek nie.</translation> <translation id="7149839598364933473">Skakel hierdie toestel om in 'n <ph name="DEVICE_OS" />-toestel.</translation> @@ -9382,6 +9387,7 @@ <translation id="964790508619473209">Skermrangskikking</translation> <translation id="965211523698323809">Stuur en ontvang SMS'e van jou <ph name="DEVICE_TYPE" /> af. <ph name="LINK_BEGIN" />Kom meer te wete<ph name="LINK_END" /></translation> <translation id="96535553604365597">Gee 'n kwessie met Google Cast aan</translation> +<translation id="966588271015727539">Kies 'n Bluetooth Braille-skerm</translation> <translation id="967398046773905967">Moenie enige werwe toegang tot HID-toestelle gee nie</translation> <translation id="967624055006145463">Data geberg</translation> <translation id="96774243435178359">Bestuurde drukkers</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 88867ac..29ae157b 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -2159,6 +2159,7 @@ <translation id="2804043232879091219">ተለዋጩ አሳሽ ሊከፈት አይችልም</translation> <translation id="2804667941345577550">ክፍት ትሮችን ጨምሮ፣ ከዚህ ጣቢያ ዘግተው እንዲወጡ ይደረጋሉ</translation> <translation id="2804680522274557040">ካሜራ ጠፍቷል</translation> +<translation id="2804742109948581745">ጎን ለጎን</translation> <translation id="2805539617243680210">በሙሉ ተዘጋጅተዋል!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">መተግበሪያዎች</translation> @@ -2730,6 +2731,7 @@ <translation id="3336855445806447827">እርግጠኛ አይደለሁም</translation> <translation id="3337568642696914359">ጣቢያዎች ፕሮቶኮሎችን እንዲቆጣጠሩ አይፍቀዱ</translation> <translation id="3340620525920140773">ማውረድ ተጠናቅቋል፦ <ph name="FILE_NAME" /></translation> +<translation id="3340978935015468852">ቅንብሮች</translation> <translation id="3341699307020049241">ትክክል ያልሆነ ፒን። ቀሪ <ph name="RETRIES" /> ሙከራዎች አልዎት።</translation> <translation id="3341703758641437857">ለፋይል ዩአርኤልዎች መዳረሻ ፍቀድ</translation> <translation id="3342361181740736773">«<ph name="TRIGGERING_EXTENSION_NAME" />» ይህን ቅጥያ ማስወግድ ይፈልጋል።</translation> @@ -3028,6 +3030,7 @@ <translation id="3609277884604412258">ፈጣን ፍለጋ</translation> <translation id="3610241585790874201">በመሣሪያዎ ላይ ውሂብ ማስቀመጥ አልተፈቀደም</translation> <translation id="3610369246614755442">የትከል አየር ማርገብገቢያ የጥገና አገልግሎት ያስፈልገዋል</translation> +<translation id="3610961622607302617">ለ<ph name="WEBSITE" /> የይለፍ ቃል ይለውጡ።</translation> <translation id="361106536627977100">የFlash ውሂብ</translation> <translation id="3611655097742243705">ተጨማሪ መተግበሪያዎችን ለማግኘት የPlay መደብርን ይጎብኙ</translation> <translation id="3611658447322220736">በቅርቡ የተዘጉ ጣቢያዎች ውሂብን መላክ እና መቀበል መጨረስ ይችላሉ</translation> @@ -4099,6 +4102,7 @@ <translation id="4545759655004063573">በቂ ባልሆኑ ፍቃዶች ምክንያት ማስቀመጥ አልተቻለም። እባክዎ ሌላ ቦታ ላይ ያስቀምጡ።</translation> <translation id="4546308221697447294">ከGoogle Chrome ጋር በፍጥነት ያስሱ</translation> <translation id="4546345569117159016">የቀኝ አዝራር</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> ይህን ቅጥያ መጠቀም ይፈልጋል፦</translation> <translation id="4546692474302123343">የGoogle ረዳት የድምጽ ግቤት</translation> <translation id="4547659257713117923">ከሌሎች መሣሪያዎች ምንም ትሮች የሉም</translation> <translation id="4547672827276975204">በራስ-ሰር አቀናብር</translation> @@ -4647,6 +4651,7 @@ <translation id="5056950756634735043">ከመያዣው ጋር በመገናኘት ላይ</translation> <translation id="5057110919553308744">ቅጥያውን ጠቅ ሲያደርጉ</translation> <translation id="5059241099014281248">በመለያ መግባትን ገድብ</translation> +<translation id="5059429103770496207">የማሳያ ቅጥ</translation> <translation id="5059526285558225588">ምን እንደሚያጋሩ ይምረጡ</translation> <translation id="5060332552815861872">ለማስቀመጥ ሊገኝ የሚችል 1 አታሚ አለ።</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{ይህ አቃፊ ዕልባት አለው። እርግጠኛ ነዎት ሊሰርዙት ይፈልጋሉ?}one{ይህ አቃፊ # ዕልባቶች አሉት። እርግጠኛ ነዎት ሊሰርዙት ይፈልጋሉ?}other{ይህ አቃፊ # ዕልባቶች አሉት። እርግጠኛ ነዎት ሊሰርዙት ይፈልጋሉ?}}</translation> @@ -4956,6 +4961,7 @@ <translation id="5338503421962489998">አካባቢያዊ ማከማቻ</translation> <translation id="5339031667684712858">ያስወገዷቸው ጣቢያዎች</translation> <translation id="5340638867532133571">ጣቢያዎች የክፍያ ተቆጣጣሪዎችን እንዲጭኑ ይፍቀዱ (የሚመከር)</translation> +<translation id="5340787663756381836">አግኝ እና አርትዕ</translation> <translation id="5341793073192892252">የሚከተሉት ኩኪዎች ታግደዋል (የሦስተኛ ወገን ኩኪዎች ሳይገለግሉ እየታገዱ ናቸው)</translation> <translation id="5342091991439452114">ፒን ቢያንስ <ph name="MINIMUM" /> አኃዞች መሆን አለበት</translation> <translation id="5344036115151554031">Linuxን ወደነበረበት በመመለስ ላይ</translation> @@ -5579,6 +5585,7 @@ <translation id="5904614460720589786">በውቅረት ችግር ምክንያት <ph name="APP_NAME" />ን ማቀናበር አልተቻለም። እባክዎ አስተዳዳሪዎን ያነጋግሩ። የስሕተት ኮድ፦ <ph name="ERROR_CODE" />።</translation> <translation id="5906655207909574370">የተዘመነ ለመሆን ጥቂት ብቻ ቀርቷል! ዝማኔውን ለማጠናቀቅ መሣሪያዎን ዳግም ያስጀምሩት።</translation> <translation id="5906732635754427568">ከዚህ መተግበሪያ ጋር የተጎዳኘ ውሂብ ከዚህ መሣሪያ ላይ ይወገዳል።</translation> +<translation id="5906974869830879618">እባክዎ ፒን ያስገቡ</translation> <translation id="5908474332780919512">ሲገቡ መተግበሪያውን ይጀምሩ</translation> <translation id="5908695239556627796">የመዳፊት ሽብለላ ፍጥነት</translation> <translation id="5909379458939060601">ይህ መገለጫ እና የአሰሳ ውሂብ ይሰረዝ?</translation> @@ -6045,6 +6052,7 @@ <translation id="6318125393809743217">የpolicies.json ፋይል ከመመሪያ ውቅረቶች ጋር አካትት።</translation> <translation id="6318407754858604988">ማውረድ ተጀምሯል</translation> <translation id="6318944945640833942">አታሚን ፈልጎ ማግኘት አልተቻለም። እባክዎ የአታሚ አድራሻን እንደገና ያስገቡ።</translation> +<translation id="6320808462673705899">የእርስዎን ፍለጋ የሚዛመዱ ምንም እልባቶች የሉም።</translation> <translation id="6322370287306604163">በጣት አሻራዎ በፍጥነት ይክፈቱ</translation> <translation id="6322559670748154781">ይህ ፋይል በተለምዶ የሚወርድ አይደለም እና በላቀ ጥበቃ ታግዷል</translation> <translation id="6324916366299863871">አቋራጭን ያርትዑ</translation> @@ -6967,6 +6975,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> ማይክሮፎንዎን እየተጠቀመ ነው</translation> <translation id="7141105143012495934">የእርስዎ መለያ ዝርዝሮች ተመልሰው ሊገኙ ሳላልቻሉ መግባት አልተሳካም። እባክዎ የእርስዎን አስተዳዳሪ ያነጋግሩ ወይም እንደገና ይሞክሩ።</translation> <translation id="7141844554192012199">ፍተሻ</translation> +<translation id="7143207342074048698">በመያያዝ ላይ</translation> <translation id="7144878232160441200">እንደገና ሞክር</translation> <translation id="7148426638542880639">ጣቢያዎች እርስዎ እንደሚጠብቁት ላይሰሩ ይችላሉ። ስለሚጎበኟቸው ጣቢያዎች መረጃ በመሳሪያዎ ላይ መተው ካልፈለጉ ይህን አማራጭ ይምረጡ።</translation> <translation id="7149839598364933473">ይህን መሣሪያ ወደ <ph name="DEVICE_OS" /> መሣሪያ ይቀይሩት።</translation> @@ -9355,6 +9364,7 @@ <translation id="939401694733344652">እነዚህ መለያዎች አሁን ከAndroid መተግበሪያዎች ጋር ስራ ላይ እየዋሉ አይደለም። በዚህ የAndroid መተግበሪያ ለመጠቀም መለያ ከመረጡ መለያው ከሌሎች የAndroid መተግበሪያ ጋርም ስራ ላይ ሊውል ይችላል። የAndroid መተግበሪያ መዳረሻን በ<ph name="LINK_BEGIN" />ቅንብሮች > መለያዎች<ph name="LINK_END" /> ውስጥ መለወጥ ይችላሉ።</translation> <translation id="939598580284253335">የይለፍ ሐረግ ያስገቡ</translation> <translation id="939736085109172342">አዲስ ዓቃፊ</translation> +<translation id="940212040923880623">አግኝ እና አርትዕ</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> የChrome ትር እና ኦዲዮ እያጋራ ነው።</translation> <translation id="944799160843436808">Chromebook ላይ Steamን በማዋቀር ላይ ችግር ነበር</translation> <translation id="945522503751344254">ግብረመልስ ላክ</translation> @@ -9376,6 +9386,7 @@ <translation id="964790508619473209">የማያ ገጽ አደራደር</translation> <translation id="965211523698323809">ከእርስዎ <ph name="DEVICE_TYPE" /> ሆነው የጽሑፍ መልዕክቶችን ይላኩ እና ይቀበሉ። <ph name="LINK_BEGIN" />የበለጠ ለመረዳት<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast ላይ ያለውን ችግር ሪፖርት ያድርጉ</translation> +<translation id="966588271015727539">የብሉቱዝ ብሬይል ማሳያ</translation> <translation id="967398046773905967">ማናቸውም ጣቢያዎች የHID መሣሪያዎችን እንዲደርሱ አይፍቀዱ</translation> <translation id="967624055006145463">የተከማቸ ውሂብ</translation> <translation id="96774243435178359">የሚተዳደሩ ማተሚያዎች</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 2d3d379..5288712 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">يُنصَح بتوفير <ph name="INSTALL_SIZE" /> على الأقل من المساحة لنظام التشغيل Linux. ولزيادة المساحة الخالية، يجب حذف ملفات من جهازك.</translation> <translation id="1038643060055067718">الأسطر:</translation> <translation id="1039337018183941703">ملف تالف أو غير صالح</translation> +<translation id="1040761927998636252">إشارة مرجعية بدون اسم للموقع الإلكتروني <ph name="URL" /></translation> <translation id="1041175011127912238">الصفحة لا تستجيب.</translation> <translation id="1041263367839475438">الأجهزة المتوفِّرة</translation> <translation id="1042174272890264476">يأتي جهاز الكمبيوتر أيضًا مزودًا بمكتبة RLZ مضمنة للمنتج <ph name="SHORT_PRODUCT_NAME" />. تعيّن RLZ علامة غير فريدة وغير متعلقة بتحديد الشخصية من أجل قياس عمليات البحث ومعدل استخدام <ph name="SHORT_PRODUCT_NAME" /> الذي تؤثر فيه حملة ترويجية محددة. تظهر هذه التصنيفات أحيانًا في طلبات بحث Google في <ph name="PRODUCT_NAME" />.</translation> @@ -2727,6 +2728,7 @@ <translation id="3336855445806447827">غير متأكّد</translation> <translation id="3337568642696914359">عدم السماح للمواقع الإلكترونية بمعالجة البروتوكولات</translation> <translation id="3340620525920140773">اكتمل التنزيل: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">الإعدادات</translation> <translation id="3341699307020049241">رقم التعريف الشخصي غير صحيح. عدد المحاولات المتبقية لديك هو <ph name="RETRIES" /></translation> <translation id="3341703758641437857">السماح بالدخول إلى عناوين URL للملفات</translation> <translation id="3342361181740736773">يرغب "<ph name="TRIGGERING_EXTENSION_NAME" />" في إزالة هذه الإضافة.</translation> @@ -4097,6 +4099,7 @@ <translation id="4545759655004063573">لا يمكن الحفظ نظرًا لأن الأذونات غير كافية. يُرجى الحفظ في مكان آخر.</translation> <translation id="4546308221697447294">استمتع بالتصفح السريع باستخدام Google Chrome</translation> <translation id="4546345569117159016">زر الماوس الأيمن</translation> +<translation id="4546509872654834602">"<ph name="SUPERVISED_USER_NAME" />" بحاجة إلى استخدام هذه الإضافة</translation> <translation id="4546692474302123343">الإدخال الصوتي في "مساعد Google"</translation> <translation id="4547659257713117923">ليست هناك علامات تبويب من أجهزة أخرى</translation> <translation id="4547672827276975204">ضبط المنطقة الزمنية تلقائيًا</translation> @@ -5578,6 +5581,7 @@ <translation id="5904614460720589786">تعذّر إعداد <ph name="APP_NAME" /> بسبب مشكلة في الضبط. يُرجى التواصل مع مشرفك. رمز الخطأ: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">أوشك التحديث على الانتهاء! أعِد تشغيل الجهاز لإنهاء التحديث.</translation> <translation id="5906732635754427568">ستتم إزالة البيانات المقترنة بهذا التطبيق من هذا الجهاز.</translation> +<translation id="5906974869830879618">يُرجى إدخال رقم تعريف شخصي</translation> <translation id="5908474332780919512">تشغيل التطبيق تلقائيًا عند تسجيل الدخول</translation> <translation id="5908695239556627796">سرعة تمرير الماوس</translation> <translation id="5909379458939060601">هل تريد حذف هذا الملف الشخصي وبيانات التصفّح؟</translation> @@ -6974,6 +6978,7 @@ <translation id="7139627972753429585">يستخدم تطبيق <ph name="APP_NAME" /> الميكروفون.</translation> <translation id="7141105143012495934">فشل تسجيل الدخول، نظرًا لعدم القدرة على استرداد تفاصيل حسابك، يُرجى الاتصال بالمسؤول أو إعادة المحاولة.</translation> <translation id="7141844554192012199">عمليات التحقّق من كلمات المرور</translation> +<translation id="7143207342074048698">اتصال</translation> <translation id="7144878232160441200">إعادة المحاولة</translation> <translation id="7148426638542880639">قد لا تعمل المواقع الإلكترونية على النحو المتوقَّع. حدِّد هذا الخيار إذا كنت لا تريد حفظ المعلومات الخاصة بالمواقع الإلكترونية التي تزورها على جهازك.</translation> <translation id="7149839598364933473">تحويل هذا الجهاز إلى جهاز متوافق مع نظام التشغيل <ph name="DEVICE_OS" /></translation> @@ -7898,7 +7903,7 @@ <translation id="7952904276017482715">رقم التعريف المتوقَّع "<ph name="EXPECTED_ID" />"، ولكن رقم التعريف كان "<ph name="NEW_ID" />".</translation> <translation id="7953669802889559161">أساليب الإدخال</translation> <translation id="7953955868932471628">إدارة لإختصارات</translation> -<translation id="7955105108888461311">طلب الوصول شخصيًا</translation> +<translation id="7955105108888461311">الطلب شخصيًا</translation> <translation id="7955177647836564772">في حال تفعيل مجموعة ميزات Smart Lock وكان هاتفك غير مقفل، لن تحتاج إلى إدخال كلمة مرور أو رقم تعريف شخصي.</translation> <translation id="7956373551960864128">الطابعات المحفوظة</translation> <translation id="7957074856830851026">الاطّلاع على معلومات الجهاز، مثل الرقم التسلسلي أو رقم تعريف مادة العرض</translation> @@ -9382,6 +9387,7 @@ <translation id="964790508619473209">ترتيب موضع الشاشة</translation> <translation id="965211523698323809">إرسال رسائل نصية واستلامها من جهاز <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation> <translation id="96535553604365597">الإبلاغ عن مشكلة في Google Cast</translation> +<translation id="966588271015727539">اختيار عرض البلوتوث بلغة برايل</translation> <translation id="967398046773905967">عدم السماح لأي موقع إلكتروني بالوصول إلى أجهزة HID</translation> <translation id="967624055006145463">البيانات المُخزَّنة</translation> <translation id="96774243435178359">الطابعات المُدارة</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index 2951c5de..667ae92 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Linuxৰ বাবে অতি কমেও <ph name="INSTALL_SIZE" /> ঠাই থকাটো চুপাৰিছ কৰা হয়। খালী ঠাই বঢ়াবলৈ আপোনাৰ ডিভাইচৰ পৰা ফাইলসমূহ মচক।</translation> <translation id="1038643060055067718">শাৰী:</translation> <translation id="1039337018183941703">অমান্য বা ব্যৱহাৰৰ অনুপযোগী ফাইল</translation> +<translation id="1040761927998636252"><ph name="URL" />ৰ নামবিহীন বুকমাৰ্ক</translation> <translation id="1041175011127912238">এই পৃষ্ঠাটোৱে সঁহাৰি জনোৱা নাই</translation> <translation id="1041263367839475438">উপলব্ধ ডিভাইচসমূ্হ</translation> <translation id="1042174272890264476">আপোনাৰ কম্পিউটাৰৰ সৈতে <ph name="SHORT_PRODUCT_NAME" />ৰ RLZ লাইব্ৰেৰী অন্তনিৰ্মিত ভাৱে আছে। কোনো বিশেষ প্ৰচাৰ অভিযানত ব্যৱহাৰ হোৱা সন্ধান আৰু <ph name="SHORT_PRODUCT_NAME" />ৰ ব্যৱহাৰ জুখিবলৈ RLZএ কোনো অদ্বৈত নোহোৱা, ব্যক্তিগতভাৱে চিনাক্ত কৰিব নোৱাৰা টেগ দিয়ে। এই লেবেলসমূহ কেতিয়াবা <ph name="PRODUCT_NAME" />ৰ Google Searchত কৰা সন্ধানত প্ৰদর্শিত হয়।</translation> @@ -2163,6 +2164,7 @@ <translation id="2804043232879091219">বিকল্প ব্ৰাউজাৰটো খুলিব পৰা নগ'ল</translation> <translation id="2804667941345577550">খোলা থকা টেবসমূহকে ধৰি আপুনি এই ছাইটটোৰ পৰা ছাইন আউট হৈ যাব</translation> <translation id="2804680522274557040">কেমেৰা অফ কৰা আছে</translation> +<translation id="2804742109948581745">ছাইড-বাই-ছাইড</translation> <translation id="2805539617243680210">আপুনি সম্পূৰ্ণ সাজু!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">এপ্</translation> @@ -2734,6 +2736,7 @@ <translation id="3336855445806447827">নিশ্চিত নহয়</translation> <translation id="3337568642696914359">ছাইটক প্ৰট’কল পৰিচালনা কৰাৰ অনুমতি নিদিব</translation> <translation id="3340620525920140773">ডাউনল’ড সম্পূর্ণ হ’ল: <ph name="FILE_NAME" />।</translation> +<translation id="3340978935015468852">ছেটিংসমূহ</translation> <translation id="3341699307020049241">ভুল পিন। আপোনাৰ <ph name="RETRIES" />টা প্ৰচেষ্টা বাকী আছে।</translation> <translation id="3341703758641437857">ফাইলৰ URL এক্সেছ কৰাৰ অনুমতি দিয়ক</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />"এ এই এক্সটেনশ্বনটো আঁতৰাব খোজে।</translation> @@ -4655,6 +4658,7 @@ <translation id="5056950756634735043">কণ্টেইনাৰৰ সৈতে সংযোগ কৰি থকা হৈছে</translation> <translation id="5057110919553308744">যেতিয়া আপুনি এক্সটেনশ্বনটো ক্লিক কৰে</translation> <translation id="5059241099014281248">ছাইন ইন সীমাবদ্ধ কৰক</translation> +<translation id="5059429103770496207">ডিছপ্লে’ শৈলী</translation> <translation id="5059526285558225588">কি শ্বেয়াৰ কৰিব সেয়া বাছনি কৰক</translation> <translation id="5060332552815861872">ছেভ কৰিবলৈ ১ টা প্ৰিণ্টাৰ উপলব্ধ।</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{এই ফ’ল্ডাৰটোত এটা বুকমাৰ্ক আছে। আপুনি এইটো নিশ্চিতভাৱে মচিবলৈ বিচাৰেনে?}one{এই ফ’ল্ডাৰটোত #টা বুকমাৰ্ক আছে। আপুনি এইটো নিশ্চিতভাৱে মচিবলৈ বিচাৰেনে?}other{এই ফ’ল্ডাৰটোত #টা বুকমাৰ্ক আছে। আপুনি এইটো নিশ্চিতভাৱে মচিবলৈ বিচাৰেনে?}}</translation> @@ -5588,6 +5592,7 @@ <translation id="5904614460720589786">কনফিগাৰেশ্বন সম্পৰ্কীয় এটা সমস্যাৰ বাবে <ph name="APP_NAME" /> ছেট আপ কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক। আসোঁৱাহ ক’ড: <ph name="ERROR_CODE" />।</translation> <translation id="5906655207909574370">প্ৰায় আপ টু ডে’ট! আপডে’ট কৰা সম্পূৰ্ণ কৰিবলৈ আপোনাৰ ডিভাইচটো ৰিষ্টার্ট কৰক।</translation> <translation id="5906732635754427568">এই এপ্টোৰ সৈতে জড়িত ডেটা এই ডিভাইচটোৰ পৰা আঁতৰোৱা হ’ব।</translation> +<translation id="5906974869830879618">অনুগ্ৰহ কৰি পিন দিয়ক</translation> <translation id="5908474332780919512">আপুনি ছাইন ইন কৰিলে এপ্টো আৰম্ভ কৰক</translation> <translation id="5908695239556627796">মাউছ স্ক্ৰ’লৰ গতিবেগ</translation> <translation id="5909379458939060601">এই প্ৰ’ফাইলটো আৰু ব্ৰাউজিঙৰ ডেটা মচিবনে?</translation> @@ -6977,6 +6982,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" />এ আপোনাৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰি আছে</translation> <translation id="7141105143012495934">আপোনাৰ একাউণ্টৰ সবিশেষ পুনৰুদ্ধাৰ কৰিব নোৱাৰাৰ বাবে ছাইন ইন কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক বা আকৌ চেষ্টা কৰক।</translation> <translation id="7141844554192012199">চেকআপ</translation> +<translation id="7143207342074048698">সংযোগ হৈছে</translation> <translation id="7144878232160441200">পুনৰ চেষ্টা কৰক</translation> <translation id="7148426638542880639">ছাইটসমূহে আপুনি আশা কৰা ধৰণে কাম নকৰিব পাৰে। আপুনি যদি আপোনাৰ ডিভাইচত আপুনি চোৱা ছাইটসমূহৰ তথ্য ৰাখিব নিবিচাৰে, এই বিকল্পটো বাছনি কৰক।</translation> <translation id="7149839598364933473">এই ডিভাইচটো এটা <ph name="DEVICE_OS" /> ডিভাইচলৈ ৰূপান্তৰ কৰক।</translation> @@ -9381,6 +9387,7 @@ <translation id="964790508619473209">স্ক্ৰীনৰ ব্যৱস্থাপনা</translation> <translation id="965211523698323809">আপোনাৰ <ph name="DEVICE_TYPE" />ৰ পৰা পাঠ বাৰ্তা পঠিয়াওক আৰু গ্ৰহণ কৰক। <ph name="LINK_BEGIN" />অধিক জানক<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Castত হোৱা সমস্যাৰ অভিযোগ দিয়ক</translation> +<translation id="966588271015727539">কোনো ব্লুটুথ ব্ৰেইল ডিছপ্লে’ বাছনি কৰক</translation> <translation id="967398046773905967">কোনো ছাইটক HID ডিভাইচসমূহ এক্সেছ কৰিবলৈ নিদিব</translation> <translation id="967624055006145463">ডেটা ষ্ট’ৰ কৰা হ’ল</translation> <translation id="96774243435178359">পৰিচালিত প্ৰিণ্টাৰ</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index 31cf3d3..1b7d743 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -2149,6 +2149,7 @@ <translation id="2804043232879091219">Alternativ brauzeri açmaq mümkün olmadı</translation> <translation id="2804667941345577550">Açıq tablar da daxil olmaqla, bu saytdan çıxmış olacaqsınız</translation> <translation id="2804680522274557040">Kamera deaktivdir</translation> +<translation id="2804742109948581745">Yan-yana</translation> <translation id="2805539617243680210">Hər şey hazırdır!</translation> <translation id="2805646850212350655">Microsoft Şifrələmə Fayl Sistemi</translation> <translation id="2805756323405976993">Tətbiq</translation> @@ -2720,6 +2721,7 @@ <translation id="3336855445806447827">Əmin deyiləm</translation> <translation id="3337568642696914359">Saytlara protokolları nizamlamaq icazəsi verməyin</translation> <translation id="3340620525920140773">Endirmə tamamlandı: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">ayarlar</translation> <translation id="3341699307020049241">Yanlış PIN. <ph name="RETRIES" /> cəhdiniz qalır.</translation> <translation id="3341703758641437857">Fayl URL-lərinə girişə icazə verin</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" bu artırmanı silmək istəyir.</translation> @@ -4639,6 +4641,7 @@ <translation id="5056950756634735043">Konteynerə qoşulur</translation> <translation id="5057110919553308744">Artırmaya kliklədiyiniz vaxt</translation> <translation id="5059241099014281248">Girişi məhdudlaşdırın</translation> +<translation id="5059429103770496207">Displey üslubu</translation> <translation id="5059526285558225588">Nəyi paylaşacağınızı seçin</translation> <translation id="5060332552815861872">Yadda saxlanıla biləcək 1 printer var.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Bu qovluqda əlfəcin var. Onu silmək istədiyinizə əminsiniz?}other{Bu qovluqda # əlfəcin var. Onu silmək istədiyinizə əminsiniz?}}</translation> @@ -5572,6 +5575,7 @@ <translation id="5904614460720589786">Konfiqurasiya xətasına görə <ph name="APP_NAME" /> tətbiqini ayarlamaq mümkün olmadı. Administratorunuz ilə əlaqə saxlayın. Xəta kodu: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Güncəllənmək üzrədir! Güncəlləməni tamamlamaq üçün cihazı yenidən başladın.</translation> <translation id="5906732635754427568">Bu tətbiqlə bağlı data cihazdan silinəcək.</translation> +<translation id="5906974869830879618">Pin daxil edin</translation> <translation id="5908474332780919512">Daxil Olduqda Tətbiqi Başladın</translation> <translation id="5908695239556627796">Siçanın sürüşdürmə sürəti</translation> <translation id="5909379458939060601">Bu profil və baxış datası silinsin?</translation> @@ -6957,6 +6961,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> mikrofonunuzdan istifadə edir</translation> <translation id="7141105143012495934">Sign-sizin hesab ayrıntıları alına bilməz, çünki uğursuz oldu. Sizin administratoru ilə əlaqə və ya yenidən cəhd edin.</translation> <translation id="7141844554192012199">Yoxlanış</translation> +<translation id="7143207342074048698">Qoşulur</translation> <translation id="7144878232160441200">Yenidən cəhd edin</translation> <translation id="7148426638542880639">Saytlar gözlədiyiniz kimi işləməyə bilər. Ziyarət etdiyiniz saytlar haqqında cihazınızda məlumat saxlamaq istəmirsinizsə, bu seçimi edin.</translation> <translation id="7149839598364933473">Bu cihazı <ph name="DEVICE_OS" /> cihazına çevirin.</translation> @@ -9358,6 +9363,7 @@ <translation id="964790508619473209">Ekran tənzimlənməsi</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> cihazından mətn mesajları göndərin və alın. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Yayımla əlaqəli problemi bildirin</translation> +<translation id="966588271015727539">Bluetooth brayl displeyi seçin</translation> <translation id="967398046773905967">Saytların HID cihazlarına girişinə icazə verməyin</translation> <translation id="967624055006145463">Yadda saxlanmış data</translation> <translation id="96774243435178359">İdarə edilən printerlər</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index 5c08b97..f40e83b 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -2153,6 +2153,7 @@ <translation id="2804043232879091219">Не ўдалося адкрыць альтэрнатыўны браўзер</translation> <translation id="2804667941345577550">Будзе выкананы выхад з гэтага сайта, у тым ліку на адкрытых укладках</translation> <translation id="2804680522274557040">Камера выключана</translation> +<translation id="2804742109948581745">Побач</translation> <translation id="2805539617243680210">Усё гатова!</translation> <translation id="2805646850212350655">Шыфраваная файлавая сістэма Microsoft</translation> <translation id="2805756323405976993">Праграмы</translation> @@ -2724,6 +2725,7 @@ <translation id="3336855445806447827">Не ведаю</translation> <translation id="3337568642696914359">Не дазваляць сайтам кіраваць пратаколамі</translation> <translation id="3340620525920140773">Спампоўванне завершана: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">налады</translation> <translation id="3341699307020049241">Няправільны PIN-код. Засталося спроб: <ph name="RETRIES" />.</translation> <translation id="3341703758641437857">Дазволіць доступ да спасылак на файлы</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" прапануе выдаліць гэта пашырэнне.</translation> @@ -4094,6 +4096,7 @@ <translation id="4545759655004063573">Захаваць не ўдалося: недастаткова дазволаў. Выберыце іншае месцазнаходжанне.</translation> <translation id="4546308221697447294">Хуткі прагляд з Google Chrome</translation> <translation id="4546345569117159016">Правая кнопка</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> хоча выкарыстоўваць пашырэнне:</translation> <translation id="4546692474302123343">Галасавы ўвод з дапамогай Памочніка Google</translation> <translation id="4547659257713117923">Няма ўкладак з іншых прылад</translation> <translation id="4547672827276975204">Вызначаць аўтаматычна</translation> @@ -4642,6 +4645,7 @@ <translation id="5056950756634735043">Ідзе падключэнне да кантэйнера</translation> <translation id="5057110919553308744">Пры націсканні на пашырэнне</translation> <translation id="5059241099014281248">Задаць абмежаванні на ўваход</translation> +<translation id="5059429103770496207">Стыль паказу</translation> <translation id="5059526285558225588">Выберыце, што абагульваць</translation> <translation id="5060332552815861872">Даступны 1 прынтар, які можна захаваць.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{У гэтай папцы ёсць закладка. Вы ўпэўненыя, што хочаце яе выдаліць?}one{У гэтай папцы ёсць # закладка. Вы ўпэўненыя, што хочаце яе выдаліць?}few{У гэтай папцы ёсць # закладкі. Вы ўпэўненыя, што хочаце яе выдаліць?}many{У гэтай папцы ёсць # закладак. Вы ўпэўненыя, што хочаце яе выдаліць?}other{У гэтай папцы ёсць # закладкі. Вы ўпэўненыя, што хочаце яе выдаліць?}}</translation> @@ -4951,6 +4955,7 @@ <translation id="5338503421962489998">Лакальнае сховішча</translation> <translation id="5339031667684712858">Сайты, выдаленыя вамі</translation> <translation id="5340638867532133571">Дазволіць сайтам усталёўваць апрацоўшчыкі аплаты (рэкамендуецца)</translation> +<translation id="5340787663756381836">&Знайсці і змяніць</translation> <translation id="5341793073192892252">Наступныя файлы cookie былі заблакіраваны (староннія файлы cookie блакіруюцца без выключэнняў)</translation> <translation id="5342091991439452114">Мінімальная колькасць лічбаў PIN-кода: <ph name="MINIMUM" /></translation> <translation id="5344036115151554031">Ідзе аднаўленне Linux</translation> @@ -5574,6 +5579,7 @@ <translation id="5904614460720589786">Не ўдалося наладзіць праграму <ph name="APP_NAME" /> з-за праблемы канфігурацыі. Звярніцеся да адміністратара. Код памылкі: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Амаль гатова! Каб завяршыць абнаўленне, перазапусціце прыладу.</translation> <translation id="5906732635754427568">Даныя, звязаныя з гэтай праграмай, будуць выдалены з гэтай прылады.</translation> +<translation id="5906974869830879618">Увядзіце PIN-код</translation> <translation id="5908474332780919512">Запускаць праграму пры ўваходзе</translation> <translation id="5908695239556627796">Хуткасць прагорткі мышшу</translation> <translation id="5909379458939060601">Выдаліць гэты профіль і даныя прагляду старонак у інтэрнэце?</translation> @@ -5843,6 +5849,7 @@ <translation id="6136114942382973861">Закрыць панэль спамповак</translation> <translation id="6136287496450963112">Ключ бяспекі не абаронены PIN-кодам. Каб кіраваць адбіткамі пальцаў, спачатку стварыце PIN-код.</translation> <translation id="6138680304137685902">Подпіс X9.62 ECDSA з SHA-384</translation> +<translation id="6140948187512243695">Паказаць падрабязныя звесткі</translation> <translation id="6141988275892716286">Пацвярджэнне спампоўвання</translation> <translation id="6143186082490678276">Даведка</translation> <translation id="6143366292569327983">Выберыце, з якой мовы трэба перакладаць старонку</translation> @@ -6966,6 +6973,7 @@ <translation id="7139627972753429585">Праграма "<ph name="APP_NAME" />" выкарыстоўвае ваш мікрафон</translation> <translation id="7141105143012495934">Уваход не выкананы: не ўдалося атрымаць даныя ўліковага запісу. Звярніцеся да адміністратара або паўтарыце спробу.</translation> <translation id="7141844554192012199">Праверка</translation> +<translation id="7143207342074048698">Падключэнне</translation> <translation id="7144878232160441200">Паўтарыць</translation> <translation id="7148426638542880639">Сайты могуць працаваць некарэктна. Выберыце гэты варыянт, калі не хочаце, каб на прыладзе захоўвалася інфармацыя пра наведаныя сайты.</translation> <translation id="7149839598364933473">Усталяваць <ph name="DEVICE_OS" /> на гэту прыладу.</translation> @@ -9347,6 +9355,7 @@ <translation id="939401694733344652">Гэтыя ўліковыя запісы цяпер не выкарыстоўваюцца ў праграмах для Android. Калі вы выбераце ўліковы запіс для выкарыстання ў гэтай праграме для Android, яго можна будзе выкарыстаць і ў іншых такіх праграмах. Параметры доступу да праграм для Android можна змяніць у раздзеле <ph name="LINK_BEGIN" />Налады > Уліковыя запісы<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Увядзіце фразу-пароль</translation> <translation id="939736085109172342">Новая папка</translation> +<translation id="940212040923880623">&Знайсці і змяніць</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> абагульвае гук і ўкладку Chrome.</translation> <translation id="944799160843436808">Не ўдалося наладзіць Steam на Chromebook</translation> <translation id="945522503751344254">Адправіць водгук</translation> @@ -9368,6 +9377,7 @@ <translation id="964790508619473209">Размяшчэнне экранаў</translation> <translation id="965211523698323809">Адпраўляйце і атрымлівайце тэкставыя паведамленні з прылады "<ph name="DEVICE_TYPE" />". <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation> <translation id="96535553604365597">Паскардзіцца на праблему з Google Cast</translation> +<translation id="966588271015727539">Выбраць дысплэй Брайля з падключэннем праз Bluetooth</translation> <translation id="967398046773905967">Не дазваляць сайтам атрымліваць доступ да прылад HID</translation> <translation id="967624055006145463">Захаваныя даныя</translation> <translation id="96774243435178359">Прынтары пад кіраваннем</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index 6c7de271..0d89ea38 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -2162,6 +2162,7 @@ <translation id="2804043232879091219">Алтернативният браузър не можа да се отвори</translation> <translation id="2804667941345577550">Ще излезете от профила си в този сайт, включително в отворените раздели</translation> <translation id="2804680522274557040">Камерата е изключена</translation> +<translation id="2804742109948581745">Паралелно</translation> <translation id="2805539617243680210">Всичко е готово!</translation> <translation id="2805646850212350655">Шифроване на файлова система от Microsoft</translation> <translation id="2805756323405976993">Приложения</translation> @@ -2733,6 +2734,7 @@ <translation id="3336855445806447827">Не знам със сигурност</translation> <translation id="3337568642696914359">Да не се разрешава на сайтовете да обработват протоколи</translation> <translation id="3340620525920140773">Изтеглянето завърши: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">настройките</translation> <translation id="3341699307020049241">Неправилен ПИН код. Остават ви <ph name="RETRIES" /> опита.</translation> <translation id="3341703758641437857">Да се разреши достъп до URL адресите на файловете</translation> <translation id="3342361181740736773"><ph name="TRIGGERING_EXTENSION_NAME" /> иска да премахне това разширение.</translation> @@ -4656,6 +4658,7 @@ <translation id="5056950756634735043">Установява се връзка с контейнера</translation> <translation id="5057110919553308744">При кликване върху разширението</translation> <translation id="5059241099014281248">Ограничаване на влизането в профил</translation> +<translation id="5059429103770496207">Стил на показване</translation> <translation id="5059526285558225588">Изберете какво да споделите</translation> <translation id="5060332552815861872">За запазване е налице 1 принтер.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Тази папка съдържа отметка. Наистина ли искате да я изтриете?}other{Тази папка съдържа # отметки. Наистина ли искате да я изтриете?}}</translation> @@ -5590,6 +5593,7 @@ <translation id="5904614460720589786">Настройването на <ph name="APP_NAME" /> не бе успешно поради проблем с конфигурирането. Моля, обърнете се към администратора си. Код на грешката: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Актуализирането почти завърши! Остава само да рестартирате устройството си.</translation> <translation id="5906732635754427568">Данните, свързани с това приложение, ще бъдат премахнати от устройството.</translation> +<translation id="5906974869830879618">Моля, въведете ПИН код</translation> <translation id="5908474332780919512">Стартиране на приложението, когато влезете в профила си</translation> <translation id="5908695239556627796">Скорост на превъртане с мишката</translation> <translation id="5909379458939060601">Този потребителски профил и данните за сърфирането да се изтрият ли?</translation> @@ -6977,6 +6981,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> използва микрофона ви</translation> <translation id="7141105143012495934">Влизането не бе успешно, тъй като данните за профила ви не можаха да се извлекат. Моля, свържете се с администратора си или опитайте отново.</translation> <translation id="7141844554192012199">Проверка</translation> +<translation id="7143207342074048698">Свързва се</translation> <translation id="7144878232160441200">Повторен опит</translation> <translation id="7148426638542880639">Сайтовете може да не работят по очаквания начин. Изберете тази опция, ако не искате на устройството ви да остава информация за сайтовете, които посещавате.</translation> <translation id="7149839598364933473">Преобразуване на това устройство в такова с <ph name="DEVICE_OS" />.</translation> @@ -9381,6 +9386,7 @@ <translation id="964790508619473209">Позициониране на екраните</translation> <translation id="965211523698323809">Изпращайте и получавайте SMS съобщения от своя <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation> <translation id="96535553604365597">Подаване на сигнал за проблем с Google Cast</translation> +<translation id="966588271015727539">Избиране на екран за брайлово писмо с Bluetooth</translation> <translation id="967398046773905967">Забраняване на сайтовете да осъществяват достъп до HID устройства</translation> <translation id="967624055006145463">Съхранени данни</translation> <translation id="96774243435178359">Управлявани принтери</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index aa44d5c2..41711fc 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Linux-এর জন্য কমপক্ষে <ph name="INSTALL_SIZE" /> জায়গা খালি রাখার জন্য সাজেস্ট করা হচ্ছে। খালি জায়গা বাড়াতে, আপনার ডিভাইস থেকে ফাইল মুছে দিন।</translation> <translation id="1038643060055067718">লাইনের সংখ্যা:</translation> <translation id="1039337018183941703">ভুল বা দূষিত ফাইল</translation> +<translation id="1040761927998636252"><ph name="URL" />-এর জন্য নামহীন বুকমার্ক</translation> <translation id="1041175011127912238">এই পৃষ্ঠা সাড়া দিচ্ছে না</translation> <translation id="1041263367839475438">উপলভ্য ডিভাইস</translation> <translation id="1042174272890264476">আপনার কম্পিউটারও <ph name="SHORT_PRODUCT_NAME" /> এর RLZ লাইব্রেরি বিল্ট ইনের সাথে আসে৷ RLZ সার্চগুলি পরিমাপ করার জন্য একটি সাধারণ, ব্যক্তিগতভাবে সনাক্তকরণযোগ্য নয় এমন ট্যাগ নির্ধারণ করে এবং <ph name="SHORT_PRODUCT_NAME" /> এর ব্যবহার একটি নির্দিষ্ট প্রচারাভিযানের মাধ্যমে চালিত হয়৷ এই লেবেলগুলি কখনো কখনো <ph name="PRODUCT_NAME" /> এ Google সার্চ ক্যোয়ারিগুলিতে প্রদর্শিত হয়৷</translation> @@ -2737,6 +2738,7 @@ <translation id="3336855445806447827">নিশ্চিত নই</translation> <translation id="3337568642696914359">প্রোটোকল ব্যবহার করার অনুমতি দেয় না</translation> <translation id="3340620525920140773">ডাউনলোড সম্পূর্ণ হয়েছে: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">সেটিংস</translation> <translation id="3341699307020049241">ভুল পিন। আপনি আর <ph name="RETRIES" /> বার চেষ্টা করতে পারবেন।</translation> <translation id="3341703758641437857">ফাইল URLগুলিতে অ্যাক্সেস মঞ্জুর করুন</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" এই এক্সটেনশনটি সরিয়ে দিতে চাইছে।</translation> @@ -4110,6 +4112,7 @@ <translation id="4545759655004063573">অপর্যাপ্ত অনুমতির কারণে সংরক্ষণ করতে পারবেন না৷ দয়া করে অন্য কোনো স্থানে সংরক্ষণ করুন৷</translation> <translation id="4546308221697447294">Google Chrome দিয়ে দ্রুত ব্রাউজ করুন</translation> <translation id="4546345569117159016">ডানদিকের বোতাম</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> এই এক্সটেনশন ব্যবহার করতে চান:</translation> <translation id="4546692474302123343">Google Assistant-এর ভয়েস ইনপুট</translation> <translation id="4547659257713117923">অন্য ডিভাইসগুলি থেকে কোনো ট্যাব নেই</translation> <translation id="4547672827276975204">অটোমেটিক সেট হবে</translation> @@ -5593,6 +5596,7 @@ <translation id="5904614460720589786">কনফিগার করার সময় সমস্যা হওয়ার জন্য <ph name="APP_NAME" /> সেট-আপ করা যায়নি। আপনার অ্যাডমিনের সাথে যোগাযোগ করুন। সমস্যার কোড: <ph name="ERROR_CODE" />।</translation> <translation id="5906655207909574370">প্রায় আপ-টু-ডেট হয়েছে! আপডেট শেষ করতে আপনার ডিভাইস আবার চালু করুন।</translation> <translation id="5906732635754427568">এই অ্যাপ্লিকেশান সংশ্লিষ্ট ডেটা এই ডিভাইস থেকে সরিয়ে ফেলা হবে।</translation> +<translation id="5906974869830879618">পিন নম্বর লিখুন</translation> <translation id="5908474332780919512">সাইন-ইন করলেই অ্যাপ চালু হয়ে যাবে</translation> <translation id="5908695239556627796">মাউসের মাধ্যমে স্ক্রল করার স্পিড</translation> <translation id="5909379458939060601">এই প্রোফাইল এবং ব্রাউজিং ডেটা মুছে ফেলতে চান?</translation> @@ -6983,6 +6987,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> আপনার মাইক্রোফোন ব্যবহার করছে</translation> <translation id="7141105143012495934">আপনার অ্যাকাউন্টের বিশদ বিবরণ পুনরুদ্ধার করতে না পারায় সাইন-ইন ব্যর্থ হয়েছে। অনুগ্রহ করে আপনার প্রশাসকের সাথে যোগাযোগ করুন অথবা আবার চেষ্টা করুন।</translation> <translation id="7141844554192012199">পরীক্ষা</translation> +<translation id="7143207342074048698">সংযুক্ত হচ্ছে</translation> <translation id="7144878232160441200">আবার চেষ্টা করুন</translation> <translation id="7148426638542880639">আপনার প্রত্যাশা অনুযায়ী সাইটগুলি কাজ নাও করতে পারে। আপনি যে সাইটগুলিতে যান সেই সম্পর্কে আপনার ডিভাইসে তথ্য রাখতে না চাইলে এই বিকল্পটি বেছে নিন।</translation> <translation id="7149839598364933473">এই ডিভাইসকে <ph name="DEVICE_OS" /> ডিভাইসে রূপান্তরিত করুন।</translation> @@ -9387,6 +9392,7 @@ <translation id="964790508619473209">স্ক্রিন সাজানো</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> থেকে টেক্সট মেসেজ পাঠান ও পান। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast ব্যবহার করে সমস্যার বিষয়ে অভিযোগ জানান</translation> +<translation id="966588271015727539">ব্লুটুথ ব্রেইল ডিসপ্লে বেছে নিন</translation> <translation id="967398046773905967">কোনও সাইটকে HID ডিভাইস অ্যাক্সেস করার অনুমতি দেবেন না</translation> <translation id="967624055006145463">ডেটা স্টোর করা হয়েছে</translation> <translation id="96774243435178359">ম্যানেজ করা প্রিন্টার</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 6b13b35..7b75977 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -46,7 +46,7 @@ <translation id="1038462104119736705">Preporučuje se najmanje <ph name="INSTALL_SIZE" /> slobodnog prostora za Linux. Da oslobodite prostor, izbrišite fajlove s uređaja.</translation> <translation id="1038643060055067718">Redovi:</translation> <translation id="1039337018183941703">Nevažeći ili oštećen fajl</translation> -<translation id="1040761927998636252">Neimenovana oznaka za <ph name="URL" /></translation> +<translation id="1040761927998636252">Oznaka bez naziva za <ph name="URL" /></translation> <translation id="1041175011127912238">Ova stranica ne reagira</translation> <translation id="1041263367839475438">Dostupni uređaji</translation> <translation id="1042174272890264476">Vaš računar također ima ugrađenu RLZ biblioteku proizvoda <ph name="SHORT_PRODUCT_NAME" />. RLZ dodjeljuje nejedinstvenu oznaku koja ne može poslužiti za ličnu identifikaciju za mjerenje pretraživanja i korištenje proizvoda <ph name="SHORT_PRODUCT_NAME" /> do kojeg je došlo putem određene promotivne kampanje. Te oznake se nekada pojavljuju u upitima Google Pretraživanja u proizvodu <ph name="PRODUCT_NAME" />.</translation> @@ -118,6 +118,7 @@ <translation id="1090541560108055381">Prije uparivanja, provjerite je li ovaj kôd prikazan na oba uređaja</translation> <translation id="1091767800771861448">Pritisnite tipku Esc da preskočite (samo nezvanične verzije).</translation> <translation id="1093457606523402488">Vidljive mreže:</translation> +<translation id="1094219634413363886">Ako snimanje počne na ovom upravljanom uređaju, prikazat će se obavijest</translation> <translation id="1095761715416917775">Provjerite možete li uvijek pristupiti sinhroniziranim podacima</translation> <translation id="1095879482467973146">Google upravitelj lozinki na webu</translation> <translation id="109647177154844434">Ako deinstalirate Parallels Desktop, izbrisat ćete sliku Windowsa. To obuhvata aplikacije, postavke i podatke. Jeste li sigurni da želite nastaviti?</translation> @@ -2737,6 +2738,7 @@ <translation id="3336855445806447827">Ne znam</translation> <translation id="3337568642696914359">Nemoj dozvoliti web lokacijama upravljanje protokolima</translation> <translation id="3340620525920140773">Preuzimanje je završeno: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">postavke</translation> <translation id="3341699307020049241">Pogrešan PIN. Broj preostalih pokušaja: <ph name="RETRIES" />.</translation> <translation id="3341703758641437857">Dozvoli pristup URL-ovima fajlova</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" želi ukloniti ovu ekstenziju.</translation> @@ -3866,6 +3868,7 @@ <translation id="4340125850502689798">Nevažeće korisničko ime</translation> <translation id="4340515029017875942"><ph name="ORIGIN" /> želi komunicirati s aplikacijom "<ph name="EXTENSION_NAME" />"</translation> <translation id="4340799661701629185">Nemoj dozvoliti web lokacijama slanje obavještenja</translation> +<translation id="4341280816303414009">Vaš će se zaslon možda snimiti</translation> <translation id="4341577178275615435">Da uključite ili isključite navigaciju kursorom, koristite prečicu F7</translation> <translation id="4341905082470253054">Provjera statusa TPM-a...</translation> <translation id="434198521554309404">Brzo. Sigurno. Lako.</translation> @@ -4125,7 +4128,7 @@ <translation id="4558426062282641716">Zatraženo je odobrenje za automatsko pokretanje</translation> <translation id="4559617833001311418">Ova web lokacija pristupa vašim senzorima pokreta ili svjetla.</translation> <translation id="4561893854334016293">Nema nedavno promijenjenih odobrenja</translation> -<translation id="4562155214028662640">Dodaj otisak prsta</translation> +<translation id="4562155214028662640">Dodajte otisak prsta</translation> <translation id="4563210852471260509">Početni jezik unosa je kineski</translation> <translation id="4563382028841851106">Ukloni s računa</translation> <translation id="4563880231729913339">3. prst</translation> @@ -4969,7 +4972,7 @@ <translation id="5338503421962489998">Lokalna pohrana</translation> <translation id="5339031667684712858">Web lokacije koje ste uklonili</translation> <translation id="5340638867532133571">Dozvolite web lokacijama da instaliraju obrađivače uplata (preporučeno)</translation> -<translation id="5340787663756381836">&Traži i uredi</translation> +<translation id="5340787663756381836">&Pronađi i uredi</translation> <translation id="5341793073192892252">Sljedeći kolačići su blokirani (kolačići treće strane se blokiraju bez izuzetka)</translation> <translation id="5342091991439452114">Broj cifara u PIN-u mora biti najmanje <ph name="MINIMUM" /></translation> <translation id="5344036115151554031">Vraćanje Linuxa</translation> @@ -5593,6 +5596,7 @@ <translation id="5904614460720589786">Postavljanje aplikacije <ph name="APP_NAME" /> nije uspjelo zbog problema s konfiguracijom. Kontaktirajte administratora. Kȏd greške: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Još malo pa je ažurirano! Ponovo pokrenite uređaj da završite ažuriranje.</translation> <translation id="5906732635754427568">Podaci koji su povezani s ovom aplikacijom bit će uklonjeni s ovog uređaja.</translation> +<translation id="5906974869830879618">Unesite PIN</translation> <translation id="5908474332780919512">Pokreni aplikaciju prilikom prijave</translation> <translation id="5908695239556627796">Brzina klizanja miša</translation> <translation id="5909379458939060601">Izbrisati ovaj profil i podatke o pregledanju?</translation> @@ -5689,6 +5693,7 @@ <translation id="5979421442488174909">&Prevedi na <ph name="LANGUAGE" /> jezik</translation> <translation id="5979469435153841984">Da označite stranice, kliknite na zvjezdicu u traci za adresu</translation> <translation id="5981362776161841923">Da dozvolite ekstenziju, promijenite zadanu postavku u nastavku.</translation> +<translation id="5982578203375898585">Prikaži preuzimanja nakon dovršetka</translation> <translation id="5984222099446776634">Nedavno posjećeno</translation> <translation id="5985458664595100876">Nevažeći format URL-a. Podržani formati su \\server\share i smb://server/share.</translation> <translation id="598810097218913399">Ukloni dodjelu</translation> @@ -5734,7 +5739,7 @@ <translation id="6025215716629925253">Stanje stoga</translation> <translation id="6026819612896463875"><ph name="WINDOW_TITLE" /> – USB uređaj je povezan</translation> <translation id="6027945736510816438">Jeste li mislili <ph name="WEBSITE" />?</translation> -<translation id="6028117231645531007">Dodaj otisak prsta</translation> +<translation id="6028117231645531007">Dodajte otisak prsta</translation> <translation id="6031600495088157824">Opcije unosa na alatnoj traci</translation> <translation id="6032715498678347852">Da ekstenziji omogućite pristup ovoj web lokaciji, kliknite na nju.</translation> <translation id="6032912588568283682">Sistem fajlova</translation> @@ -6984,6 +6989,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> koristi vaš mikrofon</translation> <translation id="7141105143012495934">Prijava nije uspjela jer nije bilo moguće preuzeti vaše podatke računa. Kontaktirajte administratora ili pokušajte ponovo.</translation> <translation id="7141844554192012199">Provjera</translation> +<translation id="7143207342074048698">Povezivanje</translation> <translation id="7144878232160441200">Pokušajte ponovo.</translation> <translation id="7148426638542880639">Moguće je da web lokacije neće funkcionirati kao što očekujete. Odaberite ovu opciju ako na uređaju ne želite ostaviti informacije o web lokacijama koje posjećujete.</translation> <translation id="7149839598364933473">Pretvorite ovaj uređaj u <ph name="DEVICE_OS" /> uređaj.</translation> @@ -7021,7 +7027,7 @@ <translation id="7188508872042490670">Podaci web lokacije na uređaju</translation> <translation id="7189234443051076392">Provjerite ima li na uređaju dovoljno slobodnog prostora</translation> <translation id="7189451821249468368">Nemate dovoljno nadogradnji da prijavite ovaj uređaj. Kontaktirajte prodaju da kupite još licenci. Ako mislite da vam se ova poruka prikazuje greškom, kontaktirajte podršku.</translation> -<translation id="7189965711416741966">Dodan je otisak prsta.</translation> +<translation id="7189965711416741966">Otisak prsta je dodan.</translation> <translation id="7191063546666816478">Neki podržani linkovi će se i dalje otvarati u aplikacijama <ph name="APP_NAME" />, <ph name="APP_NAME_2" />, <ph name="APP_NAME_3" /> i njih još <ph name="NUMBER_OF_OTHER_APPS" />.</translation> <translation id="7191159667348037">Nepoznati štampač (USB)</translation> <translation id="7193051357671784796">Ovu aplikaciju je dodala vaša organizacija. Ponovo pokrenite aplikaciju da završite njeno instaliranje.</translation> @@ -8770,7 +8776,7 @@ <translation id="8720816553731218127">Inicijalizacija atributa za vrijeme instalacije je istekla.</translation> <translation id="8722912030556880711">Šaljite podatke o korištenju i dijagnostici. Ovaj uređaj trenutno automatski šalje u Google podatke o dijagnostici, uređaju i korištenju aplikacija. To će pomoći stabilnosti sistema i aplikacija, kao i drugim poboljšanjima. Neki zbirni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su programeri za Android. Ako vam je uključena dodatna Aktivnost na webu i u aplikacijama, ti podaci će možda biti sačuvani na vašem Google računu. <ph name="BEGIN_LINK2" />Saznajte više<ph name="END_LINK2" /></translation> <translation id="8724405322205516354">Kada vidite ovu ikonu, koristite otisak prsta za identifikaciju ili odobravanje kupovine.</translation> -<translation id="8724409975248965964">Dodan je otisak prsta</translation> +<translation id="8724409975248965964">Otisak prsta je dodan</translation> <translation id="8724859055372736596">&Prikaži u folderu</translation> <translation id="8725066075913043281">Pokušaj ponovo</translation> <translation id="8725178340343806893">Omiljeno/oznake</translation> @@ -9368,7 +9374,7 @@ <translation id="939401694733344652">Ovi računi se trenutno ne koriste s Android aplikacijama. Ako ste odabrali račun koji ćete koristiti s ovom Android aplikacijom, taj račun se može koristiti i s drugim Android aplikacijama. Pristup Android aplikacijama možete promijeniti u odjeljku <ph name="LINK_BEGIN" />Postavke > Računi<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Unesite pristupni izraz</translation> <translation id="939736085109172342">Novi folder</translation> -<translation id="940212040923880623">&Traži i uredi</translation> +<translation id="940212040923880623">&Pronađi i uredi</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> dijeli Chrome karticu i zvuk.</translation> <translation id="944799160843436808">Došlo je do problema prilikom postavljanja Steama na Chromebooku</translation> <translation id="945522503751344254">Pošaljite povratne informacije</translation> @@ -9390,6 +9396,7 @@ <translation id="964790508619473209">Raspored na ekranu</translation> <translation id="965211523698323809">Šaljite i primajte SMS-ove s uređaja <ph name="DEVICE_TYPE" /> <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="96535553604365597">Prijavite problem s Google Castom</translation> +<translation id="966588271015727539">Odaberite bluetooth Brailleov ekran</translation> <translation id="967398046773905967">Onemogući svim web lokacijama pristup HID uređajima</translation> <translation id="967624055006145463">Pohranjeni podaci</translation> <translation id="96774243435178359">Upravljani štampači</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 63b4ced..28d96ad 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -2721,6 +2721,7 @@ <translation id="3336855445806447827">No ho sé</translation> <translation id="3337568642696914359">No permetis que els llocs web gestionin protocols</translation> <translation id="3340620525920140773">S'ha completat la baixada: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">configuració</translation> <translation id="3341699307020049241">El PIN no és correcte. Et queden <ph name="RETRIES" /> intents.</translation> <translation id="3341703758641437857">Permet l'accés als URL de fitxer</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" vol suprimir aquesta extensió.</translation> @@ -3558,7 +3559,7 @@ <translation id="4047726037116394521">Ves a la pàgina d'inici</translation> <translation id="4048384495227695211">Mostra <ph name="FILE_NAME" /> a la carpeta</translation> <translation id="404894744863342743">Quan hagis acabat d'utilitzar el fitxer baixat, suprimeix-lo perquè els altres usuaris que fan servir aquest dispositiu no puguin veure les teves contrasenyes.</translation> -<translation id="4049783682480068824">{COUNT,plural, =1{# contacte no està disponible. Per fer servir la funció Compartició Nearby amb aquest contacte, afegeix als teus contactes l'adreça electrònica associada al seu Compte de Google.}other{# contactes no estan disponibles. Per fer servir la funció Compartició Nearby amb aquests contactes, afegeix als teus contactes les adreces electròniques associades als seus Comptes de Google.}}</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# contacte no està disponible. Per fer servir Compartició Nearby amb aquest contacte, afegeix als teus contactes l'adreça electrònica associada al seu Compte de Google.}other{# contactes no estan disponibles. Per fer servir Compartició Nearby amb aquests contactes, afegeix als teus contactes les adreces electròniques associades als seus Comptes de Google.}}</translation> <translation id="4050225813016893843">Mètode d'autenticació</translation> <translation id="4050534976465737778">Comprova que els dos dispositius estiguin desbloquejats, l'un a prop de l'altre i amb el Bluetooth activat. Si vols compartir fitxers amb un Chromebook que no és als teus contactes, comprova que tingui el mode Visibilitat Nearby activat (obre l'àrea d'estat i, a continuació, activa Visibilitat Nearby). <ph name="LINK_BEGIN" />Més informació<ph name="LINK_END" /></translation> <translation id="4052120076834320548">Minúscul</translation> @@ -4951,6 +4952,7 @@ <translation id="5338503421962489998">Emmagatzematge local</translation> <translation id="5339031667684712858">Llocs web que has suprimit</translation> <translation id="5340638867532133571">Permet que els llocs web instal·lin gestors de pagament (opció recomanada)</translation> +<translation id="5340787663756381836">&Cerca i edita</translation> <translation id="5341793073192892252">S'han bloquejat les galetes següents (totes les galetes de tercers es bloquegen sempre)</translation> <translation id="5342091991439452114">El PIN ha de tenir com a mínim <ph name="MINIMUM" /> dígits</translation> <translation id="5344036115151554031">S'està restaurant Linux</translation> @@ -4984,7 +4986,7 @@ <translation id="5372529912055771682">El mode d'inscripció proporcionat no és compatible amb aquesta versió del sistema operatiu. Assegureu-vos que estigueu executant la darrera versió i torneu-ho a provar.</translation> <translation id="5372579129492968947">Deixa de fixar l'extensió</translation> <translation id="5372632722660566343">Continua sense cap compte</translation> -<translation id="5375318608039113175">Per fer servir la funció Compartició Nearby amb aquests contactes, afegeix als teus contactes les adreces electròniques enllaçades als seus Comptes de Google.</translation> +<translation id="5375318608039113175">Per fer servir Compartició Nearby amb aquests contactes, afegeix als teus contactes les adreces electròniques enllaçades als seus Comptes de Google.</translation> <translation id="5375577102295339548">Els llocs web poden ajudar a verificar que no ets un bot</translation> <translation id="5376094717770783089">Sol·licita accés</translation> <translation id="5376169624176189338">Feu clic per tornar enrere o manteniu premut per veure l'historial</translation> @@ -5573,6 +5575,7 @@ <translation id="5904614460720589786">No s'ha pogut configurar <ph name="APP_NAME" /> a causa d'un problema de configuració. Contacta amb l'administrador. Codi d'error: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Gairebé has acabat amb l'actualització. Reinicia el dispositiu per completar-la.</translation> <translation id="5906732635754427568">Les dades associades a aquesta aplicació se suprimiran del dispositiu.</translation> +<translation id="5906974869830879618">Introdueix un PIN</translation> <translation id="5908474332780919512">Obre l'aplicació en iniciar la sessió</translation> <translation id="5908695239556627796">Velocitat de desplaçament del ratolí</translation> <translation id="5909379458939060601">Vols suprimir aquest perfil i les dades de navegació?</translation> @@ -5948,7 +5951,7 @@ <translation id="6238923052227198598">Mantén la darrera nota a la pantalla de bloqueig</translation> <translation id="6239558157302047471">Torna a carregar el &marc</translation> <translation id="6240821072888636753">Pregunta sempre</translation> -<translation id="6241530762627360640">Accedir a informació sobre els dispositius Bluetooth vinculats al sistema i descobrir dispositius Bluetooth a prop</translation> +<translation id="6241530762627360640">Accedir a informació sobre els dispositius Bluetooth vinculats al sistema i descobrir dispositius Bluetooth propers</translation> <translation id="6241844896329831164">No cal accés</translation> <translation id="6242574558232861452">S'està comprovant si es compleixen les polítiques de seguretat de la teva organització.</translation> <translation id="6242589501614145408">Restableix la clau de seguretat</translation> @@ -6959,6 +6962,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> està utilitzant el micròfon</translation> <translation id="7141105143012495934">S'ha produït un problema en iniciar la sessió perquè no s'ha pogut recuperar la informació del compte. Contacteu amb l'administrador o torneu a provar-ho.</translation> <translation id="7141844554192012199">Comprova</translation> +<translation id="7143207342074048698">Connectant</translation> <translation id="7144878232160441200">Torna-ho a provar</translation> <translation id="7148426638542880639">És possible que els llocs web no funcionin de la manera prevista. Tria aquesta opció si no vols deixar al dispositiu informació sobre els llocs web que visites.</translation> <translation id="7149839598364933473">Converteix aquest dispositiu en un dispositiu <ph name="DEVICE_OS" />.</translation> @@ -9342,6 +9346,7 @@ <translation id="939401694733344652">Ara mateix, aquests comptes no s'utilitzen amb aplicacions d'Android. Si selecciones un compte per fer-lo servir amb aquesta aplicació d'Android, també es pot utilitzar amb altres aplicacions d'Android. Per canviar l'accés a les aplicacions d'Android, ves a <ph name="LINK_BEGIN" />Configuració > Comptes<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Introduïu la frase de contrasenya</translation> <translation id="939736085109172342">Carpeta nova</translation> +<translation id="940212040923880623">&Cerca i edita</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> està compartint una pestanya de Chrome i l'àudio.</translation> <translation id="944799160843436808">S'ha produït un problema en configurar Steam a Chromebook</translation> <translation id="945522503751344254">Envia suggeriments</translation> @@ -9363,6 +9368,7 @@ <translation id="964790508619473209">Disposició de la pantalla</translation> <translation id="965211523698323809">Envia i rep missatges de text amb el dispositiu <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Més informació<ph name="LINK_END" /></translation> <translation id="96535553604365597">Informa d'un problema amb Google Cast</translation> +<translation id="966588271015727539">Selecciona una pantalla braille amb connexió Bluetooth</translation> <translation id="967398046773905967">No permetis que cap lloc web accedeixi als dispositius d'interfície humana</translation> <translation id="967624055006145463">Dades emmagatzemades</translation> <translation id="96774243435178359">Impressores gestionades</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index c0d5330f..1fa03ce 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -2723,6 +2723,7 @@ <translation id="3336855445806447827">Nevím</translation> <translation id="3337568642696914359">Nepovolovat webům zpracovávat protokoly</translation> <translation id="3340620525920140773">Stažení bylo dokončeno: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">nastavení</translation> <translation id="3341699307020049241">Nesprávný PIN. Zbývá pokusů: <ph name="RETRIES" /></translation> <translation id="3341703758641437857">Umožnit přístup k adresám URL souborů</translation> <translation id="3342361181740736773">Rozšíření „<ph name="TRIGGERING_EXTENSION_NAME" />“ chce toto rozšíření odstranit.</translation> @@ -4094,6 +4095,7 @@ <translation id="4545759655004063573">Nelze uložit kvůli nedostatečným oprávněním. Uložte prosím soubor do jiného umístění.</translation> <translation id="4546308221697447294">Pohybujte se na internetu rychle pomocí prohlížeče Google Chrome</translation> <translation id="4546345569117159016">Pravé tlačítko</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> chce používat toto rozšíření:</translation> <translation id="4546692474302123343">Hlasový vstup Asistenta Google</translation> <translation id="4547659257713117923">Žádné karty z jiných zařízení</translation> <translation id="4547672827276975204">Nastavit automaticky</translation> @@ -4951,6 +4953,7 @@ <translation id="5338503421962489998">Místní úložiště</translation> <translation id="5339031667684712858">Odstraněné weby</translation> <translation id="5340638867532133571">Povolit webům instalovat obslužné nástroje pro platby (doporučeno)</translation> +<translation id="5340787663756381836">&Najít a upravit</translation> <translation id="5341793073192892252">Následující soubory cookie byly zablokovány (soubory cookie třetí strany jsou blokovány bez výjimky)</translation> <translation id="5342091991439452114">Minimální počet číslic v kódu PIN: <ph name="MINIMUM" /></translation> <translation id="5344036115151554031">Obnovení Linuxu</translation> @@ -5572,6 +5575,7 @@ <translation id="5904614460720589786">Nastavení aplikace <ph name="APP_NAME" /> se kvůli problému s konfigurací nezdařilo. Obraťte se na administrátora. Kód chyby: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Aktualizace je téměř hotova! Dokončíte ji restartováním zařízení.</translation> <translation id="5906732635754427568">Data přidružená k této aplikaci z tohoto zařízení budou odstraněna.</translation> +<translation id="5906974869830879618">Zadejte PIN</translation> <translation id="5908474332780919512">Spustit aplikaci při přihlášení</translation> <translation id="5908695239556627796">Rychlost posouvání myší</translation> <translation id="5909379458939060601">Smazat tento profil a údaje o prohlížení?</translation> @@ -6962,6 +6966,7 @@ <translation id="7139627972753429585">Aplikace <ph name="APP_NAME" /> používá váš mikrofon</translation> <translation id="7141105143012495934">Přihlášení selhalo, protože se nepodařilo načíst podrobnosti účtu. Kontaktujte administrátora nebo to zkuste znovu.</translation> <translation id="7141844554192012199">Zkontrolovat</translation> +<translation id="7143207342074048698">Připojování</translation> <translation id="7144878232160441200">Opakovat</translation> <translation id="7148426638542880639">Weby nemusí fungovat podle očekávání. Tuto možnost vyberte, pokud v zařízení nechcete ponechat informace o webech, které navštěvujete.</translation> <translation id="7149839598364933473">Převeďte toto zařízení na systém <ph name="DEVICE_OS" />.</translation> @@ -9345,6 +9350,7 @@ <translation id="939401694733344652">Tyto účty se momentálně nepoužívají s aplikacemi pro Android. Pokud vyberete účet k použití s touto aplikací pro Android, bude ho možné používat také s jinými aplikacemi pro Android. Přístup aplikací pro Android můžete změnit v <ph name="LINK_BEGIN" />Nastavení > Účty<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Zadat heslovou frázi</translation> <translation id="939736085109172342">Nová složka</translation> +<translation id="940212040923880623">&Najít a upravit</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> sdílí kartu Chrome a zvuk.</translation> <translation id="944799160843436808">Při nastavování Steamu na Chromebooku došlo k problému</translation> <translation id="945522503751344254">Odeslat zpětnou vazbu</translation> @@ -9366,6 +9372,7 @@ <translation id="964790508619473209">Uspořádání obrazovek</translation> <translation id="965211523698323809">Odesílejte a přijímejte na zařízení <ph name="DEVICE_TYPE" /> textové zprávy. <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation> <translation id="96535553604365597">Nahlásit problém s Google Cast</translation> +<translation id="966588271015727539">Vyberte hmatový displej Bluetooth</translation> <translation id="967398046773905967">Nepovolovat žádným webům přístup k zařízením HID</translation> <translation id="967624055006145463">Uložená data</translation> <translation id="96774243435178359">Spravované tiskárny</translation>
diff --git a/chrome/app/resources/generated_resources_cy.xtb b/chrome/app/resources/generated_resources_cy.xtb index 7ea722fe..4737041 100644 --- a/chrome/app/resources/generated_resources_cy.xtb +++ b/chrome/app/resources/generated_resources_cy.xtb
@@ -2168,6 +2168,7 @@ <translation id="2804043232879091219">Ni ellid agor y porwr amgen</translation> <translation id="2804667941345577550">Byddwch yn cael eich allgofnodi o'r wefan hon, gan gynnwys mewn tabiau sydd ar agor.</translation> <translation id="2804680522274557040">Diffoddwyd y camera</translation> +<translation id="2804742109948581745">Ochr yn ochr</translation> <translation id="2805539617243680210">Rydych yn barod i fynd!</translation> <translation id="2805646850212350655">System Ffeil Amgryptio Microsoft</translation> <translation id="2805756323405976993">Apiau</translation> @@ -2739,6 +2740,7 @@ <translation id="3336855445806447827">Ddim yn siŵr</translation> <translation id="3337568642696914359">Peidio â chaniatáu i wefannau drin protocolau</translation> <translation id="3340620525920140773">Lawrlwytho wedi'i gwblhau: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">gosodiadau</translation> <translation id="3341699307020049241">PIN anghywir. Mae gennych <ph name="RETRIES" /> ymgais ar ôl.</translation> <translation id="3341703758641437857">Caniatáu mynediad at URL ffeiliau</translation> <translation id="3342361181740736773">Hoffai "<ph name="TRIGGERING_EXTENSION_NAME" />" dynnu'r estyniad hwn.</translation> @@ -4661,6 +4663,7 @@ <translation id="5056950756634735043">Wrthi'n cysylltu â'r cynhwysydd</translation> <translation id="5057110919553308744">Pan fyddwch yn clicio'r estyniad</translation> <translation id="5059241099014281248">Cyfyngu mewngofnodi</translation> +<translation id="5059429103770496207">Arddull arddangos</translation> <translation id="5059526285558225588">Dewis beth i'w rannu</translation> <translation id="5060332552815861872">Mae 1 argraffydd ar gael i'w gadw.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Mae'r ffolder hon yn cynnwys nod tudalen. Ydych chi'n siŵr eich bod am ei dileu?}zero{Mae'r ffolder hon yn cynnwys # nod tudalen. Ydych chi'n siŵr eich bod am ei dileu?}two{Mae'r ffolder hon yn cynnwys # nod tudalen. Ydych chi'n siŵr eich bod am ei dileu?}few{Mae'r ffolder hon yn cynnwys # nod tudalen. Ydych chi'n siŵr eich bod am ei dileu?}many{Mae'r ffolder hon yn cynnwys # nod tudalen. Ydych chi'n siŵr eich bod am ei dileu?}other{Mae'r ffolder hon yn cynnwys # nod tudalen. Ydych chi'n siŵr eich bod am ei dileu?}}</translation> @@ -5594,6 +5597,7 @@ <translation id="5904614460720589786">Doedd dim modd gosod <ph name="APP_NAME" /> oherwydd problem ffurfweddu. Cysylltwch â'ch gweinyddwr. Cod gwall: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Bron yn gyfoes! Ailgychwyn eich dyfais i orffen diweddaru.</translation> <translation id="5906732635754427568">Bydd data sy'n gysylltiedig â'r ap hwn yn cael eu tynnu o'r ddyfais hon.</translation> +<translation id="5906974869830879618">Rhowch PIN</translation> <translation id="5908474332780919512">Dechrau'r Ap Pan Fyddwch yn Mewngofnodi</translation> <translation id="5908695239556627796">Cyflymder sgrolio'r llygoden</translation> <translation id="5909379458939060601">Dileu'r proffil hwn a'i ddata pori?</translation> @@ -5728,6 +5732,7 @@ <translation id="6019851026059441029">Gwych - HD</translation> <translation id="6020431688553761150">Ni wnaeth y gweinydd eich awdurdodi i gael mynediad at yr adnodd hwn.</translation> <translation id="6021293122504240352">Nid yw <ph name="APPS" /> ap yn cael eu cefnogi bellach</translation> +<translation id="6021969570711251331">Cydblethu</translation> <translation id="6022526133015258832">Agor Sgrîn Lawn</translation> <translation id="6022659036123304283">Personoleiddio Chrome</translation> <translation id="6023643151125006053">Cafodd y ddyfais hon (SN: <ph name="SERIAL_NUMBER" />) ei chloi gan y gweinyddwr <ph name="SAML_DOMAIN" /></translation> @@ -6988,6 +6993,7 @@ <translation id="7139627972753429585">Mae <ph name="APP_NAME" /> yn defnyddio eich meicroffon</translation> <translation id="7141105143012495934">Wedi methu â mewngofnodi oherwydd na ellid adfer manylion eich cyfrif. Cysylltwch â'ch gweinyddwr neu rhowch gynnig arall arni.</translation> <translation id="7141844554192012199">Gwirio</translation> +<translation id="7143207342074048698">Wrthi'n cysylltu</translation> <translation id="7144878232160441200">Ceisio eto</translation> <translation id="7148426638542880639">Mae'n bosib na fydd gwefannau yn gweithio fel y byddech yn ei ddisgwyl. Dewiswch yr opsiwn hwn os nad ydych chi am adael gwybodaeth ar eich dyfais am wefannau rydych yn ymweld â nhw.</translation> <translation id="7149839598364933473">Trosi'r ddyfais hon i ddyfais <ph name="DEVICE_OS" />.</translation> @@ -9395,6 +9401,7 @@ <translation id="964790508619473209">Trefniant sgriniau</translation> <translation id="965211523698323809">Gallwch anfon a chael negeseuon testun o'ch <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Dysgu rhagor<ph name="LINK_END" /></translation> <translation id="96535553604365597">Adrodd am broblem gyda Google Cast</translation> +<translation id="966588271015727539">Dewiswch sgrîn braille bluetooth</translation> <translation id="967398046773905967">Peidio â gadael i unrhyw wefannau gael mynediad at ddyfeisiau HID</translation> <translation id="967624055006145463">Data a storiwyd</translation> <translation id="96774243435178359">Argraffwyr a reolir</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index f0ff383..ad2a100 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -2166,6 +2166,7 @@ <translation id="2804043232879091219">Den alternative browser kunne ikke åbnes</translation> <translation id="2804667941345577550">Du logges ud af dette website, også i åbne faner.</translation> <translation id="2804680522274557040">Kameraet er deaktiveret</translation> +<translation id="2804742109948581745">Side om side</translation> <translation id="2805539617243680210">Nu er du klar.</translation> <translation id="2805646850212350655">Filsystem til Microsoft-kryptering</translation> <translation id="2805756323405976993">Apps</translation> @@ -2737,6 +2738,7 @@ <translation id="3336855445806447827">Ved ikke</translation> <translation id="3337568642696914359">Tillad ikke, at websites håndterer protokoller</translation> <translation id="3340620525920140773">Downloaden er fuldført: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">indstillinger</translation> <translation id="3341699307020049241">Pinkoden er forkert. Du har <ph name="RETRIES" /> forsøg tilbage.</translation> <translation id="3341703758641437857">Tillad adgang til webadresser på filer</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" vil gerne fjerne denne udvidelse.</translation> @@ -4110,6 +4112,7 @@ <translation id="4545759655004063573">Kan ikke gemme på grund af utilstrækkelige tilladelser. Gem på en anden placering.</translation> <translation id="4546308221697447294">Hurtig browsing med Google Chrome</translation> <translation id="4546345569117159016">Højre knap</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> vil bruge denne udvidelse:</translation> <translation id="4546692474302123343">Indtaling i Google Assistent</translation> <translation id="4547659257713117923">Ingen faner fra andre enheder</translation> <translation id="4547672827276975204">Indstil automatisk</translation> @@ -4194,7 +4197,7 @@ <translation id="4619615317237390068">Faner fra andre enheder</translation> <translation id="4620809267248568679">Denne indstilling håndhæves af en udvidelse.</translation> <translation id="4622051949285931942">Vil du deaktivere automatiske opdateringer?</translation> -<translation id="4623167406982293031">Bekræft konto</translation> +<translation id="4623167406982293031">Verificer konto</translation> <translation id="4623189117674524348">Systemet har ikke godkendt API-adgang for denne enhed.</translation> <translation id="4623341761454569602">I Google Adgangskodeadministrator <ph name="SEPARATOR" /> <ph name="ACCOUNT" /></translation> <translation id="4625078469366263107">Aktivér app</translation> @@ -4658,6 +4661,7 @@ <translation id="5056950756634735043">Opretter forbindelse til containeren</translation> <translation id="5057110919553308744">Når du klikker på udvidelsen</translation> <translation id="5059241099014281248">Begræns login</translation> +<translation id="5059429103770496207">Visningsstil</translation> <translation id="5059526285558225588">Vælg, hvad du vil dele</translation> <translation id="5060332552815861872">Der er 1 printer, som kan gemmes.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Denne mappe indeholder et bogmærke. Er du sikker på, at du vil slette det?}one{Denne mappe indeholder # bogmærke. Er du sikker på, at du vil slette det?}other{Denne mappe indeholder # bogmærker. Er du sikker på, at du vil slette dem?}}</translation> @@ -4967,6 +4971,7 @@ <translation id="5338503421962489998">Lokalt lager</translation> <translation id="5339031667684712858">Websites, du har fjernet</translation> <translation id="5340638867532133571">Tillad, at websites installerer betalingshandlere (anbefales)</translation> +<translation id="5340787663756381836">&Find og rediger</translation> <translation id="5341793073192892252">Følgende cookies blev blokeret (cookies fra tredjeparter blokeres uden undtagelse)</translation> <translation id="5342091991439452114">Pinkoden skal være på mindst <ph name="MINIMUM" /> cifre</translation> <translation id="5344036115151554031">Gendanner Linux</translation> @@ -5590,6 +5595,7 @@ <translation id="5904614460720589786"><ph name="APP_NAME" /> kunne ikke konfigureres, da der opstod et konfigurationsproblem. Kontakt din administrator. Fejlkode: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Næsten opdateret. Genstart din enhed for at afslutte opdateringen.</translation> <translation id="5906732635754427568">Data, der er knyttet til denne app, bliver fjernet fra enheden.</translation> +<translation id="5906974869830879618">Angiv en pinkode</translation> <translation id="5908474332780919512">Start app, når du logger ind</translation> <translation id="5908695239556627796">Hastighed for rulning på mus</translation> <translation id="5909379458939060601">Vil du slette denne profil og de tilhørende browserdata?</translation> @@ -6979,6 +6985,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> bruger din mikrofon</translation> <translation id="7141105143012495934">Login mislykkedes, da dine kontooplysninger ikke kunne hentes. Kontakt din administrator, eller prøv igen.</translation> <translation id="7141844554192012199">Adgangskodetjek</translation> +<translation id="7143207342074048698">Tilslutter</translation> <translation id="7144878232160441200">Prøv igen</translation> <translation id="7148426638542880639">Websites fungerer muligvis ikke som forventet. Vælg denne mulighed, hvis du ikke vil gemme oplysninger om de websites, du besøger, på din enhed.</translation> <translation id="7149839598364933473">Konverter denne enhed til en <ph name="DEVICE_OS" />-enhed.</translation> @@ -9362,6 +9369,7 @@ <translation id="939401694733344652">Disse konti bruges ikke sammen til Android-apps i øjeblikket. Hvis du vælger en konto, der skal bruges til denne Android-app, kan kontoen også bruges til andre Android-apps. Du kan ændre adgangen for Android-apps under <ph name="LINK_BEGIN" />Indstillinger > Konti<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Angiv adgangssætning</translation> <translation id="939736085109172342">Ny mappe</translation> +<translation id="940212040923880623">&Find og rediger</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> deler en Chrome-fane og lyd.</translation> <translation id="944799160843436808">Der opstod et problem under konfigurationen af Steam på Chromebook</translation> <translation id="945522503751344254">Send feedback</translation> @@ -9383,6 +9391,7 @@ <translation id="964790508619473209">Skærmopstilling</translation> <translation id="965211523698323809">Send og modtag sms-beskeder fra din <ph name="DEVICE_TYPE" /> <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation> <translation id="96535553604365597">Rapportér et problem med Google Cast</translation> +<translation id="966588271015727539">Vælg en brailleskærm via Bluetooth</translation> <translation id="967398046773905967">Tillad ikke, at websites kan få adgang til HID-enheder</translation> <translation id="967624055006145463">Lagrede data</translation> <translation id="96774243435178359">Administrerede printere</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 71530550..c6793ea 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -2147,6 +2147,7 @@ <translation id="2804043232879091219">Der alternative Browser konnte nicht geöffnet werden</translation> <translation id="2804667941345577550">Du wirst von dieser Website abgemeldet, auch in offenen Tabs</translation> <translation id="2804680522274557040">Kamera ausgeschaltet</translation> +<translation id="2804742109948581745">Nebeneinander</translation> <translation id="2805539617243680210">Fertig!</translation> <translation id="2805646850212350655">Verschlüsselndes Microsoft-Dateisystem</translation> <translation id="2805756323405976993">Apps</translation> @@ -2718,6 +2719,7 @@ <translation id="3336855445806447827">Weiß nicht</translation> <translation id="3337568642696914359">Websites dürfen keine Protokolle verarbeiten</translation> <translation id="3340620525920140773">Download abgeschlossen: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">Einstellungen</translation> <translation id="3341699307020049241">Falsche PIN. Du hast noch <ph name="RETRIES" /> Versuche.</translation> <translation id="3341703758641437857">Zugriff auf Datei-URLs zulassen</translation> <translation id="3342361181740736773"><ph name="TRIGGERING_EXTENSION_NAME" /> möchte diese Erweiterung entfernen.</translation> @@ -4090,6 +4092,7 @@ <translation id="4545759655004063573">Speichern aufgrund unzureichender Berechtigungen nicht möglich. Wähle bitte einen anderen Speicherort aus.</translation> <translation id="4546308221697447294">Schnell surfen mit Google Chrome</translation> <translation id="4546345569117159016">Rechte Taste</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> möchte diese Erweiterung verwenden:</translation> <translation id="4546692474302123343">Google Assistant-Spracheingabe</translation> <translation id="4547659257713117923">Keine Tabs von anderen Geräten</translation> <translation id="4547672827276975204">Automatisch festlegen</translation> @@ -4638,6 +4641,7 @@ <translation id="5056950756634735043">Verbindung zum Container wird hergestellt</translation> <translation id="5057110919553308744">Wenn die Erweiterung angeklickt wird</translation> <translation id="5059241099014281248">Anmeldung beschränken</translation> +<translation id="5059429103770496207">Anzeigestil</translation> <translation id="5059526285558225588">Auswählen, was geteilt werden soll</translation> <translation id="5060332552815861872">Es ist 1 Drucker verfügbar, der gespeichert werden kann.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Dieser Ordner enthält ein Lesezeichen. Möchtest du ihn wirklich löschen?}other{Dieser Ordner enthält # Lesezeichen. Möchtest du ihn wirklich löschen?}}</translation> @@ -5569,6 +5573,7 @@ <translation id="5904614460720589786"><ph name="APP_NAME" /> konnte aufgrund eines Konfigurationsproblems nicht eingerichtet werden. Bitte wende dich an deinen Administrator. Fehlercode: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Fast fertig! Starte dein Gerät neu, um die Aktualisierung abzuschließen.</translation> <translation id="5906732635754427568">Daten, die dieser App zugewiesen sind, werden von diesem Gerät entfernt.</translation> +<translation id="5906974869830879618">Bitte gib eine PIN ein</translation> <translation id="5908474332780919512">App beim Anmelden starten</translation> <translation id="5908695239556627796">Scroll-Geschwindigkeit mit der Maus</translation> <translation id="5909379458939060601">Dieses Profil und diese Browserdaten löschen?</translation> @@ -6955,6 +6960,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> verwendet dein Mikrofon</translation> <translation id="7141105143012495934">Du konntest nicht angemeldet werden, weil deine Kontodetails nicht abgerufen werden konnten. Bitte wende dich an deinen Administrator oder versuche es noch einmal.</translation> <translation id="7141844554192012199">Überprüfung</translation> +<translation id="7143207342074048698">Verbindung...</translation> <translation id="7144878232160441200">Wiederholen</translation> <translation id="7148426638542880639">Websites funktionieren möglicherweise nicht erwartungsgemäß. Wähle diese Option aus, wenn du keine Daten zu besuchten Websites auf deinem Gerät speichern möchtest.</translation> <translation id="7149839598364933473">Mache aus diesem Gerät ein <ph name="DEVICE_OS" />-Gerät.</translation> @@ -9359,6 +9365,7 @@ <translation id="964790508619473209">Bildschirmanordnung</translation> <translation id="965211523698323809">SMS auf <ph name="DEVICE_TYPE" /> senden und empfangen. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" /></translation> <translation id="96535553604365597">Problem mit Google Cast melden</translation> +<translation id="966588271015727539">Wähle eine Bluetooth-Braillezeile aus</translation> <translation id="967398046773905967">Websites nicht erlauben, auf HID-Geräte zuzugreifen</translation> <translation id="967624055006145463">Gespeicherte Daten</translation> <translation id="96774243435178359">Verwaltete Drucker</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index 22c9faa..87b5c14 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -2737,6 +2737,7 @@ <translation id="3336855445806447827">Ίσως</translation> <translation id="3337568642696914359">Να μην επιτρέπεται στους ιστοτόπους να χειρίζονται πρωτόκολλα</translation> <translation id="3340620525920140773">Η λήψη ολοκληρώθηκε: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">ρυθμίσεις</translation> <translation id="3341699307020049241">Λάθος PIN. Σας απομένουν <ph name="RETRIES" /> προσπάθειες.</translation> <translation id="3341703758641437857">Να επιτρέπεται η πρόσβαση σε διευθύνσεις URL αρχείων</translation> <translation id="3342361181740736773">Η επέκταση "<ph name="TRIGGERING_EXTENSION_NAME" />" θέλει να καταργήσει αυτήν την επέκταση.</translation> @@ -5594,6 +5595,7 @@ <translation id="5904614460720589786">Δεν ήταν δυνατή η ρύθμιση της εφαρμογής <ph name="APP_NAME" /> λόγω προβλήματος διαμόρφωσης. Επικοινωνήστε με τον διαχειριστή. Κωδικός σφάλματος: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Η ενημέρωση σχεδόν ολοκληρώθηκε! Επανεκκινήστε τη συσκευή σας για να ολοκληρωθεί η ενημέρωση.</translation> <translation id="5906732635754427568">Τα δεδομένα που σχετίζονται με αυτήν την εφαρμογή θα καταργηθούν από αυτήν τη συσκευή.</translation> +<translation id="5906974869830879618">Εισαγάγετε ένα PIN</translation> <translation id="5908474332780919512">Εκκίνηση εφαρμογής κατά τη σύνδεση</translation> <translation id="5908695239556627796">Ταχύτητα κύλισης ποντικιού</translation> <translation id="5909379458939060601">Διαγραφή αυτού του προφίλ και των δεδομένων περιήγησης;</translation> @@ -6981,6 +6983,7 @@ <translation id="7139627972753429585">Η εφαρμογή <ph name="APP_NAME" /> χρησιμοποιεί το μικρόφωνό σας</translation> <translation id="7141105143012495934">Η σύνδεση απέτυχε επειδή δεν ήταν δυνατή η ανάκτηση των στοιχείων του λογαριασμού σας. Επικοινωνήστε με τον διαχειριστή σας ή προσπαθήστε ξανά.</translation> <translation id="7141844554192012199">Έλεγχος</translation> +<translation id="7143207342074048698">Σύνδεση</translation> <translation id="7144878232160441200">Επανάληψη</translation> <translation id="7148426638542880639">Οι ιστότοποι ενδέχεται να μην λειτουργούν με τον αναμενόμενο τρόπο. Ορίστε αυτήν την επιλογή εάν δεν θέλετε να διατηρείτε πληροφορίες στη συσκευή σας σχετικά με τους ιστοτόπους που επισκέπτεστε.</translation> <translation id="7149839598364933473">Μετατροπή αυτής της συσκευής σε συσκευή <ph name="DEVICE_OS" />.</translation> @@ -9383,6 +9386,7 @@ <translation id="964790508619473209">Διάταξη οθόνης</translation> <translation id="965211523698323809">Στείλτε και λάβετε μηνύματα κειμένου μέσω της συσκευής <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation> <translation id="96535553604365597">Αναφορά ζητήματος σχετικά με το Google Cast</translation> +<translation id="966588271015727539">Επιλέξτε μια συσκευή μπράιγ Bluetooth</translation> <translation id="967398046773905967">Να μην επιτρέπεται η πρόσβαση των ιστοτόπων στις συσκευές HID.</translation> <translation id="967624055006145463">Αποθηκευμένα δεδομένα</translation> <translation id="96774243435178359">Διαχειριζόμενοι εκτυπωτές</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 1bc417be..0de460a4 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -2737,6 +2737,7 @@ <translation id="3336855445806447827">Not sure</translation> <translation id="3337568642696914359">Don't allow sites to handle protocols</translation> <translation id="3340620525920140773">Download complete: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">settings</translation> <translation id="3341699307020049241">Incorrect PIN. You have <ph name="RETRIES" /> attempts remaining.</translation> <translation id="3341703758641437857">Allow access to file URLs</translation> <translation id="3342361181740736773">'<ph name="TRIGGERING_EXTENSION_NAME" />' would like to remove this extension.</translation> @@ -5593,6 +5594,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="5906974869830879618">Please enter a pin</translation> <translation id="5908474332780919512">Start App When You Sign In</translation> <translation id="5908695239556627796">Mouse scroll speed</translation> <translation id="5909379458939060601">Delete this profile and browsing data?</translation> @@ -6980,6 +6982,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> is using your microphone</translation> <translation id="7141105143012495934">Sign-in failed because your account details could not be retrieved. Please contact your administrator or try again.</translation> <translation id="7141844554192012199">Check-up</translation> +<translation id="7143207342074048698">Connecting</translation> <translation id="7144878232160441200">Retry</translation> <translation id="7148426638542880639">Sites may not work as you would expect. Choose this option if you don't want to leave information on your device about sites that you visit.</translation> <translation id="7149839598364933473">Convert this device into a <ph name="DEVICE_OS" /> device.</translation> @@ -9384,6 +9387,7 @@ <translation id="964790508619473209">Screen arrangement</translation> <translation id="965211523698323809">Send and receive text messages from your <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation> <translation id="96535553604365597">Report an issue with Google Cast</translation> +<translation id="966588271015727539">Select a Bluetooth braille display</translation> <translation id="967398046773905967">Do not allow any sites to access HID devices</translation> <translation id="967624055006145463">Data stored</translation> <translation id="96774243435178359">Managed printers</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index 4578bc3..e177de6 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -2718,6 +2718,7 @@ <translation id="3336855445806447827">No lo sé</translation> <translation id="3337568642696914359">No permitir que los sitios procesen protocolos</translation> <translation id="3340620525920140773">Se completó la descarga: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">configuración</translation> <translation id="3341699307020049241">El PIN es incorrecto. Te quedan <ph name="RETRIES" /> intentos.</translation> <translation id="3341703758641437857">Permitir el acceso a las URL del archivo</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" desea quitar esta extensión.</translation> @@ -4090,6 +4091,7 @@ <translation id="4545759655004063573">No es posible guardar porque no tienes los permisos adecuados. Guarda en otra ubicación.</translation> <translation id="4546308221697447294">Navega de forma rápida con Google Chrome</translation> <translation id="4546345569117159016">Botón derecho</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> quiere usar esta extensión:</translation> <translation id="4546692474302123343">Entrada de voz del Asistente de Google</translation> <translation id="4547659257713117923">No hay pestañas de otros dispositivos</translation> <translation id="4547672827276975204">Establecer automáticamente</translation> @@ -4947,6 +4949,7 @@ <translation id="5338503421962489998">Almacenamiento local</translation> <translation id="5339031667684712858">Sitios que quitaste</translation> <translation id="5340638867532133571">Permitir que los sitios instalen controladores de pago (recomendado)</translation> +<translation id="5340787663756381836">&Buscar y editar</translation> <translation id="5341793073192892252">Se bloquearon las siguientes cookies (las cookies de terceros se bloquean sin excepción)</translation> <translation id="5342091991439452114">El PIN debe tener al menos <ph name="MINIMUM" /> dígitos</translation> <translation id="5344036115151554031">Restaurando Linux</translation> @@ -5570,6 +5573,7 @@ <translation id="5904614460720589786">No se pudo instalar <ph name="APP_NAME" /> debido a un problema de configuración. Comunícate con el administrador. Código de error: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">El dispositivo está casi actualizado. Reinícialo para completar la actualización.</translation> <translation id="5906732635754427568">Los datos asociados a esta app se quitarán de este dispositivo.</translation> +<translation id="5906974869830879618">Ingresa un PIN</translation> <translation id="5908474332780919512">Iniciar la app al acceder</translation> <translation id="5908695239556627796">Velocidad de desplazamiento del mouse</translation> <translation id="5909379458939060601">¿Quieres borrar este perfil y los datos de navegación?</translation> @@ -6957,6 +6961,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> está usando el micrófono</translation> <translation id="7141105143012495934">Se produjo un error de acceso porque no se pudieron recuperar los datos de tu cuenta. Comunícate con el administrador o vuelve a intentarlo.</translation> <translation id="7141844554192012199">Revisión</translation> +<translation id="7143207342074048698">Conectando</translation> <translation id="7144878232160441200">Volver a intentar</translation> <translation id="7148426638542880639">Es posible que los sitios no funcionen como esperas. Elige esta opción si no quieres que se guarde información sobre los sitios que visitas en tu dispositivo.</translation> <translation id="7149839598364933473">Convierte este dispositivo en un dispositivo <ph name="DEVICE_OS" />.</translation> @@ -9339,6 +9344,7 @@ <translation id="939401694733344652">En este momento, estas cuentas no se usan con apps para Android. Si eliges una cuenta para usar con esta app para Android, también la puedes usar con otras apps para Android. Puedes cambiar el acceso de las apps para Android en <ph name="LINK_BEGIN" />Configuración > Cuentas<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Ingresar frase de contraseña</translation> <translation id="939736085109172342">Nueva carpeta</translation> +<translation id="940212040923880623">&Buscar y editar</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> comparte una pestaña de Chrome y audio.</translation> <translation id="944799160843436808">Se produjo un error al configurar Steam en la Chromebook</translation> <translation id="945522503751344254">Enviar comentarios</translation> @@ -9360,6 +9366,7 @@ <translation id="964790508619473209">Disposición de la pantalla</translation> <translation id="965211523698323809">Usa tu <ph name="DEVICE_TYPE" /> para enviar o recibir mensajes de texto. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation> <translation id="96535553604365597">Informar un problema con Google Cast</translation> +<translation id="966588271015727539">Seleccionar una pantalla de braille mediante Bluetooth</translation> <translation id="967398046773905967">No permitir que ningún sitio acceda a dispositivos HID</translation> <translation id="967624055006145463">Datos almacenados</translation> <translation id="96774243435178359">Impresoras administradas</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index ae30fcf..5a37584a 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -2722,6 +2722,7 @@ <translation id="3336855445806447827">No lo sé con seguridad</translation> <translation id="3337568642696914359">No permitir que los sitios procesen protocolos</translation> <translation id="3340620525920140773">Descarga completa: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">configuración</translation> <translation id="3341699307020049241">PIN incorrecto. Te quedan <ph name="RETRIES" /> intentos.</translation> <translation id="3341703758641437857">Permitir acceso a URL de archivo</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" quiere quitar esta extensión.</translation> @@ -5575,6 +5576,7 @@ <translation id="5904614460720589786">No se ha podido configurar <ph name="APP_NAME" /> debido a un problema de configuración. Ponte en contacto con tu administrador. Código de error: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">El dispositivo está casi actualizado. Reinícialo para completar la actualización.</translation> <translation id="5906732635754427568">Los datos asociados a esta aplicación se eliminarán de este dispositivo.</translation> +<translation id="5906974869830879618">Introduce un PIN</translation> <translation id="5908474332780919512">Abrir aplicación al iniciar sesión</translation> <translation id="5908695239556627796">Velocidad de desplazamiento del ratón</translation> <translation id="5909379458939060601">¿Eliminar este perfil y los datos de navegación?</translation> @@ -6962,6 +6964,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> está usando tu micrófono</translation> <translation id="7141105143012495934">Se ha producido un error al iniciar sesión porque no ha sido posible recuperar la información de la cuenta. Ponte en contacto con el administrador o vuelve a intentarlo.</translation> <translation id="7141844554192012199">Revisión</translation> +<translation id="7143207342074048698">Conectando</translation> <translation id="7144878232160441200">Reintentar</translation> <translation id="7148426638542880639">Puede que los sitios no funcionen como deben. Selecciona esta opción si no quieres dejar en tu dispositivo información sobre los sitios que visitas.</translation> <translation id="7149839598364933473">Convierte este dispositivo en un dispositivo <ph name="DEVICE_OS" />.</translation> @@ -9366,6 +9369,7 @@ <translation id="964790508619473209">Disposición de la pantalla</translation> <translation id="965211523698323809">Envía y recibe mensajes de texto con tu <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation> <translation id="96535553604365597">Informar de un problema con Google Cast</translation> +<translation id="966588271015727539">Selecciona una pantalla de braille Bluetooth</translation> <translation id="967398046773905967">No permitir que ningún sitio web acceda a los dispositivos HID</translation> <translation id="967624055006145463">Datos almacenados</translation> <translation id="96774243435178359">Impresoras gestionadas</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index d6fd7b8..c8cc78be 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -2156,6 +2156,7 @@ <translation id="2804043232879091219">Alternatiivset brauserit ei õnnestunud avada</translation> <translation id="2804667941345577550">Teid logitakse sellelt saidilt (sh avatud vahelehtedel) välja</translation> <translation id="2804680522274557040">Kaamera on välja lülitatud</translation> +<translation id="2804742109948581745">Kõrvuti</translation> <translation id="2805539617243680210">Kõik on valmis!</translation> <translation id="2805646850212350655">Microsofti failisüsteemi krüptimine</translation> <translation id="2805756323405976993">Rakendused</translation> @@ -2727,6 +2728,7 @@ <translation id="3336855445806447827">Pole kindel</translation> <translation id="3337568642696914359">Ära luba saitidel protokolle käsitleda</translation> <translation id="3340620525920140773">Allalaadimine on lõpule viidud: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">seaded</translation> <translation id="3341699307020049241">Vale PIN-kood. Teil on veel <ph name="RETRIES" /> katset.</translation> <translation id="3341703758641437857">Luba juurdepääs failide URL-idele</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />” soovib selle laienduse eemaldada.</translation> @@ -4648,6 +4650,7 @@ <translation id="5056950756634735043">Ühenduse loomine konteineriga</translation> <translation id="5057110919553308744">Laiendusel klõpsamisel</translation> <translation id="5059241099014281248">Sisselogimise piiramine</translation> +<translation id="5059429103770496207">Kuva stiil</translation> <translation id="5059526285558225588">Valige, mida jagada</translation> <translation id="5060332552815861872">Salvestamiseks on saadaval 1 printer.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Kaust sisaldab järjehoidjat. Kas soovite kindlasti selle kustutada?}other{Kaust sisaldab # järjehoidjat. Kas soovite kindlasti selle kustutada?}}</translation> @@ -5581,6 +5584,7 @@ <translation id="5904614460720589786">Rakendust <ph name="APP_NAME" /> ei saanud konfiguratsiooniprobleemi tõttu seadistada. Võtke ühendust administraatoriga. Veakood: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Seade on peaaegu ajakohane. Värskenduse lõpuleviimiseks taaskäivitage seade.</translation> <translation id="5906732635754427568">Selle rakendusega seostatud andmed eemaldatakse seadmest.</translation> +<translation id="5906974869830879618">Sisestage PIN-kood</translation> <translation id="5908474332780919512">Käivita rakendus sisselogimisel</translation> <translation id="5908695239556627796">Hiire kerimiskiirus</translation> <translation id="5909379458939060601">Kas kustutada see profiil ja sirvimisandmed?</translation> @@ -6968,6 +6972,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> kasutab teie mikrofoni</translation> <translation id="7141105143012495934">Sisselogimine ebaõnnestus, kuna teie konto üksikasju ei saanud tuua. Võtke ühendust administraatoriga või proovige uuesti.</translation> <translation id="7141844554192012199">Kontroll</translation> +<translation id="7143207342074048698">Ühendamine</translation> <translation id="7144878232160441200">Proovi uuesti</translation> <translation id="7148426638542880639">Saidid ei pruugi toimida ootuspäraselt. Tehke see valik, kui te ei soovi seadmesse jätta teavet külastatud saitide kohta.</translation> <translation id="7149839598364933473">Teisendage see seade operatsioonisüsteemiga <ph name="DEVICE_OS" /> seadmeks.</translation> @@ -9372,6 +9377,7 @@ <translation id="964790508619473209">Ekraani paigutus</translation> <translation id="965211523698323809">Saatke ja võtke seadmes <ph name="DEVICE_TYPE" /> vastu tekstsõnumeid. <ph name="LINK_BEGIN" />Lisateave<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Casti probleemist teavitamine</translation> +<translation id="966588271015727539">Valige Bluetoothiga Braille' ekraan</translation> <translation id="967398046773905967">Ära luba ühelgi saidil HID-seadmetele juurde pääseda</translation> <translation id="967624055006145463">Salvestatud andmete maht</translation> <translation id="96774243435178359">Hallatud printerid</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index 02b40dae..02faf5ca 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -2718,6 +2718,7 @@ <translation id="3336855445806447827">Ez dakit ziur</translation> <translation id="3337568642696914359">Ez eman protokoloak kudeatzeko baimena webguneei</translation> <translation id="3340620525920140773">Deskargatu da <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">ezarpenak</translation> <translation id="3341699307020049241">PINa okerra da. <ph name="RETRIES" /> saiakera geratzen zaizkizu.</translation> <translation id="3341703758641437857">Eman fitxategien URLetan sartzeko baimena</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" luzapenak beste luzapen hau kendu nahi du.</translation> @@ -4088,6 +4089,7 @@ <translation id="4545759655004063573">Ezin da gorde baimenak ez direlako nahiko. Gorde beste kokapen batean.</translation> <translation id="4546308221697447294">Arakatu sarea bizkor Google Chrome-rekin</translation> <translation id="4546345569117159016">Eskuineko botoia</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> erabiltzaileak luzapen hau erabili nahi du:</translation> <translation id="4546692474302123343">Google-ren Laguntzailea zerbitzuaren ahozko idazketa</translation> <translation id="4547659257713117923">Ez dago beste gailuetako fitxarik</translation> <translation id="4547672827276975204">Ezarri automatikoki</translation> @@ -4945,6 +4947,7 @@ <translation id="5338503421962489998">Tokiko biltegia</translation> <translation id="5339031667684712858">Kendutako webguneak</translation> <translation id="5340638867532133571">Baimendu webguneei ordainketa-kudeatzaileak instalatzea (gomendatua)</translation> +<translation id="5340787663756381836">&Aurkitu eta editatu</translation> <translation id="5341793073192892252">Cookie hauek blokeatu egin dira (hirugarrenen cookieak blokeatzen ari dira, salbuespenik gabe):</translation> <translation id="5342091991439452114">PINak <ph name="MINIMUM" /> digitu izan behar ditu gutxienez</translation> <translation id="5344036115151554031">Linux leheneratzen</translation> @@ -5565,6 +5568,7 @@ <translation id="5904614460720589786">Ezin izan da instalatu <ph name="APP_NAME" /> konfigurazio-arazo batengatik. Jarri administratzailearekin harremanetan. Errore-kodea: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Ia amaitu dugu! Eguneratzen amaitzeko, berrabiarazi gailua.</translation> <translation id="5906732635754427568">Aplikazio honekin erlazionatutako datu guztiak kenduko dira gailu honetatik.</translation> +<translation id="5906974869830879618">Idatzi PINa</translation> <translation id="5908474332780919512">Abiarazi aplikazioa saioa hasten duzunean</translation> <translation id="5908695239556627796">Saguarekin gora/behera egiteko abiadura</translation> <translation id="5909379458939060601">Profila eta arakatze-datuak ezabatu nahi dituzu?</translation> @@ -6948,6 +6952,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> mikrofonoa erabiltzen ari da</translation> <translation id="7141105143012495934">Ezin izan da hasi saioa, ezin izan direlako eskuratu kontuaren xehetasunak. Jarri administratzailearekin harremanetan edo saiatu berriro.</translation> <translation id="7141844554192012199">Egiaztapena</translation> +<translation id="7143207342074048698">Konektatzen</translation> <translation id="7144878232160441200">Saiatu berriro</translation> <translation id="7148426638542880639">Webguneek agian ez dute espero duzun bezala funtzionatuko. Gailuan bisitatzen dituzun webguneei buruzko informaziorik utzi nahi ez baduzu, hautatu aukera hau.</translation> <translation id="7149839598364933473">Bihurtu gailu hau <ph name="DEVICE_OS" /> darabilen gailu.</translation> @@ -9324,6 +9329,7 @@ <translation id="939401694733344652">Kontu hauek ez dira erabiltzen ari Android-erako aplikazioekin. Kontu bat hautatzen baduzu Android-erako aplikazio honekin erabiltzeko, Android-erako beste aplikazio batzuekin ere erabili ahalko duzu. Android-erako aplikazioetarako sarbidea aldatzeko, joan <ph name="LINK_BEGIN" />Ezarpenak > Kontuak<ph name="LINK_END" /> atalera.</translation> <translation id="939598580284253335">Idatzi pasaesaldia</translation> <translation id="939736085109172342">Karpeta berria</translation> +<translation id="940212040923880623">&Aurkitu eta editatu</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> Chrome-ko fitxa bat eta audioa partekatzen ari da.</translation> <translation id="944799160843436808">Arazo bat izan da Steam Chromebook-ean konfiguratzean</translation> <translation id="945522503751344254">Bidali oharrak</translation> @@ -9345,6 +9351,7 @@ <translation id="964790508619473209">Pantailaren antolaketa</translation> <translation id="965211523698323809">Bidali eta jaso testu-mezuak <ph name="DEVICE_TYPE" /> gailua erabilita. <ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation> <translation id="96535553604365597">Eman Google Cast-en arazo baten berri</translation> +<translation id="966588271015727539">Hautatu Bluetooth bidezko braille-pantaila bat</translation> <translation id="967398046773905967">Ez eman HID gailuak erabiltzeko baimena inongo webguneri</translation> <translation id="967624055006145463">Gordetako datuak</translation> <translation id="96774243435178359">Kudeatutako inprimagailuak</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 9e309fee..7a95a4a 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -2162,6 +2162,7 @@ <translation id="2804043232879091219">مرورگر جایگزین باز نشد</translation> <translation id="2804667941345577550">از سیستم این سایت (ازجمله در برگههای باز) خارج خواهید شد</translation> <translation id="2804680522274557040">دوربین خاموش است</translation> +<translation id="2804742109948581745">پهلو به پهلو</translation> <translation id="2805539617243680210">همه چیز آماده است!</translation> <translation id="2805646850212350655">سیستم فایل رمزگذاری Microsoft</translation> <translation id="2805756323405976993">برنامهها</translation> @@ -2733,6 +2734,7 @@ <translation id="3336855445806447827">مطمئن نیستم</translation> <translation id="3337568642696914359">به سایتها اجازه داده نشود پروتکلها را مدیریت کنند</translation> <translation id="3340620525920140773">بارگیری کامل شد: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">تنظیمات</translation> <translation id="3341699307020049241">پین اشتباه است. <ph name="RETRIES" /> بار دیگر میتوانید امتحان کنید.</translation> <translation id="3341703758641437857">اجازهٔ دسترسی به نشانیهای وب فایل</translation> <translation id="3342361181740736773">«<ph name="TRIGGERING_EXTENSION_NAME" />» میخواهد این افزونه را بردارد.</translation> @@ -4655,6 +4657,7 @@ <translation id="5056950756634735043">درحال اتصال به محتوی</translation> <translation id="5057110919553308744">وقتی روی افزونه کلیک میکنید</translation> <translation id="5059241099014281248">محدود کردن ورود به سیستم</translation> +<translation id="5059429103770496207">سبک نمایش</translation> <translation id="5059526285558225588">انتخاب موارد برای همرسانی</translation> <translation id="5060332552815861872">۱ چاپگر برای ذخیره در دسترس است.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{این پوشه حاوی نشانک است. مطمئنید که میخواهید آن را حذف کنید؟}one{این پوشه حاوی # نشانک است. مطمئنید که میخواهید آن را حذف کنید؟}other{این پوشه حاوی # نشانک است. مطمئنید که میخواهید آن را حذف کنید؟}}</translation> @@ -5588,6 +5591,7 @@ <translation id="5904614460720589786">بهدلیل مشکل پیکربندی، <ph name="APP_NAME" /> راهاندازی نشد. لطفاً با سرپرست تماس بگیرید. کد خطا: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">تقریباً بهروز شده است! برای تمام کردن بهروزرسانی، دستگاهتان را دوباره راهاندازی کنید.</translation> <translation id="5906732635754427568">دادههای مرتبط با این برنامه از این دستگاه پاک میشوند.</translation> +<translation id="5906974869830879618">لطفاً پین را وارد کنید</translation> <translation id="5908474332780919512">راهاندازی برنامه هنگام ورود به سیستم</translation> <translation id="5908695239556627796">سرعت پیمایش موشواره</translation> <translation id="5909379458939060601">این نمایه و دادههای مرور حذف شود؟</translation> @@ -6977,6 +6981,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> درحال استفاده از میکروفون است</translation> <translation id="7141105143012495934">به دلیل اینکه جزئيات حساب شما بازیابی نشد، ورود به سیستم ناموفق بود. لطفاً با سرپرستتان تماس بگیرید یا دوباره امتحان کنید.</translation> <translation id="7141844554192012199">بررسی</translation> +<translation id="7143207342074048698">در حال اتصال</translation> <translation id="7144878232160441200">سعی مجدد</translation> <translation id="7148426638542880639">سایتها ممکن است مطابق انتظار شما عمل نکنند. اگر میخواهید اطلاعاتی درباره سایتهایی که بازدید میکنید در دستگاه باقی نگذارید، این گزینه را انتخاب کنید.</translation> <translation id="7149839598364933473">تبدیل این دستگاه به دستگاه <ph name="DEVICE_OS" />.</translation> @@ -9381,6 +9386,7 @@ <translation id="964790508619473209">تنظیم صفحهنمایش</translation> <translation id="965211523698323809">ارسال و دریافت پیامک از <ph name="DEVICE_TYPE" /> شما. <ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation> <translation id="96535553604365597">گزارش مشکل در Google Cast</translation> +<translation id="966588271015727539">نمایشگر بریل انتخاب کنید</translation> <translation id="967398046773905967">به هیچ سایتی اجازه دسترسی به دستگاههای HID داده نشود</translation> <translation id="967624055006145463">داده ذخیره شد</translation> <translation id="96774243435178359">چاپگرهای مدیریتشده</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index f1a516e..ffa8e8c 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -2164,6 +2164,7 @@ <translation id="2804043232879091219">Toisen selaimen avaaminen epäonnistui</translation> <translation id="2804667941345577550">Sinut kirjataan ulos tältä sivustolta, myös avoimilta välilehdiltä.</translation> <translation id="2804680522274557040">Kamera poistettiin käytöstä</translation> +<translation id="2804742109948581745">Rinnakkainen</translation> <translation id="2805539617243680210">Kaikki on valmista.</translation> <translation id="2805646850212350655">Microsoftin tietojärjestelmän salaus</translation> <translation id="2805756323405976993">Sovellukset</translation> @@ -2735,6 +2736,7 @@ <translation id="3336855445806447827">En tiedä</translation> <translation id="3337568642696914359">Älä salli sivustojen käsitellä protokollia</translation> <translation id="3340620525920140773">Lataus valmis: <ph name="FILE_NAME" /></translation> +<translation id="3340978935015468852">asetuksissa</translation> <translation id="3341699307020049241">Väärä PIN-koodi. Jäljellä on <ph name="RETRIES" /> yritystä.</translation> <translation id="3341703758641437857">Salli tiedostojen URL-osoitteiden käyttö</translation> <translation id="3342361181740736773"><ph name="TRIGGERING_EXTENSION_NAME" /> haluaa poistaa tämän laajennuksen.</translation> @@ -4654,6 +4656,7 @@ <translation id="5056950756634735043">Muodostetaan yhteyttä säilöön</translation> <translation id="5057110919553308744">Kun klikkaat laajennusta</translation> <translation id="5059241099014281248">Rajoita kirjautumista</translation> +<translation id="5059429103770496207">Näyttötyyli</translation> <translation id="5059526285558225588">Valitse, mitä jaat</translation> <translation id="5060332552815861872">Tallennettavia tulostimia on yksi.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Tässä kansiossa on kirjanmerkki. Haluatko varmasti poistaa sen?}other{Tässä kansiossa on # kirjanmerkkiä. Haluatko varmasti poistaa sen?}}</translation> @@ -5587,6 +5590,7 @@ <translation id="5904614460720589786"><ph name="APP_NAME" />:n asennus ei onnistunut konfiguraatio-ongelman vuoksi. Ota yhteyttä järjestelmänvalvojaasi. Virhekoodi: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Melkein ajan tasalla. Viimeistele päivitys käynnistämällä laite uudelleen.</translation> <translation id="5906732635754427568">Tähän sovellukseen liittyvät tiedot poistetaan tältä laitteelta.</translation> +<translation id="5906974869830879618">Syötä PIN-koodi</translation> <translation id="5908474332780919512">Käynnistä sovellus kun kirjaudut sisään</translation> <translation id="5908695239556627796">Hiiren vieritysnopeus</translation> <translation id="5909379458939060601">Poistetaanko tämä profiili ja selausdata?</translation> @@ -6974,6 +6978,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> käyttää mikrofonia</translation> <translation id="7141105143012495934">Sisäänkirjautuminen epäonnistui, koska tilitietojasi ei löytynyt. Ota yhteyttä järjestelmänvalvojaan tai yritä uudelleen.</translation> <translation id="7141844554192012199">Tarkistus</translation> +<translation id="7143207342074048698">Yhdistetään</translation> <translation id="7144878232160441200">Yritä uudelleen</translation> <translation id="7148426638542880639">Sivustot eivät välttämättä toimi odotetusti. Valitse tämä vaihtoehto, jos et halua jättää laitteelle tietoja avaamistasi sivustoista.</translation> <translation id="7149839598364933473">Muunna tämä laite <ph name="DEVICE_OS" /> ‑laitteeksi.</translation> @@ -9377,6 +9382,7 @@ <translation id="964790508619473209">Näytön asettelu</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> voi lähettää ja vastaanottaa tekstiviestejä. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation> <translation id="96535553604365597">Ilmoita Google Castiin liittyvästä ongelmasta</translation> +<translation id="966588271015727539">Valitse Bluetooth-pistekirjoitusnäyttö</translation> <translation id="967398046773905967">Älä anna HID-laitteiden käyttölupaa millekään sivustolle</translation> <translation id="967624055006145463">Tallennettu data</translation> <translation id="96774243435178359">Hallinnoidut tulostimet</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index 1f9751ed..cd5b1bc 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -2166,6 +2166,7 @@ <translation id="2804043232879091219">Hindi mabuksan ang alternatibong browser</translation> <translation id="2804667941345577550">Masa-sign out ka sa site na ito, pati na rin sa mga nakabukas na tab</translation> <translation id="2804680522274557040">Naka-off ang camera</translation> +<translation id="2804742109948581745">Magkatabi</translation> <translation id="2805539617243680210">Handa ka na!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Mga App</translation> @@ -2737,6 +2738,7 @@ <translation id="3336855445806447827">Hindi sigurado</translation> <translation id="3337568642696914359">Huwag payagan ang mga site na mangasiwa ng mga protocol</translation> <translation id="3340620525920140773">Tapos na ang pag-download: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">mga setting</translation> <translation id="3341699307020049241">Maling PIN. Mayroon kang <ph name="RETRIES" /> pagtatangkang natitira.</translation> <translation id="3341703758641437857">Payagan ang access na mag-file ng mga URL</translation> <translation id="3342361181740736773">Gustong alisin ng "<ph name="TRIGGERING_EXTENSION_NAME" />" ang extension na ito.</translation> @@ -4659,6 +4661,7 @@ <translation id="5056950756634735043">Kumokonekta sa container</translation> <translation id="5057110919553308744">Kapag iki-click mo ang extension</translation> <translation id="5059241099014281248">Paghigpitan ang pag-sign in</translation> +<translation id="5059429103770496207">Istilo ng display</translation> <translation id="5059526285558225588">Piliin kung ano ang ibabahagi</translation> <translation id="5060332552815861872">May 1 printer na available na i-save.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Naglalaman ng bookmark ang folder na ito. Sigurado ka bang gusto mo itong i-delete?}one{Naglalaman ng # bookmark ang folder na ito. Sigurado ka bang gusto mo itong i-delete?}other{Naglalaman ng # na bookmark ang folder na ito. Sigurado ka bang gusto mo itong i-delete?}}</translation> @@ -5592,6 +5595,7 @@ <translation id="5904614460720589786">Hindi ma-set up ang <ph name="APP_NAME" /> dahil sa isang problema sa configuration. Makipag-ugnayan sa iyong administrator. Code ng error: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Halos napapanahon na! I-restart ang iyong device upang tapusin ang pag-a-update.</translation> <translation id="5906732635754427568">Aalisin sa device na ito ang data na nauugnay sa app na ito.</translation> +<translation id="5906974869830879618">Maglagay ng pin</translation> <translation id="5908474332780919512">Buksan ang App Kapag Nag-sign In Ka</translation> <translation id="5908695239556627796">Bilis ng pag-scroll ng mouse</translation> <translation id="5909379458939060601">I-delete ang profile at data mula sa pag-browse na ito?</translation> @@ -6981,6 +6985,7 @@ <translation id="7139627972753429585">Ginagamit ng <ph name="APP_NAME" /> ang iyong mikropono</translation> <translation id="7141105143012495934">Hindi nakapag-sign dahil hindi maibalik ang mga detalye ng iyong account. Mangyaring makipag-ugnayan sa iyong administrator o subukan ulit.</translation> <translation id="7141844554192012199">Checkup</translation> +<translation id="7143207342074048698">Kumokonekta</translation> <translation id="7144878232160441200">Subukang muli</translation> <translation id="7148426638542880639">Posibleng hindi gumana ang mga site tulad ng inaasahan mo. Piliin ang opsyong ito kung ayaw mong mag-iwan ng impormasyon sa iyong device tungkol sa mga site na binibisita mo.</translation> <translation id="7149839598364933473">I-convert ang device na ito sa <ph name="DEVICE_OS" /> device.</translation> @@ -9388,6 +9393,7 @@ <translation id="964790508619473209">Arrangement ng screen</translation> <translation id="965211523698323809">Magpadala at makatanggap ng mga text message mula sa iyong <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation> <translation id="96535553604365597">Mag-ulat ng isyu sa Google Cast</translation> +<translation id="966588271015727539">Pumili ng bluetooth na braille display</translation> <translation id="967398046773905967">Huwag payagan ang anumang site na i-access ang mga HID device</translation> <translation id="967624055006145463">Naka-store na data</translation> <translation id="96774243435178359">Mga pinapamahalaang printer</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index aa3d45a..3f7d0b0a 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -2723,6 +2723,7 @@ <translation id="3336855445806447827">Incertain</translation> <translation id="3337568642696914359">Ne pas autoriser les sites à gérer des protocoles</translation> <translation id="3340620525920140773">Téléchargement terminé : <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">paramètres</translation> <translation id="3341699307020049241">NIP incorrect. Il vous reste <ph name="RETRIES" /> tentatives.</translation> <translation id="3341703758641437857">Autoriser l'accès aux URL de fichier</translation> <translation id="3342361181740736773">« <ph name="TRIGGERING_EXTENSION_NAME" /> » souhaite désinstaller cette extension.</translation> @@ -4095,6 +4096,7 @@ <translation id="4545759655004063573">Impossible d'enregistrer en raison d'autorisations insuffisantes. Veuillez faire l'enregistrement à un autre endroit.</translation> <translation id="4546308221697447294">Naviguez rapidement avec Google Chrome</translation> <translation id="4546345569117159016">Bouton droit</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> demande l'autorisation cette extension :</translation> <translation id="4546692474302123343">Entrée vocale pour l'Assistant Google</translation> <translation id="4547659257713117923">Pas d'onglets provenant d'autres appareils</translation> <translation id="4547672827276975204">Définir automatiquement</translation> @@ -4952,6 +4954,7 @@ <translation id="5338503421962489998">Stockage local</translation> <translation id="5339031667684712858">Sites que vous avez retirés</translation> <translation id="5340638867532133571">Autoriser les sites à installer des modules de traitement des paiements (recommandé)</translation> +<translation id="5340787663756381836">et Rechercher et modifier</translation> <translation id="5341793073192892252">Les témoins suivants ont été bloqués (tous les témoins de tiers sont bloqués, sans exception)</translation> <translation id="5342091991439452114">Le NIP doit comporter au moins <ph name="MINIMUM" /> chiffres</translation> <translation id="5344036115151554031">Restauration de Linux en cours…</translation> @@ -5575,6 +5578,7 @@ <translation id="5904614460720589786">Impossible de configurer <ph name="APP_NAME" /> en raison d'une erreur de configuration. Veuillez communiquer avec votre administrateur. Code d'erreur : <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">La mise à jour est presque terminée! Pour la compléter, veuillez redémarrer votre appareil.</translation> <translation id="5906732635754427568">Les données associées à cette application seront supprimées de cet appareil.</translation> +<translation id="5906974869830879618">Veuillez entrer un NIP</translation> <translation id="5908474332780919512">Démarrer l'application lorsque vous vous connectez</translation> <translation id="5908695239556627796">Vitesse de défilement de la souris</translation> <translation id="5909379458939060601">Supprimer ce profil et les données de navigation?</translation> @@ -6964,6 +6968,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> utilise votre microphone</translation> <translation id="7141105143012495934">La connexion a échoué, car les détails de votre compte n'ont pas pu être récupérés. Veuillez communiquer avec votre administrateur ou réessayer.</translation> <translation id="7141844554192012199">Vérification</translation> +<translation id="7143207342074048698">Connexion…</translation> <translation id="7144878232160441200">Réessayer</translation> <translation id="7148426638542880639">Les sites pourraient ne pas fonctionner comme prévu. Choisissez cette option si vous ne souhaitez pas que les données relatives aux sites que vous visitez soient enregistrées sur votre appareil.</translation> <translation id="7149839598364933473">Convertissez cet appareil en un appareil <ph name="DEVICE_OS" />.</translation> @@ -9346,6 +9351,7 @@ <translation id="939401694733344652">Ces comptes ne sont pas actuellement utilisés avec des applications Android. Si vous sélectionnez un compte à utiliser avec cette application Android, celui-ci peut également être utilisé avec d'autres applications Android. Vous pouvez modifier l'accès à l'application Android dans <ph name="LINK_BEGIN" />Paramètres > Comptes<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Entrer la phrase de passe</translation> <translation id="939736085109172342">Nouveau dossier</translation> +<translation id="940212040923880623">et Rechercher et modifier</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> partage un onglet Chrome et le son.</translation> <translation id="944799160843436808">Un problème est survenu lors de la configuration de Steam pour Chromebook</translation> <translation id="945522503751344254">Envoyer un commentaire à Google</translation> @@ -9367,6 +9373,7 @@ <translation id="964790508619473209">Position des écrans</translation> <translation id="965211523698323809">Envoyez et recevez des messages texte à partir de votre <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="96535553604365597">Signaler un problème avec Google Cast</translation> +<translation id="966588271015727539">Sélectionnez un afficheur braille Bluetooth</translation> <translation id="967398046773905967">N'autoriser aucun site à accéder à des appareils HID</translation> <translation id="967624055006145463">Données stockées</translation> <translation id="96774243435178359">Imprimantes gérées</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index 70495af..4152f91 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -2195,7 +2195,7 @@ <translation id="2844169650293029770">Appareil USB de type C (port situé sur la gauche de l'appareil, à l'avant)</translation> <translation id="2844809857160214557">Afficher et gérer les tâches d'impression</translation> <translation id="2845382757467349449">Toujours afficher la barre de favoris</translation> -<translation id="2845751331501453107">Lorsque vous naviguez, la personnalisation des annonces dépend de ce paramètre, des <ph name="BEGIN_LINK1" />annonces suggérées par les sites<ph name="LINK_END1" />, des <ph name="BEGIN_LINK2" />paramètres des cookies<ph name="LINK_END2" /> et de si le site que vous consultez personnalise les annonces</translation> +<translation id="2845751331501453107">Le fait que vous voyiez ou non des annonces personnalisées lorsque vous naviguez sur Internet dépend de ce paramètre, des <ph name="BEGIN_LINK1" />annonces suggérées par les sites<ph name="LINK_END1" />, de vos <ph name="BEGIN_LINK2" />paramètres relatifs aux cookies<ph name="LINK_END2" /> et du comportement du site que vous consultez en matière de personnalisation</translation> <translation id="284581348330507117">Créez des mots de passe uniques</translation> <translation id="284805635805850872">Supprimer le logiciel malveillant ?</translation> <translation id="2849035674501872372">Rechercher</translation> @@ -2722,6 +2722,7 @@ <translation id="3336855445806447827">Je ne sais pas.</translation> <translation id="3337568642696914359">Ne pas autoriser les sites à gérer des protocoles</translation> <translation id="3340620525920140773">Téléchargement terminé : <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">paramètres</translation> <translation id="3341699307020049241">Code incorrect. Il vous reste <ph name="RETRIES" /> tentatives.</translation> <translation id="3341703758641437857">Autoriser l'accès aux URL de fichier</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" souhaite supprimer cette extension.</translation> @@ -3020,6 +3021,7 @@ <translation id="3609277884604412258">Recherche rapide</translation> <translation id="3610241585790874201">Non autorisés à enregistrer des données sur votre appareil</translation> <translation id="3610369246614755442">Le ventilateur de la station doit être réparé</translation> +<translation id="3610961622607302617">Modifier le mot de passe pour <ph name="WEBSITE" /></translation> <translation id="361106536627977100">Données Flash</translation> <translation id="3611655097742243705">Accédez au Play Store pour trouver des applis</translation> <translation id="3611658447322220736">Les sites fermés récemment peuvent terminer l'envoi et la réception de données</translation> @@ -4951,6 +4953,7 @@ <translation id="5338503421962489998">Stockage local</translation> <translation id="5339031667684712858">Sites que vous avez supprimés</translation> <translation id="5340638867532133571">Autoriser les sites à installer des gestionnaires de paiement (recommandé)</translation> +<translation id="5340787663756381836">&Rechercher et modifier</translation> <translation id="5341793073192892252">Les cookies suivants ont été bloqués (tous les cookies tiers sont bloqués, sans exception)</translation> <translation id="5342091991439452114">Le code doit comprendre au moins <ph name="MINIMUM" /> chiffres</translation> <translation id="5344036115151554031">Restauration de Linux…</translation> @@ -5575,6 +5578,7 @@ <translation id="5904614460720589786">Impossible d'installer <ph name="APP_NAME" /> en raison d'un problème de configuration. Veuillez contacter votre administrateur. Code d'erreur : <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Mise à jour presque terminée. Pour la finaliser, veuillez redémarrer votre appareil.</translation> <translation id="5906732635754427568">Les données associées à cette application seront supprimées de cet appareil.</translation> +<translation id="5906974869830879618">Veuillez saisir un code</translation> <translation id="5908474332780919512">Lancer l'application lors de la connexion</translation> <translation id="5908695239556627796">Vitesse de défilement avec la souris</translation> <translation id="5909379458939060601">Supprimer ce profil et les données de connexion ?</translation> @@ -6041,6 +6045,7 @@ <translation id="6318125393809743217">Ajouter un fichier policies.json avec des configurations de règles.</translation> <translation id="6318407754858604988">Le téléchargement a commencé</translation> <translation id="6318944945640833942">Impossible de détecter l'imprimante. Veuillez saisir à nouveau son adresse.</translation> +<translation id="6320808462673705899">Aucun favori ne correspond à votre recherche.</translation> <translation id="6322370287306604163">Déverrouiller plus vite avec votre empreinte</translation> <translation id="6322559670748154781">N'étant pas souvent téléchargé, ce fichier a été bloqué par la Protection Avancée.</translation> <translation id="6324916366299863871">Modifier le raccourci</translation> @@ -6963,6 +6968,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> utilise votre micro</translation> <translation id="7141105143012495934">Échec de la connexion, car il est impossible de récupérer les informations relatives à votre compte. Veuillez contacter votre administrateur ou réessayer.</translation> <translation id="7141844554192012199">Check-up</translation> +<translation id="7143207342074048698">Connexion</translation> <translation id="7144878232160441200">Réessayer</translation> <translation id="7148426638542880639">Il est possible que les sites ne fonctionnent pas comme prévu. Choisissez cette option si vous ne souhaitez pas conserver d'informations concernant les sites que vous consultez sur votre appareil.</translation> <translation id="7149839598364933473">Installez <ph name="DEVICE_OS" /> sur l'appareil.</translation> @@ -9346,6 +9352,7 @@ <translation id="939401694733344652">Ces comptes ne sont pas utilisés avec les applis Android actuellement. Si vous sélectionnez un compte à utiliser avec cette appli Android, il pourra également être utilisé avec les autres applis Android. Vous pouvez modifier l'accès des applis Android dans <ph name="LINK_BEGIN" />Paramètres > Comptes<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Saisir la phrase secrète</translation> <translation id="939736085109172342">Nouveau dossier</translation> +<translation id="940212040923880623">&Rechercher et modifier</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> partage un onglet Chrome et un contenu audio.</translation> <translation id="944799160843436808">Un problème est survenu lors de la configuration de Steam sur Chromebook</translation> <translation id="945522503751344254">Envoyer un commentaire</translation> @@ -9367,6 +9374,7 @@ <translation id="964790508619473209">Mode d'affichage de l'écran</translation> <translation id="965211523698323809">Envoyez et recevez des SMS depuis votre <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="96535553604365597">Signaler un problème avec Google Cast</translation> +<translation id="966588271015727539">Sélectionner une plage braille Bluetooth</translation> <translation id="967398046773905967">N'autoriser aucun site à accéder aux périphériques HID</translation> <translation id="967624055006145463">Données stockées</translation> <translation id="96774243435178359">Imprimantes gérées</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index 70dd960..5a992e5 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -2720,6 +2720,7 @@ <translation id="3336855445806447827">Non estou seguro</translation> <translation id="3337568642696914359">Non permitir que os sitios xestionen protocolos</translation> <translation id="3340620525920140773">Completouse a descarga: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">configuración</translation> <translation id="3341699307020049241">O PIN é incorrecto. Quédanche <ph name="RETRIES" /> intentos.</translation> <translation id="3341703758641437857">Permitir acceso aos URL dos ficheiros</translation> <translation id="3342361181740736773">Á extensión "<ph name="TRIGGERING_EXTENSION_NAME" />" gustaríalle eliminar esta extensión.</translation> @@ -4092,6 +4093,7 @@ <translation id="4545759655004063573">Non se pode gardar debido a que non hai permisos suficientes. Garda o contido noutra localización.</translation> <translation id="4546308221697447294">Navega rápido con Google Chrome</translation> <translation id="4546345569117159016">Botón dereito</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> quere usar esta extensión:</translation> <translation id="4546692474302123343">Entrada de voz do Asistente de Google</translation> <translation id="4547659257713117923">Non hai pestanas doutros dispositivos</translation> <translation id="4547672827276975204">Definir automaticamente</translation> @@ -5571,6 +5573,7 @@ <translation id="5904614460720589786">Non se puido configurar a aplicación <ph name="APP_NAME" /> debido a un problema de configuración. Ponte en contacto co teu administrador. Código de erro: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">A actualización case rematou. Reinicia o dispositivo para finalizala.</translation> <translation id="5906732635754427568">Os datos asociados con esta aplicación quitaranse deste dispositivo.</translation> +<translation id="5906974869830879618">Introduce un PIN</translation> <translation id="5908474332780919512">Iniciar aplicación ao iniciar sesión</translation> <translation id="5908695239556627796">Velocidade de desprazamento do rato</translation> <translation id="5909379458939060601">Queres eliminar este perfil e os datos de navegación?</translation> @@ -6957,6 +6960,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> está usando o micrófono</translation> <translation id="7141105143012495934">Produciuse un erro no inicio de sesión porque non se puideron recuperar os datos da túa conta. Ponte en contacto co administrador ou téntao de novo.</translation> <translation id="7141844554192012199">Revisión</translation> +<translation id="7143207342074048698">Conectando</translation> <translation id="7144878232160441200">Volver tentar</translation> <translation id="7148426638542880639">É posible que os sitios non funcionen da forma que esperas. Elixe esta opción se non queres deixar información sobre os sitios que visitas no teu dispositivo.</translation> <translation id="7149839598364933473">Transforma este aparello nun dispositivo <ph name="DEVICE_OS" />.</translation> @@ -9360,6 +9364,7 @@ <translation id="964790508619473209">Disposición da pantalla</translation> <translation id="965211523698323809">Envía e recibe mensaxes de texto desde o <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation> <translation id="96535553604365597">Informar dun problema con Google Cast</translation> +<translation id="966588271015727539">Selecciona una liña braille por Bluetooth</translation> <translation id="967398046773905967">Non permitir que ningún sitio acceda aos dispositivos de interface humana</translation> <translation id="967624055006145463">Datos almacenados</translation> <translation id="96774243435178359">Impresoras xestionadas</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index c3a8858d..04330f83 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -2148,6 +2148,7 @@ <translation id="2804043232879091219">વૈકલ્પિક બ્રાઉઝર ખોલી શકાયું નથી</translation> <translation id="2804667941345577550">ખુલ્લા ટૅબ સહિત, આ સાઇટમાંથી તમને સાઇન આઉટ કરવામાં આવશે</translation> <translation id="2804680522274557040">કૅમેરા બંધ કર્યો</translation> +<translation id="2804742109948581745">આજુબાજુમાં</translation> <translation id="2805539617243680210">આગળ વધવા માટે તમે સંપૂર્ણ રીતે સજ્જ છો!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ઍપ</translation> @@ -2719,6 +2720,7 @@ <translation id="3336855445806447827">નિશ્ચિત નથી</translation> <translation id="3337568642696914359">સાઇટને પ્રોટોકૉલ હૅન્ડલ કરવાની મંજૂરી આપશો નહીં</translation> <translation id="3340620525920140773">ડાઉનલોડ પૂર્ણ થયું: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">સેટિંગ</translation> <translation id="3341699307020049241">ખોટો પિન. તમારી પાસે હવે <ph name="RETRIES" /> પ્રયાસ બાકી છે.</translation> <translation id="3341703758641437857">URL ફાઇલ કરવા ઍક્સેસની મંજૂરી આપો</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" આ એક્સ્ટેંશનને કાઢી નાખવા માગે છે.</translation> @@ -4640,6 +4642,7 @@ <translation id="5056950756634735043">કન્ટેનર સાથે કનેક્ટ કરી રહ્યાં છીએ</translation> <translation id="5057110919553308744">તમે એક્સ્ટેંશનને ક્લિક કરો ત્યારે</translation> <translation id="5059241099014281248">સાઇન ઇન કરવાનું પ્રતિબંધિત કરો</translation> +<translation id="5059429103770496207">ડિસ્પ્લેની શૈલી</translation> <translation id="5059526285558225588">શું શેર કરવું તે પસંદ કરો</translation> <translation id="5060332552815861872">1 પ્રિન્ટર સાચવવા માટે ઉપલબ્ધ છે.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{આ ફોલ્ડર બુકમાર્ક સમાવે છે. શું તમે ખરેખર એને ડિલીટ કરવા માગો છો?}one{આ ફોલ્ડર # બુકમાર્ક સમાવે છે. શું તમે ખરેખર એને ડિલીટ કરવા માગો છો?}other{આ ફોલ્ડર # બુકમાર્ક સમાવે છે. શું તમે ખરેખર એને ડિલીટ કરવા માગો છો?}}</translation> @@ -4949,6 +4952,7 @@ <translation id="5338503421962489998">સ્થાનિક સ્ટોરેજ</translation> <translation id="5339031667684712858">તમે કાઢી નાખેલી સાઇટ</translation> <translation id="5340638867532133571">સાઇટને ચુકવણી હૅન્ડલર ઇન્સ્ટૉલ કરવાની મંજૂરી આપો (સુઝાવ આપીએ છીએ)</translation> +<translation id="5340787663756381836">&શોધો અને ફેરફાર કરો</translation> <translation id="5341793073192892252">નીચેની કુકી બ્લૉક કરવામાં આવી હતી (તૃતીય પક્ષ કુકી, કોઈ પણ અપવાદ સિવાય, બ્લૉક કરવામાં આવી રહી છે)</translation> <translation id="5342091991439452114">PIN, ઓછામાં ઓછો <ph name="MINIMUM" /> અંકનો હોવો આવશ્યક છે</translation> <translation id="5344036115151554031">Linux રિસ્ટોર કરી રહ્યાં છીએ</translation> @@ -5573,6 +5577,7 @@ <translation id="5904614460720589786">ગોઠવણીમાં સમસ્યાને લીધે <ph name="APP_NAME" />ને સેટઅપ કરી શક્યાં નહીં. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો. ભૂલનો કોડ: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">અપ ટૂ ડેટ થવામાં છે! અપડેટ કરવાનું સમાપ્ત કરવા માટે તમારા ઉપકરણને પુનઃપ્રારંભ કરો.</translation> <translation id="5906732635754427568">આ ઍપ્લિકેશન સાથે સંકળાયેલ ડેટાને આ ઉપકરણમાંથી દૂર કરવામાં આવશે.</translation> +<translation id="5906974869830879618">કૃપા કરીને પિન દાખલ કરો</translation> <translation id="5908474332780919512">તમે સાઇન ઇન કરો ત્યારે ઍપ શરૂ કરો</translation> <translation id="5908695239556627796">માઉસ સ્ક્રોલની ઝડપ</translation> <translation id="5909379458939060601">શું આ પ્રોફાઇલ અને બ્રાઉઝિંગ ડેટા ડિલીટ કરીએ?</translation> @@ -6963,6 +6968,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> તમારા માઇક્રોફોનનો ઉપયોગ કરી રહી છે</translation> <translation id="7141105143012495934">સાઇન ઇન નિષ્ફળ થયું કારણ કે તમારી એકાઉન્ટ વિગતો પાછી મેળવી શકાઈ નથી. કૃપા કરીને તમારા એડમિનનો સંપર્ક કરો અથવા ફરી પ્રયાસ કરો.</translation> <translation id="7141844554192012199">તપાસ</translation> +<translation id="7143207342074048698">કનેક્ટિંગ</translation> <translation id="7144878232160441200">ફરી પ્રયત્ન કરો</translation> <translation id="7148426638542880639">સાઇટ કદાચ તમારી અપેક્ષા મુજબ કામ કરશે નહીં. તમે મુલાકાત લો છો તે સાઇટ વિશેની માહિતી જો તમે તમારા ડિવાઇસ પર સાચવવા માગતા ન હો, તો આ વિકલ્પ પસંદ કરો.</translation> <translation id="7149839598364933473">આ ડિવાઇસને <ph name="DEVICE_OS" /> ડિવાઇસમાં રૂપાંતરિત કરો.</translation> @@ -9340,6 +9346,7 @@ <translation id="939401694733344652">હાલમાં આ એકાઉન્ટનો ઉપયોગ Android ઍપ સાથે કરવામાં આવી રહ્યો નથી. જો તમે આ Android ઍપ સાથે કોઈ એકાઉન્ટનો ઉપયોગ કરવાનું પસંદ કરો, તો તે એકાઉન્ટનો ઉપયોગ અન્ય Android ઍપ સાથે પણ કરી શકાય છે. તમે <ph name="LINK_BEGIN" />સેટિંગ > એકાઉન્ટ<ph name="LINK_END" />માં જઈને Android ઍપના ઍક્સેસમાં ફેરફાર કરી શકો છો.</translation> <translation id="939598580284253335">પાસફ્રેઝ દાખલ કરો</translation> <translation id="939736085109172342">નવું ફોલ્ડર</translation> +<translation id="940212040923880623">&શોધો અને ફેરફાર કરો</translation> <translation id="942532530371314860"><ph name="APP_NAME" />, Chrome ટૅબ અને ઑડિઓને શેર કરી રહી છે.</translation> <translation id="944799160843436808">Chromebook પર Steam સેટઅપ કરવામાં સમસ્યા આવી છે</translation> <translation id="945522503751344254">પ્રતિસાદ મોકલો</translation> @@ -9361,6 +9368,7 @@ <translation id="964790508619473209">સ્ક્રીનની ગોઠવણી</translation> <translation id="965211523698323809">તમારી <ph name="DEVICE_TYPE" />માંથી ટેક્સ્ટ મેસેજ મોકલો અને મેળવો. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Castમાં આવતી સમસ્યાની જાણ કરો</translation> +<translation id="966588271015727539">બ્લૂટૂથનું બ્રેઇલ પ્રદર્શન પસંદ કરો</translation> <translation id="967398046773905967">કોઈપણ સાઇટને HID ડિવાઇસને ઍક્સેસ કરવાની મંજૂરી આપશો નહીં</translation> <translation id="967624055006145463">સ્ટોર કરેલ ડેટા</translation> <translation id="96774243435178359">મેનેજ કરેલા પ્રિન્ટર</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index 380378a..5313f5d 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -2166,6 +2166,7 @@ <translation id="2804043232879091219">वैकल्पिक ब्राउज़र नहीं खोला जा सका</translation> <translation id="2804667941345577550">आपको इस साइट और खुले हुए टैब से साइन आउट कर दिया जाएगा</translation> <translation id="2804680522274557040">कैमरा बंद किया गया</translation> +<translation id="2804742109948581745">अगल-बगल</translation> <translation id="2805539617243680210">अब आप बिलकुल तैयार हैं!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ऐप्लिकेशन</translation> @@ -2737,6 +2738,7 @@ <translation id="3336855445806447827">पक्के तौर पर नहीं बता सकता</translation> <translation id="3337568642696914359">साइटों को प्रोटोकॉल हैंडल करने की अनुमति न दें</translation> <translation id="3340620525920140773">फ़ाइल डाउनलोड हो गई: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">सेटिंग</translation> <translation id="3341699307020049241">गलत पिन. आप <ph name="RETRIES" /> बार और कोशिश कर सकते हैं.</translation> <translation id="3341703758641437857">फ़ाइल के यूआरएल तक एक्सेस दें</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" इस एक्सटेंशन को हटाना चाहता है.</translation> @@ -4658,6 +4660,7 @@ <translation id="5056950756634735043">कंटेनर से जोड़ा जा रहा है</translation> <translation id="5057110919553308744">जब आप एक्सटेंशन को क्लिक करते हैं</translation> <translation id="5059241099014281248">साइन-इन करने पर पाबंदी लगाएं</translation> +<translation id="5059429103770496207">डिसप्ले का स्टाइल</translation> <translation id="5059526285558225588">चुनें कि क्या शेयर करना है</translation> <translation id="5060332552815861872">सेव करने के लिए एक प्रिंटर उपलब्ध है.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{इस फ़ोल्डर में एक बुकमार्क है. क्या आप वाकई इसे मिटाना चाहते हैं?}one{इस फ़ोल्डर में # बुकमार्क हैं. क्या आप वाकई इसे मिटाना चाहते हैं?}other{इस फ़ोल्डर में # बुकमार्क हैं. क्या आप वाकई इसे मिटाना चाहते हैं?}}</translation> @@ -5591,6 +5594,7 @@ <translation id="5904614460720589786">कॉन्फ़िगर करते समय हुई गड़बड़ी की वजह से <ph name="APP_NAME" /> को सेट अप नहीं किया जा सका. कृपया अपने एडमिन से संपर्क करें. गड़बड़ी कोड: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">करीब अप टू डेट हो गया है! अपडेट करना पूरा करने के लिए अपना डिवाइस फिर से प्रारंभ करें.</translation> <translation id="5906732635754427568">इस ऐप्लिकेशन से जुड़े डेटा को इस डिवाइस से हटा दिया जाएगा.</translation> +<translation id="5906974869830879618">कृपया एक पिन डालें</translation> <translation id="5908474332780919512">साइन इन करने पर ऐप्लिकेशन को चालू करें</translation> <translation id="5908695239556627796">माउस से स्क्रोल करने की रफ़्तार</translation> <translation id="5909379458939060601">क्या इस प्रोफ़ाइल और ब्राउज़िंग डेटा को मिटाना है?</translation> @@ -6980,6 +6984,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> आपके माइक्रोफ़ोन का इस्तेमाल कर रहा है</translation> <translation id="7141105143012495934">साइन इन नहीं हो पाया क्योंकि आपके खाते की जानकारी फिर से नहीं पाई जा सकी. कृपया अपने एडमिन से संपर्क करें या फिर से कोशिश करें.</translation> <translation id="7141844554192012199">जांच</translation> +<translation id="7143207342074048698">कनेक्टिंग</translation> <translation id="7144878232160441200">फिर से प्रयास करें</translation> <translation id="7148426638542880639">ऐसा हो सकता है कि साइटें आपकी उम्मीद के मुताबिक काम न करें. अगर आपको अपने डिवाइस में विज़िट की गई साइटों की जानकारी सेव नहीं करनी है, तो इस विकल्प को चुनें.</translation> <translation id="7149839598364933473">इस डिवाइस को <ph name="DEVICE_OS" /> डिवाइस में बदलें.</translation> @@ -9383,6 +9388,7 @@ <translation id="964790508619473209">स्क्रीन की सेटिंग</translation> <translation id="965211523698323809">अपने <ph name="DEVICE_TYPE" /> से मैसेज भेजें और पाएं. <ph name="LINK_BEGIN" />ज़्यादा जानें<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast में आ रही समस्या के बारे में शिकायत करें</translation> +<translation id="966588271015727539">एक ब्लूटूथ ब्रेल डिसप्ले चुनें</translation> <translation id="967398046773905967">किसी भी साइट को एचआईडी डिवाइस ऐक्सेस न करने दें</translation> <translation id="967624055006145463">डेटा सेव किया गया</translation> <translation id="96774243435178359">मैनेज किए गए प्रिंटर</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index 7656359..1cb7cec08 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -118,6 +118,7 @@ <translation id="1090541560108055381">Prije uparivanja provjerite je li ovaj kôd isti na oba uređaja</translation> <translation id="1091767800771861448">Pritisnite tipku ESCAPE za preskakanje (samo neslužbene međuverzije).</translation> <translation id="1093457606523402488">Vidljive mreže:</translation> +<translation id="1094219634413363886">Ako snimanje počne na ovom upravljanom uređaju, prikazat će se obavijest</translation> <translation id="1095761715416917775">Pobrinite se da uvijek možete pristupiti sinkroniziranim podacima</translation> <translation id="1095879482467973146">Google upravitelj zaporki na webu</translation> <translation id="109647177154844434">Deinstaliranjem Parallels Desktopa izbrisat će se slika za Windows. To uključuje njegove aplikacije, postavke i podatke. Jeste li sigurni da želite nastaviti?</translation> @@ -2726,6 +2727,7 @@ <translation id="3336855445806447827">Nisam siguran/sigurna</translation> <translation id="3337568642696914359">Ne dopuštaj web-lokacijama upravljanje protokolima</translation> <translation id="3340620525920140773">Preuzimanje dovršeno: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">postavke</translation> <translation id="3341699307020049241">PIN nije točan. Preostalo pokušaja: <ph name="RETRIES" />.</translation> <translation id="3341703758641437857">Dozvoli pristup URL-ovima datoteke</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" želi ukloniti to proširenje.</translation> @@ -3855,6 +3857,7 @@ <translation id="4340125850502689798">Nevažeće korisničko ime</translation> <translation id="4340515029017875942"><ph name="ORIGIN" /> želi komunicirati s aplikacijom "<ph name="EXTENSION_NAME" />"</translation> <translation id="4340799661701629185">Ne dopuštaj web-lokacijama slanje obavijesti</translation> +<translation id="4341280816303414009">Vaš će se zaslon možda snimiti</translation> <translation id="4341577178275615435">Da biste uključili ili isključili pregledavanje kursorom, upotrijebite prečac F7</translation> <translation id="4341905082470253054">Provjeravanje statusa TPM-a...</translation> <translation id="434198521554309404">Brz. Siguran. Jednostavan.</translation> @@ -5579,6 +5582,7 @@ <translation id="5904614460720589786">Postavljanje aplikacije <ph name="APP_NAME" /> nije uspjelo zbog problema s konfiguracijom. Obratite se administratoru. Kôd pogreške: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Ažuriranje će uskoro biti gotovo. Za dovršetak ponovo pokrenite uređaj.</translation> <translation id="5906732635754427568">Podaci povezani s tom aplikacijom uklonit će se s uređaja.</translation> +<translation id="5906974869830879618">Unesite PIN</translation> <translation id="5908474332780919512">Pokrenite aplikaciju kad se prijavite</translation> <translation id="5908695239556627796">Brzina pomicanja mišem</translation> <translation id="5909379458939060601">Izbrisati ovaj profil i podatke o pregledavanju?</translation> @@ -5674,6 +5678,7 @@ <translation id="5979421442488174909">&Prevedi na <ph name="LANGUAGE" /></translation> <translation id="5979469435153841984">Da biste označili stranice, kliknite zvjezdicu u adresnoj traci</translation> <translation id="5981362776161841923">Da biste dopustili proširenje, promijenite zadanu postavku u nastavku.</translation> +<translation id="5982578203375898585">Prikaži preuzimanja nakon dovršetka</translation> <translation id="5984222099446776634">Nedavno posjećeno</translation> <translation id="5985458664595100876">Format URL-a nije važeći. Podržani su formati \\server\share i smb://server/share.</translation> <translation id="598810097218913399">Ukloni zadatak</translation> @@ -6388,7 +6393,7 @@ <translation id="6630117778953264026">Snažnija zaštita</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> traži trajan pristup certifikatu za samostalnu autentifikaciju u vaše ime.</translation> <translation id="6633126565486451781">Datoteka je možda pročitana ili uređena jer web-lokacija ne upotrebljava sigurnu vezu</translation> -<translation id="6635362468090274700">Nitko ne može dijeliti s vama dok ne postavite uređaj kao vidljiv.<ph name="BR" /><ph name="BR" />Da biste uređaj privremeno postavili kao vidljiv, otvorite područje statusa, a zatim uključite vidljivost uređaja.</translation> +<translation id="6635362468090274700">Nitko ne može dijeliti s vama dok uređaj ne postavite kao vidljiv.<ph name="BR" /><ph name="BR" />Da biste uređaj privremeno postavili kao vidljiv, otvorite područje statusa, a zatim uključite vidljivost uređaja.</translation> <translation id="6635674640674343739">Mrežna veza ne može se uspostaviti. Provjerite mrežnu vezu i pokušajte ponovo.</translation> <translation id="6635944431854494329">Vlasnik može upravljati tom značajkom putem Postavki > Napredno > Automatsko slanje dijagnostike i podataka o upotrebi Googleu.</translation> <translation id="6636623428211296678">Istražite više postavki u nastavku ili završite odmah</translation> @@ -6969,6 +6974,7 @@ <translation id="7139627972753429585">Aplikacija <ph name="APP_NAME" /> upotrebljava vaš mikrofon</translation> <translation id="7141105143012495934">Prijava nije uspjela jer nisu dohvaćeni podaci o vašem računu. Obratite se administratoru ili pokušajte ponovo.</translation> <translation id="7141844554192012199">Provjera</translation> +<translation id="7143207342074048698">Povezivanje</translation> <translation id="7144878232160441200">Pokušaj ponovno</translation> <translation id="7148426638542880639">Web-lokacije možda neće funkcionirati kao što očekujete. Odaberite tu opciju ako na uređaju ne želite ostavljati podatke o web-lokacijama koje posjećujete.</translation> <translation id="7149839598364933473">Konvertirajte ovaj uređaj u <ph name="DEVICE_OS" /> uređaj.</translation> @@ -9375,6 +9381,7 @@ <translation id="964790508619473209">Raspored na zaslonu</translation> <translation id="965211523698323809">Šaljite i primajte tekstne poruke na uređaju <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="96535553604365597">Prijavite poteškoću s Google Castom</translation> +<translation id="966588271015727539">Odaberite Bluetooth brajev redak</translation> <translation id="967398046773905967">Onemogući svim web-lokacijama pristup HID uređajima</translation> <translation id="967624055006145463">Pohranjeni podaci</translation> <translation id="96774243435178359">Upravljani pisači</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 9e0d482..529ccfbd 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -2164,6 +2164,7 @@ <translation id="2804043232879091219">Nem sikerült megnyitni a másik böngészőt</translation> <translation id="2804667941345577550">A rendszer kijelentkezteti erről a webhelyről (a megnyitott lapok esetében is)</translation> <translation id="2804680522274557040">Kamera kikapcsolva</translation> +<translation id="2804742109948581745">Egymás mellett</translation> <translation id="2805539617243680210">Készen is van!</translation> <translation id="2805646850212350655">Microsoft - fájlrendszer titkosítása</translation> <translation id="2805756323405976993">Alkalmazások</translation> @@ -2735,6 +2736,7 @@ <translation id="3336855445806447827">Nem tudom</translation> <translation id="3337568642696914359">A webhelyek nem kezelhetnek protokollokat</translation> <translation id="3340620525920140773">A következő fájl letöltése befejeződött: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">beállítások</translation> <translation id="3341699307020049241">Helytelen PIN-kód. <ph name="RETRIES" /> kísérlete maradt.</translation> <translation id="3341703758641437857">Fájl URL-ekhez való hozzáférés engedélyezése</translation> <translation id="3342361181740736773">A(z) „<ph name="TRIGGERING_EXTENSION_NAME" />” szeretné eltávolítani ezt a bővítményt.</translation> @@ -4107,6 +4109,7 @@ <translation id="4545759655004063573">Nem lehet menteni, mert nincs elegendő jogosultság. Kérjük, mentse másik helyre.</translation> <translation id="4546308221697447294">Gyors böngészés a Google Chrome-mal</translation> <translation id="4546345569117159016">Jobb egérgomb</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> ezt a bővítményt szeretné használni:</translation> <translation id="4546692474302123343">Google Segéd-hangbevitel</translation> <translation id="4547659257713117923">Nincs más eszközről származó lap</translation> <translation id="4547672827276975204">Automatikus beállítás</translation> @@ -4655,6 +4658,7 @@ <translation id="5056950756634735043">Csatlakozás a tárolóhoz</translation> <translation id="5057110919553308744">Amikor a bővítményre kattint</translation> <translation id="5059241099014281248">Korlátozott bejelentkezés</translation> +<translation id="5059429103770496207">Megjelenítés stílusa</translation> <translation id="5059526285558225588">A megosztandó tartalmak kiválasztása</translation> <translation id="5060332552815861872">1 menthető nyomtató található.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Ebben a mappában van egy könyvjelző. Biztosan törli?}other{Ebben a mappában van # könyvjelző. Biztosan törli őket?}}</translation> @@ -5590,6 +5594,7 @@ <translation id="5904614460720589786">A(z) <ph name="APP_NAME" /> beállítása konfigurációs probléma miatt nem sikerült. Forduljon a rendszergazdájához. Hibakód: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Már majdnem naprakész! Indítsa újra az eszközt a frissítés befejezéséhez.</translation> <translation id="5906732635754427568">Az alkalmazáshoz kapcsolódó adatok törlődnek erről az eszközről.</translation> +<translation id="5906974869830879618">Adja meg a PIN-kódot</translation> <translation id="5908474332780919512">Alkalmazás indítása bejelentkezéskor</translation> <translation id="5908695239556627796">Egér görgetési sebessége</translation> <translation id="5909379458939060601">Törli ezt a profilt és a böngészési adatokat?</translation> @@ -6977,6 +6982,7 @@ <translation id="7139627972753429585">A(z) <ph name="APP_NAME" /> használja a mikrofont</translation> <translation id="7141105143012495934">A bejelentkezés nem sikerült, mert a fiókadatokat nem sikerült lekérni. Kérjük, forduljon rendszergazdájához, vagy próbálja újra.</translation> <translation id="7141844554192012199">Ellenőrzés</translation> +<translation id="7143207342074048698">Csatlakozás</translation> <translation id="7144878232160441200">Újra</translation> <translation id="7148426638542880639">Előfordulhat, hogy a webhelyek nem a várt módon működnek. Akkor válassza ezt a lehetőséget, ha nem szeretne információkat tárolni az eszközén a felkeresett webhelyekkel kapcsolatban.</translation> <translation id="7149839598364933473">Eszköz konvertálása a következő rendszert használó eszközzé: <ph name="DEVICE_OS" />.</translation> @@ -9380,6 +9386,7 @@ <translation id="964790508619473209">Képernyőelrendezés</translation> <translation id="965211523698323809">SMS-t küldhet és fogadhat <ph name="DEVICE_TYPE" /> eszközével. <ph name="LINK_BEGIN" />További információ.<ph name="LINK_END" /></translation> <translation id="96535553604365597">A Google Casttal kapcsolatos hiba bejelentése</translation> +<translation id="966588271015727539">Bluetooth-os Braille-kijelző választása</translation> <translation id="967398046773905967">Egyetlen webhely sem férhet hozzá a HID-eszközökhöz</translation> <translation id="967624055006145463">Tárolt adatok</translation> <translation id="96774243435178359">Kezelt nyomtatók</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index 13615ab..0a7c0113 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -2723,6 +2723,7 @@ <translation id="3336855445806447827">Չգիտեմ</translation> <translation id="3337568642696914359">Թույլ չտալ կայքերին մշակել հաղորդակարգեր</translation> <translation id="3340620525920140773">Ներբեռնումն ավարտվեց՝ <ph name="FILE_NAME" />:</translation> +<translation id="3340978935015468852">կարգավորումներում</translation> <translation id="3341699307020049241">PIN կոդը սխալ է: Դուք ունեք ևս <ph name="RETRIES" /> փորձ:</translation> <translation id="3341703758641437857">Թույլատրել ֆայլերի բացումը հղումներով</translation> <translation id="3342361181740736773">«<ph name="TRIGGERING_EXTENSION_NAME" />» ծրագիրը փորձում է հեռացնել այս ընդլայնումը։</translation> @@ -4095,6 +4096,7 @@ <translation id="4545759655004063573">Հնարավոր չէ պահել ոչ բավարար թույլտվությունների պատճառով: Պահեք մեկ այլ տեղադրությունում:</translation> <translation id="4546308221697447294">Համացանցում ավելի արագ շրջեք Google Chrome-ի օգնությամբ</translation> <translation id="4546345569117159016">«Աջ» կոճակ</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" />-ն ուզում է օգտագործել այս ընդլայնումը՝</translation> <translation id="4546692474302123343">Google Օգնականի ձայնային ներածում</translation> <translation id="4547659257713117923">Այլ սարքերից ներդիրներ չկան</translation> <translation id="4547672827276975204">Ավտոմատ որոշում</translation> @@ -5577,6 +5579,7 @@ <translation id="5904614460720589786">Կազմաձևման խնդրի պատճառով չհաջողվեց կարգավորել <ph name="APP_NAME" /> հավելվածը։ Դիմեք ձեր ադմինիստրատորին։ Սխալի կոդը՝ <ph name="ERROR_CODE" />։</translation> <translation id="5906655207909574370">Գրեթե պատրաստ է: Վերագործարկեք սարքը` թարմացումն ավարտելու համար:</translation> <translation id="5906732635754427568">Այս հավելվածին առնչվող տվյալները կհեռացվեն այս սարքից:</translation> +<translation id="5906974869830879618">Մուտքագրեք PIN կոդը</translation> <translation id="5908474332780919512">Գործարկել հավելվածը մուտք գործելիս</translation> <translation id="5908695239556627796">Մկնիկով ոլորման արագությունը</translation> <translation id="5909379458939060601">Ջնջե՞լ այս պրոֆիլը և այցելությունների պատմությունը</translation> @@ -6965,6 +6968,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> հավելվածն օգտագործում է ձեր խոսափողը</translation> <translation id="7141105143012495934">Մուտքը չհաջողվեց, քանի որ ձեր հաշվի տվյալները չհաջողվեց առբերել: Կապվեք ադմինիստրատորի հետ կամ նորից փորձեք:</translation> <translation id="7141844554192012199">Ստուգում</translation> +<translation id="7143207342074048698">Միացում</translation> <translation id="7144878232160441200">Նորից փորձել</translation> <translation id="7148426638542880639">Հնարավոր է՝ կայքերը չաշխատեն պատշաճ կերպով։ Ընտրեք այս տարբերակը, եթե չեք ուզում սարքում թողնել տեղեկություններ ձեր այցելած կայքերի մասին։</translation> <translation id="7149839598364933473">Տեղադրել <ph name="DEVICE_OS" />-ն այս սարքում</translation> @@ -9366,6 +9370,7 @@ <translation id="964790508619473209">Էկրանի դիրքը</translation> <translation id="965211523698323809">Ուղարկել և ստանալ SMS-ներ <ph name="DEVICE_TYPE" />սարքում <ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation> <translation id="96535553604365597">Հաղորդել Google Cast-ի հետ կապված խնդրի մասին</translation> +<translation id="966588271015727539">Ընտրեք Bluetooth-ի միջոցով միացվող բրայլյան էկրան</translation> <translation id="967398046773905967">Արգելափակել HID սարքերի հասանելիությունը բոլոր կայքերի համար։</translation> <translation id="967624055006145463">Պահված տվյալներ</translation> <translation id="96774243435178359">Կառավարվող տպիչներ</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index 0f2a63ce..db08ae8 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -1667,7 +1667,7 @@ <translation id="2365507699358342471">Situs ini dapat melihat teks dan gambar yang disalin ke papan klip.</translation> <translation id="2367972762794486313">Tampilkan aplikasi</translation> <translation id="2369058545741334020">Buka dalam mode baca</translation> -<translation id="236939127352773362">Saat perangkat berbagi di sekitar</translation> +<translation id="236939127352773362">Saat perangkat berbagi langsung</translation> <translation id="2371076942591664043">Buka setelah &selesai</translation> <translation id="2373666622366160481">Paskan dengan kertas</translation> <translation id="2375406435414127095">Hubungkan ke ponsel Anda</translation> @@ -2165,6 +2165,7 @@ <translation id="2804043232879091219">Browser alternatif tidak dapat dibuka</translation> <translation id="2804667941345577550">Anda akan logout dari situs ini, termasuk di tab yang terbuka</translation> <translation id="2804680522274557040">Kamera dinonaktifkan</translation> +<translation id="2804742109948581745">Berdampingan</translation> <translation id="2805539617243680210">Anda sudah siap.</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Aplikasi</translation> @@ -2736,6 +2737,7 @@ <translation id="3336855445806447827">Tidak yakin</translation> <translation id="3337568642696914359">Jangan izinkan situs menangani protokol</translation> <translation id="3340620525920140773">Download selesai: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">setelan</translation> <translation id="3341699307020049241">PIN salah. Anda memiliki <ph name="RETRIES" /> kesempatan lagi.</translation> <translation id="3341703758641437857">Izinkan akses ke URL file</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ingin menghapus ekstensi ini.</translation> @@ -4658,6 +4660,7 @@ <translation id="5056950756634735043">Menghubungkan ke penampung</translation> <translation id="5057110919553308744">Saat Anda mengklik ekstensi</translation> <translation id="5059241099014281248">Batasi login</translation> +<translation id="5059429103770496207">Gaya tampilan</translation> <translation id="5059526285558225588">Pilih hal yang akan dibagikan</translation> <translation id="5060332552815861872">Ada 1 printer yang tersedia untuk disimpan.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Folder ini berisi bookmark. Yakin ingin menghapusnya?}other{Folder ini berisi # bookmark. Yakin ingin menghapusnya?}}</translation> @@ -5591,6 +5594,7 @@ <translation id="5904614460720589786">Tidak dapat menyiapkan <ph name="APP_NAME" /> karena ada masalah konfigurasi. Harap hubungi administrator Anda. Kode error: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Hampir selesai diperbarui! Mulai ulang perangkat untuk menyelesaikan pembaruan.</translation> <translation id="5906732635754427568">Data yang dikaitkan dengan aplikasi ini akan dihapus dari perangkat ini.</translation> +<translation id="5906974869830879618">Harap masukkan pin</translation> <translation id="5908474332780919512">Mulai Aplikasi Saat Login</translation> <translation id="5908695239556627796">Kecepatan scroll mouse</translation> <translation id="5909379458939060601">Hapus profil dan data penjelajahan ini?</translation> @@ -6978,6 +6982,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> sedang menggunakan mikrofon Anda</translation> <translation id="7141105143012495934">Proses masuk gagal karena detail akun Anda tidak dapat diambil. Hubungi administrator Anda atau coba lagi.</translation> <translation id="7141844554192012199">Pemeriksaan</translation> +<translation id="7143207342074048698">Menghubungkan</translation> <translation id="7144878232160441200">Coba lagi</translation> <translation id="7148426638542880639">Situs mungkin tidak berfungsi seperti yang Anda harapkan. Pilih opsi ini jika Anda tidak ingin meninggalkan informasi di perangkat tentang situs yang dibuka.</translation> <translation id="7149839598364933473">Ubah perangkat ini menjadi perangkat <ph name="DEVICE_OS" />.</translation> @@ -9381,6 +9386,7 @@ <translation id="964790508619473209">Pengaturan layar</translation> <translation id="965211523698323809">Kirim dan terima SMS dari <ph name="DEVICE_TYPE" /> Anda. <ph name="LINK_BEGIN" />Pelajari lebih lanjut<ph name="LINK_END" /></translation> <translation id="96535553604365597">Laporkan masalah terkait Google Cast</translation> +<translation id="966588271015727539">Pilih penampil braille bluetooth</translation> <translation id="967398046773905967">Jangan izinkan situs apa pun mengakses perangkat HID</translation> <translation id="967624055006145463">Data disimpan</translation> <translation id="96774243435178359">Printer terkelola</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index c83bde4..dcf27258 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -2166,6 +2166,7 @@ <translation id="2804043232879091219">Ekki var hægt að opna hinn vafrann</translation> <translation id="2804667941345577550">Þú verður skráð(ur) út af þessu vefsvæði, þar á meðal opnum flipum</translation> <translation id="2804680522274557040">Slökkt á myndavél</translation> +<translation id="2804742109948581745">Hlið við hlið</translation> <translation id="2805539617243680210">Allt til reiðu!</translation> <translation id="2805646850212350655">Dulkóðunarskráakerfi Microsoft</translation> <translation id="2805756323405976993">Forrit</translation> @@ -2737,6 +2738,7 @@ <translation id="3336855445806447827">Ekki viss</translation> <translation id="3337568642696914359">Ekki leyfa vefsvæðum að sjá um samskiptareglur</translation> <translation id="3340620525920140773">Niðurhali lokið: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">stillingar</translation> <translation id="3341699307020049241">Rangt PIN-númer. Þú átt <ph name="RETRIES" /> tilraunir eftir.</translation> <translation id="3341703758641437857">Veita aðgang að vefslóðum skráa</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“ vill fjarlægja þessa viðbót.</translation> @@ -4659,6 +4661,7 @@ <translation id="5056950756634735043">Tengist geyminum</translation> <translation id="5057110919553308744">Þegar þú smellir á viðbótina</translation> <translation id="5059241099014281248">Takmarka innskráningu</translation> +<translation id="5059429103770496207">Birtingarstíll</translation> <translation id="5059526285558225588">Veldu hverju þú deilir</translation> <translation id="5060332552815861872">Einn prentari er tiltækur til að vista.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Þessi mappa inniheldur bókamerki. Ertu viss um að þú viljir eyða henni?}one{Þessi mappa inniheldur # bókamerki. Ertu viss um að þú viljir eyða henni?}other{Þessi mappa inniheldur # bókamerki. Ertu viss um að þú viljir eyða henni?}}</translation> @@ -4968,6 +4971,7 @@ <translation id="5338503421962489998">Staðbundin vistun</translation> <translation id="5339031667684712858">Vefsvæði sem þú fjarlægðir</translation> <translation id="5340638867532133571">Leyfa vefsvæðum að setja upp greiðslumiðlara (ráðlagt)</translation> +<translation id="5340787663756381836">&Finna og breyta</translation> <translation id="5341793073192892252">Eftirfarandi fótspor voru útilokuð (fótspor þriðja aðila eru útilokuð án undantekninga)</translation> <translation id="5342091991439452114">PIN-númerið má ekki vera styttra en <ph name="MINIMUM" /> tölustafir</translation> <translation id="5344036115151554031">Endurheimtir Linux</translation> @@ -5591,6 +5595,7 @@ <translation id="5904614460720589786">Ekki tókst að setja <ph name="APP_NAME" /> upp vegna stillingarvandamáls. Hafðu samband við kerfisstjórann. Villukóði: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Uppfærslan er næstum tilbúin! Endurræstu tækið til að ljúka uppfærslunni.</translation> <translation id="5906732635754427568">Gögn sem tengjast þessu forriti verða fjarlægð úr tækinu.</translation> +<translation id="5906974869830879618">Sláðu inn PIN-númer</translation> <translation id="5908474332780919512">Ræsa forrit þegar þú skráir þig inn</translation> <translation id="5908695239556627796">Flettihraði músar</translation> <translation id="5909379458939060601">Eyða þessum prófíl og vefskoðunargögnum?</translation> @@ -6980,6 +6985,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> er að nota hljóðnemann</translation> <translation id="7141105143012495934">Innskráning mistókst vegna þess að ekki tókst að sækja reikningsupplýsingar. Hafðu samband við kerfisstjóra eða reyndu aftur.</translation> <translation id="7141844554192012199">Yfirferð</translation> +<translation id="7143207342074048698">Tengist</translation> <translation id="7144878232160441200">Reyna aftur</translation> <translation id="7148426638542880639">Óvíst er að vefsvæði virki líkt og búist er við. Veldu þennan valkost ef þú vilt ekki að upplýsingar um vefsvæði sem þú skoðar vistist í tækinu</translation> <translation id="7149839598364933473">Breyta þessu tæki í <ph name="DEVICE_OS" /> tæki.</translation> @@ -9362,6 +9368,7 @@ <translation id="939401694733344652">Þessir reikningar eru ekki notaðir með Android forritum eins og er. Ef þú velur reikning til að nota með þessu Android forriti er einnig hægt að nota reikninginn með öðrum Android forritum. Þú getur breytt aðgangi Android forrita í <ph name="LINK_BEGIN" />Stillingar > Reikningar<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Sláðu inn aðgangsorð</translation> <translation id="939736085109172342">Ný mappa</translation> +<translation id="940212040923880623">&Finna og breyta</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> deilir flipa og hljóði í Chrome.</translation> <translation id="944799160843436808">Vandamál kom upp við uppsetningu Steam í Chromebook</translation> <translation id="945522503751344254">Senda ábendingu</translation> @@ -9383,6 +9390,7 @@ <translation id="964790508619473209">Uppsetning skjáa</translation> <translation id="965211523698323809">Sendu og taktu á móti SMS-skilaboðum úr <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation> <translation id="96535553604365597">Tilkynna vandamál í Google Cast</translation> +<translation id="966588271015727539">Velja blindraletursskjá með Bluetooth-tengingu</translation> <translation id="967398046773905967">Ekki veita neinum vefsvæðum aðgang að HID-tækjum</translation> <translation id="967624055006145463">Vistuð gögn</translation> <translation id="96774243435178359">Prentarar sem er stjórnað</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index 22d1665..235ad51 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Sono consigliati almeno <ph name="INSTALL_SIZE" /> di spazio libero per Linux. Per aumentare lo spazio disponibile, elimina i file dal dispositivo.</translation> <translation id="1038643060055067718">Righe:</translation> <translation id="1039337018183941703">File non valido o danneggiato</translation> +<translation id="1040761927998636252">Preferito senza nome per <ph name="URL" /></translation> <translation id="1041175011127912238">Questa pagina non risponde</translation> <translation id="1041263367839475438">Dispositivi disponibili</translation> <translation id="1042174272890264476">Sul computer è integrata anche la libreria RLZ di <ph name="SHORT_PRODUCT_NAME" />. RLZ assegna un tag non univoco che non consente l'identificazione personale per valutare le ricerche e l'utilizzo di <ph name="SHORT_PRODUCT_NAME" /> promosso da una determinata campagna promozionale. Talvolta queste etichette vengono visualizzate in query della Ricerca Google in <ph name="PRODUCT_NAME" />.</translation> @@ -117,6 +118,7 @@ <translation id="1090541560108055381">Prima di eseguire l'accoppiamento, assicurati che questo codice sia lo stesso su entrambi i dispositivi</translation> <translation id="1091767800771861448">Premi ESC per saltare (solo build non ufficiali).</translation> <translation id="1093457606523402488">Reti visibili:</translation> +<translation id="1094219634413363886">Vedrai una notifica se viene avviata la registrazione su questo dispositivo gestito</translation> <translation id="1095761715416917775">Assicurati di poter accedere sempre ai dati sincronizzati</translation> <translation id="1095879482467973146">Gestore delle password di Google sul web</translation> <translation id="109647177154844434">La disinstallazione di Parallels Desktop comporterà l'eliminazione dell'immagine di Windows, inclusi dati, applicazioni e impostazioni associati. Vuoi continuare?</translation> @@ -2721,6 +2723,7 @@ <translation id="3336855445806447827">Non so</translation> <translation id="3337568642696914359">Non consentire ai siti di gestire protocolli</translation> <translation id="3340620525920140773">Download completato: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">impostazioni</translation> <translation id="3341699307020049241">PIN errato. Hai ancora a disposizione <ph name="RETRIES" /> tentativi.</translation> <translation id="3341703758641437857">Consenti l'accesso agli URL dei file</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" vorrebbe rimuovere questa estensione.</translation> @@ -3122,6 +3125,7 @@ <translation id="369489984217678710">Password e altri dati di accesso</translation> <translation id="369522892592566391">{NUM_FILES,plural, =0{Controlli di sicurezza effettuati. I tuoi dati verranno caricati.}=1{Controlli di sicurezza effettuati. Il tuo file verrà caricato.}other{Controlli di sicurezza effettuati. I tuoi file verranno caricati.}}</translation> <translation id="3696817060563289264">File di riconoscimento del testo scaricati</translation> +<translation id="3697716475445175867">ultimi aperti</translation> <translation id="3698471669415859717">Revisione completata</translation> <translation id="3698825735945432002">Tipo di filtro</translation> <translation id="3699624789011381381">Indirizzo email</translation> @@ -3850,6 +3854,7 @@ <translation id="4340125850502689798">Nome utente non valido</translation> <translation id="4340515029017875942"><ph name="ORIGIN" /> vuole comunicare con l'app "<ph name="EXTENSION_NAME" />"</translation> <translation id="4340799661701629185">Non consentire ai siti di inviare notifiche</translation> +<translation id="4341280816303414009">Lo schermo potrebbe essere registrato</translation> <translation id="4341577178275615435">Per attivare o disattivare la navigazione con cursore, utilizza la scorciatoia F7</translation> <translation id="4341905082470253054">Verifica dello stato TPM in corso…</translation> <translation id="434198521554309404">Veloce. Sicuro. Semplice.</translation> @@ -4093,6 +4098,7 @@ <translation id="4545759655004063573">Impossibile salvare a causa dell'insufficienza di autorizzazioni. Salva in un'altra posizione.</translation> <translation id="4546308221697447294">Naviga velocemente con Google Chrome</translation> <translation id="4546345569117159016">Tasto destro</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> vuole utilizzare questa estensione:</translation> <translation id="4546692474302123343">Input vocale dell'Assistente Google</translation> <translation id="4547659257713117923">Nessuna scheda di altri dispositivi</translation> <translation id="4547672827276975204">Imposta automaticamente</translation> @@ -5572,6 +5578,7 @@ <translation id="5904614460720589786">Impossibile installare <ph name="APP_NAME" /> a causa di un problema di configurazione. Contatta l'amministratore. Codice di errore: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Aggiornamento quasi completato. Riavvia il dispositivo per terminare l'aggiornamento.</translation> <translation id="5906732635754427568">I dati associati a questa app verranno rimossi dal dispositivo.</translation> +<translation id="5906974869830879618">Inserisci un PIN</translation> <translation id="5908474332780919512">Avvia app all'accesso</translation> <translation id="5908695239556627796">Velocità di scorrimento del mouse</translation> <translation id="5909379458939060601">Vuoi eliminare questo profilo e i dati di navigazione?</translation> @@ -5667,6 +5674,7 @@ <translation id="5979421442488174909">&Traduci in <ph name="LANGUAGE" /></translation> <translation id="5979469435153841984">Per aggiungere una pagina ai preferiti, fai clic sulla stella nella barra degli indirizzi</translation> <translation id="5981362776161841923">Per consentire un'estensione, cambia l'impostazione predefinita che segue.</translation> +<translation id="5982578203375898585">Mostra i download al termine dell'operazione</translation> <translation id="5984222099446776634">Visitati di recente</translation> <translation id="5985458664595100876">Formato dell'URL non valido. I formati supportati sono \\server\share e smb://server/share.</translation> <translation id="598810097218913399">Rimuovi assegnazione</translation> @@ -6343,6 +6351,7 @@ <translation id="6596816719288285829">Indirizzo IP</translation> <translation id="6597017209724497268">Esempi</translation> <translation id="6597331566371766302">Le seguenti estensioni sono state bloccate dall'amministratore:</translation> +<translation id="659894938503552850">più recenti</translation> <translation id="6601262427770154296">Gestisci i dizionari utente</translation> <translation id="6601612474695404578">Alcuni siti usano cookie di terze parti per caricare le proprie pagine. Se un sito non funziona, puoi provare a consentire i cookie.</translation> <translation id="6602937173026466876">Accedi alle stampanti</translation> @@ -6958,6 +6967,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> sta utilizzando il microfono</translation> <translation id="7141105143012495934">Accesso non riuscito perché non è stato possibile recuperare i dati dell'account. Contatta l'amministratore o riprova.</translation> <translation id="7141844554192012199">Controllo</translation> +<translation id="7143207342074048698">Connessione</translation> <translation id="7144878232160441200">Riprova</translation> <translation id="7148426638542880639">I siti potrebbero non funzionare come previsto. Scegli questa opzione se non vuoi lasciare sul dispositivo informazioni sui siti che visiti.</translation> <translation id="7149839598364933473">Converti questo dispositivo in un dispositivo <ph name="DEVICE_OS" />.</translation> @@ -8125,6 +8135,7 @@ <translation id="8161293209665121583">Modalità Reader per le pagine web</translation> <translation id="8161604891089629425">Carattere contorno</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Sposta scheda in una nuova finestra}other{Sposta schede in una nuova finestra}}</translation> +<translation id="8163708146810922598">meno recenti</translation> <translation id="8165997195302308593">Port forwarding su Crostini</translation> <translation id="816704878106051517">{COUNT,plural, =1{un numero di telefono}other{# numeri di telefono}}</translation> <translation id="8168071266284693455">I preferiti, le password, la cronologia e altri dati vengono sincronizzati su tutti i tuoi dispositivi</translation> @@ -8639,6 +8650,7 @@ <translation id="8637688295594795546">Aggiornamento del sistema disponibile. Preparazione per il download in corso…</translation> <translation id="8639047128869322042">Controllo della presenza di software dannoso...</translation> <translation id="8639635302972078117">Invia dati diagnostici e sull'utilizzo. Attualmente, questo dispositivo invia a Google dati diagnostici e sull'utilizzo delle app e del dispositivo. Non verranno utilizzati per identificare tuo figlio e contribuiranno alla stabilità delle app e del sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, come ad esempio agli sviluppatori Android. Se l'impostazione Attività web e app aggiuntiva è attiva per tuo figlio, questi dati potrebbero essere salvati nel suo Account Google.</translation> +<translation id="8640575194957831802">Ultimi aperti</translation> <translation id="8642900771896232685">2 secondi</translation> <translation id="8642947597466641025">Ingrandisci le dimensioni del testo</translation> <translation id="8643403533759285912">Elimina gruppo</translation> @@ -9362,6 +9374,7 @@ <translation id="964790508619473209">Disposizione dello schermo</translation> <translation id="965211523698323809">Invia e ricevi SMS da <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation> <translation id="96535553604365597">Segnala un problema con Google Cast</translation> +<translation id="966588271015727539">Seleziona un display braille Bluetooth</translation> <translation id="967398046773905967">Non consentire ai siti di accedere ai dispositivi HID</translation> <translation id="967624055006145463">Dati memorizzati</translation> <translation id="96774243435178359">Stampanti gestite</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 34aea63..f014c3c 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">מומלץ ששטח האחסון הפנוי יהיה <ph name="INSTALL_SIZE" /> לפחות כדי להשתמש ב-Linux. כדי לפנות שטח אחסון, יש למחוק קבצים מהמכשיר.</translation> <translation id="1038643060055067718">שורות:</translation> <translation id="1039337018183941703">הקובץ לא חוקי, או שהוא פגום</translation> +<translation id="1040761927998636252">סימנייה של <ph name="URL" /> ללא שם</translation> <translation id="1041175011127912238">הדף לא מגיב</translation> <translation id="1041263367839475438">מכשירים זמינים</translation> <translation id="1042174272890264476">המחשב שלך מגיע גם עם ספריית ה-RLZ המובנה של <ph name="SHORT_PRODUCT_NAME" />. RLZ מקצה תג שאינו ייחודי ואינו ניתן לזיהוי על מנת למדוד את החיפוש ואת השימוש ב-<ph name="SHORT_PRODUCT_NAME" /> המונעים על ידי קמפיין ספציפי לקידום מכירות. התוויות האלה מופיעות לעתים בשאילתות החיפוש של Google ב-<ph name="PRODUCT_NAME" />.</translation> @@ -2165,6 +2166,7 @@ <translation id="2804043232879091219">לא ניתן לפתוח את הדפדפן החלופי</translation> <translation id="2804667941345577550">המערכת תוציא אותך מהאתר הזה, כולל בכרטיסיות הפתוחות</translation> <translation id="2804680522274557040">המצלמה מושבתת</translation> +<translation id="2804742109948581745">זה לצד זה</translation> <translation id="2805539617243680210">הכול מוכן!</translation> <translation id="2805646850212350655">מערכת קבצים מצפינה של Microsoft</translation> <translation id="2805756323405976993">אפליקציות</translation> @@ -2736,6 +2738,7 @@ <translation id="3336855445806447827">לא בטוח</translation> <translation id="3337568642696914359">לא לאפשר לאתרים לטפל בפרוטוקולים</translation> <translation id="3340620525920140773">ההורדה הושלמה: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">הגדרות</translation> <translation id="3341699307020049241">קוד אימות שגוי. נשארו לך עוד <ph name="RETRIES" /> ניסיונות.</translation> <translation id="3341703758641437857">התרת גישה לכתובות אתרים של קבצים</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" רוצה להסיר את התוסף.</translation> @@ -4658,6 +4661,7 @@ <translation id="5056950756634735043">מתבצעת התחברות למאגר</translation> <translation id="5057110919553308744">בלחיצה על התוסף</translation> <translation id="5059241099014281248">הגבלת הכניסה</translation> +<translation id="5059429103770496207">סגנון התצוגה</translation> <translation id="5059526285558225588">בחירת הפרטים לשיתוף</translation> <translation id="5060332552815861872">יש מדפסת אחת זמינה לשמירה.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{תיקייה זו מכילה סימנייה. ברצונך באמת למחוק אותה?}one{תיקייה זו מכילה # סימניות. ברצונך באמת למחוק אותה?}two{תיקייה זו מכילה שתי סימניות. ברצונך באמת למחוק אותה?}other{תיקייה זו מכילה # סימניות. ברצונך באמת למחוק אותה?}}</translation> @@ -5591,6 +5595,7 @@ <translation id="5904614460720589786">לא ניתן להתקין את האפליקציה <ph name="APP_NAME" /> עקב בעיה בהגדרות. יש לפנות למנהל המערכת. קוד שגיאה: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">העדכון כמעט הושלם! צריך להפעיל מחדש את המכשיר כדי לסיים את העדכון.</translation> <translation id="5906732635754427568">המערכת תסיר מהמכשיר הזה נתונים המשויכים לאפליקציה הזו.</translation> +<translation id="5906974869830879618">יש להזין קוד אימות</translation> <translation id="5908474332780919512">הפעלת האפליקציה בזמן הכניסה</translation> <translation id="5908695239556627796">מהירות גלילת העכבר</translation> <translation id="5909379458939060601">למחוק את הפרופיל הזה ואת נתוני הגלישה שלו?</translation> @@ -6982,6 +6987,7 @@ <translation id="7139627972753429585">המיקרופון בשימוש על ידי <ph name="APP_NAME" /></translation> <translation id="7141105143012495934">הכניסה נכשלה מפני שלא ניתן היה לאחזר את פרטי החשבון. יש ליצור קשר עם מנהל המערכת או לנסות שוב.</translation> <translation id="7141844554192012199">בדיקה</translation> +<translation id="7143207342074048698">מתבצע חיבור</translation> <translation id="7144878232160441200">יש לנסות שוב</translation> <translation id="7148426638542880639">יכול להיות שאתרים לא יפעלו כצפוי. יש לבחור באפשרות הזו אם לא רוצים שיישמר במכשיר מידע על האתרים שמבקרים בהם.</translation> <translation id="7149839598364933473">אפשר להמיר את המכשיר הזה למכשיר <ph name="DEVICE_OS" />.</translation> @@ -9389,6 +9395,7 @@ <translation id="964790508619473209">פריסת מסכים</translation> <translation id="965211523698323809">אפשר לשלוח ולקבל הודעות טקסט דרך ה-<ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation> <translation id="96535553604365597">דיווח על בעיה ב-Google Cast</translation> +<translation id="966588271015727539">בחירת צג ברייל תואם Bluetooth</translation> <translation id="967398046773905967">לאף אתר אין גישה להתקני HID</translation> <translation id="967624055006145463">נפח הנתונים</translation> <translation id="96774243435178359">מדפסות מנוהלות</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index d0f39a7..f820b63 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -2144,6 +2144,7 @@ <translation id="2804043232879091219">代替ブラウザを開けませんでした</translation> <translation id="2804667941345577550">開いているすべてのタブで、このサイトからログアウトします</translation> <translation id="2804680522274557040">カメラがオフになっています</translation> +<translation id="2804742109948581745">横並び</translation> <translation id="2805539617243680210">これで準備完了です。</translation> <translation id="2805646850212350655">Microsoft 暗号化ファイル システム</translation> <translation id="2805756323405976993">アプリ</translation> @@ -2715,6 +2716,7 @@ <translation id="3336855445806447827">わからない</translation> <translation id="3337568642696914359">サイトにプロトコルの処理を許可しない</translation> <translation id="3340620525920140773"><ph name="FILE_NAME" /> のダウンロードが完了しました。</translation> +<translation id="3340978935015468852">設定</translation> <translation id="3341699307020049241">PIN が正しくありません。あと <ph name="RETRIES" /> 回試行できます。</translation> <translation id="3341703758641437857">ファイルの URL へのアクセスを許可する</translation> <translation id="3342361181740736773">「<ph name="TRIGGERING_EXTENSION_NAME" />」によってこの拡張機能が削除されます。</translation> @@ -4634,6 +4636,7 @@ <translation id="5056950756634735043">コンテナに接続しています</translation> <translation id="5057110919553308744">拡張機能をクリックしたとき</translation> <translation id="5059241099014281248">ログイン制限</translation> +<translation id="5059429103770496207">表示スタイル</translation> <translation id="5059526285558225588">共有する内容を選択</translation> <translation id="5060332552815861872">保存できるプリンタが 1 件あります。</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{このフォルダにはブックマークが含まれています。削除してもよろしいですか?}other{このフォルダには # 件のブックマークが含まれています。削除してもよろしいですか?}}</translation> @@ -5565,6 +5568,7 @@ <translation id="5904614460720589786">設定に問題があったため、<ph name="APP_NAME" /> をセットアップできませんでした。管理者にお問い合わせください。エラーコード: <ph name="ERROR_CODE" />。</translation> <translation id="5906655207909574370">デバイスを再起動して更新を完了してください。</translation> <translation id="5906732635754427568">このアプリに関連付けられているデータはこのデバイスから削除されます。</translation> +<translation id="5906974869830879618">PIN を入力してください</translation> <translation id="5908474332780919512">ログイン時にアプリを開く</translation> <translation id="5908695239556627796">マウスのスクロール速度</translation> <translation id="5909379458939060601">このプロフィールと閲覧データを削除しますか?</translation> @@ -6950,6 +6954,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> がマイクを使用しています</translation> <translation id="7141105143012495934">アカウントの詳細を取得できなかったためログインできませんでした。管理者に問い合わせるか、もう一度お試しください。</translation> <translation id="7141844554192012199">チェックアップ</translation> +<translation id="7143207342074048698">接続中</translation> <translation id="7144878232160441200">再読み込み</translation> <translation id="7148426638542880639">サイトが想定どおりに機能しない可能性があります。アクセスしたサイトに関する情報をデバイスに残したくない場合は、このオプションを選択します。</translation> <translation id="7149839598364933473">このデバイスを <ph name="DEVICE_OS" /> デバイスに変換します。</translation> @@ -9352,6 +9357,7 @@ <translation id="964790508619473209">画面の配置</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> でテキスト メッセージを送受信します。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast の問題を報告</translation> +<translation id="966588271015727539">Bluetooth 点字ディスプレイを選択してください</translation> <translation id="967398046773905967">HID デバイスへのアクセスをどのサイトにも許可しない</translation> <translation id="967624055006145463">保存データ</translation> <translation id="96774243435178359">管理対象プリンタ</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index be58e28..4db1a7f 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -2721,6 +2721,7 @@ <translation id="3336855445806447827">დარწმუნებული არ ვარ</translation> <translation id="3337568642696914359">საიტებისთვის პროტოკოლების დამუშავების აკრძალვა</translation> <translation id="3340620525920140773">ჩამოტვირთვა დასრულდა: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">პარამეტრები</translation> <translation id="3341699307020049241">PIN-კოდი არასწორია. დაგრჩათ <ph name="RETRIES" /> მცდელობა.</translation> <translation id="3341703758641437857">ფაილის URL-ებზე წვდომის დაშვება</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“-ს სურს, ამოშალოს ეს გაფართოება.</translation> @@ -5575,6 +5576,7 @@ <translation id="5904614460720589786"><ph name="APP_NAME" />-ის დაყენება ვერ მოხერხდა კონფიგურაციის პრობლემის გამო. გთხოვთ, დაუკავშირდეთ ადმინისტრატორს. შეცდომის კოდი: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">განახლება თითქმის მზად არის! დასასრულებლად, გადატვირთეთ თქვენი მოწყობილობა.</translation> <translation id="5906732635754427568">ამ აპთან დაკავშირებული მონაცემები ამ მოწყობილობიდან ამოიშლება.</translation> +<translation id="5906974869830879618">გთხოვთ, შეიყვანოთ PIN-კოდი</translation> <translation id="5908474332780919512">აპის გაშვება სისტემაში შესვლისას</translation> <translation id="5908695239556627796">მაუსით გადაადგილების სიჩქარე</translation> <translation id="5909379458939060601">გსურთ, წაშალოთ ეს პროფილი და დათვალიერების მონაცემები?</translation> @@ -6962,6 +6964,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> იყენებს თქვენს მიკროფონს</translation> <translation id="7141105143012495934">შესვლა ვერ მოხერხდა, რადგან თქვენი ანგარიშის შესახებ დეტალების მიღება შეუძლებელია. გთხოვთ, დაუკავშირდეთ ადმინისტრატორს ან სცადოთ ხელახლა.</translation> <translation id="7141844554192012199">შემოწმება</translation> +<translation id="7143207342074048698">დაკავშირება</translation> <translation id="7144878232160441200">გაიმეორეთ</translation> <translation id="7148426638542880639">საიტებმა, შესაძლოა, არ იმუშაოს მოლოდინისამებრ. აირჩიეთ ეს ვარიანტი, თუ არ გსურთ, თქვენს მოწყობილობაზე დარჩეს ინფორმაცია თქვენ მიერ მონახულებული საიტების შესახებ.</translation> <translation id="7149839598364933473">გარდაქმენით ეს მოწყობილობა <ph name="DEVICE_OS" /> მოწყობილობად.</translation> @@ -9364,6 +9367,7 @@ <translation id="964790508619473209">ეკრანის მოწყობა</translation> <translation id="965211523698323809">გაგზავნეთ და მიიღეთ ტექსტური შეტყობინებები თქვენს <ph name="DEVICE_TYPE" />-ზე. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast-ის შესახებ შეტყობინება</translation> +<translation id="966588271015727539">აირჩიეთ ბრაილის Bluetooth ეკრანი</translation> <translation id="967398046773905967">საიტებისთვის HID მოწყობილობებზე წვდომის აკრძალვა</translation> <translation id="967624055006145463">შენახული მონაცემები</translation> <translation id="96774243435178359">მართული პრინტერები</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index 5f8d98e..9c53f62 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -187,7 +187,7 @@ <translation id="1155816283571436363">Телефоныңызбен байланыс орнатылып жатыр</translation> <translation id="1158080958325422608">Бас әріппен жазу</translation> <translation id="1158238185437008462">Естеліктерді қарау</translation> -<translation id="1160842321113409343">Құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген сайттарды тізімнен автоматты түрде жойып отырамыз. Сіз қайтадан кірген сайт тізімде тағы да шығуы мүмкін. Сайттың қызығушылықтарыңызды анықтағанын қаламасаңыз, оны өшіруіңізге болады.</translation> +<translation id="1160842321113409343">Құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген сайттарды тізімнен автоматты түрде жойып отырамыз. Сіз қайтадан кірген сайт тізімде тағы да шығуы мүмкін. Сайттың қызығушылықтарыңызды анықтағанын қаламасаңыз, оны өшіруіңізге болады.</translation> <translation id="1161575384898972166">Клиент сертификатын экспорттау үшін <ph name="TOKEN_NAME" /> таңбалауышына кіріңіз.</translation> <translation id="116173250649946226">Әкімші әдепкі тақырыпты орнатты, оны өзгертуге болмайды.</translation> <translation id="1162213688509394031">Тақырып жолағын жасыру</translation> @@ -370,7 +370,7 @@ <translation id="131364520783682672">Caps Lock</translation> <translation id="1313660246522271310">Барлық сайттардан, оның ішінде ашық қойындылардан шығып кетесіз.</translation> <translation id="1313705515580255288">Бетбелгілеріңіз, журналыңыз және басқа параметрлеріңіз Google аккаунтымен синхрондалады.</translation> -<translation id="1316136264406804862">Ізделуде…</translation> +<translation id="1316136264406804862">Ізделіп жатыр…</translation> <translation id="1316248800168909509"><ph name="DEVICE" /> құрылғысына жалғанбады. Қайталап көріңіз.</translation> <translation id="1316495628809031177">Синхрондау кідіртілді</translation> <translation id="1317637799698924700">Қондыру станциясы USB Type-C портымен үйлесімді режимде жұмыс істейді.</translation> @@ -1794,7 +1794,7 @@ <translation id="2498539833203011245">Жию</translation> <translation id="2498765460639677199">Үлкен</translation> <translation id="2499747912851752301">Құпия сөздер экспортталуда...</translation> -<translation id="2500471369733289700">Құпиялылығыңызды қорғау бөгелді</translation> +<translation id="2500471369733289700">Құпиялығыңызды қорғау бөгелді</translation> <translation id="2501173422421700905">Сертификат тоқтатылды</translation> <translation id="2501278716633472235">Артқа қайту</translation> <translation id="2501797496290880632">Пернелер тіркесімін теріңіз</translation> @@ -2719,6 +2719,7 @@ <translation id="3336855445806447827">Сенімді емеспін</translation> <translation id="3337568642696914359">Сайттардың протоколдарды өңдеуіне рұқсат бермеу</translation> <translation id="3340620525920140773"><ph name="FILE_NAME" /> жүктеп алынды.</translation> +<translation id="3340978935015468852">параметрлер</translation> <translation id="3341699307020049241">PIN коды дұрыс емес. Сізде <ph name="RETRIES" /> мүмкіндік қалды.</translation> <translation id="3341703758641437857">URL мекенжайларын тіркеу рұқсатын беру</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" бұл кеңейтімді жоймақ.</translation> @@ -3142,7 +3143,7 @@ <translation id="3708295717182051206">Субтитр</translation> <translation id="3708684582558000260">Жабылған сайттардың деректерді жіберуді немесе қабылдауды аяқтауына рұқсат бермеу</translation> <translation id="3709244229496787112">Браузер жүктеу аяқталмасынан бұрын өшірілді.</translation> -<translation id="371174301504454251">Құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген сайттарды тізімнен автоматты түрде жойып отырамыз. Сіз қайтадан кірген сайт тізімде тағы да шығуы мүмкін. Сайттың қызығушылықтарыңызды анықтағанын қаламасаңыз, оны өшіруіңізге болады.</translation> +<translation id="371174301504454251">Құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген сайттарды тізімнен автоматты түрде жойып отырамыз. Сіз қайтадан кірген сайт тізімде тағы да шығуы мүмкін. Сайттың қызығушылықтарыңызды анықтағанын қаламасаңыз, оны өшіруіңізге болады.</translation> <translation id="3711931198657368127">Қою және "<ph name="URL" />" бетіне өту</translation> <translation id="3711945201266135623">Басып шығару серверінен <ph name="NUM_PRINTERS" /> принтер табылды.</translation> <translation id="3712050472459130149">Аккаунтты жаңарту қажет.</translation> @@ -3557,7 +3558,7 @@ <translation id="4047726037116394521">Негізгі экранға өту</translation> <translation id="4048384495227695211">Қалтада <ph name="FILE_NAME" /> файлын көрсету</translation> <translation id="404894744863342743">Жүктеп алынған файлды пайдаланып болғаннан кейін, осы құрылғыны пайдаланатын басқа адамдар құпия сөздеріңізді көре алмайтындай етіп жойыңыз.</translation> -<translation id="4049783682480068824">{COUNT,plural, =1{# контакт қолжетімді емес. Nearby Share функциясын пайдалану үшін оның Google аккаунтымен байланыстырылған электрондық мекенжайын контактілерге енгізіңіз.}other{# контакт қолжетімді емес. Nearby Share функциясын пайдалану үшін олардың Google аккаунттарымен байланыстырылған электрондық мекенжайларын контактілеріңізге енгізіңіз.}}</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# контакт қолжетімсіз. Nearby Share функциясын пайдалану үшін оның Google аккаунтымен байланыстырылған электрондық мекенжайын контактілерге қосыңыз.}other{# контакт қолжетімсіз. Nearby Share функциясын пайдалану үшін олардың Google аккаунттарымен байланыстырылған электрондық мекенжайларын контактілеріңізге қосыңыз.}}</translation> <translation id="4050225813016893843">Аутентификация әдісі</translation> <translation id="4050534976465737778">Екі құрылғының да құлпы ашық, бір-біріне жақын және Bluetooth функциялары қосулы екеніне көз жеткізіңіз. Егер контактілеріңізде жоқ Chromebook құрылғысымен бөлісетін болсаңыз, Nearby көрсетілу параметрінің қосулы екеніне көз жеткізіңіз. Ол үшін күй аумағын ашып, Nearby көрсетілу параметрін қосыңыз. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation> <translation id="4052120076834320548">Кішкентай</translation> @@ -4888,7 +4889,7 @@ <translation id="5283677936944177147">Жүйе құрылғының үлгісін не сериялық нөмірін анықтай алмады.</translation> <translation id="5284445933715251131">Жүктеп алуды жалғастыру</translation> <translation id="5285635972691565180"><ph name="DISPLAY_ID" /> көрсету</translation> -<translation id="5286194356314741248">Ізделуде</translation> +<translation id="5286194356314741248">Ізделіп жатыр</translation> <translation id="5287425679749926365">Аккаунттарыңыз</translation> <translation id="5288106344236929384"><ph name="DOMAIN" /> доменіндегі <ph name="USERNAME" /> үшін қосымша әрекеттер және кіру кілті опциялары</translation> <translation id="5288678174502918605">Жабық қойындыны қ&айта ашу</translation> @@ -5572,6 +5573,7 @@ <translation id="5904614460720589786">Конфигурациядағы қатеге байланысты <ph name="APP_NAME" /> орнатылмады. Әкімшіге хабарласыңыз. Қате коды: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Сәл қалды. Жаңартуды аяқтау үшін құрылғыны қайта іске қосыңыз.</translation> <translation id="5906732635754427568">Бұл қолданбамен байланыстырылған деректер бұл құрылғыдан өшіріледі.</translation> +<translation id="5906974869830879618">PIN кодын енгізіңіз</translation> <translation id="5908474332780919512">Аккаунтқа кірген кезде, қолданбаны іске қосу</translation> <translation id="5908695239556627796">Тінтуірді айналдыру жылдамдығы</translation> <translation id="5909379458939060601">Осы профиль және браузерді пайдалану деректері жойылсын ба?</translation> @@ -6958,6 +6960,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> микрофоныңызды пайдалануда.</translation> <translation id="7141105143012495934">Кірілмеді, себебі аккаунт мәліметтерін шығарып алу мүмкін емес. Әкімшіңізге хабарласыңыз немесе әрекетті қайталаңыз.</translation> <translation id="7141844554192012199">Тексеру</translation> +<translation id="7143207342074048698">Қосылып жатыр</translation> <translation id="7144878232160441200">Қайталау</translation> <translation id="7148426638542880639">Сайттар сіз күткендей жұмыс істемеуі мүмкін. Құрылғыңызда сіз кірген сайттар туралы ақпаратты қалдырғыңыз келмесе, осы опцияны таңдаңыз.</translation> <translation id="7149839598364933473">Бұл құрылғыны <ph name="DEVICE_OS" /> құрылғысына түрлендіріңіз.</translation> @@ -8937,7 +8940,7 @@ <translation id="8881020143150461183">Қайталап көріңіз. Техникалық қолдау керек болса, <ph name="CARRIER_NAME" /> операторына хабарласыңыз.</translation> <translation id="888256071122006425">Тінтуір және сенсорлық тақта параметрлері</translation> <translation id="8883273463630735858">Сенсорлық тақта жылдамдатқышын іске қосу</translation> -<translation id="8884023684057697730"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген сайттарды тізімнен автоматты түрде жойып отырамыз. Сіз қайтадан кірген сайт тізімде тағы да шығуы мүмкін. Сайттың қызығушылықтарыңызды анықтағанын қаламасаңыз, оны өшіруіңізге болады.</translation> +<translation id="8884023684057697730"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген сайттарды тізімнен автоматты түрде жойып отырамыз. Сіз қайтадан кірген сайт тізімде тағы да шығуы мүмкін. Сайттың қызығушылықтарыңызды анықтағанын қаламасаңыз, оны өшіруіңізге болады.</translation> <translation id="8884570509232205463">Құрылғы <ph name="UNLOCK_TIME" /> кезінде құлыпталады.</translation> <translation id="8888253246822647887">Қолданба, жаңа нұсқа орнатылғаннан кейін, ашылады. Бұл бірнеше минут алуы мүмкін.</translation> <translation id="8889651696183044030"><ph name="ORIGIN" /> мына файлдар мен қалталарды өңдей алады.</translation> @@ -9360,6 +9363,7 @@ <translation id="964790508619473209">Экранды реттеу</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> құрылғысына мәтіндік хабарлар жіберіңіз және одан мәтіндік хабарлар алыңыз. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast мәселесі туралы хабарлау</translation> +<translation id="966588271015727539">Bluetooth Брайль дисплейін таңдаңыз</translation> <translation id="967398046773905967">Ешқандай сайтқа HID құрылғыларын пайдалануға рұқсат етпеу</translation> <translation id="967624055006145463">Сақталған деректер</translation> <translation id="96774243435178359">Басқарылатын принтерлер</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 7ca69e7..e049f520 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -118,6 +118,7 @@ <translation id="1090541560108055381">មុនពេលផ្គូផ្គង ត្រូវប្រាកដថាលេខកូដនេះគឺដូចគ្នានៅលើឧបករណ៍ទាំងពីរ</translation> <translation id="1091767800771861448">ចុច ESCAPE ដើម្បីរំលង (លេខកំណែដែលមិនផ្លូវការតែប៉ុណ្ណោះ)។</translation> <translation id="1093457606523402488">បណ្តាញដែលអាចមើលឃើញ៖</translation> +<translation id="1094219634413363886">អ្នកនឹងឃើញការជូនដំណឹង ប្រសិនបើការថតចាប់ផ្ដើមនៅលើឧបករណ៍ដែលស្ថិតក្រោមការគ្រប់គ្រងនេះ</translation> <translation id="1095761715416917775">សូមប្រាកដថា អ្នកអាចចូលប្រើទិន្នន័យសមកាលកម្មរបស់អ្នកបានជានិច្ច</translation> <translation id="1095879482467973146">កម្មវិធីគ្រប់គ្រងពាក្យសម្ងាត់នៅលើបណ្ដាញ</translation> <translation id="109647177154844434">ការលុប Parallels Desktop នឹងលុបរូបភាព Windows របស់អ្នក។ ការលុបនេះរួមទាំងកម្មវិធី ការកំណត់ និងទិន្នន័យរបស់វាផងដែរ។ តើអ្នកប្រាកដថាចង់បន្តដែរទេ?</translation> @@ -2738,6 +2739,7 @@ <translation id="3336855445806447827">មិនប្រាកដ</translation> <translation id="3337568642696914359">មិនអនុញ្ញាតឱ្យគេហទំព័រចាត់ចែងប្រូតូកូលទេ</translation> <translation id="3340620525920140773">ការទាញយកបានបញ្ចប់៖ <ph name="FILE_NAME" /> ។</translation> +<translation id="3340978935015468852">ការកំណត់</translation> <translation id="3341699307020049241">កូដ PIN មិនត្រឹមត្រូវទេ។ អ្នកអាចបញ្ចូលបាន <ph name="RETRIES" /> ដងទៀត។</translation> <translation id="3341703758641437857">អនុញ្ញាតឲ្យចូលប្រើឯកសារ URLs</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ចង់លុបកម្មវិធីបន្ថែមនេះ។</translation> @@ -3139,6 +3141,7 @@ <translation id="369489984217678710">ពាក្យសម្ងាត់ និងទិន្នន័យចូលគណនីផ្សេងទៀត</translation> <translation id="369522892592566391">{NUM_FILES,plural, =0{ការពិនិត្យសុវត្ថិភាពរួចរាល់ហើយ។ ទិន្នន័យរបស់អ្នកនឹងត្រូវបានបង្ហោះ។}=1{ការពិនិត្យសុវត្ថិភាពរួចរាល់ហើយ។ ឯកសាររបស់អ្នកនឹងត្រូវបានបង្ហោះ។}other{ការពិនិត្យសុវត្ថិភាពរួចរាល់ហើយ។ ឯកសាររបស់អ្នកនឹងត្រូវបានបង្ហោះ។}}</translation> <translation id="3696817060563289264">បានទាញយកឯកសារសម្គាល់អក្សរ</translation> +<translation id="3697716475445175867">បានបើកចុងក្រោយ</translation> <translation id="3698471669415859717">បញ្ចប់ការពិនិត្យមើលហើយ</translation> <translation id="3698825735945432002">ប្រភេទតម្រង</translation> <translation id="3699624789011381381">អាសយដ្ឋានអ៊ីម៉ែល</translation> @@ -3867,6 +3870,7 @@ <translation id="4340125850502689798">ឈ្មោះអ្នកប្រើប្រាស់មិនត្រឹមត្រូវទេ</translation> <translation id="4340515029017875942"><ph name="ORIGIN" /> ចង់ទាក់ទងជាមួយកម្មវិធី "<ph name="EXTENSION_NAME" />"</translation> <translation id="4340799661701629185">មិនអនុញ្ញាតឱ្យគេហទំព័រផ្ញើការជូនដំណឹងទេ</translation> +<translation id="4341280816303414009">អេក្រង់របស់អ្នកប្រហែលជាត្រូវបានថត</translation> <translation id="4341577178275615435">ដើម្បីបើក ឬបិទមុខងារ caret browsing សូមប្រើផ្លូវកាត់ F7</translation> <translation id="4341905082470253054">កំពុងពិនិត្យមើលស្ថានភាព TPM...</translation> <translation id="434198521554309404">លឿន សុវត្ថិភាព ងាយស្រួលប្រើបំផុត</translation> @@ -5595,6 +5599,7 @@ <translation id="5904614460720589786">មិនអាចរៀបចំ <ph name="APP_NAME" /> បានទេ ដោយសារមានបញ្ហាក្នុងការកំណត់រចនាសម្ព័ន្ធ។ សូមទាក់ទងអ្នកគ្រប់គ្រងរបស់អ្នក។ លេខកូដបញ្ហា៖ <ph name="ERROR_CODE" />។</translation> <translation id="5906655207909574370">ការអាប់ដេតជិតបញ្ចប់ហើយ! ចាប់ផ្តើមឧបករណ៍របស់អ្នកឡើងវិញដើម្បីបញ្ចប់ការអាប់ដេត។</translation> <translation id="5906732635754427568">ទិន្នន័យដែលពាក់ព័ន្ធជាមួយកម្មវិធីនេះនឹងត្រូវបានលុបចេញពីឧបករណ៍នេះ។</translation> +<translation id="5906974869830879618">សូមបញ្ចូលលេខកូដ pin</translation> <translation id="5908474332780919512">ចាប់ផ្ដើមកម្មវិធី នៅពេលអ្នកចូល</translation> <translation id="5908695239556627796">ល្បឿនរំកិលកណ្តុរ</translation> <translation id="5909379458939060601">លុបកម្រងព័ត៌មាននេះ និងទិន្នន័យរុករកឬ?</translation> @@ -5691,6 +5696,7 @@ <translation id="5979421442488174909">បកប្រែទៅ <ph name="LANGUAGE" /></translation> <translation id="5979469435153841984">ដើម្បីចំណាំទំព័រ សូមចុចផ្កាយនៅក្នុងរបាអាសយដ្ឋាន</translation> <translation id="5981362776161841923">ដើម្បីអនុញ្ញាតកម្មវិធីបន្ថែម សូមប្ដូរការកំណត់លំនាំដើមរបស់អ្នកខាងក្រោម។</translation> +<translation id="5982578203375898585">បង្ហាញការទាញយក នៅពេលរួចរាល់</translation> <translation id="5984222099446776634">បានទៅកាន់កន្លងទៅថ្មីៗ</translation> <translation id="5985458664595100876">ទម្រង់ URL មិនត្រឹមត្រូវទេ។ ទម្រង់ដែលអាចប្រើបានគឺ \\server\share និង smb://server/share ។</translation> <translation id="598810097218913399">លុបការកំណត់គ្រាប់ចុច</translation> @@ -6367,6 +6373,7 @@ <translation id="6596816719288285829">អាសយដ្ឋាន IP</translation> <translation id="6597017209724497268">គំរូ</translation> <translation id="6597331566371766302">កម្មវិធីបន្ថែមខាងក្រោមត្រូវបានទប់ស្កាត់ដោយអ្នកគ្រប់គ្រងរបស់អ្នក៖</translation> +<translation id="659894938503552850">ថ្មីបំផុត</translation> <translation id="6601262427770154296">គ្រប់គ្រងវចនានុក្រមអ្នកប្រើប្រាស់</translation> <translation id="6601612474695404578">គេហទំព័រមួយចំនួនប្រើខូគីភាគីទីបី ដើម្បីផ្ទុកទំព័ររបស់ពួកគេ។ ប្រសិនបើគេហទំព័រមិនដំណើរការ អ្នកអាចសាកល្បងអនុញ្ញាតខូគី។</translation> <translation id="6602937173026466876">ចូលប្រើម៉ាស៊ីនបោះពុម្ពរបស់អ្នក</translation> @@ -6982,6 +6989,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> កំពុងប្រើមីក្រូហ្វូនរបស់អ្នក</translation> <translation id="7141105143012495934">បានបរាជ័យក្នុងការចូលពីព្រោះមិនអាចទាញយកព័ត៌មានលម្អិតគណនីរបស់អ្នកបានទេ។ សូមទាក់ទងអ្នកគ្រប់គ្រងរបស់អ្នក ឬព្យាយាមម្តងទៀត។</translation> <translation id="7141844554192012199">ការពិនិត្យ</translation> +<translation id="7143207342074048698">កំពុងភ្ជាប់...</translation> <translation id="7144878232160441200">ព្យាយាមម្តងទៀត</translation> <translation id="7148426638542880639">គេហទំព័រអាចមិនដំណើរការដូចដែលអ្នករំពឹងទុកទេ។ ជ្រើសរើសជម្រើសនេះ ប្រសិនបើអ្នកមិនចង់ទុកព័ត៌មាននៅលើឧបករណ៍របស់អ្នកអំពីគេហទំព័រដែលអ្នកចូលមើលទេ។</translation> <translation id="7149839598364933473">បំប្លែងឧបករណ៍នេះទៅជាឧបករណ៍ <ph name="DEVICE_OS" />។</translation> @@ -8148,6 +8156,7 @@ <translation id="8161293209665121583">មុខងារអានសម្រាប់ទំព័របណ្ដាញ</translation> <translation id="8161604891089629425">ពុម្ពអក្សរមានគ្រោង</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{ផ្លាស់ទីផ្ទាំងទៅវិនដូថ្មី}other{ផ្លាស់ទីផ្ទាំងទៅវិនដូថ្មី}}</translation> +<translation id="8163708146810922598">ចាស់បំផុត</translation> <translation id="8165997195302308593">ការបញ្ជូនច្រកបន្តពី Crostini</translation> <translation id="816704878106051517">{COUNT,plural, =1{លេខទូរសព្ទមួយខ្សែ}other{លេខទូរសព្ទ # ខ្សែ}}</translation> <translation id="8168071266284693455">ចំណាំ ពាក្យសម្ងាត់ ប្រវត្តិរបស់អ្នក និងអ្វីៗជាច្រើនទៀតត្រូវបានធ្វើសមកាលកម្មនៅលើឧបករណ៍ទាំងអស់របស់អ្នក</translation> @@ -8663,6 +8672,7 @@ <translation id="8637688295594795546">ការធ្វើបច្ចុប្បន្នភាពប្រព័ន្ធមាន។ កំពុងរៀបចំការទាញយក…</translation> <translation id="8639047128869322042">កំពុងពិនិត្យមើលកម្មវិធីគ្រោះថ្នាក់...</translation> <translation id="8639635302972078117">បញ្ជូនទិន្នន័យនៃការប្រើប្រាស់ និងការវិភាគ។ បច្ចុប្បន្ននេះ ឧបករណ៍នេះកំពុងបញ្ជូនទិន្នន័យនៃការវិភាគ ឧបករណ៍ និងការប្រើប្រាស់កម្មវិធីទៅ Google ដោយស្វ័យប្រវត្តិ។ សកម្មភាពនេះនឹងមិនត្រូវបានធ្វើឡើង ដើម្បីកំណត់អត្តសញ្ញាណកូនរបស់អ្នកនោះទេ តែការធ្វើបែបនេះនឹងជួយដល់ស្ថិរភាពកម្មវិធី និងប្រព័ន្ធ ព្រមទាំងការកែលម្អផ្សេងទៀត។ ទិន្នន័យប្រមូលបានមួយចំនួនក៏នឹងជួយដល់កម្មវិធី និងដៃគូ Google ដូចជាអ្នកអភិវឌ្ឍន៍ Android ផងដែរ។ ប្រសិនបើការកំណត់សកម្មភាពកម្មវិធី និងគេហទំព័របន្ថែមត្រូវបានបើកសម្រាប់កូនរបស់អ្នក នោះទិន្នន័យនេះអាចត្រូវបានរក្សាទុកទៅក្នុងគណនី Google របស់គាត់។</translation> +<translation id="8640575194957831802">បានបើកចុងក្រោយ</translation> <translation id="8642900771896232685">2 វិនាទី</translation> <translation id="8642947597466641025">ធ្វើឲ្យអត្ថបទធំជាងមុន</translation> <translation id="8643403533759285912">លុបក្រុម</translation> @@ -9386,6 +9396,7 @@ <translation id="964790508619473209">ការគ្រប់គ្រងអេក្រង់</translation> <translation id="965211523698323809">ផ្ញើ និងទទួលសារជាអក្សរពី <ph name="DEVICE_TYPE" /> របស់អ្នក។ <ph name="LINK_BEGIN" />ស្វែងយល់បន្ថែម<ph name="LINK_END" /></translation> <translation id="96535553604365597">រាយការណ៍អំពីបញ្ហាពាក់ព័ន្ធនឹង Google Cast</translation> +<translation id="966588271015727539">ជ្រើសរើសអក្សរប្រៃយ៍ប៊្លូធូស</translation> <translation id="967398046773905967">កុំអនុញ្ញាតឱ្យគេហទំព័រណាមួយចូលប្រើឧបករណ៍ HID</translation> <translation id="967624055006145463">ទិន្នន័យដែលបានរក្សាទុក</translation> <translation id="96774243435178359">ម៉ាស៊ីនបោះពុម្ពដែលស្ថិតក្រោមការគ្រប់គ្រង</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index d8c75e3..8064bf1 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Linux ಗಾಗಿ ಕನಿಷ್ಠ <ph name="INSTALL_SIZE" /> ಸ್ಥಳಾವಕಾಶವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. ಮುಕ್ತ ಸ್ಥಳಾವಕಾಶವನ್ನು ಹೆಚ್ಚಿಸಲು, ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿರುವ ಫೈಲ್ಗಳನ್ನು ಅಳಿಸಿ.</translation> <translation id="1038643060055067718">ಸಾಲುಗಳು:</translation> <translation id="1039337018183941703">ಅಮಾನ್ಯ ಅಥವಾ ದೋಷಯುಕ್ತ ಫೈಲ್</translation> +<translation id="1040761927998636252"><ph name="URL" /> ಗಾಗಿ ಹೆಸರಿಸಿರದ ಬುಕ್ಮಾರ್ಕ್</translation> <translation id="1041175011127912238">ಈ ಪುಟವು ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ</translation> <translation id="1041263367839475438">ಲಭ್ಯವಿರುವ ಸಾಧನಗಳು</translation> <translation id="1042174272890264476">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅಂತರ್ನಿರ್ಮಿತ <ph name="SHORT_PRODUCT_NAME" /> ನ RLZ ಲೈಬ್ರರಿಯೊಂದಿಗೆ ಸಹ ಬರುತ್ತದೆ. ಹುಡುಕಾಟಗಳನ್ನು ಅಳತೆ ಮಾಡಲು ಮತ್ತು ಒಂದು ನಿರ್ದಿಷ್ಟ ಪ್ರಚಾರದ ಶಿಬಿರದಿಂದ <ph name="SHORT_PRODUCT_NAME" /> ಬಳಕೆಯಿಂದ ಗಳಿಸಿದ ಅನನ್ಯವಲ್ಲದ, ವೈಯಕ್ತಿಕವಾಗಿ ಗುರುತಿಸದಂತಹ ಟ್ಯಾಗ್ ಅನ್ನು RLZ ಆಯೋಜಿಸುತ್ತದೆ. ಈ ಲೇಬಲ್ಗಳು ಕೆಲವು ಬಾರಿ <ph name="PRODUCT_NAME" /> ನಲ್ಲಿ Google ಹುಡುಕಾಟ ಪ್ರಶ್ನೆಗಳಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ.</translation> @@ -2158,6 +2159,7 @@ <translation id="2804043232879091219">ಪರ್ಯಾಯ ಬ್ರೌಸರ್ ಅನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation> <translation id="2804667941345577550">ತೆರೆದ ಟ್ಯಾಬ್ಗಳಲ್ಲೂ ಸೇರಿದಂತೆ, ಈ ಸೈಟ್ನಿಂದ ನಿಮ್ಮನ್ನು ಸೈನ್ ಔಟ್ ಮಾಡಲಾಗುತ್ತದೆ</translation> <translation id="2804680522274557040">ಕ್ಯಾಮರಾವನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ</translation> +<translation id="2804742109948581745">ಅಕ್ಕ ಪಕ್ಕ</translation> <translation id="2805539617243680210">ನೀವು ಸಿದ್ಧರಾಗಿರುವಿರಿ!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ಆಪ್ಸ್</translation> @@ -2381,7 +2383,7 @@ <translation id="3006881078666935414">ಯಾವುದೇ ಬಳಕೆ ಡೇಟಾ ಇಲ್ಲ</translation> <translation id="3007410324195400631">ಈ ಪುಟದ ಕುರಿತು ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ</translation> <translation id="3007771295016901659">ನಕಲಿ ಟ್ಯಾಬ್</translation> -<translation id="3008232374986381779">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ Linux ಪರಿಕರಗಳು, ಎಡಿಟರ್ಗಳು ಮತ್ತು IDE ಗಳನ್ನು ರನ್ ಮಾಡಿ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation> +<translation id="3008232374986381779">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ Linux ಟೂಲ್ಗಳು, ಎಡಿಟರ್ಗಳು ಮತ್ತು IDE ಗಳನ್ನು ರನ್ ಮಾಡಿ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation> <translation id="3008272652534848354">ಅನುಮತಿಗಳನ್ನು ಮರುಹೊಂದಿಸಿ</translation> <translation id="3008694618228964140">{NUM_DAYS,plural, =1{ಅಪ್ಡೇಟ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು, ನೀವು ಇಂದೇ ವೈ-ಫೈಗೆ ಕನೆಕ್ಟ್ ಮಾಡಬೇಕೆಂದು <ph name="MANAGER" /> ಬಯಸುತ್ತದೆ. ಅಥವಾ ಮಾಪನ ಮಾಡಲಾದ ಕನೆಕ್ಷನ್ನಿಂದ ಡೌನ್ಲೋಡ್ ಮಾಡಿ (ಶುಲ್ಕಗಳು ಅನ್ವಯವಾಗಬಹುದು).}one{ಗಡುವಿನ ಮೊದಲು ಅಪ್ಡೇಟ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು, ನೀವು ಇಂದೇ ವೈ-ಫೈಗೆ ಕನೆಕ್ಟ್ ಮಾಡಬೇಕೆಂದು <ph name="MANAGER" /> ಬಯಸುತ್ತದೆ. ಅಥವಾ ಮಾಪನ ಮಾಡಲಾದ ಕನೆಕ್ಷನ್ನಿಂದ ಡೌನ್ಲೋಡ್ ಮಾಡಿ (ಶುಲ್ಕಗಳು ಅನ್ವಯವಾಗಬಹುದು).}other{ಗಡುವಿನ ಮೊದಲು ಅಪ್ಡೇಟ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು, ನೀವು ಇಂದೇ ವೈ-ಫೈಗೆ ಕನೆಕ್ಟ್ ಮಾಡಬೇಕೆಂದು <ph name="MANAGER" /> ಬಯಸುತ್ತದೆ. ಅಥವಾ ಮಾಪನ ಮಾಡಲಾದ ಕನೆಕ್ಷನ್ನಿಂದ ಡೌನ್ಲೋಡ್ ಮಾಡಿ (ಶುಲ್ಕಗಳು ಅನ್ವಯವಾಗಬಹುದು).}}</translation> <translation id="3009178788565917040">ಔಟ್ಪುಟ್</translation> @@ -2729,6 +2731,7 @@ <translation id="3336855445806447827">ಖಚಿತವಿಲ್ಲ</translation> <translation id="3337568642696914359">ಪ್ರೊಟೊಕಾಲ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸೈಟ್ಗಳಿಗೆ ಅನುಮತಿಸಬೇಡಿ</translation> <translation id="3340620525920140773">ಡೌನ್ಲೋಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="3341699307020049241">ಪಿನ್ ತಪ್ಪಾಗಿದೆ. ನೀವು ಇನ್ನೂ <ph name="RETRIES" /> ಬಾರಿ ಪ್ರಯತ್ನಿಸಬಹುದು.</translation> <translation id="3341703758641437857">URL ಗಳನ್ನು ಫೈಲ್ಗಳಿಗೆ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸಿ</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ಈ ವಿಸ್ತರಣೆಯನ್ನು ತೆಗೆದುಹಾಕಲು ಬಯಸುತ್ತದೆ.</translation> @@ -4652,6 +4655,7 @@ <translation id="5056950756634735043">ಕಂಟೇನರ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation> <translation id="5057110919553308744">ನೀವು ವಿಸ್ತರಣೆಯನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ</translation> <translation id="5059241099014281248">ಸೈನ್-ಇನ್ ನಿಂರ್ಬಂಧಿಸಿ</translation> +<translation id="5059429103770496207">ಡಿಸ್ಪ್ಲೇ ಶೈಲಿ</translation> <translation id="5059526285558225588">ಏನನ್ನು ಹಂಚಿಕೊಳ್ಳಬೇಕು ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="5060332552815861872">ಉಳಿಸಲು 1 ಪ್ರಿಂಟರ್ ಲಭ್ಯವಿದೆ.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{ಈ ಫೋಲ್ಡರ್ ಬುಕ್ಮಾರ್ಕ್ ಒಳಗೊಂಡಿದೆ. ಅದನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?}one{ಈ ಫೋಲ್ಡರ್ # ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಅದನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?}other{ಈ ಫೋಲ್ಡರ್ # ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಅದನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?}}</translation> @@ -5586,6 +5590,7 @@ <translation id="5904614460720589786">ಕಾನ್ಫಿಗರೇಶನ್ ಸಮಸ್ಯೆಯಿಂದಾಗಿ, <ph name="APP_NAME" /> ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ. ದೋಷ ಕೋಡ್: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">ಬಹುಪಾಲು ನವೀಕೃತವಾಗಿದೆ! ಅಪ್ಡೇಟ್ ಮಾಡುವುದನ್ನು ಮುಗಿಸಲು ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ.</translation> <translation id="5906732635754427568">ಈ ಅಪ್ಲಿಕೇಶನ್ ಜೊತೆಗೆ ಸಂಯೋಜಿತವಾಗಿರುವ ಡೇಟಾವನ್ನು ಈ ಸಾಧನದಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ.</translation> +<translation id="5906974869830879618">ದಯವಿಟ್ಟು ಪಿನ್ ಒಂದನ್ನು ನಮೂದಿಸಿ</translation> <translation id="5908474332780919512">ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಿದಾಗ ಆ್ಯಪ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ</translation> <translation id="5908695239556627796">ಮೌಸ್ ಸ್ಕ್ರಾಲ್ ವೇಗ</translation> <translation id="5909379458939060601">ಈ ಪ್ರೊಫೈಲ್ ಮತ್ತು ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ಅಳಿಸಬೇಕೆ?</translation> @@ -6976,6 +6981,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> ನಿಮ್ಮ ಮೈಕ್ರೊಫೋನ್ ಅನ್ನು ಬಳಸುತ್ತಿದೆ</translation> <translation id="7141105143012495934">ನಿಮ್ಮ ಖಾತೆ ವಿವರಗಳನ್ನು ಹಿಂಪಡೆಯಲು ಸಾಧ್ಯವಾಗದಿರುವುದರಿಂದ ಸೈನ್ ಇನ್ ವಿಫಲವಾಗಿದೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ ಅಥವಾ ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="7141844554192012199">ಪರಿಶೀಲನೆ</translation> +<translation id="7143207342074048698">ಕನೆಕ್ಟ್...</translation> <translation id="7144878232160441200">ಮರುಪ್ರಯತ್ನಿಸಿ</translation> <translation id="7148426638542880639">ನೀವು ನಿರೀಕ್ಷಿಸಿದಂತೆ ಸೈಟ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು. ನೀವು ಭೇಟಿ ನೀಡುವ ಸೈಟ್ಗಳ ಕುರಿತ ಮಾಹಿತಿಯನ್ನು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಉಳಿಸಲು ನೀವು ಬಯಸದಿದ್ದರೆ ಈ ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿ.</translation> <translation id="7149839598364933473">ಈ ಸಾಧನವನ್ನು <ph name="DEVICE_OS" /> ಸಾಧನವನ್ನಾಗಿ ಪರಿವರ್ತಿಸಿ.</translation> @@ -9377,6 +9383,7 @@ <translation id="964790508619473209">ಸ್ಕ್ರೀನ್ ಜೋಡಣೆ</translation> <translation id="965211523698323809">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಿಂದ ಪಠ್ಯ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಿ ಮತ್ತು ಸ್ವೀಕರಿಸಿ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast ನಲ್ಲಿನ ಸಮಸ್ಯೆಯನ್ನು ವರದಿ ಮಾಡಿ</translation> +<translation id="966588271015727539">ಒಂದು ಬ್ಲೂಟೂತ್ ಬ್ರೈಲ್ ಡಿಸ್ಪ್ಲೇಯನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="967398046773905967">HID ಸಾಧನಗಳಿಗೆ ಪ್ರವೇಶ ಪಡೆಯಲು ಯಾವುದೇ ಸೈಟ್ಗಳಿಗೆ ಅನುಮತಿಸಬೇಡಿ</translation> <translation id="967624055006145463">ಸಂಗ್ರಹಣೆ ಮಾಡಿರುವ ಡೇಟಾ</translation> <translation id="96774243435178359">ನಿರ್ವಹಿಸಲಾದ ಪ್ರಿಂಟರ್ಗಳು</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 3d8456e..b8548d3e 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -2167,6 +2167,7 @@ <translation id="2804043232879091219">대체 브라우저를 열 수 없습니다.</translation> <translation id="2804667941345577550">열려 있는 탭을 포함하여 이 사이트에서 로그아웃됩니다.</translation> <translation id="2804680522274557040">카메라 사용 중지됨</translation> +<translation id="2804742109948581745">나란히</translation> <translation id="2805539617243680210">설정 완료</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">앱</translation> @@ -2738,6 +2739,7 @@ <translation id="3336855445806447827">잘 모르겠음</translation> <translation id="3337568642696914359">사이트에서 프로토콜을 처리하도록 허용하지 않음</translation> <translation id="3340620525920140773"><ph name="FILE_NAME" /> 다운로드 완료</translation> +<translation id="3340978935015468852">설정</translation> <translation id="3341699307020049241">잘못된 PIN입니다. 앞으로 <ph name="RETRIES" />번 더 시도할 수 있습니다.</translation> <translation id="3341703758641437857">파일 URL에 대한 액세스 허용</translation> <translation id="3342361181740736773"><ph name="TRIGGERING_EXTENSION_NAME" />에서 이 확장 프로그램을 제거하려 합니다.</translation> @@ -4658,6 +4660,7 @@ <translation id="5056950756634735043">컨테이너에 연결 중입니다.</translation> <translation id="5057110919553308744">확장 프로그램을 클릭할 경우</translation> <translation id="5059241099014281248">로그인 제한</translation> +<translation id="5059429103770496207">표시 스타일</translation> <translation id="5059526285558225588">공유할 정보 선택</translation> <translation id="5060332552815861872">저장할 수 있는 프린터가 1대 있습니다.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{폴더에 북마크가 있습니다. 삭제하시겠습니까?}other{폴더에 #개의 북마크가 있습니다. 삭제하시겠습니까?}}</translation> @@ -5591,6 +5594,7 @@ <translation id="5904614460720589786">구성 문제로 인해 <ph name="APP_NAME" /> 앱을 설정할 수 없습니다. 관리자에게 문의하세요. 오류 코드: <ph name="ERROR_CODE" /></translation> <translation id="5906655207909574370">업데이트가 거의 완료되었습니다. 업데이트를 완료하려면 기기를 다시 시작하세요.</translation> <translation id="5906732635754427568">이 앱과 관련된 데이터가 이 기기에서 삭제됩니다.</translation> +<translation id="5906974869830879618">PIN 입력</translation> <translation id="5908474332780919512">로그인 시 앱 실행</translation> <translation id="5908695239556627796">마우스 스크롤 속도</translation> <translation id="5909379458939060601">이 프로필과 인터넷 사용 기록을 삭제하시겠습니까?</translation> @@ -6978,6 +6982,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" />에서 마이크를 사용 중입니다.</translation> <translation id="7141105143012495934">계정 세부정보를 가져올 수 없어 로그인할 수 없습니다. 관리자에게 문의하거나 다시 시도해 주세요.</translation> <translation id="7141844554192012199">진단</translation> +<translation id="7143207342074048698">연결 중</translation> <translation id="7144878232160441200">다시 시도</translation> <translation id="7148426638542880639">사이트가 제대로 작동하지 않을 수 있습니다. 방문하는 사이트에 관한 정보를 기기에 저장하지 않으려면 이 옵션을 선택하세요.</translation> <translation id="7149839598364933473">이 기기를 <ph name="DEVICE_OS" /> 기기로 전환합니다</translation> @@ -9382,6 +9387,7 @@ <translation id="964790508619473209">화면 배치</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" />에서 SMS를 보내고 받으세요. <ph name="LINK_BEGIN" />자세히 알아보기<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast 문제 신고</translation> +<translation id="966588271015727539">블루투스 점자 디스플레이 선택</translation> <translation id="967398046773905967">모든 사이트의 HID 기기 액세스를 허용하지 않음</translation> <translation id="967624055006145463">저장된 데이터</translation> <translation id="96774243435178359">관리되는 프린터</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index a888a9a6..16fbd4d 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -2736,6 +2736,7 @@ <translation id="3336855445806447827">Так айта албайм</translation> <translation id="3337568642696914359">Сайттар протоколдорду иштете албасын</translation> <translation id="3340620525920140773">Жүктөлүп алынды: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">жөндөөлөр</translation> <translation id="3341699307020049241">PIN код туура эмес. Дагы <ph name="RETRIES" /> жолу аракет кыла аласыз.</translation> <translation id="3341703758641437857">Файлдын URL даректерин колдонууга уруксат берүү</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" бул кеңейтүүнү алып салганы жатат.</translation> @@ -4109,6 +4110,7 @@ <translation id="4545759655004063573">Уруксаттар жетишсиз болгондуктан, сактай албай жатат. Башка жерге сактаңыз.</translation> <translation id="4546308221697447294">Google Chrome менен ылдам серептөө</translation> <translation id="4546345569117159016">Оң баскыч</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> бул кеңейтүүнү колдонгону жатат:</translation> <translation id="4546692474302123343">Google Жардамчыга оозеки кайрылуу</translation> <translation id="4547659257713117923">Башка түзмөктөрдө өтмөктөр жок</translation> <translation id="4547672827276975204">Автоматтык түрдө коюлсун</translation> @@ -5590,6 +5592,7 @@ <translation id="5904614460720589786">Конфигурациялоо маселесинен улам <ph name="APP_NAME" /> жөндөлгөн жок. Администраторуңузга кайрылыңыз. Ката коду: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Жаңырганы калды! Жаңыртууну аягына чыгаруу үчүн түзмөгүңүздү өчүрүп күйгүзүңүз.</translation> <translation id="5906732635754427568">Бул колдонмого байланыштуу дайындар бул түзмөктөн өчүрүлөт.</translation> +<translation id="5906974869830879618">PIN кодду киргизиңиз</translation> <translation id="5908474332780919512">Киргенде колдонмо ачылсын</translation> <translation id="5908695239556627796">Чычканды ылдамдаткыч</translation> <translation id="5909379458939060601">Бул профилди жана серептөө дайындарын өчүрөсүзбү?</translation> @@ -6977,6 +6980,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> микрофонуңузду колдонууда</translation> <translation id="7141105143012495934">Аккаунтуңуздун чоо-жайы алынбай койгондуктан, аккаунтка кире албай калдыңыз. Администраторуңузга кайрылыңыз же кайталап көрүңүз.</translation> <translation id="7141844554192012199">Текшерүү</translation> +<translation id="7143207342074048698">Туташууда</translation> <translation id="7144878232160441200">Дагы аракет кылып көрүү</translation> <translation id="7148426638542880639">Сайттар ойдогудай иштебей калышы мүмкүн. Баш баккан сайттарыңыз тууралуу маалыматты түзмөгүңүзгө сактагыңыз келбесе, бул параметрди тандаңыз.</translation> <translation id="7149839598364933473">Бул түзмөктү <ph name="DEVICE_OS" /> түзмөгүнө айландырыңыз.</translation> @@ -9380,6 +9384,7 @@ <translation id="964790508619473209">Экрандагы нерселерди жайгаштыруу</translation> <translation id="965211523698323809">SMS билдирүүлөрүн <ph name="DEVICE_TYPE" /> түзмөгүнөн жөнөтүп, ала аласыз. <ph name="LINK_BEGIN" />Көбүрөөк билүү<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast кызматындагы маселе тууралуу кабарлоо</translation> +<translation id="966588271015727539">Bluetooth брайль дисплейин тандоо</translation> <translation id="967398046773905967">Бардык сайттарга HID түзмөктөрүн колдонууга бөгөт коюлсун</translation> <translation id="967624055006145463">Сакталган дайындар</translation> <translation id="96774243435178359">Башкарылган принтерлер</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index 7009e5b0..11833e6 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -2736,6 +2736,7 @@ <translation id="3336855445806447827">ບໍ່ແນ່ໃຈ</translation> <translation id="3337568642696914359">ບໍ່ອະນຸຍາດໃຫ້ເວັບໄຊຈັດການໂປຣໂຕຄໍ</translation> <translation id="3340620525920140773">ດາວໂຫຼດສຳເລັດແລ້ວ: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">ການຕັ້ງຄ່າ</translation> <translation id="3341699307020049241">PIN ບໍ່ຖືກຕ້ອງ. ທ່ານຍັງເຫຼືອຄວາມພະຍາຍາມ <ph name="RETRIES" /> ຄັ້ງ.</translation> <translation id="3341703758641437857">ອະນຸຍາດການເຂົ້າຫາ URLs ໄຟລ໌</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ຕ້ອງການລຶບສ່ວນຂະຫຍາຍນີ້ອອກ.</translation> @@ -5591,6 +5592,7 @@ <translation id="5904614460720589786">ບໍ່ສາມາດຕິດຕັ້ງ <ph name="APP_NAME" /> ໄດ້ ເນື່ອງຈາກບັນຫາການຕັ້ງຄ່າ. ກະລຸນາຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ. ລະຫັດຂໍ້ຜິດພາດ: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">ອັບເດດໃກ້ແລ້ວໆ! ກະລຸນາປິດແລ້ວເປີດອຸປະກອນຂອງທ່ານຄືນໃໝ່ເພື່ອສິ້ນສຸດຂັ້ນຕອນການອັບເດດ.</translation> <translation id="5906732635754427568">ຂໍ້ມູນທີ່ເຊື່ອມໂຍງກັບແອັບນີ້ຈະຖືກລຶບອອກຈາກອຸປະກອນນີ້.</translation> +<translation id="5906974869830879618">ກະລຸນາປ້ອນ PIN</translation> <translation id="5908474332780919512">ເລີ່ມແອັບເມື່ອທ່ານເຂົ້າສູ່ລະບົບ</translation> <translation id="5908695239556627796">ຄວາມໄວການເລື່ອນເມົ້າ</translation> <translation id="5909379458939060601">ລຶບໂປຣໄຟລ໌ນີ້ ແລະ ຂໍ້ມູນການນຳໃຊ້ອອກບໍ?</translation> @@ -6978,6 +6980,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> ກຳລັງໃຊ້ໄມໂຄຣໂຟນຂອງທ່ານ</translation> <translation id="7141105143012495934">ລົງຊື່ເຂົ້າໃຊ້ບໍ່ສຳເລັດ ເພາະວ່າບໍ່ສາມາດກູ້ຄືນລາຍລະອຽດບັນຊີຂອງທ່ານໄດ້. ກະລຸນາຕິດຕໍ່ຜູ້ຄວບຄຸມຂອງທ່ານ ຫຼື ລອງໃໝ່ອີກ.</translation> <translation id="7141844554192012199">ການກວດສອບ</translation> +<translation id="7143207342074048698">ກຳລັງເຊື່ອມຕໍ່</translation> <translation id="7144878232160441200">ລອງໃໝ່ອີກ</translation> <translation id="7148426638542880639">ເວັບໄຊອາດບໍ່ເຮັດວຽກຕາມທີ່ທ່ານຄາດໄວ້. ໃຫ້ເລືອກຕົວເລືອກນີ້ຫາກທ່ານບໍ່ຕ້ອງການເກັບຂໍ້ມູນໄວ້ຢູ່ອຸປະກອນຂອງທ່ານກ່ຽວກັບເວັບໄຊທີ່ທ່ານເຂົ້າເບິ່ງ.</translation> <translation id="7149839598364933473">ປ່ຽນແປງອຸປະກອນນີ້ເປັນອຸປະກອນ <ph name="DEVICE_OS" />.</translation> @@ -9379,6 +9382,7 @@ <translation id="964790508619473209">ການຈັດວາງໜ້າຈໍ</translation> <translation id="965211523698323809">ສົ່ງ ແລະ ຮັບຂໍ້ຄວາມຈາກ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation> <translation id="96535553604365597">ລາຍງານບັນຫາກັບ Google Cast</translation> +<translation id="966588271015727539">ເລືອກການສະແດງຜົນອັກສອນນູນຜ່ານ Bluetooth</translation> <translation id="967398046773905967">ບໍ່ອະນຸຍາດໃຫ້ເວັບໄຊໃດໆເຂົ້າເຖິງອຸປະກອນ HID</translation> <translation id="967624055006145463">ເກັບຂໍ້ມູນໄວ້ແລ້ວ</translation> <translation id="96774243435178359">ເຄື່ອງພິມທີ່ມີການຈັດການ</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 325877d..f4ccfab 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -2168,6 +2168,7 @@ <translation id="2804043232879091219">Nepavyko atidaryti alternatyvios naršyklės</translation> <translation id="2804667941345577550">Būsite atjungti nuo šios svetainės, įskaitant atidarytus skirtukus</translation> <translation id="2804680522274557040">Fotoaparatas išjungtas</translation> +<translation id="2804742109948581745">Šalia</translation> <translation id="2805539617243680210">Viskas nustatyta!</translation> <translation id="2805646850212350655">„Microsoft“ koduojamųjų failų sistema</translation> <translation id="2805756323405976993">Taikomosios programos</translation> @@ -2739,6 +2740,7 @@ <translation id="3336855445806447827">Nežinau</translation> <translation id="3337568642696914359">Neleisti svetainėms apdoroti protokolų</translation> <translation id="3340620525920140773">Atsisiuntimas baigtas: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">Nustatymai</translation> <translation id="3341699307020049241">Neteisingas PIN kodas. Jums liko bandymų: <ph name="RETRIES" />.</translation> <translation id="3341703758641437857">Leisti pasiekti failo URL</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“ norėtų pašalinti šį plėtinį.</translation> @@ -4661,6 +4663,7 @@ <translation id="5056950756634735043">Prisijungiama prie sudėtinio rodinio</translation> <translation id="5057110919553308744">Spustelėjus plėtinį</translation> <translation id="5059241099014281248">Prisijungimo apribojimas</translation> +<translation id="5059429103770496207">Rodymo stilius</translation> <translation id="5059526285558225588">Pasirinkite, ką norite bendrinti</translation> <translation id="5060332552815861872">Galima išsaugoti 1 spausdintuvą.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Šiame aplanke yra žymė. Ar tikrai norite ją ištrinti?}one{Šiame aplanke yra # žymė. Ar tikrai norite jas ištrinti?}few{Šiame aplanke yra # žymės. Ar tikrai norite jas ištrinti?}many{Šiame aplanke yra # žymės. Ar tikrai norite jas ištrinti?}other{Šiame aplanke yra # žymių. Ar tikrai norite jas ištrinti?}}</translation> @@ -5595,6 +5598,7 @@ <translation id="5904614460720589786">Nepavyko nustatyti programos „<ph name="APP_NAME" />“ dėl konfigūravimo problemos. Susisiekite su administratoriumi. Klaidos kodas: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Beveik įdiegta naujausia versija! Paleiskite įrenginį iš naujo, kad būtų užbaigtas naujinimas.</translation> <translation id="5906732635754427568">Su šia programa susieti duomenys bus pašalinti iš šio įrenginio.</translation> +<translation id="5906974869830879618">Įveskite PIN kodą</translation> <translation id="5908474332780919512">Paleisti programą, kai prisijungiate</translation> <translation id="5908695239556627796">Slinkimo pele sparta</translation> <translation id="5909379458939060601">Ištrinti šį profilį ir naršymo duomenis?</translation> @@ -6988,6 +6992,7 @@ <translation id="7139627972753429585">„<ph name="APP_NAME" />“ naudoja mikrofoną</translation> <translation id="7141105143012495934">Nepavyko prisijungti, nes negalima gauti išsamios paskyros informacijos. Susisiekite su administratoriumi arba bandykite dar kartą.</translation> <translation id="7141844554192012199">Patikra</translation> +<translation id="7143207342074048698">Jungiama</translation> <translation id="7144878232160441200">Kartoti</translation> <translation id="7148426638542880639">Svetainės gali neveikti taip, kaip tikitės. Pasirinkite šią parinktį, jei nenorite įrenginyje išsaugoti informacijos apie svetaines, kuriose lankotės.</translation> <translation id="7149839598364933473">Konvertuokite šį įrenginį į „<ph name="DEVICE_OS" />“ įrenginį.</translation> @@ -9395,6 +9400,7 @@ <translation id="964790508619473209">Ekrano išdėstymas</translation> <translation id="965211523698323809">Siųskite ir gaukite teksto pranešimus naudodami „<ph name="DEVICE_TYPE" />“. <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation> <translation id="96535553604365597">Pranešti apie „Google Cast“ problemą</translation> +<translation id="966588271015727539">Pasirinkti „Bluetooth“ Brailio rašmenų ekraną</translation> <translation id="967398046773905967">Neleisti svetainėms pasiekti HID įrenginių</translation> <translation id="967624055006145463">Saugomi duomenys</translation> <translation id="96774243435178359">Tvarkomi spausdintuvai</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index 09b8735..454ca78 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -2723,6 +2723,7 @@ <translation id="3336855445806447827">Neesmu pārliecināts</translation> <translation id="3337568642696914359">Neļaut vietnēm apstrādāt protokolus</translation> <translation id="3340620525920140773">Lejupielāde pabeigta: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">Iestatījumi</translation> <translation id="3341699307020049241">Nepareizs PIN. Atlikušo mēģinājumu skaits: <ph name="RETRIES" />.</translation> <translation id="3341703758641437857">Atļaut piekļuvi faila vietrāžiem URL</translation> <translation id="3342361181740736773">“<ph name="TRIGGERING_EXTENSION_NAME" />” vēlas noņemt šo paplašinājumu.</translation> @@ -4095,6 +4096,7 @@ <translation id="4545759655004063573">Nevar saglabāt, jo nav pietiekamu atļauju. Saglabājiet citā atrašanās vietā.</translation> <translation id="4546308221697447294">Ātra pārlūkošana ar Google Chrome</translation> <translation id="4546345569117159016">Labā poga</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> vēlas izmantot šo paplašinājumu:</translation> <translation id="4546692474302123343">Google asistenta balss ievade</translation> <translation id="4547659257713117923">Nav ciļņu no citām ierīcēm</translation> <translation id="4547672827276975204">Iestatīt automātiski</translation> @@ -4952,6 +4954,7 @@ <translation id="5338503421962489998">Vietējā krātuve</translation> <translation id="5339031667684712858">Jūsu noņemtās vietnes</translation> <translation id="5340638867532133571">Atļaut vietnēm instalēt maksājumu apdarinātājus (ieteicams)</translation> +<translation id="5340787663756381836">&Atrast un rediģēt</translation> <translation id="5341793073192892252">Tālāk norādītie sīkfaili tika bloķēti (trešo pušu sīkfaili tiek bloķēti bez izņēmumiem).</translation> <translation id="5342091991439452114">PIN kodā ir jābūt vismaz <ph name="MINIMUM" /> cipariem.</translation> <translation id="5344036115151554031">Linux atjaunošana</translation> @@ -5573,6 +5576,7 @@ <translation id="5904614460720589786">Konfigurācijas problēmas dēļ nevarēja iestatīt lietotni <ph name="APP_NAME" />. Lūdzu, sazinieties ar administratoru. Kļūdas kods: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Atjaunināšana ir gandrīz pabeigta. Restartējiet ierīci, lai pabeigtu atjaunināšanu.</translation> <translation id="5906732635754427568">Ar šo lietotni saistītie dati tiks noņemti no šīs ierīces.</translation> +<translation id="5906974869830879618">Lūdzu, ievadiet PIN kodu</translation> <translation id="5908474332780919512">Palaist lietotni pierakstoties</translation> <translation id="5908695239556627796">Peles ritināšanas ātrums</translation> <translation id="5909379458939060601">Vai dzēst šo profilu un pārlūkošanas datus?</translation> @@ -6963,6 +6967,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> izmanto jūsu mikrofonu</translation> <translation id="7141105143012495934">Neizdevās pierakstīties, jo nevarēja izgūt konta informāciju. Lūdzu, sazinieties ar administratoru vai mēģiniet vēlreiz.</translation> <translation id="7141844554192012199">Pārbaude</translation> +<translation id="7143207342074048698">Notiek savienojuma izveide</translation> <translation id="7144878232160441200">Mēģināt vēlreiz</translation> <translation id="7148426638542880639">Vietnes var nedarboties pienācīgi. Izvēlieties šo opciju, ja ierīcē nevēlaties saglabāt informāciju par jūsu apmeklētajām vietnēm.</translation> <translation id="7149839598364933473">Pārveidojiet šo ierīci par <ph name="DEVICE_OS" /> ierīci.</translation> @@ -9346,6 +9351,7 @@ <translation id="939401694733344652">Šie konti pašlaik netiek izmantoti Android lietotnēs. Ja atlasīsiet kādu kontu izmantošanai šajā Android lietotnē, šis konts var tikt izmantots arī citās Android lietotnēs. Varat mainīt Android lietotnes piekļuvi sadaļā <ph name="LINK_BEGIN" />Iestatījumi > Konti<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Ievadiet ieejas frāzi</translation> <translation id="939736085109172342">Jauna mape</translation> +<translation id="940212040923880623">&Atrast un rediģēt</translation> <translation id="942532530371314860">Lietotne <ph name="APP_NAME" /> koplieto Chrome cilni un audio.</translation> <translation id="944799160843436808">Iestatot Chromebook datoriem paredzēto lietotni Steam, radās problēma</translation> <translation id="945522503751344254">Sūtīt atsauksmes</translation> @@ -9367,6 +9373,7 @@ <translation id="964790508619473209">Ekrāna izkārtojums</translation> <translation id="965211523698323809">Izmantojiet <ph name="DEVICE_TYPE" /> ierīci, lai sūtītu un saņemtu īsziņas. <ph name="LINK_BEGIN" />Uzzināt vairāk<ph name="LINK_END" /></translation> <translation id="96535553604365597">Ziņot par problēmu ar Google Cast</translation> +<translation id="966588271015727539">Atlasīt Bluetooth Braila displeju</translation> <translation id="967398046773905967">Neatļaut nevienai vietnei piekļūt HID ierīcēm</translation> <translation id="967624055006145463">Saglabātie dati</translation> <translation id="96774243435178359">Pārvaldītie printeri</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index cde74fdd..9132a211 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -2737,6 +2737,7 @@ <translation id="3336855445806447827">Не знам</translation> <translation id="3337568642696914359">Не им дозволувај на сајтовите да ракуваат со протоколи</translation> <translation id="3340620525920140773">Преземањето заврши: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">поставки</translation> <translation id="3341699307020049241">Погрешен PIN. Имате уште <ph name="RETRIES" /> обиди.</translation> <translation id="3341703758641437857">Дозволи пристап до URL на датотеките</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“ сака да ја отстрани екстензијата.</translation> @@ -4110,6 +4111,7 @@ <translation id="4545759655004063573">Не може да се зачува поради недоволно дозволи. Зачувајте на друга локација.</translation> <translation id="4546308221697447294">Прелистувајте брзо со Google Chrome</translation> <translation id="4546345569117159016">Десно копче</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> сака да ја користи екстензијава:</translation> <translation id="4546692474302123343">Гласовно внесување на „Помошникот на Google“</translation> <translation id="4547659257713117923">Нема картички од други уреди</translation> <translation id="4547672827276975204">Постави автоматски</translation> @@ -4967,6 +4969,7 @@ <translation id="5338503421962489998">Локално складирање</translation> <translation id="5339031667684712858">Сајтови што ги отстранивте</translation> <translation id="5340638867532133571">Дозволи сајтовите да инсталираат ракувачи со плаќања (препорачано)</translation> +<translation id="5340787663756381836">&Најдете и изменете</translation> <translation id="5341793073192892252">Следниве колачиња се блокирани (колачињата од трети лица се блокираат без исклучок)</translation> <translation id="5342091991439452114">PIN-кодот мора да содржи најмалку <ph name="MINIMUM" /> цифри</translation> <translation id="5344036115151554031">Се враќа Linux</translation> @@ -5590,6 +5593,7 @@ <translation id="5904614460720589786">Не може да се постави <ph name="APP_NAME" /> поради конфигурациски проблем. Контактирајте со администраторот. Код за грешка: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Речиси ажурирано! Рестартирајте го уредот за да се заврши ажурирањето.</translation> <translation id="5906732635754427568">Податоците поврзани со оваа апликација ќе бидат отстранети од уредов.</translation> +<translation id="5906974869830879618">Внесете PIN</translation> <translation id="5908474332780919512">Стартувај ја апликацијата кога ќе се најавам</translation> <translation id="5908695239556627796">Брзина на лизгање на глувчето</translation> <translation id="5909379458939060601">Да се избрише профилов и податоците од прелистувањето?</translation> @@ -6900,7 +6904,7 @@ <translation id="7056526158851679338">&Провери уреди</translation> <translation id="7057184853669165321">{NUM_MINS,plural, =1{Безбедносната проверка беше извршена пред 1 минута}one{Безбедносната проверка беше извршена пред {NUM_MINS} минута}other{Безбедносната проверка беше извршена пред {NUM_MINS} минути}}</translation> <translation id="7057767408836081338">Не успеавме да добиеме податоци од апликацијата, но сепак се обидуваме да ја стартуваме…</translation> -<translation id="7058024590501568315">Сокриена мрежа</translation> +<translation id="7058024590501568315">Скриена мрежа</translation> <translation id="7059858479264779982">Постави на автоматско стартување</translation> <translation id="7062222374113411376">Дозволи неодамна затворените сајтови да завршат со испраќањето и примањето податоци (препорачано)</translation> <translation id="7063129466199351735">Обработување кратенки...</translation> @@ -6979,6 +6983,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> го користи микрофонот</translation> <translation id="7141105143012495934">Најавувањето не успеа бидејќи не можеа да се вчитаат деталите за вашата сметка. Контактирајте со администраторот или обидете се повторно.</translation> <translation id="7141844554192012199">Проверка</translation> +<translation id="7143207342074048698">Се поврзува</translation> <translation id="7144878232160441200">Обиди се повторно</translation> <translation id="7148426638542880639">Сајтовите може да не функционираат според вашите очекувања. Изберете ја опцијава ако не сакате да оставате податоци на вашиот уред за сајтовите што ги посетувате.</translation> <translation id="7149839598364933473">Конвертирајте го уредов во уред со <ph name="DEVICE_OS" />.</translation> @@ -9364,6 +9369,7 @@ <translation id="939401694733344652">Сметкиве не се користат со апликации на Android во моментов. Ако изберете сметка што ќе ја користите со апликацијава на Android, ќе може да се користи и со други апликации на Android. Може да го промените пристапот на апликација на Android во <ph name="LINK_BEGIN" />Поставки > Сметки<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Внеси пристапна фраза</translation> <translation id="939736085109172342">Нова папка</translation> +<translation id="940212040923880623">&Најдете и изменете</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> споделува картичка на Chrome и аудио.</translation> <translation id="944799160843436808">Имаше проблем при поставувањето на Steam на Chromebook</translation> <translation id="945522503751344254">Испратете повратни информации</translation> @@ -9385,6 +9391,7 @@ <translation id="964790508619473209">Подредување на екранот</translation> <translation id="965211523698323809">Испраќајте и примајте SMS-пораки од вашиот <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation> <translation id="96535553604365597">Пријавете проблем во Google Cast</translation> +<translation id="966588271015727539">Изберете екран за брајово писмо со Bluetooth</translation> <translation id="967398046773905967">Не дозволувај ниту еден сајт да пристапува до HID-уредите</translation> <translation id="967624055006145463">Складирани податоци</translation> <translation id="96774243435178359">Управувани печатачи</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 67c960a..c564913 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">കുറഞ്ഞത് <ph name="INSTALL_SIZE" /> ഇടമാണ് Linux-ന് വേണ്ടി ശുപാർശ ചെയ്യുന്നത്. ഇടം സൃഷ്ടിക്കാൻ, നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്ന് ഫയലുകൾ ഇല്ലാതാക്കുക.</translation> <translation id="1038643060055067718">ലൈനുകൾ:</translation> <translation id="1039337018183941703">ഫയൽ അസാധുവോ കേടായതോ ആണ്</translation> +<translation id="1040761927998636252"><ph name="URL" /> -നുള്ള പേരില്ലാത്ത ബുക്ക്മാർക്ക്</translation> <translation id="1041175011127912238">ഈ പേജ് പ്രതികരിക്കുന്നില്ല</translation> <translation id="1041263367839475438">ലഭ്യമായ ഉപകരണങ്ങൾ</translation> <translation id="1042174272890264476">നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ <ph name="SHORT_PRODUCT_NAME" /> എന്നതിന്റെ RLZ ലൈബ്രറി അന്തർനിർമ്മിതവുമാണ്. RLZ, ഒരു നിർദ്ദിഷ്ട പ്രമോഷണൽ കാമ്പെയ്നിലൂടെ ലഭിക്കുന്ന തിരയലുകളും <ph name="SHORT_PRODUCT_NAME" /> ഉപയോഗവും കണക്കാക്കുന്നതിന് അദ്വിതീയമല്ലാത്തതും വ്യക്തിപരമായി തിരിച്ചറിയാനാകാത്തതുമായ ഒരു ടാഗ് നിയുക്തമാക്കുന്നു. ഈ ലേബലുകൾ ചിലസമയത്ത് <ph name="PRODUCT_NAME" /> എന്നതിലെ Google തിരയലിൽ ദൃശ്യമാകുന്നു.</translation> @@ -2721,6 +2722,7 @@ <translation id="3336855445806447827">ഉറപ്പില്ല</translation> <translation id="3337568642696914359">പ്രോട്ടോകോളുകൾ കൈകാര്യം ചെയ്യാൻ സൈറ്റുകളെ അനുവദിക്കരുത്</translation> <translation id="3340620525920140773">ഡൗൺലോഡ് പൂർത്തിയായി: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">ക്രമീകരണങ്ങൾ</translation> <translation id="3341699307020049241">പിൻ തെറ്റാണ്. <ph name="RETRIES" /> ശ്രമങ്ങൾ ശേഷിക്കുന്നു.</translation> <translation id="3341703758641437857">URL കള് ഫയല് ചെയ്യുന്നതിന് ആക്സസ്സ് അനുവദിക്കുക</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ഈ വിപുലീകരണം നീക്കം ചെയ്യാൻ ആഗ്രഹിക്കുന്നു.</translation> @@ -5576,6 +5578,7 @@ <translation id="5904614460720589786">കോൺഫിഗർ ചെയ്യലിലെ പ്രശ്നം കാരണം <ph name="APP_NAME" /> സജ്ജീകരിക്കാനായില്ല. നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക. പിശക് കോഡ്: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">എകദേശം അപ് റ്റു ഡേറ്റാണ്! അപ്ഡേറ്റ് ചെയ്യൽ പൂർത്തിയാക്കാൻ ഉപകരണം പുനരാരംഭിക്കുക.</translation> <translation id="5906732635754427568">ഈ ആപ്പുമായി ബന്ധപ്പെട്ട വിവരങ്ങൾ ഈ ഉപകരണത്തിൽ നിന്ന് നീക്കംചെയ്യപ്പെടും.</translation> +<translation id="5906974869830879618">ഒരു പിൻ നൽകുക</translation> <translation id="5908474332780919512">നിങ്ങൾ സൈൻ ഇൻ ചെയ്യുമ്പോൾ ആപ്പ് ആരംഭിക്കുക</translation> <translation id="5908695239556627796">മൗസ് സ്ക്രോള് ചെയ്യൽ വേഗത</translation> <translation id="5909379458939060601">ഈ പ്രൊഫൈലും ബ്രൗസിംഗ് ഡാറ്റയും ഇല്ലാതാക്കണോ?</translation> @@ -6964,6 +6967,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> നിങ്ങളുടെ മൈക്രോഫോൺ ഉപയോഗിക്കുന്നു</translation> <translation id="7141105143012495934">നിങ്ങളുടെ അക്കൗണ്ട് വിശദാംശങ്ങൾ വീണ്ടെടുക്കാനാവാത്തതിനാൽ സൈൻ ഇൻ ചെയ്യുന്നത് പരാജയപ്പെട്ടു. നിങ്ങളുടെ അഡ്മിനിസ്ട്രേറ്ററെ ബന്ധപ്പെടുക അല്ലെങ്കിൽ വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="7141844554192012199">പരിശോധിക്കുക</translation> +<translation id="7143207342074048698">കണക്റ്റിംഗ്</translation> <translation id="7144878232160441200">വീണ്ടും ശ്രമിക്കുക</translation> <translation id="7148426638542880639">സൈറ്റുകൾ നിങ്ങൾ പ്രതീക്ഷിക്കുന്നത് പോലെ പ്രവർത്തിച്ചേക്കില്ല. നിങ്ങൾ സന്ദർശിക്കുന്ന സൈറ്റുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ ഉപകരണത്തിൽ സൂക്ഷിക്കാൻ താൽപ്പര്യം ഇല്ലെങ്കിൽ മാത്രം ഈ ഓപ്ഷൻ തിരഞ്ഞെടുക്കുക.</translation> <translation id="7149839598364933473">ഈ ഉപകരണം ഒരു <ph name="DEVICE_OS" /> ഉപകരണമായി പരിവർത്തനം ചെയ്യുക.</translation> @@ -9366,6 +9370,7 @@ <translation id="964790508619473209">സ്ക്രീൻ ക്രമീകരണം</translation> <translation id="965211523698323809">നിങ്ങളുടെ <ph name="DEVICE_TYPE" />-ൽ നിന്ന് ടെക്സ്റ്റ് മെസേജുകൾ അയയ്ക്കുകയും സ്വീകരിക്കുകയും ചെയ്യുക. <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast-മായി ബന്ധപ്പെട്ട് ഒരു പ്രശ്നം റിപ്പോർട്ട് ചെയ്യുക</translation> +<translation id="966588271015727539">ഒരു Bluetooth ബ്രെയ്ലി ഡിസ്പ്ലേ തിരഞ്ഞെടുക്കുക</translation> <translation id="967398046773905967">HID ഉപകരണങ്ങൾ ആക്സസ് ചെയ്യാൻ ഒരു സൈറ്റിനെയും അനുവദിക്കരുത്</translation> <translation id="967624055006145463">ഡാറ്റ സംഭരിച്ചു</translation> <translation id="96774243435178359">മാനേജ് ചെയ്യുന്ന പ്രിന്ററുകൾ</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index 7da1a18..5cf2ca0 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -2161,6 +2161,7 @@ <translation id="2804043232879091219">Өөр хөтчийг нээж чадсангүй</translation> <translation id="2804667941345577550">Та энэ сайтаас гарах бөгөөд үүнд нээлттэй табын сайт мөн багтана</translation> <translation id="2804680522274557040">Камерыг унтраасан</translation> +<translation id="2804742109948581745">Зэрэгцүүлсэн</translation> <translation id="2805539617243680210">Тохируулж дууслаа!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">Програм</translation> @@ -2732,6 +2733,7 @@ <translation id="3336855445806447827">Итгэлгүй байна</translation> <translation id="3337568642696914359">Сайтуудад протокол зохицуулахыг бүү зөвшөөр</translation> <translation id="3340620525920140773">Татаж дууслаа: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">тохиргоо</translation> <translation id="3341699307020049241">ПИН буруу байна. Танд <ph name="RETRIES" /> оролдлого үлдлээ.</translation> <translation id="3341703758641437857">Файлын холбоосууд руу нэвтрэхийг зөвшөөрөх</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" энэ өргөтгөлийг устгах хүсэлтэй байна.</translation> @@ -4653,6 +4655,7 @@ <translation id="5056950756634735043">Агуулагчтай холбогдож байна</translation> <translation id="5057110919553308744">Та өргөтгөл гэснийг товших үед</translation> <translation id="5059241099014281248">Нэвтрэхийг хязгаарлах</translation> +<translation id="5059429103770496207">Дэлгэцийн загвар</translation> <translation id="5059526285558225588">Юу хуваалцахаа сонгоно уу</translation> <translation id="5060332552815861872">Хадгалах боломжтой 1 хэвлэгч байна.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Энэ фолдер хавчуурга агуулдаг. Та үүнийг устгахдаа итгэлтэй байна уу?}other{Энэ фолдерт # хавчуурга байна. Та үүнийг устгахдаа итгэлтэй байна уу?}}</translation> @@ -4962,6 +4965,7 @@ <translation id="5338503421962489998">Суурин хадгалалт</translation> <translation id="5339031667684712858">Таны хассан сайтууд</translation> <translation id="5340638867532133571">Сайтад төлбөр зохицуулагч суулгахыг зөвшөөрөх (санал болгосон)</translation> +<translation id="5340787663756381836">&Олоод засах</translation> <translation id="5341793073192892252">Дараах күүкийг блоклосон байна (гуравдагч талын күүкийг ямар нэгэн сонголтгүйгээр блоклосон)</translation> <translation id="5342091991439452114">ПИН хамгийн багадаа <ph name="MINIMUM" /> оронтой байх ёстой</translation> <translation id="5344036115151554031">Linux-г сэргээж байна</translation> @@ -5586,6 +5590,7 @@ <translation id="5904614460720589786">Тохируулгын асуудлын улмаас <ph name="APP_NAME" />-г тохируулж чадсангүй. Админтайгаа холбогдоно уу. Алдааны код: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Удахгүй шинэчилж дууслаа! Шинэчлэлтийг дуусгахын тулд төхөөрөмжөө дахин асаана уу.</translation> <translation id="5906732635754427568">Энэ апп-тай холбоотой өгөгдлийг төхөөрөмжөөс устгах болно.</translation> +<translation id="5906974869830879618">Пин кодоо оруулна уу</translation> <translation id="5908474332780919512">Нэвтрэх үедээ аппыг эхлүүлэх</translation> <translation id="5908695239556627796">Хулганын гүйлгэлтийн хурд</translation> <translation id="5909379458939060601">Энэ профайл болон интернэтээр үзсэн өгөгдлийг устгах уу?</translation> @@ -6972,6 +6977,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> таны микрофоныг ашиглаж байна</translation> <translation id="7141105143012495934">Таны бүртгэлийн мэдээллийг татаж чадсангүй тул нэвтрэх үйлдэл амжилтгүй боллоо. Та админтайгаа холбогдох, эсвэл дахин оролдох хэрэгтэй.</translation> <translation id="7141844554192012199">Хяналт</translation> +<translation id="7143207342074048698">Холбож байна</translation> <translation id="7144878232160441200">Дахин оролдох</translation> <translation id="7148426638542880639">Сайтууд таны бодсоны дагуу ажиллахгүй байж магадгүй. Хэрэв та зочилсон сайтуудынхаа талаарх мэдээллийг төхөөрөмждөө үлдээхийг хүсэхгүй байвал энэ сонголтыг сонгоно уу.</translation> <translation id="7149839598364933473">Энэ төхөөрөмжийг <ph name="DEVICE_OS" /> төхөөрөмж болгож хөрвүүлээрэй.</translation> @@ -9349,6 +9355,7 @@ <translation id="939401694733344652">Эдгээр бүртгэлийг яг одоо Android аппуудтай ашиглаагүй байна. Хэрэв та энэ Android апптай ашиглах бүртгэл сонговол уг бүртгэлийг бусад Android апптай ашиглах боломжтой. Та Android аппын хандалтыг <ph name="LINK_BEGIN" />Тохиргоо > Бүртгэлүүд<ph name="LINK_END" /> хэсэгт өөрчлөх боломжтой.</translation> <translation id="939598580284253335">Нэвтрэх үгүүдийг оруулна уу</translation> <translation id="939736085109172342">Шинэ хавтас</translation> +<translation id="940212040923880623">&Олоод засах</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> нь Chrome-н таб болон дууг хуваалцаж байна.</translation> <translation id="944799160843436808">Chromebook дээр Steam-г тохируулахад асуудал гарлаа</translation> <translation id="945522503751344254">Санал хүсэлт илгээх</translation> @@ -9370,6 +9377,7 @@ <translation id="964790508619473209">Дэлгэцийн зохион байгуулалт</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" />-с мессеж илгээх, хүлээн авах. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast-тай холбоотой асуудал мэдээлэх</translation> +<translation id="966588271015727539">Bluetooth брайл дэлгэцийг сонгох</translation> <translation id="967398046773905967">HID төхөөрөмжүүдэд хандахыг ямар ч сайтад бүү зөвшөөр</translation> <translation id="967624055006145463">Хадгалсан өгөгдөл</translation> <translation id="96774243435178359">Удирддаг хэвлэгч</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 3347221..7d2377a7 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Linux साठी किमान <ph name="INSTALL_SIZE" /> जागेची शिफारस केली जाते. मोकळी जागा वाढवण्यासाठी, तुमच्या डिव्हाइसमधून फाइल हटवा.</translation> <translation id="1038643060055067718">रेखा:</translation> <translation id="1039337018183941703">चुकीची किंवा दूषित फाइल</translation> +<translation id="1040761927998636252"><ph name="URL" /> साठी नाव नसलेला बुकमार्क</translation> <translation id="1041175011127912238">हे पेज प्रतिसाद देत नाही</translation> <translation id="1041263367839475438">उपलब्ध असलेली डिव्हाइस</translation> <translation id="1042174272890264476">तुमचा कॉंप्युटर देखील <ph name="SHORT_PRODUCT_NAME" />च्या RLZ वाचनालयासह बिल्ट-इन आला आहे. एका विशिष्ट जाहिरात मोहीमेद्वारे चालविलेला शोध आणि <ph name="SHORT_PRODUCT_NAME" /> वापर मोजण्यासाठी RLZ एक अद्वितीय-नसलेला, वैयक्तिकरित्या-ओळखता न येणारा टॅग नियुक्त करते. <ph name="PRODUCT_NAME" /> मधील Google Search क्वेरींमध्ये ही लेबल काहीवेळा दिसतात.</translation> @@ -2164,6 +2165,7 @@ <translation id="2804043232879091219">पर्यायी ब्राउझर उघडता आला नाही</translation> <translation id="2804667941345577550">उघड्या असलेल्या टॅबच्या समावेशासह तुम्हाला या साइटमधून साइन आउट केले जाईल.</translation> <translation id="2804680522274557040">कॅमेरा बंद केला आहे</translation> +<translation id="2804742109948581745">शेजारी शेजारी</translation> <translation id="2805539617243680210">तुम्ही पूर्णपणे तयार आहात!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">ॲप्लिकेशन</translation> @@ -2735,6 +2737,7 @@ <translation id="3336855445806447827">खात्री नाही</translation> <translation id="3337568642696914359">साइटना प्रोटोकॉल हाताळण्याची अनुमती देऊ नका</translation> <translation id="3340620525920140773">डाउनलोड पूर्ण झाले आहे: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">सेटिंग्ज</translation> <translation id="3341699307020049241">चुकीचा पिन. तुमच्याकडे <ph name="RETRIES" /> प्रयत्न शिल्लक आहेत.</translation> <translation id="3341703758641437857">फाइल URL ॲक्सेसला परवानगी द्या</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ला हे एक्स्टेंशन काढायचे आहे.</translation> @@ -4655,6 +4658,7 @@ <translation id="5056950756634735043">कंटेनरशी कनेक्ट करत आहे</translation> <translation id="5057110919553308744">तुम्ही एक्स्टेंशनवर क्लिक करता तेव्हा</translation> <translation id="5059241099014281248">साइन इन मर्यादित करा</translation> +<translation id="5059429103770496207">डिस्प्ले शैली</translation> <translation id="5059526285558225588">काय शेअर करायचे ते निवडा</translation> <translation id="5060332552815861872">सेव्ह करण्यासाठी एक प्रिंटर उपलब्ध आहे.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{या फोल्डरमध्ये एक बुकमार्क आहे. तुम्हाला खात्री आहे की तुम्ही ते हटवू इच्छिता?}other{या फोल्डरमध्ये # बुकमार्क आहेत. तुम्हाला खात्री आहे की तुम्ही ते हटवू इच्छिता?}}</translation> @@ -5588,6 +5592,7 @@ <translation id="5904614460720589786">कॉन्फिगरेशनच्या समस्येमुळे <ph name="APP_NAME" /> सेट करता आले नाही. कृपया तुमच्या अॅडमिनिस्ट्रेटरशी संपर्क साधा. एरर कोड: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">अद्ययावत करणे जवळजवळ पूर्ण झाले! अपडेट करणे समाप्त करण्यासाठी तुमचे डिव्हाइस रीस्टार्ट करा.</translation> <translation id="5906732635754427568">या डिव्हाइस वरून या ॲपसह संबद्ध असलेला डेटा काढला जाईल.</translation> +<translation id="5906974869830879618">कृपया पिन एंटर करा</translation> <translation id="5908474332780919512">तुम्ही साइन इन केल्यानंतर अॅप सुरू करा</translation> <translation id="5908695239556627796">माउस स्क्रोल वेग</translation> <translation id="5909379458939060601">ही प्रोफाइल आणि डेटा हटवायचा आहे का?</translation> @@ -6976,6 +6981,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> तुमचा मायक्रोफोन वापरत आहे</translation> <translation id="7141105143012495934">तुमचे खाते तपशील प्राप्त करणे शक्य झाले नसल्याने साइन-इन अयशस्वी झाले. कृपया तुमच्या ॲडमिनिस्ट्रेटरशी संपर्क साधा किंवा पुन्हा प्रयत्न करा.</translation> <translation id="7141844554192012199">तपासणी</translation> +<translation id="7143207342074048698">कनेक्ट करत आहे</translation> <translation id="7144878232160441200">पुन्हा प्रयत्न करा</translation> <translation id="7148426638542880639">साइट या कदाचित तुमच्या अपेक्षेनुसार काम करणार नाहीत. तुम्ही भेट देता त्या साइटबद्दलची माहिती तुमच्या डिव्हाइसवर तुम्हाला ठेवायची नसल्यास, हा पर्याय निवडा.</translation> <translation id="7149839598364933473">हे डिव्हाइस <ph name="DEVICE_OS" /> डिव्हाइसमध्ये रूपांतरित करा.</translation> @@ -9379,6 +9385,7 @@ <translation id="964790508619473209">स्क्रीन व्यवस्था</translation> <translation id="965211523698323809">तुमच्या <ph name="DEVICE_TYPE" /> वरून एसएमएस पाठवा आणि मिळवा. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast शी संबंधित समस्येची तक्रार करा</translation> +<translation id="966588271015727539">ब्लूटूथ ब्रेल डिस्प्ले निवडा</translation> <translation id="967398046773905967">कोणत्याही साइटना HID डिव्हाइस ॲक्सेस करू देऊ नका</translation> <translation id="967624055006145463">डेटा स्टोअर केला</translation> <translation id="96774243435178359">व्यवस्थापित केलेले प्रिंटर</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index 8d02dff..7859ec1 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Sekurang-kurangnya <ph name="INSTALL_SIZE" /> ruang disyorkan untuk Linux. Untuk meningkatkan ruang kosong, padamkan fail daripada peranti anda.</translation> <translation id="1038643060055067718">Baris:</translation> <translation id="1039337018183941703">Fail tidak sah atau rosak</translation> +<translation id="1040761927998636252">Penanda halaman tidak bernama untuk <ph name="URL" /></translation> <translation id="1041175011127912238">Halaman ini tidak bertindak balas</translation> <translation id="1041263367839475438">Peranti yang tersedia</translation> <translation id="1042174272890264476">Komputer anda juga disertakan dengan pustaka RLZ <ph name="SHORT_PRODUCT_NAME" /> terbina dalam. RLZ memperuntukkan tanda nama tidak unik yang tidak boleh mengenal pasti secara peribadi untuk mengukur carian dan penggunaan <ph name="SHORT_PRODUCT_NAME" /> yang didorong oleh kempen galakan tertentu. Label ini kadangkala dipaparkan dalam pertanyaan Google Search dalam <ph name="PRODUCT_NAME" />.</translation> @@ -2165,6 +2166,7 @@ <translation id="2804043232879091219">Penyemak imbas alternatif tidak boleh dibuka</translation> <translation id="2804667941345577550">Anda akan dilog keluar daripada tapak ini, termasuk dalam tab yang terbuka</translation> <translation id="2804680522274557040">Kamera dimatikan</translation> +<translation id="2804742109948581745">Bersebelahan</translation> <translation id="2805539617243680210">Anda sudah bersedia!</translation> <translation id="2805646850212350655">Sistem Fail Penyulitan Microsoft</translation> <translation id="2805756323405976993">Apl</translation> @@ -2736,6 +2738,7 @@ <translation id="3336855445806447827">Tidak pasti</translation> <translation id="3337568642696914359">Jangan benarkan laman mengendalikan protokol</translation> <translation id="3340620525920140773">Muat turun selesai: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">tetapan</translation> <translation id="3341699307020049241">PIN salah. Anda mempunyai <ph name="RETRIES" /> percubaan lagi.</translation> <translation id="3341703758641437857">Membenarkan akses ke URL fail</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ingin mengalih keluar sambungan ini.</translation> @@ -4658,6 +4661,7 @@ <translation id="5056950756634735043">Menyambung kepada bekas</translation> <translation id="5057110919553308744">Apabila anda mengklik sambungan</translation> <translation id="5059241099014281248">Sekat log masuk</translation> +<translation id="5059429103770496207">Gaya paparan</translation> <translation id="5059526285558225588">Pilih kandungan untuk dikongsi</translation> <translation id="5060332552815861872">Terdapat 1 pencetak tersedia untuk disimpan.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Folder ini mengandungi penanda halaman. Adakah anda pasti mahu memadamnya?}other{Folder ini mengandungi # penanda halaman. Adakah anda pasti mahu memadamnya?}}</translation> @@ -5591,6 +5595,7 @@ <translation id="5904614460720589786">Tidak dapat menyediakan <ph name="APP_NAME" /> kerana terdapat masalah konfigurasi. Sila hubungi pentadbir anda. Kod ralat: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Hampir terkini! Mulakan semula peranti anda untuk menyelesaikan kemas kini.</translation> <translation id="5906732635754427568">Data yang berkaitan dengan apl ini akan dialih keluar daripada peranti ini.</translation> +<translation id="5906974869830879618">Sila masukkan pin</translation> <translation id="5908474332780919512">Mulakan Apl Apabila Anda Log Masuk</translation> <translation id="5908695239556627796">Kelajuan penatalan tetikus</translation> <translation id="5909379458939060601">Padamkan profil dan data semakan imbas ini?</translation> @@ -6978,6 +6983,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> sedang menggunakan mikrofon anda</translation> <translation id="7141105143012495934">Log masuk gagal kerana butiran akaun anda tidak boleh didapatkan semula. Sila hubungi pentadbir anda atau cuba lagi.</translation> <translation id="7141844554192012199">Semakan</translation> +<translation id="7143207342074048698">Menyambung</translation> <translation id="7144878232160441200">Cuba semula</translation> <translation id="7148426638542880639">Laman mungkin tidak berfungsi seperti yang anda jangkakan. Pilih pilihan ini jika anda tidak mahu meninggalkan maklumat pada peranti anda tentang laman yang anda lawati.</translation> <translation id="7149839598364933473">Tukar peranti ini kepada peranti <ph name="DEVICE_OS" />.</translation> @@ -9383,6 +9389,7 @@ <translation id="964790508619473209">Susunan skrin</translation> <translation id="965211523698323809">Hantar dan terima mesej teks daripada <ph name="DEVICE_TYPE" /> anda. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation> <translation id="96535553604365597">Laporkan isu berkaitan Google Cast</translation> +<translation id="966588271015727539">Pilih paparan braille Bluetooth</translation> <translation id="967398046773905967">Jangan benarkan mana-mana tapak mengakses peranti HID</translation> <translation id="967624055006145463">Data disimpan</translation> <translation id="96774243435178359">Pencetak terurus</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 0eab31d..eb05357 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Linux အတွက် အနည်းဆုံး နေရာ <ph name="INSTALL_SIZE" /> ရှိရန် အကြံပြုပါသည်။ နေရာလွတ်ပိုရရန် သင့်စက်မှ ဖိုင်များကို ဖျက်ပါ။</translation> <translation id="1038643060055067718">စာကြောင်းများ−</translation> <translation id="1039337018183941703">မမှန်ကန်သော သို့မဟုတ် ပျက်စီးနေသောဖိုင်</translation> +<translation id="1040761927998636252"><ph name="URL" /> အတွက် အမည်မဲ့လိပ်စာ</translation> <translation id="1041175011127912238">ဤစာမျက်နှာသည် တုံ့ပြန်မှုမရှိပါ</translation> <translation id="1041263367839475438">ရနိုင်သော စက်များ</translation> <translation id="1042174272890264476">သင်၏ ကွန်ပျူတာထဲတွင်ပါ <ph name="SHORT_PRODUCT_NAME" />၏ RLZ စာကြည့်တိုက် ထည့်သွင်းပြီး ဖြစ်သည်။ RLZ က တစ်ဦးတည်းပိုင် မဟုတ်သော၊ ကိုယ်ပိုင် မဟုတ်သော ထောက်ပြရနိုင်သည့် တဲဘ်ကို သတ်မှတ်ပေးလျက် မြှင့်တင်ရေး အစီအစဉ် တစ်ခုက လှုံ့ဆော်ပေးလိုက်သည့် ရှာဖွေမှုုများ နှင့် <ph name="SHORT_PRODUCT_NAME" /> သုံးစွဲမှုုကို တိုင်းထွာပေးသည်။ ထို တံဆိပ်များမှာ တခါတရံ <ph name="PRODUCT_NAME" /> ထဲက Google ရှာဖွေမှု မေးမြန်းချက်များထဲမှာ ပါလာတတ်ကြသည်။</translation> @@ -2031,7 +2032,7 @@ <translation id="2704184184447774363">Microsoft စာတမ်း လက်မှတ်ထိုးနေ</translation> <translation id="2704606927547763573">ကူးယူပြီးပါပြီ</translation> <translation id="270516211545221798">ထိတွေ့ညွှန်ကြားခြင်းကိရိယာ အမြန်နှုန်း</translation> -<translation id="2705736684557713153">စာမျက်နှာအောက်ခြေအထိ လှိမ့်ဆင်းသွားပြီး အမြန်ချိတ်ဆက်မျှဝေခြင်းစနစ် ရှိနေလျှင် ဖွင့်ပါ။ မရှိလျှင် လုပ်ဆောင်စရာအားလုံး ပြီးပါပြီ။</translation> +<translation id="2705736684557713153">စာမျက်နှာအောက်ခြေအထိ လှိမ့်ဆင်းသွားပြီး အလိုအလျောက် ချိတ်ဆက်မျှဝေခြင်းစနစ် ရှိနေလျှင် ဖွင့်ပါ။ မရှိလျှင် လုပ်ဆောင်စရာအားလုံး ပြီးပါပြီ။</translation> <translation id="2707024448553392710">အစိတ်အပိုင်းကို ဒေါင်းလုဒ် လုပ်နေ</translation> <translation id="270921614578699633">ပျမ်းမျှထက်ပို</translation> <translation id="2709516037105925701">အလိုအလျောက် ဖြည့်စွက်</translation> @@ -2735,6 +2736,7 @@ <translation id="3336855445806447827">မသေချာပါ</translation> <translation id="3337568642696914359">ပရိုတိုကောများကို စီမံရန် ဝဘ်ဆိုက်များကို ခွင့်မပြုပါနှင့်</translation> <translation id="3340620525920140773">ဒေါင်းလုဒ်လုပ်ပြီးပါပြီ− <ph name="FILE_NAME" />။</translation> +<translation id="3340978935015468852">ဆက်တင်များ</translation> <translation id="3341699307020049241">ပင်နံပါတ် မမှန်ပါ။ ထပ်ကြိုးစားခွင့် <ph name="RETRIES" /> ကြိမ် ကျန်ပါသည်။</translation> <translation id="3341703758641437857">ဖိုင် URLs အားအသုံးပြုရန် ခွင့်ပြု</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" သည် ဤနောက်ဆက်တွဲကို ဖယ်ရှားလိုသည်။</translation> @@ -3136,6 +3138,7 @@ <translation id="369489984217678710">စကားဝှက်များနှင့် အခြား အကောင့်ဝင်ရောက်ခြင်း ဒေတာများ</translation> <translation id="369522892592566391">{NUM_FILES,plural, =0{လုံခြုံရေး စစ်ဆေးမှုများ လုပ်ပြီးပြီ။ သင့်ဒေတာကို အပ်လုဒ်လုပ်ပါမည်။}=1{လုံခြုံရေး စစ်ဆေးမှုများ လုပ်ပြီးပြီ။ သင့်ဖိုင်ကို အပ်လုဒ်လုပ်ပါမည်။}other{လုံခြုံရေး စစ်ဆေးမှုများ လုပ်ပြီးပြီ။ သင့်ဖိုင်များကို အပ်လုဒ်လုပ်ပါမည်။}}</translation> <translation id="3696817060563289264">စာသားမှတ်မိခြင်းဖိုင်များ ဒေါင်းလုဒ်လုပ်ပြီးပြီ</translation> +<translation id="3697716475445175867">နောက်ဆုံး ဖွင့်ခဲ့ချိန်</translation> <translation id="3698471669415859717">ပြန်လည်စိစစ် ပြီးပါပြီ</translation> <translation id="3698825735945432002">စစ်ထုတ်မှုအမျိုးအစား</translation> <translation id="3699624789011381381">အီးမေးလ် လိပ်စာ</translation> @@ -5059,7 +5062,7 @@ <translation id="5428850089342283580"><ph name="ACCNAME_APP" /> (မွမ်းမံမှု ရနိုင်)</translation> <translation id="542948651837270806">'ယုံကြည်စိတ်ချရသည့် စနစ်မော်ဂျူး' ဖာမ်းဝဲအတွက် အပ်ဒိတ်ထည့်သွင်းရန် လိုအပ်သည်။ <ph name="TPM_FIRMWARE_UPDATE_LINK" /> ကို ကြည့်ပါ</translation> <translation id="5429818411180678468">အလျားပြည့်</translation> -<translation id="5430931332414098647">အမြန်ချိတ်ဆက်မျှဝေခြင်း</translation> +<translation id="5430931332414098647">အလိုအလျောက် ချိတ်ဆက်မျှဝေခြင်း</translation> <translation id="5431318178759467895">အရောင်</translation> <translation id="5432145523462851548"><ph name="FILE_NAME" /> ကို ဖိုင်တွဲတွင်ပြရန်</translation> <translation id="543338862236136125">စကားဝှက်ကို တည်းဖြတ်ခြင်း</translation> @@ -5591,6 +5594,7 @@ <translation id="5904614460720589786">စီစဉ်သတ်မှတ်မှု ပြဿနာကြောင့် <ph name="APP_NAME" /> ကို စနစ်ထည့်သွင်း၍မရပါ။ သင့်စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။ အမှားကုဒ်- <ph name="ERROR_CODE" />။</translation> <translation id="5906655207909574370">အပ်ဒိတ်ပြီးရန် အနည်းငယ်သာလိုပါသည်။ အပ်ဒိတ်လုပ်ခြင်းကို အဆုံးသတ်ရန် သင့်စက်ပစ္စည်းကို ပြန်ဖွင့်ပါ။</translation> <translation id="5906732635754427568">ဤအက်ပ်နှင့်ဆက်စပ်သည့် ဒေတာကို ဤစက်ပစ္စည်းထဲမှ ဖယ်ရှားပါမည်။</translation> +<translation id="5906974869830879618">ပင်နံပါတ် ထည့်ပါ</translation> <translation id="5908474332780919512">သင်လက်မှတ်ထိုးဝင်သောအခါ အက်ပ်စတင်ရန်</translation> <translation id="5908695239556627796">မောက်စ်လှိမ့်သည့် မြန်နှုန်း</translation> <translation id="5909379458939060601">ဤပရိုဖိုင်နှင့် ဖွင့်ကြည့်ထားသည့်မှတ်တမ်းဒေတာကို ဖျက်မလား။</translation> @@ -5681,7 +5685,7 @@ <translation id="5978493744931296692">သင်၏စီမံခန့်ခွဲသူက အခြားပရိုဖိုင်များကို ပိတ်ထားသည်</translation> <translation id="5979084224081478209">စကားဝှက်များ စစ်ဆေးရန်</translation> <translation id="5979156418378918004">{NUM_EXTENSIONS,plural, =1{သင်သည် အန္တရာယ်ရှိနိုင်သော နောက်ဆက်တွဲ ၁ ခုကို ပြန်ဖွင့်လိုက်သည်}other{သင်သည် အန္တရာယ်ရှိနိုင်သော နောက်ဆက်တွဲ {NUM_EXTENSIONS} ခုကို ပြန်ဖွင့်လိုက်သည်}}</translation> -<translation id="5979353814339191480">ဒေတာအစီအစဉ် (သို့) မိုဘိုင်းကွန်ရက် ဒွန်ဂယ်ပါသော Chromebook များ (သို့) ခရီးဆောင်ဟော့စပေါ့နှင့် မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေသည့်အခါ ဤရွေးချယ်မှု သက်ရောက်ပါသည်</translation> +<translation id="5979353814339191480">ဒေတာအစီအစဉ် (သို့) မိုဘိုင်းကွန်ရက် ဒွန်ဂယ်ပါသော Chromebook များ (သို့) ဟော့စပေါ့သို့ မိုဘိုင်းသုံး၍ ချိတ်ဆက်သည့်အခါ ဤရွေးချယ်မှု သက်ရောက်ပါသည်</translation> <translation id="5979421442488174909">&ကို <ph name="LANGUAGE" />ဘာသာသို့ ပြန်ဆိုရန်</translation> <translation id="5979469435153841984">မှတ်ထားသော လိပ်စာများသို့ သွားရန် လိပ်စာဘားရှိ ကြယ်ပွင့်ကို နှိပ်ပါ</translation> <translation id="5981362776161841923">နောက်ဆက်တွဲခွင့်ပြုရန် အောက်ရှိ သင့်မူရင်းဆက်တင်ကို ပြောင်းနိုင်သည်။</translation> @@ -6360,6 +6364,7 @@ <translation id="6596816719288285829">IP လိပ်စာ</translation> <translation id="6597017209724497268">နမူနာများ</translation> <translation id="6597331566371766302">အောက်ပါနောက်ဆက်တွဲများကို သင့်စီမံသူက ပိတ်ထားသည်-</translation> +<translation id="659894938503552850">အသစ်ဆုံး</translation> <translation id="6601262427770154296">အသုံးပြုသူအဘိဓာန်များ စီမံရန်</translation> <translation id="6601612474695404578">အချို့ဝဘ်ဆိုက်များက ၎င်းတို့၏စာမျက်နှာများ ဖွင့်ရန် ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီးများကို အသုံးပြုသည်။ ဝဘ်ဆိုက်တစ်ခု အလုပ်မလုပ်ပါက ကွတ်ကီးများကို ခွင့်ပြုကြည့်နိုင်ပါသည်။</translation> <translation id="6602937173026466876">သင့်ပုံနှိပ်စက်များကို အသုံးပြုရန်</translation> @@ -6975,6 +6980,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> က သင့်မိုက်ခရိုဖုန်းကို အသုံးပြုနေသည်</translation> <translation id="7141105143012495934">သင့်အကောင့်အသေးစိတ်များအား ထုတ်ယူ၍မရသောကြောင့် လက်မှတ်ထိုးဝင်ရောက်မှု မအောင်မြင်ပါ။ ကျေးဇူးပြု၍ သင့်ကြီးကြပ်သူကို ဆက်သွယ်ပါ သို့မဟုတ် နောက်တစ်ကြိမ်ကြိုးစားပါ။</translation> <translation id="7141844554192012199">စစ်ဆေးရန်</translation> +<translation id="7143207342074048698">ချိတ်ဆက်နေသည်</translation> <translation id="7144878232160441200">ထပ်စမ်းရန်</translation> <translation id="7148426638542880639">ဝဘ်ဆိုက်များက သင်မျှော်မှန်းထားသည့်အတိုင်း လုပ်ဆောင်နိုင်မည်မဟုတ်ပါ။ စက်တွင် သင်ဝင်ကြည့်သည့် ဝဘ်ဆိုက်အကြောင်း အချက်အလက် မချန်ထားစေလိုပါက ၎င်းကိုရွေးပါ။</translation> <translation id="7149839598364933473">ဤစက်ကို <ph name="DEVICE_OS" /> စက်တစ်ခုအဖြစ် ပြောင်းလဲပါ။</translation> @@ -7702,7 +7708,7 @@ <translation id="778330624322499012"><ph name="PLUGIN_NAME" /> အားဖွင့်မရပါ။</translation> <translation id="7784067724422331729">သင့်ကွန်ပျူတာရှိ လုံခြုံရေး ကြိုတင်ချိန်ညှိမှုများသည် ဤဖိုင်အား ပိတ်ဆို့ထားသည်။</translation> <translation id="7784796923038949829">ဝဘ်ဆိုက်၏ဒေတာများကို ဖတ်၍ (သို့) ပြောင်း၍ မရပါ</translation> -<translation id="778480864305029524">အမြန်ချိတ်ဆက်မျှဝေခြင်းသုံးရန် Google Play ဝန်ဆောင်မှုများအတွက် အကြောင်းကြားချက်များကို ဖွင့်ပါ။</translation> +<translation id="778480864305029524">အလိုအလျောက် ချိတ်ဆက်မျှဝေခြင်းသုံးရန် Google Play ဝန်ဆောင်မှုများအတွက် အကြောင်းကြားချက်များကို ဖွင့်ပါ။</translation> <translation id="7785471469930192436">သက်ဆိုင်မှုရှိပါက သင်၏ရှာဖွေမှတ်တမ်းကို ဖျက်ရန်အတွက် သင့်ရှာဖွေရေး အင်ဂျင်၏ ညွှန်ကြားချက်များကို ကြည့်ပါ</translation> <translation id="7786889348652477777">အက်ပ်ကို ပြန်စရန်</translation> <translation id="7787308148023287649">အခြားမျက်နှာပြင်တစ်ခုပေါ်တွင် ပြသပါ</translation> @@ -8141,6 +8147,7 @@ <translation id="8161293209665121583">အင်တာနက်စာမျက်နှာများအတွက် ဖတ်ရှုစနစ်မုဒ်</translation> <translation id="8161604891089629425">အနားသတ်ဖောင့်</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{တဘ်ကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ခြင်း}other{တဘ်များကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ခြင်း}}</translation> +<translation id="8163708146810922598">အဟောင်းဆုံး</translation> <translation id="8165997195302308593">Crostini ပို့တ် ထပ်ဆင့်ပို့ခြင်း</translation> <translation id="816704878106051517">{COUNT,plural, =1{ဖုန်းနံပါတ်တစ်ခု}other{ဖုန်းနံပါတ် # ခု}}</translation> <translation id="8168071266284693455">သင့်လိပ်စာများ၊ စကားဝှက်များ၊ မှတ်တမ်းနှင့် အခြားအရာများကို သင့်စက်အားလုံးတွင် စင့်ခ်လုပ်ထားသည်</translation> @@ -8542,7 +8549,7 @@ <translation id="8528074251912154910">ဘာသာစကားများ ထည့်ရန်</translation> <translation id="8528479410903501741">IBAN သိမ်းရန်</translation> <translation id="8528962588711550376">လက်မှတ်ထိုး ဝင်နေသည်။</translation> -<translation id="8529925957403338845">မိုဘိုင်းဖုန်းကို မိုဒမ်အဖြစ် ချက်ချင်းချိတ်ဆက် အသုံးပြုခြင်း မအောင်မြင်ပါ</translation> +<translation id="8529925957403338845">အလိုအလျောက် ချိတ်ဆက်မျှဝေခြင်း မအောင်မြင်ပါ</translation> <translation id="8531701051932785007">‘အရည်အသွေးမြှင့် ဘေးကင်းလုံခြုံသည့် အသုံးပြုမှု’ ပိတ်ထားသည်</translation> <translation id="8534656636775144800">ဒိုမိန်းသို့ ချိတ်ဆက်နေစဉ် တစ်စုံတစ်ခုမှားယွင်းသွားပါသည်။ နောက်မှ ထပ်စမ်းကြည့်ပါ။</translation> <translation id="8535005006684281994">Netscape အသိမှတ်ပြု လက်မှတ် ပြန်လည်ဆန်းသစ်မှု URL</translation> @@ -8655,6 +8662,7 @@ <translation id="8637688295594795546">စနစ် မွမ်းမံမှု ရှိသည်။ ဒေါင်းလုဒ် လုပ်ရန် ပြင်ဆင်နေ…</translation> <translation id="8639047128869322042">အန္တရာယ်ရှိသည့် ဆော့ဖ်ဝဲကို စစ်ဆေးနေသည်...</translation> <translation id="8639635302972078117">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ ဤစက်ပစ္စည်းက အမှားရှာဖွေမှု၊ စက်ပစ္စည်းနှင့် အက်ပ်အသုံးပြုမှု ဒေတာတို့ကို လောလောဆယ်တွင် Google သို့ အလိုအလျောက် ပို့ပေးပါသည်။ ၎င်းကို အသုံးပြု၍ သင့်ကလေး မည်သူမည်ဝါဖြစ်ကြောင်း ထုတ်ဖော်သွားမည် မဟုတ်ဘဲ စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် အသုံးပြုသွားပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ သင့်ကလေးအတွက် ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သူ၏ Google အကောင့်သို့ သိမ်းသွားပါမည်။</translation> +<translation id="8640575194957831802">နောက်ဆုံး ဖွင့်ခဲ့ချိန်</translation> <translation id="8642900771896232685">၂ စက္ကန့်</translation> <translation id="8642947597466641025">စာလုံးပိုကြီးလာအောင် လုပ်</translation> <translation id="8643403533759285912">အုပ်စုဖျက်ရန်</translation> @@ -9378,6 +9386,7 @@ <translation id="964790508619473209">ဖန်သားပြင် အစီအစဉ်</translation> <translation id="965211523698323809">သင်၏ <ph name="DEVICE_TYPE" /> မှနေ၍ မိုဘိုင်းမက်ဆေ့ဂျ်များ ပို့ခြင်း၊ လက်ခံခြင်းတို့ ပြုလုပ်နိုင်သည်။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast တွင် ပြဿနာရှိကြောင်း တိုင်ကြားရန်</translation> +<translation id="966588271015727539">ဘလူးတုသ်မျက်မမြင်စာဖတ်ကိရိယာ ရွေးပါ</translation> <translation id="967398046773905967">HID စက်များ အသုံးပြုရန် မည်သည့်ဝဘ်ဆိုက်ကိုမျှ ခွင့်မပြုပါနှင့်</translation> <translation id="967624055006145463">သိမ်းဆည်းထားသည့် ဒေတာ</translation> <translation id="96774243435178359">စီမံခန့်ခွဲသော ပုံနှိပ်ထုတ်များ</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 01b5769..11ba2a694 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Linux प्रयोग गर्न कम्तीमा पनि <ph name="INSTALL_SIZE" /> ठाउँ खाली राख्न सिफारिस गरिन्छ। थप ठाउँ खाली गर्न आफ्नो यन्त्रमा भएका फाइलहरू मेटाउनुहोस्।</translation> <translation id="1038643060055067718">लाइनहरू:</translation> <translation id="1039337018183941703">अमान्य वा बिग्रिएको फाइल</translation> +<translation id="1040761927998636252"><ph name="URL" /> को नाम नराखिएको बुकमार्क</translation> <translation id="1041175011127912238">यो पृष्ठले प्रतिक्रिया जनाइरहेको छैन</translation> <translation id="1041263367839475438">उपलब्ध डिभाइस</translation> <translation id="1042174272890264476">तपाइँको कम्प्युटर <ph name="SHORT_PRODUCT_NAME" /> को RLZ अन्तरनिर्मित पुस्तकालयसँग पनि आउँछ। एक विशेष वृद्धि जनक अभियानद्वारा चालू भएको खोजीहरू र <ph name="SHORT_PRODUCT_NAME" /> प्रयोगहरू नाप्नको लागि RLZ ले एउटा अद्वितीय नभएको, व्यक्तिगत नभएको ठम्याउन सकिने ट्याग तोक्छ। यी लेबुलहरू कहिलेकाही <ph name="PRODUCT_NAME" /> मा Google खोजी क्वेरीहरूमका देखा पर्छन्।</translation> @@ -654,7 +655,7 @@ <translation id="1556537182262721003">प्रोफाइलमा एक्स्टेन्शन निर्देशिका सार्न सकिएन।</translation> <translation id="1558391695376153246">इन्कोग्निटो ट्याबहरू बन्द गरियोस्</translation> <translation id="155865706765934889">टचप्याड</translation> -<translation id="1562119309884184621">तपाईंले यी व्यक्तिलाई आफ्नो सम्पर्क सूचीमा थप्नुभयो भने अर्को पटक उहाँले सेयर गर्दा याद राखिने छ</translation> +<translation id="1562119309884184621">तपाईंले यी व्यक्तिलाई आफ्नो कन्ट्याक्टमा थप्नुभयो भने अर्को पटक उहाँले सेयर गर्दा याद राखिने छ</translation> <translation id="1563702743503072935">तपाईं साइन इन भएका बेला तपाईंको Google खातामा सुरक्षित गरिएका पासवर्डहरू यो डिभाइसमा पनि उपलब्ध हुने छन्</translation> <translation id="1566049601598938765">वेबसाइट</translation> <translation id="15662109988763471">चयन गरिएको प्रिन्टर उपलब्ध छैन वा त्यसलाई राम्ररी स्थापना गरिएको छैन। आफ्नो प्रिन्टर जाँच्नुहोस् वा अर्को प्रिन्टर चयन गरी हेर्नुहोस्।</translation> @@ -1055,7 +1056,7 @@ <translation id="1880905663253319515">प्रमाणपत्र "<ph name="CERTIFICATE_NAME" />" लाई मेटाउने?</translation> <translation id="1881445033931614352">किबोर्ड लेआउट</translation> <translation id="1881577802939775675">{COUNT,plural, =1{वस्तु}other{# वटा वस्तु}}</translation> -<translation id="1884340228047885921">हालको भिजिबिलिटी सेटिङ यस प्रकार छ: सम्पर्क सूचीमा भएका केही मान्छेहरू</translation> +<translation id="1884340228047885921">हालको भिजिबिलिटी सेटिङ यस प्रकार छ: कन्ट्याक्टमा भएका केही मान्छेहरू</translation> <translation id="1884705339276589024">Linux को डिस्कको आकार बदल्नुहोस्</translation> <translation id="1885066963699478692">नीतिहरू तय गर्न प्रयोग भइरहेका XML फाइलहरू।</translation> <translation id="1885106732301550621">डिस्कको भण्डारण स्थान</translation> @@ -2147,6 +2148,7 @@ <translation id="2804043232879091219">वैकल्पिक ब्राउजर खोल्न सकिएन</translation> <translation id="2804667941345577550">तपाईंलाई खुला ट्याबहरूलगायत यस साइटबाट साइन आउट गरिने छ</translation> <translation id="2804680522274557040">क्यामेरा निष्क्रिय पारियो</translation> +<translation id="2804742109948581745">सँगसँगै</translation> <translation id="2805539617243680210">तपाईं पूर्ण रूपमा तयार हुनुहुन्छ!</translation> <translation id="2805646850212350655">Microsoft गुप्तिकरण फाइल प्रणाली</translation> <translation id="2805756323405976993">एप्स</translation> @@ -2649,7 +2651,7 @@ <translation id="3277214528693754078">टेक्स्ट कर्सर प्रयोग गरी नेभिगेट गर्नुहोस् (क्यारेट ब्राउजिङ)</translation> <translation id="3277594800340743211">ठुलो छाया</translation> <translation id="3278001907972365362">तपाईंका Google खाता(हरू) मा ध्यान दिनु पर्ने हुन्छ</translation> -<translation id="3279092821516760512">तपाईंको वरपर हुँदा तपाईंसँग सामग्री सेयर गर्न सक्ने सम्पर्क सूचीमा भएका व्यक्तिहरू चयन गर्नुहोस्। तपाईंले सामग्री सार्ने निम्तो स्वीकार नगरेसम्म सामग्री सार्ने काम सुरु हुँदैन।</translation> +<translation id="3279092821516760512">तपाईंको वरपर हुँदा तपाईंसँग सामग्री सेयर गर्न सक्ने कन्ट्याक्टमा भएका व्यक्तिहरू चयन गर्नुहोस्। तपाईंले सामग्री सार्ने निम्तो स्वीकार नगरेसम्म सामग्री सार्ने काम सुरु हुँदैन।</translation> <translation id="3279230909244266691">यो प्रक्रिया पूरा हुन केही बेर लाग्न सक्छ। भर्चुअल मेसिन सुरु गर्दै।</translation> <translation id="3280237271814976245">यसको &रूपमा बचत गर्नुहोस्...</translation> <translation id="3280243678470289153">Chrome मै रहनुहोस्</translation> @@ -2719,6 +2721,7 @@ <translation id="3336855445806447827">निश्चित छैन</translation> <translation id="3337568642696914359">साइटहरूलाई प्रोटोकोल व्यवस्थापन गर्ने अनुमति नदिइयोस्</translation> <translation id="3340620525920140773">डाउनलोड सम्पन्न भयो: <ph name="FILE_NAME" />।</translation> +<translation id="3340978935015468852">सेटिङहरू</translation> <translation id="3341699307020049241">PIN मिलेन। तपाईं अब <ph name="RETRIES" /> पटक मात्र प्रयास गर्न सक्नुहुन्छ।</translation> <translation id="3341703758641437857">फाइल URLs मा पहुँच अनुमति दिनुहोस्</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" यो विस्तार हटाउन चाहन्छ।</translation> @@ -3556,7 +3559,7 @@ <translation id="4047726037116394521">गृह स्क्रिनमा जानुहोस्</translation> <translation id="4048384495227695211">फोल्डरमा <ph name="FILE_NAME" /> देखाइयोस्</translation> <translation id="404894744863342743">यो डिभाइस प्रयोग गर्ने अन्य व्यक्तिहरूले तपाईंको पासवर्ड देख्न नसकून् भन्नाका लागि डाउनलोड गरिएको फाइल प्रयोग गरिसकेपछि त्यसलाई मेटाउनुहोस्।</translation> -<translation id="4049783682480068824">{COUNT,plural, =1{सम्पर्क सूचीमा भएको # जना व्यक्ति उपलब्ध हुनुहुन्न। नजिकैका डिभाइससँग सेयर गर्ने सुविधा प्रयोग गरी उहाँसँग सेयर गर्न आफ्नो सम्पर्क सूचीमा उहाँको Google खातासँग सम्बद्ध इमेल ठेगाना हाल्नुहोस्।}other{सम्पर्क सूचीमा भएका # जना व्यक्ति उपलब्ध छैनन्। नजिकैका डिभाइससँग सेयर गर्ने सुविधा प्रयोग गरी उनीहरूसँग सेयर गर्न आफ्नो सम्पर्क सूचीमा उनीहरूको Google खातासँग सम्बद्ध इमेल ठेगाना हाल्नुहोस्।}}</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{कन्ट्याक्टमा भएको # जना व्यक्ति उपलब्ध हुनुहुन्न। नजिकैका डिभाइससँग सेयर गर्ने सुविधा प्रयोग गरी उहाँसँग सेयर गर्न आफ्नो कन्ट्याक्टमा उहाँको Google खातासँग सम्बद्ध इमेल ठेगाना हाल्नुहोस्।}other{कन्ट्याक्टमा भएका # जना व्यक्ति उपलब्ध छैनन्। नजिकैका डिभाइससँग सेयर गर्ने सुविधा प्रयोग गरी उनीहरूसँग सेयर गर्न आफ्नो कन्ट्याक्टमा उनीहरूको Google खातासँग सम्बद्ध इमेल ठेगाना हाल्नुहोस्।}}</translation> <translation id="4050225813016893843">प्रमाणीकरण विधि</translation> <translation id="4050534976465737778">दुइटै डिभाइस अनलक गरिएका छन्, एकअर्काको नजिकै छन् र दुवैको ब्लुटुथ अन गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्। तपाईं आफ्ना सम्पर्क ठेगानाहरूको सूचीमा नभएको कुनै Chromebook सँग सेयर गर्दै हुनुहुन्छ भने त्यसमा 'नजिकैका यन्त्रमा फेला पर्ने' सुविधा अन गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस् (वस्तुस्थिति क्षेत्र खोल्नुहोस् र त्यसपछि 'नजिकैका यन्त्रमा फेला पर्ने' सुविधा अन गर्नुहोस्)। <ph name="LINK_BEGIN" />थप जान्नुहोस्<ph name="LINK_END" /></translation> <translation id="4052120076834320548">सानु</translation> @@ -4639,6 +4642,7 @@ <translation id="5056950756634735043">कन्टेनरमा कनेक्ट गरिँदै छ</translation> <translation id="5057110919553308744">तपाईंले विस्तारमा क्लिक गर्दा</translation> <translation id="5059241099014281248">साइन इन गर्ने कार्य प्रतिबन्धित गर्नुहोस्</translation> +<translation id="5059429103770496207">डिस्प्लेको शैली</translation> <translation id="5059526285558225588">सेयर गरिनु पर्ने जानकारी छनौट गर्नुहोस्</translation> <translation id="5060332552815861872">सुरक्षित गर्नका लागि १ प्रिन्टर उपलब्ध छ।</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{यस फोल्डरमा एउटा पुस्तक चिन्ह छ। तपाईं निश्चित रूपमा यसलाई मेटाउन चाहनुहुन्छ?}other{यस फोल्डरमा # वटा पुस्तक चिन्हहरू छन्। तपाईं निश्चित रूपमा यसलाई मेटाउन चाहनुहुन्छ?}}</translation> @@ -4948,6 +4952,7 @@ <translation id="5338503421962489998">स्थानीय भण्डारण</translation> <translation id="5339031667684712858">तपाईंले हटाउनुभएका साइटहरू</translation> <translation id="5340638867532133571">साइटहरूलाई भुक्तानी ह्यान्ड्लर स्थापना गर्ने अनुमति दिनुहोस् (सिफारिस गरिएको)</translation> +<translation id="5340787663756381836">&भेट्टाउनुहोस् र सम्पादन गर्नुहोस्</translation> <translation id="5341793073192892252">निम्न कुकीहरूमाथि रोक लगाइयो (तेस्रो पक्षीय कुकीहरूमाथि बिना अपवाद रोक लागिरहेको छ)</translation> <translation id="5342091991439452114">PIN अनिवार्य रूपले कम्तीमा <ph name="MINIMUM" /> अङ्कको हुनु पर्छ</translation> <translation id="5344036115151554031">Linux पुनर्स्थापना गर्दै</translation> @@ -4981,7 +4986,7 @@ <translation id="5372529912055771682">आपूर्ति गरिएएको नामांकन मोडलाई यो संस्करणको अपरेटिङ सिस्टमले समर्थन गर्दैन। कृपया तपाईंले सबैभन्दा नयाँ संस्करण चलाईरहनुभएको छ भनि सुनिश्चित गर्नुहोस् र पुन: प्रयास गर्नुहोस्।</translation> <translation id="5372579129492968947">एक्स्टेन्सन अनपिन गर्नुहोस्</translation> <translation id="5372632722660566343">कुनै खातामा साइन इन नगरिकनै Chromium चलाउनुहोस्</translation> -<translation id="5375318608039113175">नजिकैका डिभाइससँग सेयर गर्ने सुविधा प्रयोग गरी सम्पर्क सूचीमा भएका यी मान्छेहरूसँग सेयर गर्न आफ्नो सम्पर्क सूचीमा उनीहरूको Google खातामा लिंक गरिएको इमेल ठेगाना हाल्नुहोस्।</translation> +<translation id="5375318608039113175">नजिकैका डिभाइससँग सेयर गर्ने सुविधा प्रयोग गरी कन्ट्याक्टमा भएका यी मान्छेहरूसँग सेयर गर्न आफ्नो कन्ट्याक्टमा उनीहरूको Google खातामा लिंक गरिएको इमेल ठेगाना हाल्नुहोस्।</translation> <translation id="5375577102295339548">साइटहरूले तपाईं बट होइन भन्ने कुरा पुष्टि गर्न सक्छन्</translation> <translation id="5376094717770783089">यसले साइटसम्बन्धी अनुमति माग्छ</translation> <translation id="5376169624176189338">पछि जानको लागि क्लिक गर्नुहोस्, इतिहास हर्न होल्ड गर्नुहोस्</translation> @@ -5571,6 +5576,7 @@ <translation id="5904614460720589786">कन्फिगुरेसनसम्बन्धी कुनै समस्याका कारण <ph name="APP_NAME" /> सेटअप गर्न सकिएन। कृपया आफ्ना एड्मिनसँग सम्पर्क गर्नुहोस्। त्रुटिको कोड: <ph name="ERROR_CODE" />।</translation> <translation id="5906655207909574370">लगभग अद्यावधिक भयो! अद्यावधिक गर्ने कार्य सम्पन्न गर्न आफ्नो यन्त्रलाई पुनः सुरु गर्नुहोस्।</translation> <translation id="5906732635754427568">यस डिभाइसबाट यस एपसँग सम्बन्धित डेटा हटाइने छ।</translation> +<translation id="5906974869830879618">कृपया कुनै PIN प्रविष्टि गर्नुहोस्</translation> <translation id="5908474332780919512">मैले साइन इन गर्दा यो एप खोलियोस्</translation> <translation id="5908695239556627796">माउस स्क्रोल हुने गति</translation> <translation id="5909379458939060601">यो प्रोफाइल र ब्राउजिङ डेटा मेटाउने हो?</translation> @@ -5850,7 +5856,7 @@ <translation id="614890671148262506">यो साइटलाई सधैँ सूचनाहरू पठाउने अनुमति दिनुहोस्</translation> <translation id="6149015141270619212">इन्टरनेटमा जोड्न सकिएन</translation> <translation id="6150116777338468525">अडियोको गुणस्तर</translation> -<translation id="6150278227694566734">सम्पर्क सूचीमा भएका केही मान्छेहरू</translation> +<translation id="6150278227694566734">कन्ट्याक्टमा भएका केही मान्छेहरू</translation> <translation id="6150961653851236686">पृष्ठहरूलाई अनुवाद गर्दा यो भाषा प्रयोग गरिन्छ</translation> <translation id="6151323131516309312"><ph name="SITE_NAME" /> खोज्नको लागि <ph name="SEARCH_KEY" /> थिच्नुहोस्</translation> <translation id="6151771661215463137">उक्त फाइल तपाईंको डाउनलोड फोल्डरमा पहिलादेखि नै अवस्थित छ।</translation> @@ -6933,7 +6939,7 @@ <translation id="7113974454301513811">अब आफ्नो सूचीमा हालको ट्याब हाल्नुहोस्</translation> <translation id="7114054701490058191">पासवर्ड मिलेन</translation> <translation id="7114648273807173152">आफ्नो Google खातामा साइन इन गर्नका निम्ति Smart Lock को प्रयोग गर्न सेटिङहरू > कनेक्ट गरिएका डिभाइस > तपाईंको फोन > Smart Lock मा जानुहोस्।</translation> -<translation id="7115361495406486998">सम्पर्क सूचीमा Google खाता भएका कोही पनि हुनुहुन्न</translation> +<translation id="7115361495406486998">कन्ट्याक्टमा Google खाता भएका कोही पनि हुनुहुन्न</translation> <translation id="7117228822971127758">कृपया पछि फेरि प्रयास गर्नुहोस्</translation> <translation id="711840821796638741">व्यवस्थित बुकमार्कहरू देखाउनुहोस्</translation> <translation id="711985611146095797">तिमी यो पेजमार्फत आफ्ना साइन इन गरिएका Google खाताहरू व्यवस्थापन गर्न सक्छौ। <ph name="LINK_BEGIN" />थप जान<ph name="LINK_END" /></translation> @@ -6957,6 +6963,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> ले तपाईंको डिभाइसको माइक्रोफोन प्रयोग गरिरहेको छ</translation> <translation id="7141105143012495934">साइन इन असफल भयो किनभने तपाईँका खाता विवरणहरू पुनःप्राप्त गर्न सकेन। कृपया तपाईँको प्रशासकसँग सम्पर्क गर्नुहोस् वा फेरि प्रयास गर्नुहोस्।</translation> <translation id="7141844554192012199">जाँच गर्नुहोस्</translation> +<translation id="7143207342074048698">जडान गर्दै...</translation> <translation id="7144878232160441200">पुन: प्रयास गर्नुहोस्</translation> <translation id="7148426638542880639">साइटहरूले तपाईंले अपेक्षा गरेअनुसार काम नगर्न सक्छन्। तपाईं आफ्नो डिभाइसमा आफूले खोल्ने साइटहरूका बारेमा जानकारी सेभ गर्न चाहनुहुन्न भने यो विकल्प छनौट गर्नुहोस्।</translation> <translation id="7149839598364933473">यो डिभाइसमा <ph name="DEVICE_OS" /> चलाउनुहोस्।</translation> @@ -7159,7 +7166,7 @@ <translation id="7348093485538360975">अन्-स्क्रिन कुञ्जीपाटी</translation> <translation id="7349010927677336670">अवरोधविना भिडियो चल्ने गति</translation> <translation id="7352651011704765696">कुनै त्रुटि भयो</translation> -<translation id="7353261921908507769">तपाईं वरपर हुँदा तपाईंको सम्पर्क सूचीमा भएका व्यक्तिहरू सामग्री सेयर गर्न सक्छन्। तपाईंले सामग्री सार्ने निम्तो स्वीकार नगरेसम्म सामग्री सार्ने काम सुरु हुँदैन।</translation> +<translation id="7353261921908507769">तपाईं वरपर हुँदा तपाईंको कन्ट्याक्टमा भएका व्यक्तिहरू सामग्री सेयर गर्न सक्छन्। तपाईंले सामग्री सार्ने निम्तो स्वीकार नगरेसम्म सामग्री सार्ने काम सुरु हुँदैन।</translation> <translation id="735361434055555355">Linux स्थापना गर्दै...</translation> <translation id="7354120289251608189">तपाईं अब जुनसुकै बेला आफ्नो ब्राउजरलाई नयाँ स्वरूप दिन सक्नुहुन्छ।</translation> <translation id="7356908624372060336">नेटवर्क लगहरू</translation> @@ -8605,7 +8612,7 @@ <translation id="8613645710357126807">एक्स्टेन्सन प्रयोग गर्ने अनुमति दिइएको छैन</translation> <translation id="8613786722548417558"><ph name="FILE_NAME" /> सुरक्षासम्बन्धी जाँच गर्नै नसकिने गरी ठुलो छ। तपाईं बढीमा ५० एम.बि. सम्मका फाइलहरू खोल्न सक्नुहुन्छ।</translation> <translation id="8615618338313291042">इन्कोग्निटो एप: <ph name="APP_NAME" /></translation> -<translation id="8616441548384109662"><ph name="CONTACT_NAME" /> लाई आफ्नो सम्पर्क सूचीमा समावेश गर्नुहोस्</translation> +<translation id="8616441548384109662"><ph name="CONTACT_NAME" /> लाई आफ्नो कन्ट्याक्टमा समावेश गर्नुहोस्</translation> <translation id="8617748779076050570">सुरक्षित कनेक्सन ID: <ph name="CONNECTION_ID" /></translation> <translation id="8619803522055190423">ड्रप स्याडो</translation> <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" /> : <ph name="ERROR" /></translation> @@ -9270,7 +9277,7 @@ <translation id="9169496697824289689">किबोर्ड शर्टकटरहरू हेर्नुहोस्</translation> <translation id="916964310188958970">यो सुझाव किन देखाइयो?</translation> <translation id="9170048603158555829">Thunderbolt</translation> -<translation id="9170061643796692986">हालको भिजिबिलिटी सेटिङ यस प्रकार छ: सम्पर्क सूचीमा भएका सबै मान्छेहरू</translation> +<translation id="9170061643796692986">हालको भिजिबिलिटी सेटिङ यस प्रकार छ: कन्ट्याक्टमा भएका सबै मान्छेहरू</translation> <translation id="9170766151357647548">तपाईंको डिभाइसको EID नम्बर <ph name="EID_NUMBER" /> हो। यो नम्बर सेवा एक्टिभेट गर्ने प्रयोजनका लागि प्रयोग गर्न सकिन्छ।</translation> <translation id="9170848237812810038">&पूर्वस्थितिमा फर्काउनुहोस्</translation> <translation id="9170884462774788842">तपाईंको कम्प्युटरमा रहेको अर्को कार्यक्रमले एउटा थिम थपेको छ जसले Chrome ले काम गर्ने तरिकालाई बदल्न सक्छ।</translation> @@ -9338,6 +9345,7 @@ <translation id="939401694733344652">यी खाताहरू अहिले Android एपहरूमा प्रयोग गरिएका छैनन्। तपाईंले यो Android एपमा प्रयोग गर्नका लागि कुनै खाता चयन गर्नुभयो भने उक्त खाता अन्य Android एपहरूमा पनि प्रयोग गरिन सक्छ। तपाईं <ph name="LINK_BEGIN" />सेटिङ > खाताहरू<ph name="LINK_END" /> मा गई Android एपहरूलाई दिइएको अनुमति बदल्न सक्नुहुन्छ।</translation> <translation id="939598580284253335">पासफ्रेज प्रविष्टि गर्नुहोस्</translation> <translation id="939736085109172342">नयाँ फोल्डर</translation> +<translation id="940212040923880623">&भेट्टाउनुहोस् र सम्पादन गर्नुहोस्</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> Chrome को एउटा ट्याब र अडियोलाई साझेदारी गर्दैछ।</translation> <translation id="944799160843436808">Chromebook मा Steam सेटअप गर्ने क्रममा कुनै समस्या आयो</translation> <translation id="945522503751344254">पृष्ठपोषण पठाउनुहोस्</translation> @@ -9359,6 +9367,7 @@ <translation id="964790508619473209">स्क्रिनका सेटिङ</translation> <translation id="965211523698323809">आफ्नो <ph name="DEVICE_TYPE" /> बाट टेक्स्ट म्यासेजहरू सेयर गर्नुहोस्। <ph name="LINK_BEGIN" />थप जान्नुहोस्<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast मा भएको कुनै समस्याका बारेमा उजुरी गर्नुहोस्</translation> +<translation id="966588271015727539">कुनै ब्लुटुथ ब्रेल डिस्प्ले चयन गर्नुहोस्</translation> <translation id="967398046773905967">कुनै पनि साइटलाई HID यन्त्रहरूमाथि पहुँच राख्ने अनुमति नदिनुहोस्</translation> <translation id="967624055006145463">डेटा भण्डारण गरियो</translation> <translation id="96774243435178359">व्यवस्थापन गरिएका प्रिन्टरहरू</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index cb95d51..a4c1f6a5 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Er wordt ten minste <ph name="INSTALL_SIZE" /> vrije opslagruimte aanbevolen voor Linux. Verwijder bestanden op het apparaat om opslagruimte vrij te maken.</translation> <translation id="1038643060055067718">Regels:</translation> <translation id="1039337018183941703">Ongeldig of beschadigd bestand</translation> +<translation id="1040761927998636252">Naamloze bookmark voor <ph name="URL" /></translation> <translation id="1041175011127912238">Deze pagina reageert niet</translation> <translation id="1041263367839475438">Beschikbare apparaten</translation> <translation id="1042174272890264476">Je computer is ook uitgerust met de RLZ-bibliotheek van <ph name="SHORT_PRODUCT_NAME" />. RLZ wijst een niet-unieke, niet-persoonlijke tag toe om de zoekopdrachten en het gebruik van <ph name="SHORT_PRODUCT_NAME" /> te meten als gevolg van een bepaalde promotiecampagne. Deze labels worden soms weergegeven in Google-zoekopdrachten in <ph name="PRODUCT_NAME" />.</translation> @@ -2722,6 +2723,7 @@ <translation id="3336855445806447827">Weet niet</translation> <translation id="3337568642696914359">Niet toestaan dat sites protocollen verwerken</translation> <translation id="3340620525920140773">Download voltooid: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">instellingen</translation> <translation id="3341699307020049241">Onjuiste pincode. Je hebt nog <ph name="RETRIES" /> pogingen over.</translation> <translation id="3341703758641437857">Toegang tot bestand-URL's toestaan</translation> <translation id="3342361181740736773">'<ph name="TRIGGERING_EXTENSION_NAME" />' wil deze extensie verwijderen.</translation> @@ -5573,6 +5575,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="5906974869830879618">Geef een pincode op</translation> <translation id="5908474332780919512">App starten als je inlogt</translation> <translation id="5908695239556627796">Scrollsnelheid voor muis</translation> <translation id="5909379458939060601">Dit profiel en bijbehorende browsegegevens verwijderen?</translation> @@ -6957,6 +6960,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> gebruikt je microfoon</translation> <translation id="7141105143012495934">Inloggen is mislukt omdat je accountgegevens niet kunnen worden opgevraagd. Neem contact op met je beheerder of probeer het opnieuw.</translation> <translation id="7141844554192012199">Checken</translation> +<translation id="7143207342074048698">Verbinden</translation> <translation id="7144878232160441200">Opnieuw proberen</translation> <translation id="7148426638542880639">Sites werken misschien niet zoals verwacht. Kies deze optie als je geen informatie op je apparaat wilt achterlaten over sites die je bezoekt.</translation> <translation id="7149839598364933473">Zet dit apparaat om in een <ph name="DEVICE_OS" />-apparaat.</translation> @@ -9359,6 +9363,7 @@ <translation id="964790508619473209">Schermindeling</translation> <translation id="965211523698323809">Sms'jes verzenden en ontvangen op je <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation> <translation id="96535553604365597">Een probleem met Google Cast melden</translation> +<translation id="966588271015727539">Een Bluetooth-brailleleesregel selecteren</translation> <translation id="967398046773905967">Sites geen toegang tot HID-apparaten geven</translation> <translation id="967624055006145463">Opgeslagen gegevens</translation> <translation id="96774243435178359">Beheerde printers</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 6c648c0..848f6e7 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Minst <ph name="INSTALL_SIZE" /> ledig plass anbefales for Linux. For å få mer ledig plass, slett filer fra enheten.</translation> <translation id="1038643060055067718">Linjer:</translation> <translation id="1039337018183941703">Ugyldig eller skadet fil.</translation> +<translation id="1040761927998636252">Bokmerke uten navn for <ph name="URL" /></translation> <translation id="1041175011127912238">Denne siden svarer ikke</translation> <translation id="1041263367839475438">Tilgjengelige enheter</translation> <translation id="1042174272890264476">Datamaskinen din har <ph name="SHORT_PRODUCT_NAME" />s RLZ-bibliotek innebygget. RLZ tildeler en ikke-unik, ikke-personlig tagg for å måle søk og <ph name="SHORT_PRODUCT_NAME" />-bruk drevet av en bestemt markedsføringskampanje. Disse etikettene vises noen ganger i Google-søk i <ph name="PRODUCT_NAME" />.</translation> @@ -2732,6 +2733,7 @@ <translation id="3336855445806447827">Usikker</translation> <translation id="3337568642696914359">Ikke la nettsteder behandle protokoller</translation> <translation id="3340620525920140773">Nedlastingen er fullført: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">innstillinger</translation> <translation id="3341699307020049241">Feil PIN-kode. Du har <ph name="RETRIES" /> forsøk igjen.</translation> <translation id="3341703758641437857">Tillat tilgang til filnettadresser</translation> <translation id="3342361181740736773">«<ph name="TRIGGERING_EXTENSION_NAME" />» vil fjerne denne utvidelsen.</translation> @@ -5584,6 +5586,7 @@ <translation id="5904614460720589786">Kunne ikke konfigurere <ph name="APP_NAME" /> på grunn av et konfigurasjonsproblem. Kontakt administratoren din. Feilkode: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Nå er oppdateringen snart ferdig! Start enheten på nytt for å fullføre oppdateringen.</translation> <translation id="5906732635754427568">Data som er tilknyttet denne appen, fjernes fra denne enheten.</translation> +<translation id="5906974869830879618">Skriv inn en PIN-kode</translation> <translation id="5908474332780919512">Start appen når du logger på</translation> <translation id="5908695239556627796">Rullehastighet for musen</translation> <translation id="5909379458939060601">Vil du slette denne profilen og de tilhørende nettlesingsdataene?</translation> @@ -6971,6 +6974,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> bruker mikrofonen din</translation> <translation id="7141105143012495934">Påloggingen mislyktes fordi kontoopplysningene dine ikke kunne hentes ut. Kontakt administratoren din, eller prøv på nytt.</translation> <translation id="7141844554192012199">Sjekk</translation> +<translation id="7143207342074048698">Kobler til</translation> <translation id="7144878232160441200">Prøv på nytt</translation> <translation id="7148426638542880639">Noen nettsteder fungerer kanskje ikke som forventet. Velg dette alternativet hvis du ikke vil etterlate deg informasjon om nettstedene du besøker, på denne enheten.</translation> <translation id="7149839598364933473">Konverter denne enheten til en <ph name="DEVICE_OS" />-enhet.</translation> @@ -9375,6 +9379,7 @@ <translation id="964790508619473209">Skjermoppsett</translation> <translation id="965211523698323809">Send og motta SMS-er fra <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation> <translation id="96535553604365597">Rapportér problemer med Google Cast</translation> +<translation id="966588271015727539">Velg en Bluetooth-leselist</translation> <translation id="967398046773905967">Ikke gi noen nettsteder tilgang til HID-enheter</translation> <translation id="967624055006145463">Lagrede data</translation> <translation id="96774243435178359">Administrerte skrivere</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index 75f63849..9a2c85c7 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -2719,6 +2719,7 @@ <translation id="3336855445806447827">ନିଶ୍ଚିତ ନୁହେଁ</translation> <translation id="3337568642696914359">ପ୍ରୋଟୋକଲ୍ ହ୍ୟାଣ୍ଡେଲ୍ କରିବାକୁ ସାଇଟଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ</translation> <translation id="3340620525920140773">ଡାଉନ୍ଲୋଡ୍ ଶେଷ ହୋଇଛି: <ph name="FILE_NAME" />।</translation> +<translation id="3340978935015468852">ସେଟିଂସ୍</translation> <translation id="3341699307020049241">ଭୁଲ ପିନ୍। ଆପଣଙ୍କର <ph name="RETRIES" />ଟି ପ୍ରଚେଷ୍ଟା ବାକି ଅଛି।</translation> <translation id="3341703758641437857">ଫାଇଲ୍ URLଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ଏହି ଏକ୍ସଟେନ୍ସନ୍କୁ କାଢିବାକୁ ଚାହୁଁଛି।</translation> @@ -4091,6 +4092,7 @@ <translation id="4545759655004063573">ପର୍ଯ୍ୟାପ୍ତ ଅନୁମତି ନଥିବାରୁ ସେଭ୍ କରାଯାଇପାରିବ ନାହିଁ। ଦୟାକରି ଅନ୍ୟ ଗୋଟିଏ ଲୋକେସନ୍ରେ ସେଭ୍ କରନ୍ତୁ।</translation> <translation id="4546308221697447294">Google Chrome ସହ ଦ୍ରୁତତର ବ୍ରାଉଜ୍ କରନ୍ତୁ</translation> <translation id="4546345569117159016">ଡାହାଣପଟ ବଟନ୍</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> ଏହି ଏକ୍ସଟେନସନ ବ୍ୟବହର କରିବାକୁ ଚାହେଁ:</translation> <translation id="4546692474302123343">Google Assistant ଭଏସ୍ ଇନପୁଟ୍</translation> <translation id="4547659257713117923">ଅନ୍ୟ ଡିଭାଇସ୍ରୁ କୌଣସି ଟାବ୍ ନାହିଁ</translation> <translation id="4547672827276975204">ସ୍ଵଚାଳିତ ଭାବେ ସେଟ୍ କରନ୍ତୁ</translation> @@ -4948,6 +4950,7 @@ <translation id="5338503421962489998">ସ୍ଥାନୀୟ ଷ୍ଟୋରେଜ୍</translation> <translation id="5339031667684712858">ଆପଣ କାଢ଼ି ଦେଇଥିବା ସାଇଟଗୁଡ଼ିକ</translation> <translation id="5340638867532133571">ସାଇଟ୍ଗୁଡ଼ିକୁ ପେମେଣ୍ଟ ହ୍ୟାଣ୍ଡଲର୍ ଇନ୍ଷ୍ଟଲ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ (ସୁପାରିଶ କରାଯାଇଛି)</translation> +<translation id="5340787663756381836">&ଖୋଜି ଏଡିଟ କରନ୍ତୁ</translation> <translation id="5341793073192892252">ନିମ୍ନରେ ଦିଆଯାଇଥିବା କୁକୀଗୁଡ଼ିକ ଅବରୋଧ କରାଯାଇଥିଲା (କୌଣସି ବ୍ୟତିକ୍ରମ ବିନା ତୃତୀୟ-ପକ୍ଷ କୁକୀଗୁଡ଼ିକୁ ଅବରୋଧ କରାଯାଉଛି)</translation> <translation id="5342091991439452114">PIN ନିଶ୍ଚିତ ରୂପେ ଅତି କମ୍ରେ <ph name="MINIMUM" /> ଅଙ୍କ ବିଶିଷ୍ଟ ହେବା ଦରକାର</translation> <translation id="5344036115151554031">Linuxକୁ ରିଷ୍ଟୋର୍ କରାଯାଉଛି</translation> @@ -5569,6 +5572,7 @@ <translation id="5904614460720589786">ଏକ କନଫିଗରେସନ୍ ସମସ୍ୟା ଯୋଗୁଁ <ph name="APP_NAME" />କୁ ସେଟ୍ ଅପ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ। ତ୍ରୁଟି କୋଡ୍: <ph name="ERROR_CODE" />।</translation> <translation id="5906655207909574370">ପ୍ରାୟ ଅପ୍-ଟୁ-ଡେଟ୍! ଅପଡେଟିଂ ସମାପ୍ତ କରିବା ପାଇଁ ନିଜ ଡିଭାଇସ୍କୁ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ।</translation> <translation id="5906732635754427568">ଏହି ଡିଭାଇସ୍ରୁ ଏହି ଆପ୍ ସମ୍ବନ୍ଧିତ ଡାଟା କାଢ଼ିଦିଆଯିବ।</translation> +<translation id="5906974869830879618">ଦୟାକରି ଏକ ପିନ୍ ଲେଖନ୍ତୁ</translation> <translation id="5908474332780919512">ଆପଣ ସାଇନ୍ ଇନ୍ କରି ଆପ୍ ଆରମ୍ଭ କରନ୍ତୁ</translation> <translation id="5908695239556627796">ମାଉସ୍ ସ୍କ୍ରଲ୍ ବେଗ</translation> <translation id="5909379458939060601">ଏହି ପ୍ରୋଫାଇଲ ଏବଂ ବ୍ରାଉଜିଂ ଡାଟାକୁ ଡିଲିଟ କରିବେ?</translation> @@ -5837,6 +5841,7 @@ <translation id="6136114942382973861">ଡାଉନ୍ଲୋଡ୍ ବାର୍କୁ ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="6136287496450963112">ଆପଣଙ୍କର ସୁରକ୍ଷା କୀ ଏକ PIN ଦ୍ୱାରା ସୁରକ୍ଷିତ ନୁହେଁ। ଟିପଚିହ୍ନଗୁଡ଼ିକୁ ପରିଚାଳନା କରିବା ପାଇଁ ପ୍ରଥମେ ଏକ PIN ତିଆରି କରନ୍ତୁ।</translation> <translation id="6138680304137685902">SHA-384 ସହିତ X9.62 ECDSAର ସ୍ଵାକ୍ଷର</translation> +<translation id="6140948187512243695">ବିବରଣୀ ଦେଖାନ୍ତୁ</translation> <translation id="6141988275892716286">ଡାଉନ୍ଲୋଡ୍ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation> <translation id="6143186082490678276">ସାହାଯ୍ୟ ପାଆନ୍ତୁ</translation> <translation id="6143366292569327983">କେଉଁ ଭାଷାର ପୃଷ୍ଠାକୁ ଅନୁବାଦ କରିବେ ତାହା ବାଛନ୍ତୁ</translation> @@ -6956,6 +6961,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> ଆପଣଙ୍କ ମାଇକ୍ରୋଫୋନକୁ ବ୍ୟବହାର କରୁଛି</translation> <translation id="7141105143012495934">ଆପଣଙ୍କର ଆକାଉଣ୍ଟ ବିବରଣୀ ପୁନରୁଦ୍ଧାର ହୋଇନଥିବାରୁ ସାଇନ୍ ଇନ୍ ବିଫଳ ହୋଇଛି। ଦୟାକରି ଆପଣଙ୍କ ବ୍ୟବସ୍ଥାପକଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ ବା ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="7141844554192012199">ଯାଞ୍ଚ</translation> +<translation id="7143207342074048698">ସଂଯୋଗ କରୁଛି</translation> <translation id="7144878232160441200">ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation> <translation id="7148426638542880639">ଆପଣ ଆଶା କରୁଥିବା ପରି ସାଇଟଗୁଡ଼ିକ କାମ କରିନପାରେ। ଯଦି ଆପଣ ଭିଜିଟ କରୁଥିବା ସାଇଟଗୁଡ଼ିକ ବିଷୟରେ ସୂଚନା ଆପଣଙ୍କ ଡିଭାଇସରେ ଛାଡ଼ିବାକୁ ଚାହୁଁ ନାହାଁନ୍ତି ତେବେ ଏହି ବିକଳ୍ପ ବାଛନ୍ତୁ।</translation> <translation id="7149839598364933473">ଏହି ଡିଭାଇସକୁ ଏକ <ph name="DEVICE_OS" /> ଡିଭାଇସରେ ରୂପାନ୍ତର କରନ୍ତୁ।</translation> @@ -9336,6 +9342,7 @@ <translation id="939401694733344652">ଏହି ଆକାଉଣ୍ଟଗୁଡ଼ିକ ବର୍ତ୍ତମାନ Android ଆପ୍ସରେ ବ୍ୟବହାର କରାଯାଉନାହିଁ। ଯଦି ଆପଣ ଏହି Android ଆପ ସହ ବ୍ୟବହାର କରିବା ପାଇଁ ଏକ ଆକାଉଣ୍ଟ ଚୟନ କରନ୍ତି, ତେବେ ଅନ୍ୟ Android ଆପ୍ସ ସହିତ ମଧ୍ୟ ଆକାଉଣ୍ଟଟି ବ୍ୟବହାର କରାଯାଇପାରିବ। ଆପଣ <ph name="LINK_BEGIN" />ସେଟିଂସ > ଆକାଉଣ୍ଟଗୁଡ଼ିକ<ph name="LINK_END" />ରେ Android ଆପର ଆକ୍ସେସ ପରିବର୍ତ୍ତନ କରିପାରିବେ।</translation> <translation id="939598580284253335">ପାସ୍-ଫ୍ରେଜ୍ ଲେଖନ୍ତୁ</translation> <translation id="939736085109172342">ନୂତନ ଫୋଲ୍ଡର</translation> +<translation id="940212040923880623">&ଖୋଜି ଏଡିଟ କରନ୍ତୁ</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> ଏକ ଟାବ୍ ଏବଂ ଅଡ଼ିଓ ସେୟାର୍ କରୁଛି।</translation> <translation id="944799160843436808">Chromebookରେ Steam ସେଟ ଅପ କରିବାରେ ଏକ ସମସ୍ୟା ହୋଇଛି</translation> <translation id="945522503751344254">ମତାମତ ପଠାନ୍ତୁ</translation> @@ -9357,6 +9364,7 @@ <translation id="964790508619473209">ସ୍କ୍ରିନ୍ ବ୍ୟବସ୍ଥିତ କରିବା ସେଟିଂସ୍</translation> <translation id="965211523698323809">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" />ରୁ ଟେକ୍ସଟ୍ ମେସେଜ୍ ପଠାନ୍ତୁ ଏବଂ ପ୍ରାପ୍ତ କରନ୍ତୁ। <ph name="LINK_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Castରେ ଥିବା ଏକ ସମସ୍ୟାର ରିପୋର୍ଟ କରନ୍ତୁ</translation> +<translation id="966588271015727539">ଏକ ବ୍ଲୁଟୁଥ୍ ବ୍ରେଲ୍ ଡିସ୍ପ୍ଲେ ଚୟନ କରନ୍ତୁ</translation> <translation id="967398046773905967">HID ଡିଭାଇସଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିବା ପାଇଁ କୌଣସି ସାଇଟକୁ ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ</translation> <translation id="967624055006145463">ଡାଟା ଷ୍ଟୋର୍ କରାଯାଇଛି</translation> <translation id="96774243435178359">ପରିଚାଳିତ ହେଉଥିବା ପ୍ରିଣ୍ଟରଗୁଡ଼ିକ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 2fe9841..dcdd5e0 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -2736,6 +2736,7 @@ <translation id="3336855445806447827">ਪੱਕਾ ਪਤਾ ਨਹੀਂ</translation> <translation id="3337568642696914359">ਸਾਈਟਾਂ ਨੂੰ ਪ੍ਰੋਟੋਕੋਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਾ ਦਿਓ</translation> <translation id="3340620525920140773">ਡਾਊਨਲੋਡ ਪੂਰਾ ਹੋਇਆ: <ph name="FILE_NAME" />।</translation> +<translation id="3340978935015468852">ਸੈਟਿੰਗਾਂ</translation> <translation id="3341699307020049241">ਗਲਤ ਪਿੰਨ। ਤੁਹਾਡੇ ਕੋਲ <ph name="RETRIES" /> ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਕੀ ਹਨ।</translation> <translation id="3341703758641437857">ਫਾਈਲ URL ਤੱਕ ਪਹੁੰਚ ਦੀ ਆਗਿਆ ਦਿਓ</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ਇਸ ਐਕਟੈਂਸ਼ਨ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੀ ਹੈ।</translation> @@ -5591,6 +5592,7 @@ <translation id="5904614460720589786">ਕਿਸੇ ਸੰਰੂਪਣ ਸੰਬੰਧੀ ਸਮੱਸਿਆ ਕਰਕੇ <ph name="APP_NAME" /> ਦਾ ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ। ਗੜਬੜ ਕੋਡ: <ph name="ERROR_CODE" />।</translation> <translation id="5906655207909574370">ਲਗਭਗ ਅੱਪ ਟੂ ਡੇਟ! ਅੱਪਡੇਟ ਕਰਨਾ ਪੂਰਾ ਕਰਨ ਲਈ ਆਪਣੀ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰੋ।</translation> <translation id="5906732635754427568">ਇਸ ਐਪ ਨਾਲ ਸਬੰਧਿਤ ਡਾਟੇ ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।</translation> +<translation id="5906974869830879618">ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਪਿੰਨ ਦਾਖਲ ਕਰੋ</translation> <translation id="5908474332780919512">ਸਾਈਨ-ਇਨ ਕਰਨ ਵੇਲੇ ਐਪ ਨੂੰ ਸ਼ੁਰੂ ਕਰੋ</translation> <translation id="5908695239556627796">ਮਾਊਸ ਸਕ੍ਰੋਲ ਗਤੀ</translation> <translation id="5909379458939060601">ਕੀ ਇਸ ਪ੍ਰੋਫਾਈਲ ਅਤੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਡਾਟੇ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</translation> @@ -6981,6 +6983,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> ਤੁਹਾਡੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ</translation> <translation id="7141105143012495934">ਸਾਈਨ-ਇਨ ਅਸਫਲ ਹੋਇਆ ਕਿਉਂਕਿ ਤੁਹਾਡੇ ਖਾਤੇ ਦਾ ਵੇਰਵਿਆਂ ਨੂੰ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਜਾਂ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="7141844554192012199">ਜਾਂਚ ਕਰੋ</translation> +<translation id="7143207342074048698">ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ</translation> <translation id="7144878232160441200">ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ</translation> <translation id="7148426638542880639">ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਸਾਈਟਾਂ ਤੁਹਾਡੀ ਉਮੀਦ ਮੁਤਾਬਕ ਕੰਮ ਨਾ ਕਰਨ। ਜੇ ਤੁਸੀਂ ਆਪਣੇ ਡੀਵਾਈਸ 'ਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਦੇਖੀਆਂ ਗਈਆਂ ਸਾਈਟਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਨਹੀਂ ਛੱਡਣਾ ਚਾਹੁੰਦੇ, ਤਾਂ ਇਸ ਵਿਕਲਪ ਨੂੰ ਚੁਣੋ।</translation> <translation id="7149839598364933473">ਇਸ ਡੀਵਾਈਸ ਨੂੰ <ph name="DEVICE_OS" /> ਡੀਵਾਈਸ ਵਿੱਚ ਬਦਲੋ।</translation> @@ -9384,6 +9387,7 @@ <translation id="964790508619473209">ਸਕ੍ਰੀਨ ਦਾ ਪ੍ਰਬੰਧ</translation> <translation id="965211523698323809">ਆਪਣੀ <ph name="DEVICE_TYPE" /> ਤੋਂ ਲਿਖਤ ਸੁਨੇਹੇ ਭੇਜੋ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰੋ। <ph name="LINK_BEGIN" />ਹੋਰ ਜਾਣੋ<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast ਸੰਬੰਧੀ ਕਿਸੇ ਸਮੱਸਿਆ ਦੀ ਰਿਪੋਰਟ ਕਰੋ</translation> +<translation id="966588271015727539">ਕੋਈ ਬਲੂਟੁੱਥ ਬਰੇਲ ਡਿਸਪਲੇ ਚੁਣੋ</translation> <translation id="967398046773905967">ਕਿਸੇ ਵੀ ਸਾਈਟ ਨੂੰ HID ਡੀਵਾਈਸਾਂ ਤੱਕ ਪਹੁੰਚ ਨਾ ਕਰਨ ਦਿਓ</translation> <translation id="967624055006145463">ਸਟੋਰ ਕੀਤਾ ਡਾਟਾ</translation> <translation id="96774243435178359">ਪ੍ਰਬੰਧਿਤ ਪ੍ਰਿੰਟਰ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index ad8cd348..72a6023 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Do korzystania z Linuksa zalecane jest co najmniej <ph name="INSTALL_SIZE" /> wolnego miejsca. Aby zwolnić miejsce, usuń pliki z urządzenia.</translation> <translation id="1038643060055067718">Wiersze</translation> <translation id="1039337018183941703">Nieprawidłowy lub uszkodzony plik</translation> +<translation id="1040761927998636252">Zakładka bez nazwy dla: <ph name="URL" /></translation> <translation id="1041175011127912238">Ta strona nie odpowiada</translation> <translation id="1041263367839475438">Dostępne urządzenia</translation> <translation id="1042174272890264476">Twój komputer zawiera również wbudowaną bibliotekę RLZ <ph name="SHORT_PRODUCT_NAME" />. Przypisuje ona powtarzalny, nieumożliwiający identyfikacji użytkownika tag służący do monitorowania wyszukiwań i używania <ph name="SHORT_PRODUCT_NAME" /> w ramach określonej kampanii promocyjnej. Etykiety te czasami pojawiają się w zapytaniach wyszukiwarki Google w <ph name="PRODUCT_NAME" />.</translation> @@ -2709,6 +2710,7 @@ <translation id="3336855445806447827">Nie wiem</translation> <translation id="3337568642696914359">Nie zezwalaj witrynom na obsługiwanie protokołów</translation> <translation id="3340620525920140773">Ukończono pobieranie: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">ustawienia</translation> <translation id="3341699307020049241">Nieprawidłowy kod PIN. Liczba pozostałych prób: <ph name="RETRIES" />.</translation> <translation id="3341703758641437857">Zezwalaj na dostęp do adresów URL plików</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />” chce usunąć to rozszerzenie.</translation> @@ -5563,6 +5565,7 @@ <translation id="5904614460720589786">Z powodu błędu konfiguracji nie udało się skonfigurować <ph name="APP_NAME" />. Skontaktuj się z administratorem. Kod błędu: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Już prawie gotowe. Uruchom ponownie urządzenie, by zakończyć aktualizację.</translation> <translation id="5906732635754427568">Dane powiązane z tą aplikacją zostaną usunięte z urządzenia.</translation> +<translation id="5906974869830879618">Podaj kod PIN</translation> <translation id="5908474332780919512">Uruchom aplikację po zalogowaniu</translation> <translation id="5908695239556627796">Szybkość przewijania kółkiem myszy</translation> <translation id="5909379458939060601">Usunąć ten profil i dane przeglądania?</translation> @@ -6952,6 +6955,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> używa Twojego mikrofonu</translation> <translation id="7141105143012495934">Nie udało się zalogować, bo nie można pobrać informacji o koncie. Skontaktuj się z administratorem lub spróbuj ponownie.</translation> <translation id="7141844554192012199">Sprawdzanie</translation> +<translation id="7143207342074048698">Łączenie</translation> <translation id="7144878232160441200">Spróbuj jeszcze raz</translation> <translation id="7148426638542880639">Strony mogą nie działać zgodnie z oczekiwaniami. Wybierz tę opcję, jeśli nie chcesz, aby na urządzeniu były zapisywane informacje o odwiedzanych stronach.</translation> <translation id="7149839598364933473">Przekonwertuj to urządzenie na urządzenie z systemem operacyjnym <ph name="DEVICE_OS" />.</translation> @@ -9352,6 +9356,7 @@ <translation id="964790508619473209">Rozmieszczanie ekranów</translation> <translation id="965211523698323809">Wysyłanie i odbieranie SMS-ów na urządzeniu <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation> <translation id="96535553604365597">Zgłoś problem z Google Cast</translation> +<translation id="966588271015727539">Wybierz monitor brajlowski Bluetooth</translation> <translation id="967398046773905967">Nie zezwalaj żadnym stronom na dostęp do urządzeń HID</translation> <translation id="967624055006145463">Zapisane dane</translation> <translation id="96774243435178359">Zarządzane drukarki</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index 0d1df6b..d2beb9a8 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Recomenda-se ter pelo menos <ph name="INSTALL_SIZE" /> de espaço livre para o Linux. Para liberar espaço, exclua arquivos do dispositivo.</translation> <translation id="1038643060055067718">Linhas:</translation> <translation id="1039337018183941703">Arquivo inválido ou corrompido</translation> +<translation id="1040761927998636252">Favorito sem nome para <ph name="URL" /></translation> <translation id="1041175011127912238">Esta página não está respondendo</translation> <translation id="1041263367839475438">Dispositivos disponíveis</translation> <translation id="1042174272890264476">Seu computador já vem com a biblioteca RLZ do <ph name="SHORT_PRODUCT_NAME" /> integrada. O RLZ atribui uma tag não exclusiva e sem identificação pessoal para medir as pesquisas e o uso do <ph name="SHORT_PRODUCT_NAME" /> gerados por uma campanha promocional específica. Esses marcadores às vezes aparecem em consultas da Pesquisa Google no <ph name="PRODUCT_NAME" />.</translation> @@ -2738,6 +2739,7 @@ <translation id="3336855445806447827">Não sei</translation> <translation id="3337568642696914359">Não permitir que os sites gerenciem protocolos</translation> <translation id="3340620525920140773">Download concluído: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">configurações</translation> <translation id="3341699307020049241">PIN incorreto. Você tem <ph name="RETRIES" /> tentativas restantes.</translation> <translation id="3341703758641437857">Permitir acesso a URLs de arquivo </translation> @@ -5596,6 +5598,7 @@ <translation id="5904614460720589786">Não foi possível definir o app <ph name="APP_NAME" /> devido a um problema de configuração. Entre em contato com o administrador. Código do erro: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Atualização quase concluída. Reinicie o dispositivo para concluí-la.</translation> <translation id="5906732635754427568">Os dados associados a este app serão removidos deste dispositivo.</translation> +<translation id="5906974869830879618">Insira um PIN</translation> <translation id="5908474332780919512">Iniciar app ao fazer login</translation> <translation id="5908695239556627796">Velocidade de rolagem do mouse</translation> <translation id="5909379458939060601">Excluir este perfil e os dados de navegação?</translation> @@ -6985,6 +6988,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> está usando o microfone</translation> <translation id="7141105143012495934">O login falhou porque não foi possível recuperar detalhes da sua conta. Entre em contato com o administrador ou tente novamente.</translation> <translation id="7141844554192012199">Check-up</translation> +<translation id="7143207342074048698">Conectando</translation> <translation id="7144878232160441200">Tentar novamente</translation> <translation id="7148426638542880639">Os sites podem não funcionar conforme o esperado. Escolha esta opção se não quiser deixar informações no seu dispositivo sobre os sites visitados.</translation> <translation id="7149839598364933473">Converter este dispositivo para usar o <ph name="DEVICE_OS" />.</translation> @@ -9390,6 +9394,7 @@ <translation id="964790508619473209">Disposição da tela</translation> <translation id="965211523698323809">Envie e receba mensagens de texto no <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation> <translation id="96535553604365597">Informar um problema com o Google Cast</translation> +<translation id="966588271015727539">Selecione uma linha braille com Bluetooth</translation> <translation id="967398046773905967">Não permitir que nenhum site acesse dispositivos HID</translation> <translation id="967624055006145463">Dados armazenados</translation> <translation id="96774243435178359">Impressoras gerenciadas</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 63dc530e..9e40d4d 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -2723,6 +2723,7 @@ <translation id="3336855445806447827">Não sei</translation> <translation id="3337568642696914359">Não permitir que os sites processem protocolos</translation> <translation id="3340620525920140773">Transferência concluída: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">definições</translation> <translation id="3341699307020049241">PIN incorreto. Tem mais <ph name="RETRIES" /> tentativas.</translation> <translation id="3341703758641437857">Permitir acesso a URLs de ficheiro</translation> <translation id="3342361181740736773">A extensão "<ph name="TRIGGERING_EXTENSION_NAME" />" pretende remover esta extensão.</translation> @@ -4954,6 +4955,7 @@ <translation id="5338503421962489998">Armazenamento local</translation> <translation id="5339031667684712858">Sites que removeu</translation> <translation id="5340638867532133571">Permitir que os sites instalem controladores de pagamentos (recomendado)</translation> +<translation id="5340787663756381836">&Localizar e editar</translation> <translation id="5341793073192892252">Os seguintes cookies foram bloqueados (os cookies de terceiros estão a ser bloqueados sem excepção)</translation> <translation id="5342091991439452114">O PIN deve ter pelo menos <ph name="MINIMUM" /> dígitos</translation> <translation id="5344036115151554031">A restaurar o Linux…</translation> @@ -5578,6 +5580,7 @@ <translation id="5904614460720589786">Não foi possível configurar a app <ph name="APP_NAME" /> devido a um problema na configuração. Contacte o seu administrador. Código de erro: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Quase atualizado! Reinicie o dispositivo para concluir a atualização.</translation> <translation id="5906732635754427568">Os dados associados a esta aplicação serão removidos deste dispositivo.</translation> +<translation id="5906974869830879618">Introduza um PIN.</translation> <translation id="5908474332780919512">Iniciar app quando inicia sessão</translation> <translation id="5908695239556627796">Velocidade de deslocação do rato</translation> <translation id="5909379458939060601">Eliminar este perfil e os dados de navegação?</translation> @@ -6965,6 +6968,7 @@ <translation id="7139627972753429585">A app <ph name="APP_NAME" /> está a utilizar o seu microfone.</translation> <translation id="7141105143012495934">O início de sessão falhou porque não foi possível obter os detalhes da sua conta. Contacte o gestor ou tente novamente.</translation> <translation id="7141844554192012199">Verificação</translation> +<translation id="7143207342074048698">A ligar</translation> <translation id="7144878232160441200">Tentar novamente</translation> <translation id="7148426638542880639">Os sites podem não funcionar como esperado. Escolha esta opção se não quiser deixar informações no seu dispositivo sobre os sites que visita.</translation> <translation id="7149839598364933473">Converta este dispositivo num dispositivo <ph name="DEVICE_OS" />.</translation> @@ -9347,6 +9351,7 @@ <translation id="939401694733344652">Estas contas não estão a ser utilizadas com apps Android neste momento. Se selecionar uma conta para utilizar com esta app Android, a conta também poderá ser utilizada com outras apps Android. Pode alterar o acesso das apps Android em <ph name="LINK_BEGIN" />Definições > Contas<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Introduzir frase de acesso</translation> <translation id="939736085109172342">Nova pasta</translation> +<translation id="940212040923880623">&Localizar e editar</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> está a partilhar um separador do Chrome e o áudio.</translation> <translation id="944799160843436808">Ocorreu um problema ao configurar o Steam no Chromebook</translation> <translation id="945522503751344254">Enviar feedback</translation> @@ -9368,6 +9373,7 @@ <translation id="964790508619473209">Posicionamento do ecrã</translation> <translation id="965211523698323809">Envie e receba mensagens de texto com o <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation> <translation id="96535553604365597">Comunicar um problema com o Google Cast</translation> +<translation id="966588271015727539">Selecionar um ecrã em braille Bluetooth</translation> <translation id="967398046773905967">Não permitir o acesso de sites a dispositivos HID</translation> <translation id="967624055006145463">Dados armazenados</translation> <translation id="96774243435178359">Impressoras geridas</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index ae9e4a8..bed04c75 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -2151,6 +2151,7 @@ <translation id="2804043232879091219">Browserul secundar nu a putut fi deschis</translation> <translation id="2804667941345577550">Te vei deconecta de la acest site, inclusiv din filele deschise</translation> <translation id="2804680522274557040">Camera foto este dezactivată</translation> +<translation id="2804742109948581745">Alăturat</translation> <translation id="2805539617243680210">Gata!</translation> <translation id="2805646850212350655">Sistem Microsoft de criptare a fișierelor</translation> <translation id="2805756323405976993">Aplicații</translation> @@ -2722,6 +2723,7 @@ <translation id="3336855445806447827">Nu știu sigur</translation> <translation id="3337568642696914359">Nu permite site-urilor să gestioneze protocoale</translation> <translation id="3340620525920140773">Descărcare finalizată: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">setări</translation> <translation id="3341699307020049241">Codul PIN este incorect. Mai ai <ph name="RETRIES" /> încercări.</translation> <translation id="3341703758641437857">Permite accesul la adresele URL de fișiere</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />” dorește să elimine această extensie.</translation> @@ -4643,6 +4645,7 @@ <translation id="5056950756634735043">Se conectează la container</translation> <translation id="5057110919553308744">Când dai clic pe extensie</translation> <translation id="5059241099014281248">Restricționează conectarea</translation> +<translation id="5059429103770496207">Stil de afișare</translation> <translation id="5059526285558225588">Alege ce să distribui</translation> <translation id="5060332552815861872">Există o imprimantă de salvat.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Acest dosar conține un marcaj. Sigur dorești să îl ștergi?}few{Acest dosar conține # marcaje. Sigur dorești să îl ștergi?}other{Acest dosar conține # de marcaje. Sigur dorești să îl ștergi?}}</translation> @@ -5576,6 +5579,7 @@ <translation id="5904614460720589786"><ph name="APP_NAME" /> nu s-a instalat din cauza unei probleme de configurație. Contactează administratorul. Cod de eroare: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Aproape actualizat! Repornește dispozitivul pentru a finaliza actualizarea.</translation> <translation id="5906732635754427568">Datele asociate acestei aplicații vor fi eliminate de pe dispozitiv.</translation> +<translation id="5906974869830879618">Introdu un cod PIN</translation> <translation id="5908474332780919512">Pornește aplicația când te conectezi</translation> <translation id="5908695239556627796">Viteza de derulare a mouse-ului</translation> <translation id="5909379458939060601">Ștergi profilul și datele de navigare?</translation> @@ -6965,6 +6969,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> folosește microfonul</translation> <translation id="7141105143012495934">Nu s-a conectat, deoarece nu s-au putut prelua detaliile contului. Contactează administratorul sau încearcă din nou.</translation> <translation id="7141844554192012199">Verificare</translation> +<translation id="7143207342074048698">Se conectează</translation> <translation id="7144878232160441200">Reîncearcă</translation> <translation id="7148426638542880639">Este posibil ca site-urile să nu funcționeze conform așteptărilor. Alege această opțiune dacă nu dorești să rămână informații pe dispozitiv despre site-urile pe care le accesezi.</translation> <translation id="7149839598364933473">Transformă dispozitivul într-un dispozitiv <ph name="DEVICE_OS" /></translation> @@ -9370,6 +9375,7 @@ <translation id="964790508619473209">Aranjarea pe ecran</translation> <translation id="965211523698323809">Trimite și primește mesaje text pe <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation> <translation id="96535553604365597">Raportează o problemă privind Google Cast</translation> +<translation id="966588271015727539">Selectează un afișaj Braille prin Bluetooth</translation> <translation id="967398046773905967">Nu permite niciunui site să acceseze dispozitive HID</translation> <translation id="967624055006145463">Date stocate</translation> <translation id="96774243435178359">Imprimante gestionate</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 59d56da..bbeadbc 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -2724,6 +2724,7 @@ <translation id="3336855445806447827">Не знаю</translation> <translation id="3337568642696914359">Запретить сайтам обрабатывать протоколы</translation> <translation id="3340620525920140773">Скачивание файла <ph name="FILE_NAME" /> завершено</translation> +<translation id="3340978935015468852">настройки</translation> <translation id="3341699307020049241">Неверный PIN-код. Осталось попыток: <ph name="RETRIES" />.</translation> <translation id="3341703758641437857">Разрешить открывать локальные файлы по ссылкам</translation> <translation id="3342361181740736773">Программа "<ph name="TRIGGERING_EXTENSION_NAME" />" пытается удалить это расширение.</translation> @@ -5579,6 +5580,7 @@ <translation id="5904614460720589786">Не удалось настроить <ph name="APP_NAME" /> из-за проблем с конфигурацией. Обратитесь к администратору. Код ошибки: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Чтобы завершить обновление, перезапустите устройство.</translation> <translation id="5906732635754427568">Данные, связанные с этим приложением, будут удалены с устройства.</translation> +<translation id="5906974869830879618">Введите PIN-код</translation> <translation id="5908474332780919512">Запускать при входе</translation> <translation id="5908695239556627796">Скорость прокрутки (для мыши)</translation> <translation id="5909379458939060601">Удалить этот профиль и данные о работе в браузере?</translation> @@ -6972,6 +6974,7 @@ <translation id="7139627972753429585">Приложение "<ph name="APP_NAME" />" использует микрофон</translation> <translation id="7141105143012495934">Ошибка входа: не удалось получить данные аккаунта. Обратитесь к администратору или повторите попытку.</translation> <translation id="7141844554192012199">Проверка паролей</translation> +<translation id="7143207342074048698">Подключение</translation> <translation id="7144878232160441200">Повторить</translation> <translation id="7148426638542880639">Сайты могут работать не так, как вы ожидаете. Выберите этот вариант, если не хотите, чтобы на вашем устройстве сохранялась информация о посещенных сайтах.</translation> <translation id="7149839598364933473">Установить <ph name="DEVICE_OS" /> на устройстве</translation> @@ -9378,6 +9381,7 @@ <translation id="964790508619473209">Расположение экранов</translation> <translation id="965211523698323809">Отправлять и получать SMS на устройстве <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" /></translation> <translation id="96535553604365597">Сообщить о проблеме с Google Cast</translation> +<translation id="966588271015727539">Выберите дисплей Брайля с технологией Bluetooth</translation> <translation id="967398046773905967">Запретить сайтам доступ к HID-устройствам</translation> <translation id="967624055006145463">Объем памяти</translation> <translation id="96774243435178359">Управляемые принтеры</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index dd6f8b4..1996037d 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -2725,6 +2725,7 @@ <translation id="3336855445806447827">ස්ථිර නැත</translation> <translation id="3337568642696914359">ප්රොටොකෝල හැසිරවීමට අඩවිවලට ඉඩ නොදෙන්න</translation> <translation id="3340620525920140773">බාගැනීම සම්පූර්ණයි: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">සැකසීම්</translation> <translation id="3341699307020049241">වැරදි රහස් අංකය. ඔබට ප්රයත්න <ph name="RETRIES" /> ක් ඉතිරිව ඇත.</translation> <translation id="3341703758641437857">ගොනු URL වෙත ප්රවේශයට ඉඩ දෙන්න</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" මෙම දිගුව ඉවත් කිරීමට කැමතියි.</translation> @@ -4956,6 +4957,7 @@ <translation id="5338503421962489998">ප්රාදේශීය ගබඩාව</translation> <translation id="5339031667684712858">ඔබ ඉවත් කළ අඩවි</translation> <translation id="5340638867532133571">අඩවිවලට ගෙවීම් හසුරුවනයන් ස්ථාපනයට ඉඩ දෙන්න (නිර්දේශිතයි)</translation> +<translation id="5340787663756381836">&සොයා ගන්න සහ සංස්කරණය කරන්න</translation> <translation id="5341793073192892252">පහත කුකීස් අවහිර කරන ලදී (තෙවැනි පාර්ශ්ව කුකීස් ව්යතිරේකයක් නොමැතිවම අවහිර වේ)</translation> <translation id="5342091991439452114">PIN එකෙහි අඩුම ගණනේ අංක <ph name="MINIMUM" />ක් වත් තිබිය යුතුය</translation> <translation id="5344036115151554031">ලිනක්ස් ප්රතිසාධන කිරීම</translation> @@ -5580,6 +5582,7 @@ <translation id="5904614460720589786">වින්යාස ගැටලුවක් හේතුවෙන් <ph name="APP_NAME" /> සැකසීමට නොහැකි විය. ඔබගේ පරිපාලක සම්බන්ධ කර ගන්න. දෝෂ කේතය: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">බොහෝ දුරට යාවත්කාලීනයි! යාවත්කාලීනය අවසන් කිරීමට ඔබේ උපාංගය යළි අරඹන්න.</translation> <translation id="5906732635754427568">මෙම යෙදුම සමඟ සම්බන්ධ දත්ත මෙම උපාංගයෙන් ඉවත් කරනු ඇත.</translation> +<translation id="5906974869830879618">pin එකක් ඇතුළු කරන්න</translation> <translation id="5908474332780919512">ඔබ පිරූ විට යෙදුම ආරම්භ කරන්න</translation> <translation id="5908695239556627796">මූසික අනුචලන වේගය</translation> <translation id="5909379458939060601">මෙම පැතිකඩ සහ බ්රවුස් කිරීමේ දත්ත මකන්නද?</translation> @@ -6967,6 +6970,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> ඔබේ මයික්රෆෝනය භාවිත කරමින්</translation> <translation id="7141105143012495934">ඔබේ ගිණුම් විස්තර යළි ලබා ගැනීමට නොහැකි වූ බැවින් පිරීම අසාර්ථකයි. කරුණාකර ඔබගේ පරිපාලක අමතන්න නැතහොත් නැවත උත්සාහ කරන්න.</translation> <translation id="7141844554192012199">පරීක්ෂාව</translation> +<translation id="7143207342074048698">සම්බන්ධ වෙමින්…</translation> <translation id="7144878232160441200">නැවත උත්සහ කරන්න</translation> <translation id="7148426638542880639">ඔබ අපේක්ෂා කරන පරිදි අඩවි ක්රියා නොකරනු ඇත. ඔබ පිවිසෙන අඩවි පිළිබඳ තොරතුරු ඔබේ උපාංගයේ තැබීමට ඔබට අවශ්ය නැතිනම් මෙම විකල්පය තෝරා ගන්න.</translation> <translation id="7149839598364933473">මෙම උපාංගය <ph name="DEVICE_OS" /> උපාංගයකට පරිවර්තනය කරන්න.</translation> @@ -9348,6 +9352,7 @@ <translation id="939401694733344652">මෙම ගිණුම් දැන් Android යෙදුම් සමඟ භාවිත නොවේ. ඔබ මෙම Android යෙදුම සමඟ භාවිත කිරීමට ගිණුමක් තෝරා ගතහොත්, එම ගිණුම වෙනත් Android යෙදුම් සමඟද භාවිත කළ හැකිය. ඔබට Android යෙදුම් ප්රවේශය <ph name="LINK_BEGIN" />සැකසීම් > ගිණුම්<ph name="LINK_END" /> තුළ වෙනස් කළ හැකිය.</translation> <translation id="939598580284253335">මුරවදන ඇතුළත් කරන්න</translation> <translation id="939736085109172342">නව ෆෝල්ඩරය</translation> +<translation id="940212040923880623">&සොයා ගන්න සහ සංස්කරණය කරන්න</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> Chrome ටැබයක් සහ ශ්රව්යයක් බෙදා ගනිමින් සිටී.</translation> <translation id="944799160843436808">Chromebook හි Steam පිහිටුවීමේ ගැටලුවක් විය</translation> <translation id="945522503751344254">අදහස් හා යෝජනා යවන්න</translation> @@ -9369,6 +9374,7 @@ <translation id="964790508619473209">තිර පිළියෙළ</translation> <translation id="965211523698323809">ඔබේ <ph name="DEVICE_TYPE" /> වෙතින් පාඨ පණිවුඩ යවන්න සහ ලබන්න. <ph name="LINK_BEGIN" />තවත් දැන ගන්න<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast සමගින් වන ගැටලුවක් වාර්තා කරන්න</translation> +<translation id="966588271015727539">බ්ලූටූත් බ්රේල් සංදර්ශකයක් තෝරන්න</translation> <translation id="967398046773905967">කිසිඳු වෙබ් අඩවියකට HID උපාංග වෙත ප්රවේශ වීමට ඉඩ නොදෙන්න</translation> <translation id="967624055006145463">දත්ත ගබඩා කර ඇත</translation> <translation id="96774243435178359">කළමනාකරණය කෙරෙන මුද්රණ යන්ත්ර</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index 18f42c87..9c4c1044 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -2724,6 +2724,7 @@ <translation id="3336855445806447827">Neviem</translation> <translation id="3337568642696914359">Nepovoliť webom obsluhovať protokoly</translation> <translation id="3340620525920140773">Sťahovanie bolo dokončené: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">nastavenia</translation> <translation id="3341699307020049241">Nesprávny PIN. Zostáva niekoľko pokusov (<ph name="RETRIES" />).</translation> <translation id="3341703758641437857">Povoliť prístup k webovým adresám súboru</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“ chce toto rozšírenie odstrániť.</translation> @@ -4096,6 +4097,7 @@ <translation id="4545759655004063573">Uloženie nie je možné z dôvodu nedostatočných oprávnení. Uložte položku inde.</translation> <translation id="4546308221697447294">Prehliadajte rýchlejšie pomocou prehliadača Google Chrome</translation> <translation id="4546345569117159016">Pravé tlačidlo</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> chce použiť toto rozšírenie:</translation> <translation id="4546692474302123343">Hlasový vstup Asistenta Google</translation> <translation id="4547659257713117923">Žiadne karty z iných zariadení</translation> <translation id="4547672827276975204">Nastaviť automaticky</translation> @@ -5578,6 +5580,7 @@ <translation id="5904614460720589786"><ph name="APP_NAME" /> sa nepodarilo nastaviť pre problém s konfiguráciou. Kontaktujte správcu. Kód chyby: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Aktualizácia je takmer hotová! Dokončite ju reštartovaním zariadenia.</translation> <translation id="5906732635754427568">Dáta priradené k danej aplikácii budú odstránené z tohto zariadenia.</translation> +<translation id="5906974869830879618">Zadajte PIN</translation> <translation id="5908474332780919512">Spustiť aplikáciu pri prihlásení</translation> <translation id="5908695239556627796">Rýchlosť posúvania myšou</translation> <translation id="5909379458939060601">Chcete odstrániť tento profil a dáta prehliadania?</translation> @@ -6969,6 +6972,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> používa váš mikrofón</translation> <translation id="7141105143012495934">Prihlásenie zlyhalo, pretože podrobnosti účtu sa nepodarilo načítať. Kontaktujte svojho správcu alebo to skúste znova.</translation> <translation id="7141844554192012199">Skontrolovať</translation> +<translation id="7143207342074048698">Pripája sa</translation> <translation id="7144878232160441200">Skúsiť znova</translation> <translation id="7148426638542880639">Weby nemusia fungovať podľa vašich očakávaní. Túto možnosť vyberte, ak nechcete v zariadení uchovávať informácie o navštívených weboch.</translation> <translation id="7149839598364933473">Zmeňte toto zariadenie na zariadenie s operačným systémom <ph name="DEVICE_OS" />.</translation> @@ -9374,6 +9378,7 @@ <translation id="964790508619473209">Usporiadanie obrazovky</translation> <translation id="965211523698323809">Odosielajte a prijímajte textové správy zo svojho zariadenia <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation> <translation id="96535553604365597">Nahlásiť problém pomocou technológie Google Cast</translation> +<translation id="966588271015727539">Vybrať Braillov displej s rozhraním Bluetooth</translation> <translation id="967398046773905967">Zakázať všetkým webom prístup k zariadeniam HID</translation> <translation id="967624055006145463">Uložené dáta</translation> <translation id="96774243435178359">Spravované tlačiarne</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 19914a6..1963bf66 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Za Linux priporočamo najmanj <ph name="INSTALL_SIZE" /> prostora. Če želite povečati nezasedeni prostor, izbrišite datoteke iz naprave.</translation> <translation id="1038643060055067718">Črte:</translation> <translation id="1039337018183941703">Neveljavna ali poškodovana datoteka</translation> +<translation id="1040761927998636252">Neimenovan zaznamek za <ph name="URL" /></translation> <translation id="1041175011127912238">Ta stran se ne odziva</translation> <translation id="1041263367839475438">Razpoložljive naprave</translation> <translation id="1042174272890264476">V vašem računalniku je tudi vgrajena knjižnica RLZ izdelka <ph name="SHORT_PRODUCT_NAME" />. RLZ za merjenje iskanj in uporabe izdelka <ph name="SHORT_PRODUCT_NAME" /> v okviru določene promocijske akcije dodeli neenolično oznako, ki ne omogoča osebne prepoznave. Te oznake so včasih v izdelku <ph name="PRODUCT_NAME" /> prikazane v iskalnih poizvedbah v Googlu.</translation> @@ -2168,6 +2169,7 @@ <translation id="2804043232879091219">Nadomestnega brskalnika ni bilo mogoče odpreti</translation> <translation id="2804667941345577550">Odjavljeni boste s tega spletnega mesta, vključno s tistim na odprtih zavihkih</translation> <translation id="2804680522274557040">Fotoaparat je izklopljen</translation> +<translation id="2804742109948581745">Vzporedno</translation> <translation id="2805539617243680210">Pripravljeni ste.</translation> <translation id="2805646850212350655">Microsoftov šifrirni datotečni sistem</translation> <translation id="2805756323405976993">Aplikacije</translation> @@ -2739,6 +2741,7 @@ <translation id="3336855445806447827">Ne vem</translation> <translation id="3337568642696914359">Spletnim mestom ni dovoljena obravnava protokolov.</translation> <translation id="3340620525920140773">Prenos je končan: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">nastavitve</translation> <translation id="3341699307020049241">Napačna koda PIN. Imate še toliko poskusov: <ph name="RETRIES" />.</translation> <translation id="3341703758641437857">Dovoli dostop do URL-jev datoteke</translation> <translation id="3342361181740736773">»<ph name="TRIGGERING_EXTENSION_NAME" />« želi odstraniti to razširitev.</translation> @@ -4661,6 +4664,7 @@ <translation id="5056950756634735043">Povezovanje z vsebnikom</translation> <translation id="5057110919553308744">Ko kliknete razširitev</translation> <translation id="5059241099014281248">Omejitev prijave</translation> +<translation id="5059429103770496207">Slog prikaza</translation> <translation id="5059526285558225588">Izberite, kaj deliti z drugimi</translation> <translation id="5060332552815861872">Na voljo je 1 tiskalnik za shranjevanje.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Ta mapa vsebuje zaznamek. Ali ste prepričani, da jo želite izbrisati?}one{Ta mapa vsebuje # zaznamek. Ali ste prepričani, da jo želite izbrisati?}two{Ta mapa vsebuje # zaznamka. Ali ste prepričani, da jo želite izbrisati?}few{Ta mapa vsebuje # zaznamke. Ali ste prepričani, da jo želite izbrisati?}other{Ta mapa vsebuje # zaznamkov. Ali ste prepričani, da jo želite izbrisati?}}</translation> @@ -4970,6 +4974,7 @@ <translation id="5338503421962489998">Lokalna shramba</translation> <translation id="5339031667684712858">Spletna mesta, ki ste jih odstranili</translation> <translation id="5340638867532133571">Spletnim mestom dovoli namestitev rutin za obravnavo plačil (priporočeno)</translation> +<translation id="5340787663756381836">&Iskanje in urejanje</translation> <translation id="5341793073192892252">Ti piškotki so bili blokirani (piškotki drugih mest se blokirajo brez izjeme)</translation> <translation id="5342091991439452114">Koda PIN mora imeti vsaj toliko števk: <ph name="MINIMUM" /></translation> <translation id="5344036115151554031">Obnavljanje Linuxa</translation> @@ -5595,6 +5600,7 @@ <translation id="5904614460720589786">Aplikacije <ph name="APP_NAME" /> ni bilo mogoče nastaviti zaradi težave s konfiguracijo. Obrnite se na skrbnika. Koda napake: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Samo še malo. Znova zaženite napravo, da dokončate posodobitev.</translation> <translation id="5906732635754427568">Podatki, povezani s to aplikacijo, bodo odstranjeni iz te naprave.</translation> +<translation id="5906974869830879618">Vnesite kodo PIN</translation> <translation id="5908474332780919512">Zaženi aplikacijo ob prijavi</translation> <translation id="5908695239556627796">Hitrost drsenja z miško</translation> <translation id="5909379458939060601">Želite izbrisati ta profil in podatke o brskanju?</translation> @@ -6988,6 +6994,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> uporablja vaš mikrofon.</translation> <translation id="7141105143012495934">Prijava ni uspela, ker ni bilo mogoče pridobiti podrobnosti o računu. Obrnite se na skrbnika in poskusite znova.</translation> <translation id="7141844554192012199">Pregled</translation> +<translation id="7143207342074048698">Povezovanje</translation> <translation id="7144878232160441200">Poskusi ponovno</translation> <translation id="7148426638542880639">Spletna mesta morda ne bodo delovala po pričakovanjih. Izberite to možnost, če v napravi ne želite pustiti podatkov o spletnih mestih, ki jih obiščete.</translation> <translation id="7149839598364933473">To napravo spremenite v napravo <ph name="DEVICE_OS" />.</translation> @@ -9373,6 +9380,7 @@ <translation id="939401694733344652">Ti računi se trenutno ne uporabljajo z aplikacijami za Android. Če izberete račun, ki ga želite uporabljati s to aplikacijo za Android, se lahko račun uporablja tudi z drugimi aplikacijami za Android. Dostop do aplikacije za Android lahko spremenite v <ph name="LINK_BEGIN" />Nastavitve > Računi<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Vnesite geslo</translation> <translation id="939736085109172342">Nova mapa</translation> +<translation id="940212040923880623">&Iskanje in urejanje</translation> <translation id="942532530371314860">Aplikacija <ph name="APP_NAME" /> je v skupno rabo dala zavihek v Chromu in zvok.</translation> <translation id="944799160843436808">Pri nastavljanju aplikacije Steam v Chromebooku je prišlo do težave</translation> <translation id="945522503751344254">Pošiljanje povratnih informacij</translation> @@ -9394,6 +9402,7 @@ <translation id="964790508619473209">Razporeditev zaslona</translation> <translation id="965211523698323809">Prejemanje in pošiljanje sporočil SMS z napravo <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation> <translation id="96535553604365597">Prijava težave z Googlom Cast</translation> +<translation id="966588271015727539">Izberite bralnik braille Bluetooth</translation> <translation id="967398046773905967">Spletnim mestom ne dovoli dostopa do naprav HID</translation> <translation id="967624055006145463">Shranjeni podatki</translation> <translation id="96774243435178359">Upravljani tiskalniki</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index 8630571..64c7c19 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -2719,6 +2719,7 @@ <translation id="3336855445806447827">Nuk jam i sigurt</translation> <translation id="3337568642696914359">Mos lejo që sajtet të menaxhojnë protokollet</translation> <translation id="3340620525920140773">Shkarkimi përfundoi: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">cilësimet</translation> <translation id="3341699307020049241">Kodi PIN është i pasaktë. Të kanë mbetur <ph name="RETRIES" /> përpjekje.</translation> <translation id="3341703758641437857">Lejo qasjen te URL-të e skedarëve</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" dëshiron që ta heqë këtë shtesë.</translation> @@ -4091,6 +4092,7 @@ <translation id="4545759655004063573">Nuk mund ta ruajë për shkak të lejeve të pamjaftueshme. Ruaje në një vendndodhje tjetër.</translation> <translation id="4546308221697447294">Shfleto me shpejtësi me Google Chrome</translation> <translation id="4546345569117159016">Butoni i djathtë</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> dëshiron të përdorë këtë shtesë:</translation> <translation id="4546692474302123343">Hyrja zanore e "Asistentit të Google"</translation> <translation id="4547659257713117923">Asnjë skedë nga pajisjet e tjera</translation> <translation id="4547672827276975204">Cakto automatikisht</translation> @@ -4948,6 +4950,7 @@ <translation id="5338503421962489998">Hapësira ruajtëse lokale</translation> <translation id="5339031667684712858">Sajtet që hoqe</translation> <translation id="5340638867532133571">Lejo që sajtet të instalojnë përpunues të pagesave (rekomandohet)</translation> +<translation id="5340787663756381836">&Gjej dhe modifiko</translation> <translation id="5341793073192892252">Kukit e mëposhtme u bllokuan (kukit e palëve të treta po bllokohen pa përjashtim)</translation> <translation id="5342091991439452114">Kodi PIN duhet të ketë të paktën <ph name="MINIMUM" /> shifra</translation> <translation id="5344036115151554031">Linux po restaurohet</translation> @@ -5571,6 +5574,7 @@ <translation id="5904614460720589786"><ph name="APP_NAME" /> nuk mund të konfigurohej për shkak të një problemi në konfigurim. Kontakto me administratorin tënd. Kodi i gabimit: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Pothuajse i përditësuar! Rinise pajisjen për të përfunduar përditësimin.</translation> <translation id="5906732635754427568">Të dhënat e lidhura me këtë aplikacion do të hiqen nga kjo pajisje.</translation> +<translation id="5906974869830879618">Fut një kod PIN</translation> <translation id="5908474332780919512">Nis aplikacionin kur identifikohesh</translation> <translation id="5908695239556627796">Shpejtësia e lëvizjes së miut</translation> <translation id="5909379458939060601">Të fshihet ky profil dhe këto të dhëna të shfletimit?</translation> @@ -6958,6 +6962,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> po përdor mikrofonin tënd</translation> <translation id="7141105143012495934">Identifikimi dështoi pasi detajet e llogarisë tënde nuk mund të verifikoheshin. Kontakto me administratorin ose provo përsëri.</translation> <translation id="7141844554192012199">Përfundimi i blerjes</translation> +<translation id="7143207342074048698">Po lidhet</translation> <translation id="7144878232160441200">Provo sërish</translation> <translation id="7148426638542880639">Sajtet mund të mos funksionojnë siç pritet. Zgjidh këtë opsion nëse nuk dëshiron të lësh informacione në pajisjen tënde për sajtet që viziton.</translation> <translation id="7149839598364933473">Konvertoje këtë pajisje në një pajisje <ph name="DEVICE_OS" />.</translation> @@ -9338,6 +9343,7 @@ <translation id="939401694733344652">Aktualisht, këto llogari nuk po përdoren me aplikacione për Android. Nëse zgjedh një llogari për ta përdorur me këtë aplikacion për Android, ajo mund të përdoret edhe me aplikacione të tjera për Android. Qasjen e aplikacionit për Android mund ta ndryshosh te <ph name="LINK_BEGIN" />Cilësimet > Llogaritë<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Fut frazën e kalimit</translation> <translation id="939736085109172342">Dosje e re</translation> +<translation id="940212040923880623">&Gjej dhe modifiko</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> po ndan një skedë të Chrome dhe audion.</translation> <translation id="944799160843436808">Pati një problem me konfigurimin e Steam në Chromebook</translation> <translation id="945522503751344254">Dërgo komente</translation> @@ -9359,6 +9365,7 @@ <translation id="964790508619473209">Sistemimi i ekranit</translation> <translation id="965211523698323809">Dërgo dhe merr mesazhe me tekst nga pajisja jote <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation> <translation id="96535553604365597">Raporto një problem me Google Cast</translation> +<translation id="966588271015727539">Zgjidh një ekran breil me Bluetooth</translation> <translation id="967398046773905967">Mos lejo asnjë sajt të ketë qasje në pajisjet HID</translation> <translation id="967624055006145463">Të dhënat e ruajtura</translation> <translation id="96774243435178359">Printerët e menaxhuar</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index 48e9251..0c9cf377 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -2721,6 +2721,7 @@ <translation id="3336855445806447827">Ne znam</translation> <translation id="3337568642696914359">Ne dozvoljavaj sajtovima da upravljaju protokolima</translation> <translation id="3340620525920140773">Preuzimanje je završeno: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">podešavanja</translation> <translation id="3341699307020049241">Netačan PIN. Imate još <ph name="RETRIES" /> pokušaja.</translation> <translation id="3341703758641437857">Dozvoli pristup URL adresama datoteka</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“ želi da ukloni ovaj dodatak.</translation> @@ -5576,6 +5577,7 @@ <translation id="5904614460720589786">Podešavanje aplikacije <ph name="APP_NAME" /> nije uspelo zbog problema sa konfiguracijom. Obratite se administratoru. Kôd greške: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Ažuriranje je skoro gotovo! Ponovo pokrenite uređaj da biste dovršili ažuriranje.</translation> <translation id="5906732635754427568">Podaci povezani sa ovom aplikacijom će biti uklonjeni sa ovog uređaja.</translation> +<translation id="5906974869830879618">Unesite PIN</translation> <translation id="5908474332780919512">Pokreni aplikaciju kada se prijavim</translation> <translation id="5908695239556627796">Brzina pomeranja mišem</translation> <translation id="5909379458939060601">Želite da izbrišete ovaj profil i podatke pregledanja?</translation> @@ -6967,6 +6969,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> koristi mikrofon</translation> <translation id="7141105143012495934">Prijavljivanje nije uspelo jer nismo uspeli da preuzmemo detalje o nalogu. Kontaktirajte administratora ili pokušajte ponovo.</translation> <translation id="7141844554192012199">Proveri</translation> +<translation id="7143207342074048698">Povezivanje</translation> <translation id="7144878232160441200">Probaj ponovo</translation> <translation id="7148426638542880639">Sajtovi možda neće raditi na očekivani način. Odaberite ovu opciju ako na uređaju ne želite da ostavljate informacije o sajtovima koje posećujete.</translation> <translation id="7149839598364933473">Pretvorite ovaj uređaj u <ph name="DEVICE_OS" /> uređaj.</translation> @@ -9373,6 +9376,7 @@ <translation id="964790508619473209">Raspored na ekranu</translation> <translation id="965211523698323809">Šaljite i primajte SMS-ove sa uređaja <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="96535553604365597">Prijavite problem sa Google Cast-om</translation> +<translation id="966588271015727539">Izaberite Bluetooth Brajev ekran</translation> <translation id="967398046773905967">Ne dozvoljavaj sajtovima da pristupaju uređajima sa interfejsom</translation> <translation id="967624055006145463">Sačuvani podaci</translation> <translation id="96774243435178359">Upravljani štampači</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index e1b9c88..776bf326 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -2721,6 +2721,7 @@ <translation id="3336855445806447827">Не знам</translation> <translation id="3337568642696914359">Не дозвољавај сајтовима да управљају протоколима</translation> <translation id="3340620525920140773">Преузимање је завршено: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">подешавања</translation> <translation id="3341699307020049241">Нетачан PIN. Имате још <ph name="RETRIES" /> покушаја.</translation> <translation id="3341703758641437857">Дозволи приступ URL адресама датотека</translation> <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“ жели да уклони овај додатак.</translation> @@ -5576,6 +5577,7 @@ <translation id="5904614460720589786">Подешавање апликације <ph name="APP_NAME" /> није успело због проблема са конфигурацијом. Обратите се администратору. Кôд грешке: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Ажурирање је скоро готово! Поново покрените уређај да бисте довршили ажурирање.</translation> <translation id="5906732635754427568">Подаци повезани са овом апликацијом ће бити уклоњени са овог уређаја.</translation> +<translation id="5906974869830879618">Унесите PIN</translation> <translation id="5908474332780919512">Покрени апликацију када се пријавим</translation> <translation id="5908695239556627796">Брзина померања мишем</translation> <translation id="5909379458939060601">Желите да избришете овај профил и податке прегледања?</translation> @@ -6967,6 +6969,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> користи микрофон</translation> <translation id="7141105143012495934">Пријављивање није успело јер нисмо успели да преузмемо детаље о налогу. Контактирајте администратора или покушајте поново.</translation> <translation id="7141844554192012199">Провери</translation> +<translation id="7143207342074048698">Повезивање</translation> <translation id="7144878232160441200">Пробај поново</translation> <translation id="7148426638542880639">Сајтови можда неће радити на очекивани начин. Одаберите ову опцију ако на уређају не желите да остављате информације о сајтовима које посећујете.</translation> <translation id="7149839598364933473">Претворите овај уређај у <ph name="DEVICE_OS" /> уређај.</translation> @@ -9373,6 +9376,7 @@ <translation id="964790508619473209">Распоред на екрану</translation> <translation id="965211523698323809">Шаљите и примајте SMS-ове са уређаја <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation> <translation id="96535553604365597">Пријавите проблем са Google Cast-ом</translation> +<translation id="966588271015727539">Изаберите Bluetooth Брајев екран</translation> <translation id="967398046773905967">Не дозвољавај сајтовима да приступају уређајима са интерфејсом</translation> <translation id="967624055006145463">Сачувани подаци</translation> <translation id="96774243435178359">Управљани штампачи</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index 08fbd7d..20cd7eb 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -2166,6 +2166,7 @@ <translation id="2804043232879091219">Det gick inte att öppna den andra webbläsaren</translation> <translation id="2804667941345577550">Du loggas ut från den här webbplatsen, även på öppna flikar</translation> <translation id="2804680522274557040">Kamera har inaktiverats</translation> +<translation id="2804742109948581745">Sida vid sida</translation> <translation id="2805539617243680210">Nu är det klart.</translation> <translation id="2805646850212350655">Microsofts krypterande filsystem</translation> <translation id="2805756323405976993">Appar</translation> @@ -2737,6 +2738,7 @@ <translation id="3336855445806447827">Vet ej</translation> <translation id="3337568642696914359">Tillåt inte att webbplatser hanterar protokoll</translation> <translation id="3340620525920140773">Nedladdningen är klar: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">inställningar</translation> <translation id="3341699307020049241">Fel pinkod. Du har <ph name="RETRIES" /> försök kvar.</translation> <translation id="3341703758641437857">Tillåt åtkomst till webbadresser i filen</translation> <translation id="3342361181740736773"><ph name="TRIGGERING_EXTENSION_NAME" /> vill ta bort det här tillägget.</translation> @@ -3138,6 +3140,7 @@ <translation id="369489984217678710">Lösenord och andra inloggningsuppgifter</translation> <translation id="369522892592566391">{NUM_FILES,plural, =0{Säkerhetskontrollen är klar. Data laddas upp.}=1{Säkerhetskontrollen är klar. Filen laddas upp.}other{Säkerhetskontrollen är klar. Filerna laddas upp.}}</translation> <translation id="3696817060563289264">Filer för textigenkänning har laddats ned</translation> +<translation id="3697716475445175867">öppnades senast</translation> <translation id="3698471669415859717">Granskningen är klar</translation> <translation id="3698825735945432002">Filtertyp</translation> <translation id="3699624789011381381">E-postadress</translation> @@ -4659,6 +4662,7 @@ <translation id="5056950756634735043">Ansluter till behållaren</translation> <translation id="5057110919553308744">När du klickar på tillägget</translation> <translation id="5059241099014281248">Begränsa inloggning</translation> +<translation id="5059429103770496207">Visningsformat</translation> <translation id="5059526285558225588">Välj vad du vill dela</translation> <translation id="5060332552815861872">Det finns 1 skrivare att spara.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Den här mappen innehåller ett bokmärke. Vill du ta bort den?}other{Den här mappen innehåller # bokmärken. Vill du ta bort den?}}</translation> @@ -5592,6 +5596,7 @@ <translation id="5904614460720589786">Det gick inte att installera <ph name="APP_NAME" /> på grund av ett konfigurationsproblem. Kontakta administratören. Felkod: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Uppdateringen är nästan klar! Slutför den genom att starta om enheten.</translation> <translation id="5906732635754427568">Data kopplad till den här appen tas bort från enheten.</translation> +<translation id="5906974869830879618">Ange en pinkod</translation> <translation id="5908474332780919512">Starta appen när du loggar in</translation> <translation id="5908695239556627796">Scrollningshastighet för musen</translation> <translation id="5909379458939060601">Vill du radera den här profilen och tillhörande webbinformation?</translation> @@ -6364,6 +6369,7 @@ <translation id="6596816719288285829">IP-adress</translation> <translation id="6597017209724497268">Stickprov</translation> <translation id="6597331566371766302">Följande tillägg har blockerats av administratören:</translation> +<translation id="659894938503552850">senaste</translation> <translation id="6601262427770154296">Hantera egna ordlistor</translation> <translation id="6601612474695404578">På vissa webbplatser används cookies från tredje part när sidorna läses in. Om en webbplats inte fungerar kan du testa att tillåta cookies.</translation> <translation id="6602937173026466876">Åtkomst till dina skrivare</translation> @@ -6979,6 +6985,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> använder mikrofonen</translation> <translation id="7141105143012495934">Inloggningen misslyckades eftersom det inte gick att hämta dina kontouppgifter. Kontakta administratören eller försök igen.</translation> <translation id="7141844554192012199">Kontroll</translation> +<translation id="7143207342074048698">Ansluter</translation> <translation id="7144878232160441200">Försök igen</translation> <translation id="7148426638542880639">Webbplatser kanske inte fungerar som förväntat. Välj det här alternativet om du inte vill lämna information på enheten om webbplatser du besöker.</translation> <translation id="7149839598364933473">Konvertera den här enheten till en <ph name="DEVICE_OS" />-enhet.</translation> @@ -8146,6 +8153,7 @@ <translation id="8161293209665121583">Läsläge för webbsidor</translation> <translation id="8161604891089629425">Konturteckensnitt</translation> <translation id="8162984717805647492">{NUM_TABS,plural, =1{Flytta fliken till ett nytt fönster}other{Flytta flikarna till ett nytt fönster}}</translation> +<translation id="8163708146810922598">äldsta</translation> <translation id="8165997195302308593">Portvidarebefordran i Crostini</translation> <translation id="816704878106051517">{COUNT,plural, =1{ett telefonnummer}other{# telefonnummer}}</translation> <translation id="8168071266284693455">Bokmärken, lösenord, historik med mera synkroniseras på alla dina enheter</translation> @@ -8382,7 +8390,7 @@ <translation id="8373652277231415614">Delade kataloger i Crostini</translation> <translation id="8374243500935816406">Tillåt inte att webbplatser hanterar fönster på alla skärmar</translation> <translation id="8376137163494131156">Berätta vad som händer med Google Cast.</translation> -<translation id="8376384591331888629">Inkludera cookies från tredje part på den här webbplatsen</translation> +<translation id="8376384591331888629">Inklusive cookies från tredje part på den här webbplatsen</translation> <translation id="8376451933628734023">Om webbappen försöker lura dig att den är en annan app ska du avinstallera den.</translation> <translation id="8377625247046155446">Den här nyckeln sparas bara på den här enheten. Den finns kvar på enheten när du stänger alla inkognitofönster.</translation> <translation id="8378714024927312812">Hanteras av organisationen</translation> @@ -8660,6 +8668,7 @@ <translation id="8637688295594795546">Systemuppdatering tillgänglig. Förbereder nedladdning...</translation> <translation id="8639047128869322042">Söker efter skadlig programvara …</translation> <translation id="8639635302972078117">Skicka diagnostik- och användningsdata. Den här enheten skickar för närvarande diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera och inte till att identifiera ditt barn. Viss samlad data används även till att förbättra appar från Google och Googles partner, till exempel Android-utvecklare. Om ytterligare webb- och appaktivitet har aktiverats för ditt barn kan denna data sparas i Google-kontot.</translation> +<translation id="8640575194957831802">Öppnades senast</translation> <translation id="8642900771896232685">2 sekunder</translation> <translation id="8642947597466641025">Förstora texten</translation> <translation id="8643403533759285912">Radera grupp</translation> @@ -9383,6 +9392,7 @@ <translation id="964790508619473209">Skärmuppställning</translation> <translation id="965211523698323809">Skicka och ta emot sms på <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation> <translation id="96535553604365597">Rapportera problem med Google Cast</translation> +<translation id="966588271015727539">Välj en punktskriftsskärm med Bluetooth</translation> <translation id="967398046773905967">Ge inga webbplatser åtkomst till HID-enheter</translation> <translation id="967624055006145463">Sparad data</translation> <translation id="96774243435178359">Hanterade skrivare</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index fcaeaf0f..069c6c9 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -2733,6 +2733,7 @@ <translation id="3336855445806447827">Sina uhakika</translation> <translation id="3337568642696914359">Usiruhusu tovuti zishughulikie itifaki</translation> <translation id="3340620525920140773">Imemaliza kupakua: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">mipangilio</translation> <translation id="3341699307020049241">PIN si Sahihi. Umebakisha mara <ph name="RETRIES" /> za kujaribu.</translation> <translation id="3341703758641437857">Ruhusu kufikia URL za faili</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ingependa kuondoa kiendelezi hiki.</translation> @@ -4962,6 +4963,7 @@ <translation id="5338503421962489998">Hifadhi ya ndani</translation> <translation id="5339031667684712858">Tovuti ulizoondoa</translation> <translation id="5340638867532133571">Ruhusu tovuti zisakinishe vidhibiti vya malipo (inapendekezwa)</translation> +<translation id="5340787663756381836">&Tafuta na ubadilishe</translation> <translation id="5341793073192892252">Vidakuzi vifuatavyo vilizuiwa (vidakuzi vyote vya washirika wengine vinazuiwa)</translation> <translation id="5342091991439452114">Lazima PIN iwe na angalau tarakimu <ph name="MINIMUM" /></translation> <translation id="5344036115151554031">Inarejesha Linux</translation> @@ -5585,6 +5587,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="5906974869830879618">Tafadhali weka PIN</translation> <translation id="5908474332780919512">Fungua Programu Unapoingia Katika Akaunti</translation> <translation id="5908695239556627796">Kasi ya kusogeza kipanya</translation> <translation id="5909379458939060601">Ungependa kufuta wasifu huu na data ya kuvinjari?</translation> @@ -6972,6 +6975,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> inatumia maikrofoni yako</translation> <translation id="7141105143012495934">Haikufaulu kuingia katika akaunti kwa sababu maelezo ya akaunti yako hayakupatikana. Tafadhali wasiliana na msimamizi wako au jaribu tena.</translation> <translation id="7141844554192012199">Kagua</translation> +<translation id="7143207342074048698">Inaunganisha</translation> <translation id="7144878232160441200">Jaribu tena</translation> <translation id="7148426638542880639">Huenda tovuti zisifanye kazi kama unavyotarajia. Teua chaguo hili iwapo usingependa taarifa zinazohusiana na tovuti unazotembelea zisalie kwenye kifaa chako.</translation> <translation id="7149839598364933473">Geuza kifaa hiki kiwe kifaa kinachotumia <ph name="DEVICE_OS" />.</translation> @@ -9355,6 +9359,7 @@ <translation id="939401694733344652">Akaunti hizi hazitumiki kwenye programu za Android kwa sasa. Iwapo utachagua akaunti ya kutumia kwenye programu hii ya Android, akaunti hiyo inaweza pia kutumiwa pamoja na programu nyingine za Android. Unaweza kubadilisha uwezo wa kufikia wa programu ya Android kwenye <ph name="LINK_BEGIN" />Mipangilio > Akaunti<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Ingiza kaulisiri</translation> <translation id="939736085109172342">Folda mpya</translation> +<translation id="940212040923880623">&Tafuta na Ubadilishe</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> inashiriki kichupo cha Chrome na sauti.</translation> <translation id="944799160843436808">Kulikuwa na hitilafu katika kuweka mipangilio ya programu ya Steam kwenye Chromebook</translation> <translation id="945522503751344254">Tuma maoni</translation> @@ -9376,6 +9381,7 @@ <translation id="964790508619473209">Mpangilio wa skrini</translation> <translation id="965211523698323809">Tuma na upokee SMS kupitia <ph name="DEVICE_TYPE" /> yako. <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation> <translation id="96535553604365597">Ripoti tatizo la Google Cast</translation> +<translation id="966588271015727539">Chagua onyesho la braille ya bluetooth</translation> <translation id="967398046773905967">Usiruhusu tovuti zozote zifikie vifaa vya HID</translation> <translation id="967624055006145463">Data iliyohifadhiwa</translation> <translation id="96774243435178359">Printa zinazodhibitiwa</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 10cd7a7..16fc7c13 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -2736,6 +2736,7 @@ <translation id="3336855445806447827">தெரியவில்லை</translation> <translation id="3337568642696914359">நெறிமுறைகளைக் கையாள தளங்களை அனுமதிக்காதே</translation> <translation id="3340620525920140773">பதிவிறக்கம் முடிந்தது: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">அமைப்புகள்</translation> <translation id="3341699307020049241">தவறான பின். இன்னும் <ph name="RETRIES" /> முறை முயலலாம்.</translation> <translation id="3341703758641437857">ஃபைல் URLகளுக்கு அணுகலை அனுமதி</translation> <translation id="3342361181740736773">இந்த நீட்டிப்பை அகற்ற, "<ph name="TRIGGERING_EXTENSION_NAME" />" விரும்புகிறது</translation> @@ -5592,6 +5593,7 @@ <translation id="5904614460720589786">உள்ளமைவுச் சிக்கல் காரணமாக <ph name="APP_NAME" /> ஆப்ஸை அமைக்க முடியவில்லை. உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும். பிழைக் குறியீடு: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">கிட்டத்தட்ட புதுப்பிக்கப்பட்டது! புதுப்பிப்பதை முடிக்க, சாதனத்தை மறுதொடக்கம் செய்யவும்.</translation> <translation id="5906732635754427568">இந்தப் பயன்பாட்டுடன் தொடர்புடைய தரவு, எல்லாச் சாதனங்களிலிருந்தும் அகற்றப்படும்.</translation> +<translation id="5906974869830879618">ஒரு பின்னை உள்ளிடவும்</translation> <translation id="5908474332780919512">நான் உள்நுழையும்போது ஆப்ஸைத் தொடங்கு</translation> <translation id="5908695239556627796">மவுஸ் நகர்த்துதல் வேகம்</translation> <translation id="5909379458939060601">இந்தச் சுயவிவரத்தையும் உலாவிய தரவையும் நீக்கவா?</translation> @@ -6979,6 +6981,7 @@ <translation id="7139627972753429585">உங்கள் மைக்ரோஃபோனை <ph name="APP_NAME" /> பயன்படுத்துகிறது</translation> <translation id="7141105143012495934">உங்கள் கணக்கு விவரங்களை மீட்டெடுக்க முடியாததால் உள்நுழைவு தோல்வியானது. உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும் அல்லது மீண்டும் முயலவும்.</translation> <translation id="7141844554192012199">சரிபார்</translation> +<translation id="7143207342074048698">இணைத்தல்</translation> <translation id="7144878232160441200">மீண்டும் முயற்சி செய்க</translation> <translation id="7148426638542880639">நீங்கள் எதிர்பார்த்தபடி தளங்கள் செயல்படாமல் போகக்கூடும். நீங்கள் பார்வையிடும் தளங்கள் குறித்த தகவலைச் சாதனத்தில் சேமிக்க வேண்டாம் எனக் கருதினால் இந்த விருப்பத்தைத் தேர்வுசெய்யலாம்.</translation> <translation id="7149839598364933473">இந்தச் சாதனத்தை <ph name="DEVICE_OS" /> சாதனமாக மாற்றலாம்.</translation> @@ -9383,6 +9386,7 @@ <translation id="964790508619473209">திரையை ஒழுங்கமைத்தல்</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> சாதனத்திலிருந்து மெசேஜ்களை அனுப்பலாம் / பெறலாம். <ph name="LINK_BEGIN" />மேலும் அறிக<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast குறித்த சிக்கலைப் புகாரளி</translation> +<translation id="966588271015727539">புளூடூத் பிரெய்ல் காட்சியைத் தேர்ந்தெடு</translation> <translation id="967398046773905967">HID சாதனங்களை அணுக எந்தத் தளத்தையும் அனுமதிக்காதே</translation> <translation id="967624055006145463">சேமிக்கப்பட்ட தரவு</translation> <translation id="96774243435178359">நிர்வகிக்கப்படும் பிரிண்டர்கள்</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index 578e79c4..f141ac8e 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -2163,6 +2163,7 @@ <translation id="2804043232879091219">ప్రత్యామ్నాయ బ్రౌజర్ను తెరవడం సాధ్యపడలేదు</translation> <translation id="2804667941345577550">అలాగే మీరు తెరిచిన ట్యాబ్లతో సహా, ఈ సైట్ నుండి పూర్తిగా సైన్ అవుట్ చేయబడతారు.</translation> <translation id="2804680522274557040">కెమెరా ఆఫ్ చేయబడింది</translation> +<translation id="2804742109948581745">పక్కపక్కన</translation> <translation id="2805539617243680210">మీరు మొత్తం పూర్తి చేశారు!</translation> <translation id="2805646850212350655">Microsoft Encrypting File System</translation> <translation id="2805756323405976993">యాప్స్</translation> @@ -2734,6 +2735,7 @@ <translation id="3336855445806447827">ఖచ్చితంగా తెలియదు</translation> <translation id="3337568642696914359">ప్రోటోకాల్లను హ్యాండిల్ చేయడానికి సైట్లను అనుమతించకండి</translation> <translation id="3340620525920140773">దీని డౌన్లోడ్ పూర్తయింది: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">సెట్టింగ్లు</translation> <translation id="3341699307020049241">పిన్ తప్పు. మీకు <ph name="RETRIES" /> ప్రయత్నాలు మిగిలి ఉన్నాయి.</translation> <translation id="3341703758641437857">ఫైల్ URLలకు యాక్సెస్ను అనుమతించండి</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ఈ ఎక్స్టెన్షన్ని తీసివేయాలనుకుంటోంది.</translation> @@ -4656,6 +4658,7 @@ <translation id="5056950756634735043">కంటైనర్కు కనెక్ట్ చేస్తోంది</translation> <translation id="5057110919553308744">మీరు ఎక్స్టెన్షన్ క్లిక్ చేసినప్పుడు</translation> <translation id="5059241099014281248">సైన్ ఇన్ను పరిమితం చేయండి</translation> +<translation id="5059429103770496207">డిస్ప్లే స్టయిల్</translation> <translation id="5059526285558225588">ఏమి షేర్ చేయాలో ఎంచుకోండి</translation> <translation id="5060332552815861872">సేవ్ చేయాల్సిన 1 ప్రింటర్ అందుబాటులో ఉంది.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{ఈ ఫోల్డర్లో ఒక బుక్మార్క్ ఉంది. మీరు దీనిని ఖచ్చితంగా తొలగించాలనుకుంటున్నారా?}other{ఈ ఫోల్డర్లో # బుక్మార్క్లు ఉన్నాయి. మీరు దీనిని ఖచ్చితంగా తొలగించాలనుకుంటున్నారా?}}</translation> @@ -5589,6 +5592,7 @@ <translation id="5904614460720589786">కాన్ఫిగరేషన్ సమస్య కారణంగా <ph name="APP_NAME" />ను సెటప్ చేయడం సాధ్యపడలేదు. దయచేసి మీ నిర్వాహకుడిని సంప్రదించండి. ఎర్రర్ కోడ్: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">దాదాపు తాజాగా ఉంది! అప్డేట్ను పూర్తి చేయడానికి మీ పరికరాన్ని పునఃప్రారంభించండి.</translation> <translation id="5906732635754427568">ఈ యాప్తో అనుబంధించబడిన డేటా ఈ పరికరం నుండి తీసివేయబడుతుంది.</translation> +<translation id="5906974869830879618">దయచేసి పిన్ని నమోదు చేయండి</translation> <translation id="5908474332780919512">మీరు సైన్ ఇన్ చేసినప్పుడు యాప్ను ప్రారంభించండి</translation> <translation id="5908695239556627796">మౌస్ స్క్రోల్ వేగం</translation> <translation id="5909379458939060601">ఈ ప్రొఫైల్ను, దానిలోని బ్రౌజింగ్ డేటాను తొలగించాలా?</translation> @@ -6976,6 +6980,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> మీ మైక్రోఫోన్ను ఉపయోగిస్తోంది</translation> <translation id="7141105143012495934">మీ ఖాతా వివరాలను తిరిగి పొందలేనందున సైన్-ఇన్ విఫలమైంది. దయచేసి మీ నిర్వాహకుడిని సంప్రదించండి లేదా మళ్లీ ప్రయత్నించండి.</translation> <translation id="7141844554192012199">చెకప్</translation> +<translation id="7143207342074048698">కనెక్ట్ అవుతో.</translation> <translation id="7144878232160441200">మళ్ళీ ప్రయత్నించు</translation> <translation id="7148426638542880639">సైట్లు మీరు ఊహించిన విధంగా పని చేయకపోవచ్చు. మీరు సందర్శించిన సైట్లకు సంబంధించిన సమాచారాన్ని మీరు పరికరంలో ఉంచకూడదు అనుకుంటే ఈ ఆప్షన్ను ఎంచుకోండి.</translation> <translation id="7149839598364933473">ఈ పరికరాన్ని <ph name="DEVICE_OS" /> పరికరంగా మార్చండి.</translation> @@ -9376,6 +9381,7 @@ <translation id="964790508619473209">స్క్రీన్ అమరిక</translation> <translation id="965211523698323809">మీ <ph name="DEVICE_TYPE" /> నుండి వచన మెసేజ్లను పంపండి, స్వీకరించండి. <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Castతో ఉన్న సమస్యను రిపోర్ట్ చేయండి</translation> +<translation id="966588271015727539">బ్లూటూత్ బ్రెయిలీ డిస్ప్లేని ఎంచుకోండి</translation> <translation id="967398046773905967">HID పరికరాలను యాక్సెస్ చేయడానికి సైట్లు వేటినీ అనుమతించవద్దు</translation> <translation id="967624055006145463">స్టోరేజ్ చేయబడిన డేటా</translation> <translation id="96774243435178359">మేనేజ్ చేయబడే ప్రింటర్లు</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index d50351d..3a1133e1 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -2151,6 +2151,7 @@ <translation id="2804043232879091219">เปิดเบราว์เซอร์สำรองไม่ได้</translation> <translation id="2804667941345577550">คุณจะออกจากระบบของเว็บไซต์นี้ รวมถึงในแท็บที่เปิดอยู่</translation> <translation id="2804680522274557040">ปิดกล้องอยู่</translation> +<translation id="2804742109948581745">แสดงคู่กัน</translation> <translation id="2805539617243680210">คุณพร้อมแล้ว</translation> <translation id="2805646850212350655">ระบบไฟล์การเข้ารหัสของ Microsoft</translation> <translation id="2805756323405976993">แอป</translation> @@ -2722,6 +2723,7 @@ <translation id="3336855445806447827">ไม่แน่ใจ</translation> <translation id="3337568642696914359">ไม่อนุญาตให้เว็บไซต์จัดการโปรโตคอล</translation> <translation id="3340620525920140773">ดาวน์โหลดเสร็จสมบูรณ์: <ph name="FILE_NAME" /></translation> +<translation id="3340978935015468852">การตั้งค่า</translation> <translation id="3341699307020049241">PIN ไม่ถูกต้อง คุณป้อน PIN ได้อีก <ph name="RETRIES" /> ครั้ง</translation> <translation id="3341703758641437857">อนุญาตให้เข้าถึงไฟล์ URL</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ต้องการนำส่วนขยายนี้ออก</translation> @@ -4643,6 +4645,7 @@ <translation id="5056950756634735043">กำลังเชื่อมต่อกับคอนเทนเนอร์</translation> <translation id="5057110919553308744">เมื่อคุณคลิกส่วนขยาย</translation> <translation id="5059241099014281248">จำกัดการลงชื่อเข้าใช้</translation> +<translation id="5059429103770496207">รูปแบบการแสดง</translation> <translation id="5059526285558225588">เลือกสิ่งที่จะแชร์</translation> <translation id="5060332552815861872">มีเครื่องพิมพ์ 1 เครื่องให้บันทึก</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{โฟลเดอร์นี้มีบุ๊กมาร์ก คุณแน่ใจไหมว่าต้องการลบโฟลเดอร์}other{โฟลเดอร์นี้มี # บุ๊กมาร์ก คุณแน่ใจไหมว่าต้องการลบโฟลเดอร์}}</translation> @@ -5574,6 +5577,7 @@ <translation id="5904614460720589786">ตั้งค่า <ph name="APP_NAME" /> ไม่ได้เนื่องจากมีปัญหาเกี่ยวกับการกำหนดค่า โปรดติดต่อผู้ดูแลระบบ รหัสข้อผิดพลาด: <ph name="ERROR_CODE" /></translation> <translation id="5906655207909574370">การอัปเดตใกล้จะเสร็จเรียบร้อยแล้ว รีสตาร์ทอุปกรณ์เพื่อให้การอัปเดตเสร็จสิ้น</translation> <translation id="5906732635754427568">ระบบจะนำข้อมูลที่เชื่อมโยงกับแอปนี้ออกจากอุปกรณ์เครื่องนี้</translation> +<translation id="5906974869830879618">โปรดป้อน PIN</translation> <translation id="5908474332780919512">เริ่มต้นแอปเมื่อคุณลงชื่อเข้าใช้</translation> <translation id="5908695239556627796">ความเร็วในการเลื่อนเมาส์</translation> <translation id="5909379458939060601">ลบโปรไฟล์นี้และข้อมูลการท่องเว็บใช่ไหม</translation> @@ -6960,6 +6964,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> กำลังใช้ไมโครโฟน</translation> <translation id="7141105143012495934">การลงชื่อเข้าใช้ล้มเหลวเนื่องจากไม่สามารถเรียกคืนรายละเอียดบัญชีของคุณได้ โปรดติดต่อผู้ดูแลระบบของคุณหรือลองอีกครั้ง</translation> <translation id="7141844554192012199">การตรวจสอบ</translation> +<translation id="7143207342074048698">กำลังเชื่อมต่อ</translation> <translation id="7144878232160441200">ลองอีกครั้ง</translation> <translation id="7148426638542880639">เว็บไซต์อาจไม่ทำงานตามที่ต้องการ เลือกตัวเลือกนี้หากคุณไม่ต้องการให้มีข้อมูลเว็บไซต์ที่เข้าชมบนอุปกรณ์</translation> <translation id="7149839598364933473">เปลี่ยนอุปกรณ์นี้เป็นอุปกรณ์ <ph name="DEVICE_OS" /></translation> @@ -9363,6 +9368,7 @@ <translation id="964790508619473209">การจัดตำแหน่งหน้าจอ</translation> <translation id="965211523698323809">ส่งและรับ SMS จาก <ph name="DEVICE_TYPE" /> <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation> <translation id="96535553604365597">รายงานปัญหาเกี่ยวกับ Google Cast</translation> +<translation id="966588271015727539">เลือกอุปกรณ์แสดงผลอักษรเบรลล์ผ่านบลูทูธ</translation> <translation id="967398046773905967">ไม่อนุญาตให้เว็บไซต์ใดก็ตามเข้าถึงอุปกรณ์ HID</translation> <translation id="967624055006145463">ข้อมูลที่จัดเก็บ</translation> <translation id="96774243435178359">เครื่องพิมพ์ที่จัดการ</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index 90860ee..f2205f4c 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -2719,6 +2719,7 @@ <translation id="3336855445806447827">Emin değilim</translation> <translation id="3337568642696914359">Sitelerin protokolleri işlemesine izin verme</translation> <translation id="3340620525920140773">İndirme işlemi tamamlandı: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">ayarlar</translation> <translation id="3341699307020049241">Yanlış PIN. <ph name="RETRIES" /> deneme hakkınız kaldı.</translation> <translation id="3341703758641437857">Dosya URL'lerine erişime izin ver</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" bu uzantıyı kaldırmak istiyor.</translation> @@ -5574,6 +5575,7 @@ <translation id="5904614460720589786">Yapılandırma sorunu nedeniyle <ph name="APP_NAME" /> kurulumu yapılamadı. Lütfen yöneticinizle görüşün. Hata kodu: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Az kaldı! Güncellemeyi tamamlamak için cihazınızı yeniden başlatın.</translation> <translation id="5906732635754427568">Bu uygulamayla ilişkili veriler bu cihazdan kaldırılacak.</translation> +<translation id="5906974869830879618">Lütfen bir PIN girin</translation> <translation id="5908474332780919512">Oturum Açtığımda Uygulamayı Başlat</translation> <translation id="5908695239556627796">Fare kaydırma hızı</translation> <translation id="5909379458939060601">Bu profil ve tarama verileri silinsin mi?</translation> @@ -6961,6 +6963,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> mikrofonunuzu kullanıyor</translation> <translation id="7141105143012495934">Hesap ayrıntılarınız alınamadığı için oturum açma işlemi başarısız oldu. Lütfen yöneticinizle iletişime geçin veya tekrar deneyin.</translation> <translation id="7141844554192012199">Kontrol</translation> +<translation id="7143207342074048698">Bağlanıyor</translation> <translation id="7144878232160441200">Yeniden dene</translation> <translation id="7148426638542880639">Siteler beklediğiniz gibi çalışmayabilir. Ziyaret ettiğiniz sitelerle ilgili bilgileri cihazınızda bırakmak istemiyorsanız bu seçeneği belirleyin.</translation> <translation id="7149839598364933473">Bu cihazı <ph name="DEVICE_OS" /> cihazına dönüştürün.</translation> @@ -9364,6 +9367,7 @@ <translation id="964790508619473209">Ekran düzenlemesi</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> cihazınızdan kısa mesaj gönderin ve alın <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast ile ilgili bir sorun bildir</translation> +<translation id="966588271015727539">Bluetooth braille ekran seçin</translation> <translation id="967398046773905967">Hiçbir sitenin HID cihazlara erişmesine izin verme</translation> <translation id="967624055006145463">Depolanan veriler</translation> <translation id="96774243435178359">Yönetilen yazıcılar</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 0e1447ab..2b894ff 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -2168,6 +2168,7 @@ <translation id="2804043232879091219">Не вдалося відкрити альтернативний веб-переглядач</translation> <translation id="2804667941345577550">Ви вийдете з облікового запису на цьому сайті, зокрема у відкритих вкладках</translation> <translation id="2804680522274557040">Камеру вимкнено</translation> +<translation id="2804742109948581745">Поруч</translation> <translation id="2805539617243680210">Готово!</translation> <translation id="2805646850212350655">Система шифрування файлів Microsoft</translation> <translation id="2805756323405976993">Додатки</translation> @@ -2739,6 +2740,7 @@ <translation id="3336855445806447827">Не знаю</translation> <translation id="3337568642696914359">Заборонити сайтам обробляти протоколи</translation> <translation id="3340620525920140773">Файл "<ph name="FILE_NAME" />" завантажено.</translation> +<translation id="3340978935015468852">налаштування</translation> <translation id="3341699307020049241">Неправильний PIN-код. Залишилося спроб: <ph name="RETRIES" />.</translation> <translation id="3341703758641437857">Надавати доступ до URL-адрес файлу</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" хоче видалити це розширення.</translation> @@ -4112,6 +4114,7 @@ <translation id="4545759655004063573">Неможливо зберегти через недостатні дозволи. Збережіть в іншому місці.</translation> <translation id="4546308221697447294">Швидке завантаження сайтів у Google Chrome</translation> <translation id="4546345569117159016">Права кнопка</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> хоче використовувати це розширення:</translation> <translation id="4546692474302123343">Голосовий ввід через Google Асистента</translation> <translation id="4547659257713117923">Немає вкладок з інших пристроїв</translation> <translation id="4547672827276975204">Налаштовувати автоматично</translation> @@ -4660,6 +4663,7 @@ <translation id="5056950756634735043">Підключення до контейнера</translation> <translation id="5057110919553308744">Коли ви натискаєте розширення</translation> <translation id="5059241099014281248">Обмежити вхід</translation> +<translation id="5059429103770496207">Стиль відображення</translation> <translation id="5059526285558225588">Виберіть, що показувати</translation> <translation id="5060332552815861872">Можна зберегти 1 принтер.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Ця папка містить закладку. Усе одно видалити?}one{Ця папка містить # закладку. Усе одно видалити?}few{Ця папка містить # закладки. Усе одно видалити?}many{Ця папка містить # закладок. Усе одно видалити?}other{Ця папка містить # закладки. Усе одно видалити?}}</translation> @@ -5591,6 +5595,7 @@ <translation id="5904614460720589786">Не вдалося налаштувати додаток <ph name="APP_NAME" /> через проблему з конфігурацією. Зв'яжіться з адміністратором. Код помилки: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Майже оновлено. Перезапустіть пристрій, щоб завершити оновлення.</translation> <translation id="5906732635754427568">Дані, пов’язані з цим додатком, буде видалено з пристрою.</translation> +<translation id="5906974869830879618">Введіть PIN-код</translation> <translation id="5908474332780919512">Запускати додаток, коли ви входите в обліковий запис</translation> <translation id="5908695239556627796">Швидкість прокрутки мишею</translation> <translation id="5909379458939060601">Видалити цей профіль і дані веб-перегляду?</translation> @@ -6983,6 +6988,7 @@ <translation id="7139627972753429585">Додаток <ph name="APP_NAME" /> використовує ваш мікрофон</translation> <translation id="7141105143012495934">Помилка входу. Не вдалось отримати дані вашого облікового запису. Зв’яжіться з адміністратором або повторіть спробу.</translation> <translation id="7141844554192012199">Перевірити</translation> +<translation id="7143207342074048698">Під’єднання</translation> <translation id="7144878232160441200">Повторити спробу</translation> <translation id="7148426638542880639">Сайти можуть не працювати належним чином. Виберіть цей варіант, якщо ви не хочете, щоб на вашому пристрої зберігалась інформація про відвідані сайти.</translation> <translation id="7149839598364933473">Установити на пристрої <ph name="DEVICE_OS" />.</translation> @@ -9389,6 +9395,7 @@ <translation id="964790508619473209">Розміщення екрана</translation> <translation id="965211523698323809">Обмінюйтеся текстовими повідомленнями за допомогою <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation> <translation id="96535553604365597">Повідомити про проблему з Google Cast</translation> +<translation id="966588271015727539">Виберіть брайлівський Bluetooth-дисплей</translation> <translation id="967398046773905967">Закрити всім сайтам доступ до пристроїв HID</translation> <translation id="967624055006145463">Збережені дані</translation> <translation id="96774243435178359">Керовані принтери</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 20bae9ad..b7875083 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">کم از کم <ph name="INSTALL_SIZE" /> جگہ Linux کے لیے تجویز کی جاتی ہے۔ خالی جگہ میں اضافہ کرنے کے لیے، اپنے آلہ سے فائلز حذف کریں۔</translation> <translation id="1038643060055067718">لکیریں:</translation> <translation id="1039337018183941703">غلط یا خراب فائل</translation> +<translation id="1040761927998636252"><ph name="URL" /> کے لیے بے نام بُک مارک</translation> <translation id="1041175011127912238">یہ صفحہ نہیں کھل رہا ہے</translation> <translation id="1041263367839475438">دستیاب آلات</translation> <translation id="1042174272890264476">آپ کا کمپیوٹر <ph name="SHORT_PRODUCT_NAME" /> کی پہلے سے شامل RLZ لائبریری کے ساتھ بھی آتا ہے۔ RLZ ایک غیر منفرد، ذاتی طور پر ناقابل شناخت ٹیگ کو تفویض کرتا ہے تاکہ تلاشوں اور ایک خاص پروموشنل مہم کے ذریعہ چلائے گئے <ph name="SHORT_PRODUCT_NAME" /> استعمال کی پیمائش کر سکے۔ یہ لیبلز کبھی کبھی Google تلاش استفسارات میں <ph name="PRODUCT_NAME" /> میں ظاہر ہوتے ہیں۔</translation> @@ -2152,6 +2153,7 @@ <translation id="2804043232879091219">متبادل براؤزر نہیں کھل سکا</translation> <translation id="2804667941345577550">اوپن ٹیبز سمیت، آپ اس سائٹ سے سائن آؤٹ ہو جائیں گے</translation> <translation id="2804680522274557040">کیمرا آف ہے</translation> +<translation id="2804742109948581745">سمت بہ سمت</translation> <translation id="2805539617243680210">آپ پوری طرح تیار ہیں!</translation> <translation id="2805646850212350655">Microsoft مرموزکاری فائل سسٹم</translation> <translation id="2805756323405976993">اطلاقات</translation> @@ -2723,6 +2725,7 @@ <translation id="3336855445806447827">پتہ نہیں</translation> <translation id="3337568642696914359">سائٹس کو پروٹوکولز ہینڈل کرنے کی اجازت نہ دیں</translation> <translation id="3340620525920140773">ڈاؤن لوڈ مکمل ہو گیا: <ph name="FILE_NAME" />۔</translation> +<translation id="3340978935015468852">ترتیبات</translation> <translation id="3341699307020049241">غلط PIN۔ آپ کے پاس <ph name="RETRIES" /> کوششیں باقی ہیں۔</translation> <translation id="3341703758641437857">فائل URLs تک رسائی کی اجازت دیں</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" اس ایکسٹینشن کو ہٹانا چاہے گا۔</translation> @@ -4644,6 +4647,7 @@ <translation id="5056950756634735043">کنٹینر سے منسلک ہو رہا ہے</translation> <translation id="5057110919553308744">جب آپ ایکسٹینشن پر کلک کرتے ہیں</translation> <translation id="5059241099014281248">سائن ان کو محدود کریں</translation> +<translation id="5059429103770496207">ڈسپلے کی طرز</translation> <translation id="5059526285558225588">منتخب کریں کہ کیا اشتراک کرنا ہے</translation> <translation id="5060332552815861872">محفوظ کرنے کے لیے 1 پرنٹر دستیاب ہے۔</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{اس فولڈر میں ایک بُک مارک شامل ہے۔ کیا آپ واقعی اسے حذف کرنا چاہتے ہیں؟}other{اس فولڈر میں # بُک مارکس شامل ہیں۔ کیا آپ واقعی اسے حذف کرنا چاہتے ہیں؟}}</translation> @@ -5576,6 +5580,7 @@ <translation id="5904614460720589786">کنفیگریشن میں مسئلہ پیش آنے کی وجہ سے <ph name="APP_NAME" /> کو سیٹ اپ نہیں کیا جا سکا۔ براہ کرم اپنے منتظم سے رابطہ کریں۔ خرابی کا کوڈ: <ph name="ERROR_CODE" />۔</translation> <translation id="5906655207909574370">تقریباً اپ ٹو ڈیٹ! اپ ڈیٹ کرنے کو مکمل کرنے کیلئے اپنا آلہ دوبارہ شروع کریں۔</translation> <translation id="5906732635754427568">اس ایپ سے وابستہ ڈیٹا کو اس آلہ سے ہٹا دیا جائے گا۔</translation> +<translation id="5906974869830879618">براہ کرم پِن درج کریں</translation> <translation id="5908474332780919512">اپنے سائن ان کرتے وقت ایپ شروع کریں</translation> <translation id="5908695239556627796">ماؤس کے اسکرول کی رفتار</translation> <translation id="5909379458939060601">اس پروفائل اور براؤزنگ ڈیٹا کو حذف کریں؟</translation> @@ -6963,6 +6968,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> ایپ آپ کا مائیکروفون استعمال کر رہی ہے</translation> <translation id="7141105143012495934">سائن ان ناکام ہو گیا کیونکہ آپ کے اکاؤنٹ کی تفصیلات کی بازیافت نہيں ہو سکی۔ براہ کرم اپنے منتظم سے رابطہ کریں یا دوبارہ کوشش کریں۔</translation> <translation id="7141844554192012199">چیک اپ</translation> +<translation id="7143207342074048698">منسلک ہو رہا ہے</translation> <translation id="7144878232160441200">دوبارہ کوشش کریں</translation> <translation id="7148426638542880639">ہو سکتا ہے سائٹس اس طرح کام نہ کریں جیسا آپ کی توقع ہے۔ اس اختیار کو منتخب کریں اگر آپ اپنے آلے پر ان سائٹس کے بارے میں معلومات نہیں چھوڑنا چاہتے جنہیں آپ دیکھتے ہیں۔</translation> <translation id="7149839598364933473">اس آلے کو ایک <ph name="DEVICE_OS" /> آلے میں تبدیل کریں۔</translation> @@ -9366,6 +9372,7 @@ <translation id="964790508619473209">اسکرین کا انتظام</translation> <translation id="965211523698323809">اپنے <ph name="DEVICE_TYPE" /> سے متنی پیغامات بھیجیں اور وصول کریں۔ <ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast سے ایک مسئلے کی اطلاع دیں</translation> +<translation id="966588271015727539">بلوٹوتھ بریل ڈسپلے منتخب کریں</translation> <translation id="967398046773905967">کسی بھی سائٹ کو HID آلات تک رسائی کی اجازت نہ دیں</translation> <translation id="967624055006145463">اسٹور کردہ ڈیٹا</translation> <translation id="96774243435178359">نظم کردہ پرنٹز</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index d32bbd42..f864f1e 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -2724,6 +2724,7 @@ <translation id="3336855445806447827">Aniq bilmayman</translation> <translation id="3337568642696914359">Saytlarga protokollarga ishlov berishni taqiqlash</translation> <translation id="3340620525920140773"><ph name="FILE_NAME" /> fayli yuklab olindi.</translation> +<translation id="3340978935015468852">sozlamalar</translation> <translation id="3341699307020049241">PIN kod xato. Yana <ph name="RETRIES" /> marta urinishingiz mumkin.</translation> <translation id="3341703758641437857">URL manzillardagi fayllarni o‘chishga ruxsat berish</translation> <translation id="3342361181740736773">“<ph name="TRIGGERING_EXTENSION_NAME" />” bu kengaytmani o‘chirib yubormoqchi.</translation> @@ -4097,6 +4098,7 @@ <translation id="4545759655004063573">Ruxsat yo‘qligi tufayli saqlab bo‘lmadi. Boshqa jildni tanlang.</translation> <translation id="4546308221697447294">Google Chrome yordamida internet tezligi oshadi</translation> <translation id="4546345569117159016">Oʻng tugma</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> bu kengaytmani ishlatmoqchi:</translation> <translation id="4546692474302123343">Google Assistentda ovoz bilan yozish</translation> <translation id="4547659257713117923">Boshqa qurilmalarda ochilgan tablar yo‘q</translation> <translation id="4547672827276975204">Avtomatik aniqlansin</translation> @@ -4955,6 +4957,7 @@ <translation id="5338503421962489998">Mahalliy ombor</translation> <translation id="5339031667684712858">Olib tashlangan saytlar</translation> <translation id="5340638867532133571">Saytlarga to‘lov vositalarini o‘rnatishga ruxsat berish (tavsiya etiladi)</translation> +<translation id="5340787663756381836">&Topish va tahrirlash</translation> <translation id="5341793073192892252">Quyidagi cookie fayllari bloklandi (tashqi cookie fayllari istisnolarsiz bloklanadi):</translation> <translation id="5342091991439452114">PIN kod kamida <ph name="MINIMUM" /> ta raqamdan iborat bo‘lishi lozim</translation> <translation id="5344036115151554031">Linux tiklanmoqda</translation> @@ -5578,6 +5581,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="5906974869830879618">PIN kodni kiriting</translation> <translation id="5908474332780919512">Ilova tizim bilan birga ishga tushsin</translation> <translation id="5908695239556627796">Sichqonchada varaqlash tezligi</translation> <translation id="5909379458939060601">Bu profil va brauzerning ishlashi haqida axborot oʻchirib tashlansinmi?</translation> @@ -6965,6 +6969,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> mikrofoningizni ishlatmoqda</translation> <translation id="7141105143012495934">Hisobga kirishda xatolik yuz berdi, chunki hisob ma’lumotlarini yuklab bo‘lmadi. Administrator bilan bog‘laning yoki qaytadan urinib ko‘ring.</translation> <translation id="7141844554192012199">Tekshiruvlar</translation> +<translation id="7143207342074048698">Ulanmoqda</translation> <translation id="7144878232160441200">Qayta urinish</translation> <translation id="7148426638542880639">Saytlar kutilganidek ishlamasligi mumkin. Ochilgan saytlar haqida qurilmangizda maʼlumot qoldirishni xohlamasangiz, ushbu parametrni tanlang.</translation> <translation id="7149839598364933473">Bu qurilmani <ph name="DEVICE_OS" /> qurilmasiga aylantiring.</translation> @@ -9345,6 +9350,7 @@ <translation id="939401694733344652">Hozirda bur hisoblardan Android ilovalarida foydalanish imkonsiz. Bu Android ilovasidan foydalanish uchun hisob tanlasangiz, undan boshqa Android ilovalarida ham foydalanish mumkin. Android ilovasiga ruxsatni <ph name="LINK_BEGIN" />Sozlamalar > Hisoblar<ph name="LINK_END" /> orqali oʻzgartirish mumkin.</translation> <translation id="939598580284253335">Kodli iborani kiriting</translation> <translation id="939736085109172342">Yangi jild</translation> +<translation id="940212040923880623">&Topish va tahrirlash</translation> <translation id="942532530371314860">“<ph name="APP_NAME" />” ilovasi Chrome sahifasi va audioga kirishda ruxsat berdi.</translation> <translation id="944799160843436808">Chromebook uchun Steamni sozlashda muammo yuz berdi</translation> <translation id="945522503751344254">Fikr-mulohaza</translation> @@ -9366,6 +9372,7 @@ <translation id="964790508619473209">Ekran joylashuv tartibi</translation> <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> orqali SMS yuborish va qabul qilish. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation> <translation id="96535553604365597">Google Cast muammosi haqida xabar berish</translation> +<translation id="966588271015727539">Bluetooth brayl displeyini tanlang</translation> <translation id="967398046773905967">Saytlarga HID qurilmalardan foydalanishni taqiqlash</translation> <translation id="967624055006145463">Ishlatilgan joy</translation> <translation id="96774243435178359">Boshqariladigan printerlar</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 3dd2cbd..a6d61470 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -2738,6 +2738,7 @@ <translation id="3336855445806447827">Không rõ</translation> <translation id="3337568642696914359">Không cho phép trang web xử lý các giao thức</translation> <translation id="3340620525920140773">Đã tải xuống xong: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">cài đặt</translation> <translation id="3341699307020049241">Mã PIN không chính xác. Bạn còn <ph name="RETRIES" /> lần thử.</translation> <translation id="3341703758641437857">Cho phép truy cập vào các URL của tệp</translation> <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" muốn xóa tiện ích này.</translation> @@ -4111,6 +4112,7 @@ <translation id="4545759655004063573">Không thể lưu do không đủ quyền. Hãy lưu vào một vị trí khác.</translation> <translation id="4546308221697447294">Duyệt web nhanh bằng Google Chrome</translation> <translation id="4546345569117159016">Nút chuột phải</translation> +<translation id="4546509872654834602"><ph name="SUPERVISED_USER_NAME" /> muốn sử dụng tiện ích này:</translation> <translation id="4546692474302123343">Tính năng nhập bằng giọng nói của Trợ lý Google</translation> <translation id="4547659257713117923">Không có thẻ nào từ thiết bị khác</translation> <translation id="4547672827276975204">Tự động đặt</translation> @@ -4969,6 +4971,7 @@ <translation id="5338503421962489998">Bộ nhớ cục bộ</translation> <translation id="5339031667684712858">Trang web bạn đã xoá</translation> <translation id="5340638867532133571">Cho phép các trang web cài đặt trình xử lý thanh toán (khuyên dùng)</translation> +<translation id="5340787663756381836">&Tìm và chỉnh sửa</translation> <translation id="5341793073192892252">Các cookie sau đã bị chặn (các cookie của bên thứ ba đang bị chặn mà không có ngoại lệ)</translation> <translation id="5342091991439452114">Mã PIN phải có ít nhất <ph name="MINIMUM" /> chữ số</translation> <translation id="5344036115151554031">Đang khôi phục Linux</translation> @@ -5592,6 +5595,7 @@ <translation id="5904614460720589786">Không thiết lập được <ph name="APP_NAME" /> do sự cố cấu hình. Vui lòng liên hệ với quản trị viên. Mã lỗi: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Gần được cập nhật! Hãy khởi động lại thiết bị của bạn để hoàn tất cập nhật.</translation> <translation id="5906732635754427568">Dữ liệu được liên kết với ứng dụng này sẽ bị xóa khỏi thiết bị này.</translation> +<translation id="5906974869830879618">Vui lòng nhập mã PIN</translation> <translation id="5908474332780919512">Mở ứng dụng khi bạn đăng nhập</translation> <translation id="5908695239556627796">Tốc độ cuộn chuột</translation> <translation id="5909379458939060601">Xoá hồ sơ và dữ liệu duyệt web này?</translation> @@ -6979,6 +6983,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> đang sử dụng micrô của bạn</translation> <translation id="7141105143012495934">Đăng nhập không thành công vì không thể truy xuất chi tiết tài khoản của bạn. Vui lòng liên hệ với quản trị viên của bạn hoặc thử lại.</translation> <translation id="7141844554192012199">Kiểm tra</translation> +<translation id="7143207342074048698">Đang kết nối</translation> <translation id="7144878232160441200">Thử lại</translation> <translation id="7148426638542880639">Các trang web có thể không hoạt động như mong đợi. Chọn tuỳ chọn này nếu bạn không muốn lưu thông tin về trang web bạn truy cập trên thiết bị của mình.</translation> <translation id="7149839598364933473">Chuyển đổi thiết bị này thành thiết bị <ph name="DEVICE_OS" />.</translation> @@ -7904,7 +7909,7 @@ <translation id="7952904276017482715">ID mong muốn "<ph name="EXPECTED_ID" />", nhưng ID phát hiện là "<ph name="NEW_ID" />"</translation> <translation id="7953669802889559161">Phương thức nhập</translation> <translation id="7953955868932471628">Quản lý lối tắt</translation> -<translation id="7955105108888461311">Hỏi trực tiếp</translation> +<translation id="7955105108888461311">Gặp trực tiếp để hỏi</translation> <translation id="7955177647836564772">Nếu bật Smart Lock và mở khoá điện thoại, bạn sẽ không cần nhập mật khẩu hoặc mã PIN</translation> <translation id="7956373551960864128">Các máy in bạn đã lưu</translation> <translation id="7957074856830851026">Xem thông tin thiết bị, chẳng hạn như số sê-ri hoặc mã tài sản</translation> @@ -9361,6 +9366,7 @@ <translation id="939401694733344652">Những tài khoản này hiện không được sử dụng cho các ứng dụng Android. Nếu bạn chọn một tài khoản để sử dụng cho ứng dụng Android này, thì tài khoản đó cũng có thể được sử dụng cho các ứng dụng Android khác. Bạn có thể thay đổi quyền truy cập vào ứng dụng Android trong phần <ph name="LINK_BEGIN" />Cài đặt > Tài khoản<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Nhập cụm mật khẩu</translation> <translation id="939736085109172342">Thư mục mới</translation> +<translation id="940212040923880623">&Tìm và chỉnh sửa</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> đang chia sẻ âm thanh và một thẻ trong Chrome.</translation> <translation id="944799160843436808">Đã xảy ra lỗi khi thiết lập Steam trên Chromebook</translation> <translation id="945522503751344254">Gửi phản hồi</translation> @@ -9382,6 +9388,7 @@ <translation id="964790508619473209">Sắp xếp màn hình</translation> <translation id="965211523698323809">Gửi và nhận tin nhắn văn bản từ <ph name="DEVICE_TYPE" /> của bạn. <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation> <translation id="96535553604365597">Báo cáo sự cố với Google Cast</translation> +<translation id="966588271015727539">Chọn màn hình chữ nổi Bluetooth</translation> <translation id="967398046773905967">Không cho phép bất kỳ trang web nào truy cập vào thiết bị HID</translation> <translation id="967624055006145463">Dữ liệu đã lưu trữ</translation> <translation id="96774243435178359">Máy in được quản lý</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index f08c7d21..1abce777 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -2142,6 +2142,7 @@ <translation id="2804043232879091219">无法打开替代浏览器</translation> <translation id="2804667941345577550">您将会自动退出这个网站(包括打开的标签页)</translation> <translation id="2804680522274557040">摄像头已关闭</translation> +<translation id="2804742109948581745">并排</translation> <translation id="2805539617243680210">您已设置完毕!</translation> <translation id="2805646850212350655">Microsoft 加密文件系统</translation> <translation id="2805756323405976993">应用</translation> @@ -2713,6 +2714,7 @@ <translation id="3336855445806447827">不确定</translation> <translation id="3337568642696914359">不允许网站处理协议</translation> <translation id="3340620525920140773">“<ph name="FILE_NAME" />”已下载完毕。</translation> +<translation id="3340978935015468852">设置</translation> <translation id="3341699307020049241">PIN 码不正确。您还剩 <ph name="RETRIES" /> 次尝试机会。</translation> <translation id="3341703758641437857">允许访问文件网址</translation> <translation id="3342361181740736773">“<ph name="TRIGGERING_EXTENSION_NAME" />”想要移除该扩展程序。</translation> @@ -4631,6 +4633,7 @@ <translation id="5056950756634735043">正在连接到容器</translation> <translation id="5057110919553308744">当您点击此扩展程序时</translation> <translation id="5059241099014281248">限制登录</translation> +<translation id="5059429103770496207">显示样式</translation> <translation id="5059526285558225588">选择要分享什么</translation> <translation id="5060332552815861872">有 1 台可保存的打印机。</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{此文件夹包含 1 个书签。确定要删除此文件夹吗?}other{此文件夹包含 # 个书签。确定要删除此文件夹吗?}}</translation> @@ -4940,6 +4943,7 @@ <translation id="5338503421962489998">本地存储</translation> <translation id="5339031667684712858">您已移除的网站</translation> <translation id="5340638867532133571">允许网站安装付款处理程序(推荐)</translation> +<translation id="5340787663756381836">查找和修改(&F)</translation> <translation id="5341793073192892252">已拦截以下 Cookie(所有第三方 Cookie 都会被拦截)</translation> <translation id="5342091991439452114">PIN 码必须至少为 <ph name="MINIMUM" /> 位数</translation> <translation id="5344036115151554031">正在恢复 Linux</translation> @@ -5561,6 +5565,7 @@ <translation id="5904614460720589786">无法设置 <ph name="APP_NAME" />,因为出现了配置问题。请与您的管理员联系。错误代码:<ph name="ERROR_CODE" />。</translation> <translation id="5906655207909574370">即将更新到最新版本!重新启动您的设备即可完成更新。</translation> <translation id="5906732635754427568">系统将会从此设备上移除与该应用相关的数据。</translation> +<translation id="5906974869830879618">请输入 PIN 码</translation> <translation id="5908474332780919512">在您登录时启动应用</translation> <translation id="5908695239556627796">鼠标滚屏速度</translation> <translation id="5909379458939060601">删除这份个人资料及相关浏览数据?</translation> @@ -6947,6 +6952,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> 正在使用您的麦克风</translation> <translation id="7141105143012495934">由于无法获取您的帐号详情,因此登录失败了。请与管理员联系或重试。</translation> <translation id="7141844554192012199">检查</translation> +<translation id="7143207342074048698">正在连接</translation> <translation id="7144878232160441200">重试</translation> <translation id="7148426638542880639">网站可能会无法按预期运行。如果您不想在设备上保留与您访问网站有关的信息,请选择此选项。</translation> <translation id="7149839598364933473">将此设备转换成一部 <ph name="DEVICE_OS" /> 设备。</translation> @@ -9109,7 +9115,7 @@ <translation id="9041692268811217999">您的管理员已禁止访问您计算机上的本地文件</translation> <translation id="904224458472510106">此操作无法撤消</translation> <translation id="9042827002460091668">请检查互联网连接,然后重试</translation> -<translation id="9042893549633094279">隐私设置和安全性</translation> +<translation id="9042893549633094279">隐私和安全</translation> <translation id="9043264199499366189">订阅 ChromeOS Flex 系统事件</translation> <translation id="9044646465488564462">无法连接到网络:<ph name="DETAILS" /></translation> <translation id="9045160989383249058">您的阅读清单已移至新增的侧边栏中。点击这里即可试用。</translation> @@ -9329,6 +9335,7 @@ <translation id="939401694733344652">目前这些帐号并未用于 Android 应用。如果您选择了一个帐号用于该 Android 应用,那么此帐号也可用于其他 Android 应用。您可在<ph name="LINK_BEGIN" />设置 > 帐号<ph name="LINK_END" />部分中更改 Android 应用的权限。</translation> <translation id="939598580284253335">请输入密码</translation> <translation id="939736085109172342">新建文件夹</translation> +<translation id="940212040923880623">查找和修改(&F)</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> 正在共享 Chrome 标签页和音频。</translation> <translation id="944799160843436808">设置 Chromebook 版 Steam 时出现问题</translation> <translation id="945522503751344254">发送反馈</translation> @@ -9350,6 +9357,7 @@ <translation id="964790508619473209">屏幕排列方式</translation> <translation id="965211523698323809">通过您的<ph name="DEVICE_TYPE" />收发短信。<ph name="LINK_BEGIN" />了解详情<ph name="LINK_END" /></translation> <translation id="96535553604365597">报告与 Google Cast 有关的问题</translation> +<translation id="966588271015727539">选择蓝牙盲文显示屏</translation> <translation id="967398046773905967">禁止任何网站访问 HID 设备</translation> <translation id="967624055006145463">已存储的数据</translation> <translation id="96774243435178359">受管理的打印机</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 276e578..16269423 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">Linux 需要至少 <ph name="INSTALL_SIZE" /> 的空間。如要增加可用空間,請刪除裝置內的檔案。</translation> <translation id="1038643060055067718">行數:</translation> <translation id="1039337018183941703">檔案無效或損毀</translation> +<translation id="1040761927998636252"><ph name="URL" /> 嘅未命名書籤</translation> <translation id="1041175011127912238">此網頁沒有回應</translation> <translation id="1041263367839475438">可用的裝置</translation> <translation id="1042174272890264476">您的電腦也內置了 <ph name="SHORT_PRODUCT_NAME" /> 的 RLZ 資料庫。RLZ 可指定非重複、非個人的可識別標記,以評估特定宣傳廣告活動所提升的搜尋數量與 <ph name="SHORT_PRODUCT_NAME" /> 使用量。這些標籤有時也會顯示在 <ph name="PRODUCT_NAME" /> 的 Google 搜尋查詢中。</translation> @@ -420,7 +421,7 @@ <translation id="1361655923249334273">未使用</translation> <translation id="1362865166188278099">發生機件故障。請檢查打印機</translation> <translation id="1363585519747660921">USB 列印機需要設定</translation> -<translation id="136378536198524553">「省電模式」已開啟</translation> +<translation id="136378536198524553">「慳電模式」已開啟</translation> <translation id="1368603372088757436"><ph name="DEVICE_TYPE" /> 不支援 Linux。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation> <translation id="1372841398847029212">同步至您的帳戶</translation> <translation id="1373176046406139583">您可使用裝置分享設定來控制哪些人可在螢幕解鎖時與您分享檔案。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation> @@ -627,7 +628,7 @@ <translation id="1533948060140843887">我瞭解此下載項目會危害我的電腦</translation> <translation id="1535228823998016251">大聲</translation> <translation id="1535597783576881392">此指南助您瞭解各項選擇,讓 Chrome 按照您想要的方式運作</translation> -<translation id="1535753739390684432">由系統讀出特定文字。請先選取畫面底部的「選取以朗讀」圖示,然後突顯所需文字。</translation> +<translation id="1535753739390684432">由系統讀出特定文字。請先選取畫面底部的「揀選朗讀內容」圖示,然後突顯所需文字。</translation> <translation id="1536754031901697553">正在解除連結…</translation> <translation id="1537254971476575106">全螢幕放大鏡</translation> <translation id="15373452373711364">大型滑鼠游標</translation> @@ -801,7 +802,7 @@ <translation id="1663698992894057019">請改用新 Chromebook,以獲得最新的安全和軟件更新</translation> <translation id="1665328953287874063">使用密碼或 PIN 解鎖 <ph name="DEVICE_TYPE" /></translation> <translation id="1666232093776384142">停用周邊裝置的資料存取保護</translation> -<translation id="1667842670298352129">由系統讀出特定文字。請先選取畫面底部的「選取以朗讀」圖示,然後突顯所需文字。您亦可使用鍵盤快速鍵:突顯文字,然後按下搜尋鍵 + S 鍵。</translation> +<translation id="1667842670298352129">由系統讀出特定文字。請先選取畫面底部的「揀選朗讀內容」圖示,然後突顯所需文字。您亦可使用鍵盤快速鍵:突顯文字,然後按下搜尋鍵 + S 鍵。</translation> <translation id="1668435968811469751">手動註冊</translation> <translation id="1668979692599483141">瞭解建議功能</translation> <translation id="1670399744444387456">基本設定</translation> @@ -2420,7 +2421,7 @@ <translation id="3021678814754966447">檢視頁框原始碼(&V)</translation> <translation id="3022361196600037287"><ph name="DEVICE" /> 將會從此 Chromebook 移除,且不會儲存至 <ph name="PRIMARY_EMAIL" />。</translation> <translation id="3022978424994383087">無法辨識語音。</translation> -<translation id="3023464535986383522">選取以朗讀</translation> +<translation id="3023464535986383522">揀選朗讀內容</translation> <translation id="3024374909719388945">使用 24 小時制時鐘</translation> <translation id="3025174326431589540">{COUNT,plural, =0{未儲存密碼}=1{已檢查 {COUNT} 個網站的密碼}other{已檢查 {COUNT} 個網站和應用程式的密碼}}</translation> <translation id="3027296729579831126">開啟「咫尺共享」功能</translation> @@ -2737,6 +2738,7 @@ <translation id="3336855445806447827">不確定</translation> <translation id="3337568642696914359">不允許網站處理通訊協定</translation> <translation id="3340620525920140773">下載完成:<ph name="FILE_NAME" />。</translation> +<translation id="3340978935015468852">設定</translation> <translation id="3341699307020049241">PIN 不正確。您還可再試 <ph name="RETRIES" /> 次。</translation> <translation id="3341703758641437857">允許存取檔案網址</translation> <translation id="3342361181740736773">「<ph name="TRIGGERING_EXTENSION_NAME" />」要求移除這個擴充程式。</translation> @@ -3812,7 +3814,7 @@ <translation id="4280325816108262082">當裝置關閉或處於閒置狀態時,裝置將會自動中斷連線</translation> <translation id="4281844954008187215">服務條款</translation> <translation id="4282196459431406533">Smart Lock 已啟用</translation> -<translation id="4284903252249997120">ChromeVox 螢幕閱讀器和選取以朗讀</translation> +<translation id="4284903252249997120">ChromeVox 螢幕閱讀器和揀選朗讀內容</translation> <translation id="4285418559658561636">更新密碼</translation> <translation id="4285498937028063278">取消固定</translation> <translation id="428565720843367874">掃描這個檔案時,防毒軟件發生意外錯誤。</translation> @@ -5591,6 +5593,7 @@ <translation id="5904614460720589786">設定發生問題,因此無法設定 <ph name="APP_NAME" />。請聯絡您的管理員。錯誤代碼:<ph name="ERROR_CODE" />。</translation> <translation id="5906655207909574370">即將更新至最新版本!重新啟動您的裝置即可完成更新程序。</translation> <translation id="5906732635754427568">系統會從裝置中移除與此應用程式相關的資料。</translation> +<translation id="5906974869830879618">請輸入 PIN</translation> <translation id="5908474332780919512">當您登入時啟動應用程式</translation> <translation id="5908695239556627796">滑鼠捲動速度</translation> <translation id="5909379458939060601">要刪除此設定檔和瀏覽資料嗎?</translation> @@ -5655,7 +5658,7 @@ <translation id="5955809630138889698">此裝置可能只可使用網上示範模式。詳情請與您的支援代表聯絡。</translation> <translation id="5956585768868398362">這是您想要的搜尋頁面嗎?</translation> <translation id="5957918771633727933">沒有可用的 eSIM 卡設定檔。請下載新的<ph name="BEGIN_LINK" />設定檔。<ph name="END_LINK" /></translation> -<translation id="5957987129450536192">輕按個人檔案相片附近的「選取以朗讀」圖示,然後選取您想聽到的內容。</translation> +<translation id="5957987129450536192">輕按個人檔案相片附近的「揀選朗讀內容」圖示,然後選取您想聽到的內容。</translation> <translation id="5959471481388474538">網絡無法使用</translation> <translation id="595959584676692139">重新載入網頁即可使用此擴充程式</translation> <translation id="5963413905009737549">區段</translation> @@ -5747,7 +5750,7 @@ <translation id="6043994281159824495">立即登出</translation> <translation id="6045114302329202345">主要 TrackPoint 按鈕</translation> <translation id="6047632800149092791">同步功能無法正常運作。請嘗試登出,然後重新登入。</translation> -<translation id="6048747414605857443">為 ChromeVox 和「選取以朗讀」選取及自訂文字轉語音的聲音</translation> +<translation id="6048747414605857443">為 ChromeVox 和「揀選朗讀內容」選取及自訂文字轉語音的聲音</translation> <translation id="6049797270917061226">攻擊者可能透過此檔案盜取您的個人資料。</translation> <translation id="6051354611314852653">糟糕!系統無法將 API 存取權授予這部裝置。</translation> <translation id="6051811090255711417">由於此檔案不符合安全政策要求,因此已被您的機構封鎖</translation> @@ -6799,7 +6802,7 @@ <translation id="6975361011348772931">已要求讀取並變更</translation> <translation id="6978121630131642226">搜尋引擎</translation> <translation id="6978717888677691380">您已封鎖的網站</translation> -<translation id="6979041727349121225">省電模式</translation> +<translation id="6979041727349121225">慳電模式</translation> <translation id="6979044105893951891">啟動及結束受管理的訪客工作階段</translation> <translation id="6979440798594660689">靜音 (預設)</translation> <translation id="6979737339423435258">所有時間</translation> @@ -6978,6 +6981,7 @@ <translation id="7139627972753429585"><ph name="APP_NAME" /> 正在使用您的麥克風</translation> <translation id="7141105143012495934">系統無法擷取您帳戶的詳細資料,導致登入失敗。請與您的管理員聯絡或再試一次。</translation> <translation id="7141844554192012199">檢查</translation> +<translation id="7143207342074048698">正在連接</translation> <translation id="7144878232160441200">重試</translation> <translation id="7148426638542880639">網站可能無法正常運作。如果您不希望在裝置留下網站瀏覽資訊,請選擇此選項。</translation> <translation id="7149839598364933473">在此裝置上安裝 <ph name="DEVICE_OS" />。</translation> @@ -7275,7 +7279,7 @@ <translation id="7423425410216218516">分享設定在 <ph name="MINUTES" /> 分鐘內開啟</translation> <translation id="7423513079490750513">移除<ph name="INPUT_METHOD_NAME" /></translation> <translation id="7423807071740419372">需要權限才能執行 <ph name="APP_NAME" /></translation> -<translation id="7424153922653300265">「省電模式」已開啟</translation> +<translation id="7424153922653300265">「慳電模式」已開啟</translation> <translation id="7424818322350938336">已新增網絡</translation> <translation id="7427315069950454694">今天的回憶</translation> <translation id="7427348830195639090">背景頁面:<ph name="BACKGROUND_PAGE_URL" /></translation> @@ -7683,7 +7687,7 @@ <translation id="7768507955883790804">網頁會在您瀏覽時自動採用此設定</translation> <translation id="7768526219335215384"><ph name="ORIGIN" /> 將可以查看「<ph name="FOLDERNAME" />」中的檔案</translation> <translation id="7768770796815395237">變更</translation> -<translation id="7768784765476638775">選取以朗讀</translation> +<translation id="7768784765476638775">揀選朗讀內容</translation> <translation id="7769748505895274502">收合最近關閉的分頁</translation> <translation id="7770072242481632881">側面板選取器</translation> <translation id="7770450735129978837">點擊滑鼠右鍵</translation> @@ -8159,7 +8163,7 @@ <translation id="8177318697334260664">{NUM_TABS,plural, =1{將分頁移至新視窗}other{將分頁移至新視窗}}</translation> <translation id="8179188928355984576">不使用此帳戶登入 Android 應用程式</translation> <translation id="8179976553408161302">Enter 鍵</translation> -<translation id="8180785270975217276">「省電模式」已開啟</translation> +<translation id="8180785270975217276">「慳電模式」已開啟</translation> <translation id="8180786512391440389">「<ph name="EXTENSION" />」可以讀取和刪除已勾選位置中的圖片、影片和音效檔案。</translation> <translation id="8181215761849004992">無法加入網域。請檢查您的帳戶並查看您是否有足夠權限新增裝置。</translation> <translation id="8182105986296479640">應用程式無回應。</translation> @@ -8406,7 +8410,7 @@ <translation id="8389492867173948260">允許此擴充程式讀取及變更您瀏覽的網站上的所有資料:</translation> <translation id="8390449457866780408">無法與伺服器連線。</translation> <translation id="8391218455464584335">黑膠唱片</translation> -<translation id="8392726714909453725">選取以朗讀設定</translation> +<translation id="8392726714909453725">揀選朗讀內容設定</translation> <translation id="8393511274964623038">停止外掛程式</translation> <translation id="839363317075970734">藍牙裝置詳情</translation> <translation id="8393700583063109961">傳送訊息</translation> @@ -8976,7 +8980,7 @@ <translation id="8899851313684471736">在新視窗中開啟連結(&W)</translation> <translation id="8900413463156971200">啟用流動網絡</translation> <translation id="8902059453911237649">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> 要求您備份資料,並在今天內歸還此 <ph name="DEVICE_TYPE" />。}other{<ph name="MANAGER" /> 要求您備份資料,並在期限前歸還此 <ph name="DEVICE_TYPE" />。}}</translation> -<translation id="8902667442496790482">開啟「選取以朗讀」設定</translation> +<translation id="8902667442496790482">開啟「揀選朗讀內容」設定</translation> <translation id="890616557918890486">變更來源</translation> <translation id="8907701755790961703">請選取國家/地區</translation> <translation id="8909298138148012791">已解除安裝 <ph name="APP_NAME" /></translation> @@ -9381,6 +9385,7 @@ <translation id="964790508619473209">螢幕安排</translation> <translation id="965211523698323809">在 <ph name="DEVICE_TYPE" /> 上收發短訊。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation> <translation id="96535553604365597">報告 Google Cast 的問題</translation> +<translation id="966588271015727539">選取藍牙點字顯示器</translation> <translation id="967398046773905967">禁止任何網站存取 HID 裝置</translation> <translation id="967624055006145463">已儲存的資料</translation> <translation id="96774243435178359">受管理的打印機</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index a6d3c2a..5b0a94f 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -46,6 +46,7 @@ <translation id="1038462104119736705">建議你至少為 Linux 保留 <ph name="INSTALL_SIZE" /> 的空間。如要增加可用空間,請刪除裝置中的檔案。</translation> <translation id="1038643060055067718">行數:</translation> <translation id="1039337018183941703">檔案無效或毀損</translation> +<translation id="1040761927998636252"><ph name="URL" /> 的未命名書籤</translation> <translation id="1041175011127912238">這個網頁沒有回應</translation> <translation id="1041263367839475438">可用的裝置</translation> <translation id="1042174272890264476">你的電腦也內建了 <ph name="SHORT_PRODUCT_NAME" /> 的 RLZ 程式庫。RLZ 可指定非重複、非個人的可辨識標記,以評估特定宣傳廣告活動所提升的搜尋數與 <ph name="SHORT_PRODUCT_NAME" /> 使用量。這些標籤有時也會顯示在 <ph name="PRODUCT_NAME" /> 的 Google 搜尋查詢中。</translation> @@ -2722,6 +2723,7 @@ <translation id="3336855445806447827">不確定</translation> <translation id="3337568642696914359">禁止網站處理通訊協定</translation> <translation id="3340620525920140773">下載完成:<ph name="FILE_NAME" />。</translation> +<translation id="3340978935015468852">設定</translation> <translation id="3341699307020049241">PIN 碼不正確。你還可以再試 <ph name="RETRIES" /> 次。</translation> <translation id="3341703758641437857">允許存取檔案網址</translation> <translation id="3342361181740736773">「<ph name="TRIGGERING_EXTENSION_NAME" />」要求移除這個擴充功能。</translation> @@ -5574,6 +5576,7 @@ <translation id="5904614460720589786">配置作業發生問題,因此無法設定「<ph name="APP_NAME" />」。請與系統管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation> <translation id="5906655207909574370">即將更新為最新版本!重新啟動您的裝置即可完成更新程序。</translation> <translation id="5906732635754427568">與這個應用程式相關聯的資料會從這個裝置上移除。</translation> +<translation id="5906974869830879618">請輸入 PIN 碼</translation> <translation id="5908474332780919512">當你登入時啟動應用程式</translation> <translation id="5908695239556627796">滑鼠捲動速度</translation> <translation id="5909379458939060601">要刪除這個設定檔和瀏覽資料嗎?</translation> @@ -6960,6 +6963,7 @@ <translation id="7139627972753429585">「<ph name="APP_NAME" />」正在使用麥克風</translation> <translation id="7141105143012495934">無法擷取您的帳戶詳細資料,導致登入失敗。請與您的管理員聯絡或再試一次。</translation> <translation id="7141844554192012199">安全檢查</translation> +<translation id="7143207342074048698">連線中</translation> <translation id="7144878232160441200">重試</translation> <translation id="7148426638542880639">網站可能無法正常運作。如果你不希望在裝置留下網站造訪資訊,請選擇這個選項。</translation> <translation id="7149839598364933473">在這部裝置上安裝 <ph name="DEVICE_OS" />。</translation> @@ -9364,6 +9368,7 @@ <translation id="964790508619473209">螢幕排列位置</translation> <translation id="965211523698323809">透過你的 <ph name="DEVICE_TYPE" /> 收發簡訊。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation> <translation id="96535553604365597">回報 Google Cast 的問題</translation> +<translation id="966588271015727539">選取藍牙點字顯示器</translation> <translation id="967398046773905967">不允許任何網站存取 HID 裝置</translation> <translation id="967624055006145463">已儲存的資料</translation> <translation id="96774243435178359">受管理的印表機</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index 73af7c7..4c9c040 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -2166,6 +2166,7 @@ <translation id="2804043232879091219">Esinye isiphequluli asikwazanga ukuvulwa</translation> <translation id="2804667941345577550">Uzokhishwa kuleli sayithi, kufaka phakathi kumathebhu avuliwe</translation> <translation id="2804680522274557040">Ikhamera ivaliwe</translation> +<translation id="2804742109948581745">Icala ngecala</translation> <translation id="2805539617243680210">Usumi ngomumo!</translation> <translation id="2805646850212350655">Ukubethelwa kwe-Microsift kwesistimu yefayela</translation> <translation id="2805756323405976993">Izinhlelo zokusebenza</translation> @@ -2737,6 +2738,7 @@ <translation id="3336855445806447827">Awuqinisekile</translation> <translation id="3337568642696914359">Ungavumeli amasayithi abambe amaphrothokholi</translation> <translation id="3340620525920140773">Ukulanda kuqediwe: <ph name="FILE_NAME" />.</translation> +<translation id="3340978935015468852">amasethingi</translation> <translation id="3341699307020049241">Iphinikhodi engalungile. Unemizamo engu-<ph name="RETRIES" /> esele.</translation> <translation id="3341703758641437857">Vumela ukufinyelela kuma-URL wefayela</translation> <translation id="3342361181740736773">I-"<ph name="TRIGGERING_EXTENSION_NAME" />" ingathanda ukususa lesi sandiso.</translation> @@ -4658,6 +4660,7 @@ <translation id="5056950756634735043">Xhuma esiqukathini</translation> <translation id="5057110919553308744">Uma uchofoza isandiso</translation> <translation id="5059241099014281248">Khawulela ukungena ngemvume</translation> +<translation id="5059429103770496207">Isitayela sokubonisa</translation> <translation id="5059526285558225588">Khetha ongabelana ngakho</translation> <translation id="5060332552815861872">Kukhona iphrinta engu-1 etholakalayo ukuze ilondolozwe.</translation> <translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Le folda iqukethe ibhukhimakhi. Ingabe uqinisekile ukuthi ufuna ukuyisusa?}one{Le folda iqukethwe amabhukhimakhi angu-#. Ingabe uqinisekile ukuthi ufuna ukuyisusa?}other{Le folda iqukethwe amabhukhimakhi angu-#. Ingabe uqinisekile ukuthi ufuna ukuyisusa?}}</translation> @@ -5594,6 +5597,7 @@ <translation id="5904614460720589786">Ayikwazanga ukusetha i-<ph name="APP_NAME" /> ngenxa yenkinga yokulungiselela. Sicela uxhumane nomlawuli wakho. Ikhodi yephutha: <ph name="ERROR_CODE" />.</translation> <translation id="5906655207909574370">Kucishe isesikhathini! Qala kabusha idivayisi yakho ukuze uqedele ukubuyekeza.</translation> <translation id="5906732635754427568">Idatha ephathelaniswe nalolu hlelo lokusebenza izosuswa kule divayisi.</translation> +<translation id="5906974869830879618">Sicela ufake iphinikhodi</translation> <translation id="5908474332780919512">Qala Uhlelo Lokusebenza Uma Ungena Ngemvume</translation> <translation id="5908695239556627796">Isivinini sokuskrola segundane</translation> <translation id="5909379458939060601">Sula le phrofayela nedatha yopheqululo?</translation> @@ -6983,6 +6987,7 @@ <translation id="7139627972753429585">I-<ph name="APP_NAME" /> isebenzisa imakrofoni yakho</translation> <translation id="7141105143012495934">Ukungena ngemvume kwehlulekile ngoba imininingwane ye-akhawunti yakho ayikwazanga ukubuyiswa. Sicela uxhumane nomlawuli wakho noma zama futhi.</translation> <translation id="7141844554192012199">Ukuhlola</translation> +<translation id="7143207342074048698">Iyaxhuma</translation> <translation id="7144878232160441200">Zama futhi</translation> <translation id="7148426638542880639">Amasayithi angase angasebenzi ngendlela obungayilindela. Khetha le nketho uma ungafuni ukushiya ulwazi kudivayisi yakho mayelana namasayithi owavakashelayo.</translation> <translation id="7149839598364933473">Guqulela le divayisi kudivayisi ye-<ph name="DEVICE_OS" />.</translation> @@ -9386,6 +9391,7 @@ <translation id="964790508619473209">Ukuhleleka kwesikrini</translation> <translation id="965211523698323809">Thumela futhi wamukele imilayezo kusuka ku-<ph name="DEVICE_TYPE" /> yakho. <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation> <translation id="96535553604365597">Bika inkinga nge-Google Cast</translation> +<translation id="966588271015727539">Khetha isibonisa se-bluetooth braille</translation> <translation id="967398046773905967">Ungavumeli amanye amasayithi ukufinyelela amadivayisi e-HID</translation> <translation id="967624055006145463">Idatha ilondoloziwe</translation> <translation id="96774243435178359">Amaphrinta aphethwe</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb index 536cd8b..ee6265e3 100644 --- a/chrome/app/resources/google_chrome_strings_kk.xtb +++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -35,7 +35,7 @@ <translation id="1597911401261118146">Құпия сөздеріңіз ұрланудан және басқа да қауіпсіздік мәселелерінен қаншалықты қорғалғанын тексеру үшін <ph name="BEGIN_LINK" />Chrome браузеріне кіріңіз<ph name="END_LINK" />.</translation> <translation id="1599904803480101533">Осы мұрағат файлында зиянды бағдарлама жасырылуы мүмкін болғандықтан, Chrome оны бөгеді.</translation> <translation id="1619887657840448962">Chrome браузерін қауіпсіз ету үшін, <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> тізімінде жоқ келесі кеңейтім өшірілді, ол сізге ескертілмей қосылған болуы мүмкін.</translation> -<translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chrome-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> +<translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chrome-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> <translation id="1628000112320670027">Chrome жөнінде анықтама алу</translation> <translation id="1640672724030957280">Жүктеп алынып жатыр…</translation> <translation id="1662146548738125461">ChromeOS Flex туралы ақпарат</translation> @@ -66,7 +66,7 @@ <translation id="2120620239521071941"><ph name="ITEMS_COUNT" /> элемент бұл құрылғыдан жойылады. Деректерді кейінірек алу үшін Chrome жүйесіне <ph name="USER_EMAIL" /> болып кіріңіз.</translation> <translation id="2121284319307530122">&Chrome-ды жаңарту үшін қайта іске қосу</translation> <translation id="2123055963409958220"><ph name="BEGIN_LINK" />Ағымдағы параметрлерді<ph name="END_LINK" /> хабарлау арқылы Chrome браузерін жақсартуға көмектесіңіз</translation> -<translation id="2131230230468101642">Құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chrome-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> +<translation id="2131230230468101642">Құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chrome-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> <translation id="2139300032719313227">ChromeOS жүйесін өшіріп қосу</translation> <translation id="2151406531797534936">Chrome браузерін өшіріп, қайта қосыңыз</translation> <translation id="2174917724755363426">Орнату аяқталмады. Шынымен бас тартқыңыз келе ме?</translation> @@ -238,7 +238,7 @@ <translation id="5430073640787465221">Реттеулер файлы бұзылған немесе жарамсыз. Google Chrome параметрлеріңізді қалпына келтіре алмайды.</translation> -<translation id="5524761631371622910">Сынақ нұсқалары қосылғанда, Chrome сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялылығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын жойып отырады.</translation> +<translation id="5524761631371622910">Сынақ нұсқалары қосылғанда, Chrome сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын жойып отырады.</translation> <translation id="5530733413481476019">Chrome жылдамдығын арттырыңыз</translation> <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation> <translation id="565744775970812598"><ph name="FILE_NAME" /> қауіпті болуы мүмкін болғандықтан, Chrome оны бөгеді.</translation> @@ -246,7 +246,7 @@ <translation id="5686916850681061684">Google Chrome-ды реттеу және басқару. Назар аударуыңыз қажет. Толығырақ ақпарат алу үшін басыңыз.</translation> <translation id="5690427481109656848">Google LLC</translation> <translation id="570005089986962444">Қосулы болса, Chrome белсенді емес қойындылардағы жадты босатады. Мұның нәтижесінде белсенді қойындылар мен басқа қолданбаларға қосымша компьютер ресурстары үлестіріліп, Chrome жылдам жұмыс істейді. Белсенді емес қойындыларды ашқанда, олар автоматты түрде қайтадан белсенді болады.</translation> -<translation id="5727531838415286053">Chrome сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялылығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла береді.</translation> +<translation id="5727531838415286053">Chrome сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла береді.</translation> <translation id="5736850870166430177">Егер сайт құпия сөзіңізді ұрлағысы келсе немесе зиянды файлды жүктеп алсаңыз, Chrome браузері URL мекенжайларын, сондай-ақ бет контенті бөліктерін Safe Browsing қызметіне жіберуі мүмкін.</translation> <translation id="5756509061973259733">Осы құрылғыда бұл аккаунтқа Chrome профилі тіркеліп қойған.</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> @@ -401,14 +401,14 @@ <translation id="8765470054473112089">Мекенжай жолағында немесе іздеу өрісінде терген кезде, Chrome браузері жақсырақ ұсыныстар алу үшін тергеніңізді әдепкі іздеу жүйесіне жібереді. Бұл Инкогнито режимінде өшірілген.</translation> <translation id="8821043148920470810">Google Chrome-ның жаңа нұсқаларын алып тұру үшін Windows 10 не одан кейінгі операциялық жүйе керек болады. Бұл компьютерде Windows 7 нұсқасы орнатылған.</translation> <translation id="8823341990149967727">Chrome ескірген</translation> -<translation id="8825634023950448068">Құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Егер Chrome браузері қателессе немесе белгілі бір жарнамаларды көргіңіз келмесе, қызығушылықты өшіре аласыз.</translation> +<translation id="8825634023950448068">Құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Егер Chrome браузері қателессе немесе белгілі бір жарнамаларды көргіңіз келмесе, қызығушылықты өшіре аласыз.</translation> <translation id="8834965163890861871">Google Chrome құпия сөздерді өзгерткісі келеді. Бұған рұқсат беру үшін Windows құпия сөзіңізді теріңіз.</translation> <translation id="884296878221830158">Сонымен қатар ол Chrome іске қосқанда немесе "Негізгі бет" түймесін басқанда көрсетілетін бетті басқарады.</translation> <translation id="8862326446509486874">Жүйе деңгейінде орнату үшін тиісті құқықтарыңыз жоқ. Әкімші ретінде орнату құралын қайта іске қосып көріңіз.</translation> <translation id="8914504000324227558">Chrome қолданбасын қайта іске қосу</translation> <translation id="8922193594870374009">Нөмірді <ph name="ORIGIN" /> құрылғысынан Android телефонына жіберу үшін екі құрылғыда да Chrome браузеріне кіріңіз.</translation> <translation id="8986207147630327271">Браузерге жұмыс профилін қосудасыз және әкімшіңізге жұмыс профилін басқаруды тапсырудасыз.</translation> -<translation id="8989968390305463310">Браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамаларға және қызығушылықтарға әсер етеді. Құпиялылығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын автоматты түрде жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла беруі мүмкін.</translation> +<translation id="8989968390305463310">Браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамаларға және қызығушылықтарға әсер етеді. Құпиялығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын автоматты түрде жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла беруі мүмкін.</translation> <translation id="8999208279178790196">{0,plural, =0{Chrome браузерінің жаңартылған нұсқасы қолжетімді}=1{Chrome браузерінің жаңартылған нұсқасы қолжетімді}other{Chrome браузерінің жаңартылған нұсқасы # күннен бері қолжетімді}}</translation> <translation id="9053892488859122171">ChromeOS Flex жүйесі</translation> <translation id="911206726377975832">Сонымен қатар шолу деректеріңізді жоясыз ба?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ne.xtb b/chrome/app/resources/google_chrome_strings_ne.xtb index 7b4267cb..29892242 100644 --- a/chrome/app/resources/google_chrome_strings_ne.xtb +++ b/chrome/app/resources/google_chrome_strings_ne.xtb
@@ -283,7 +283,7 @@ <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="659498884637196217">यो डिभाइसमा Google पासवर्ड म्यानेजरमा</translation> <translation id="6632473616050862500">ChromeOS Flex अतिरिक्त <ph name="BEGIN_LINK_CROS_OSS" />खुला स्रोतको सफ्टवेयर<ph name="END_LINK_CROS_OSS" /> प्रयोग गरी निर्माण गरिएको हो।</translation> -<translation id="6676384891291319759">इन्टरनेट पहुँच गर्नुहोस्</translation> +<translation id="6676384891291319759">इन्टरनेट एक्सेस गर्नुहोस्</translation> <translation id="6679975945624592337">Google Chrome लाई पृष्ठभूमिमा चल्न दिनुहोस्</translation> <translation id="6696915334902295848">यो साइट चलाउन Chrome लाई माइक्रोफोन प्रयोग गर्ने अनुमति दिनु पर्ने हुन्छ</translation> <translation id="6718739135284199302">Chrome लाई अझ छिटो काम गर्ने बनाउनुहोस्</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 19c13a64..f59b9a4 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -855,8 +855,6 @@ "net/dns_probe_service_factory.h", "net/explicitly_allowed_network_ports_policy_handler.cc", "net/explicitly_allowed_network_ports_policy_handler.h", - "net/file_downloader.cc", - "net/file_downloader.h", "net/net_error_diagnostics_dialog.h", "net/net_error_tab_helper.cc", "net/net_error_tab_helper.h", @@ -7409,6 +7407,8 @@ "supervised_user/child_accounts/family_info_fetcher.h", "supervised_user/child_accounts/permission_request_creator_apiary.cc", "supervised_user/child_accounts/permission_request_creator_apiary.h", + "supervised_user/chrome_web_content_handler_base.cc", + "supervised_user/chrome_web_content_handler_base.h", "supervised_user/kids_chrome_management/kids_access_token_fetcher.cc", "supervised_user/kids_chrome_management/kids_access_token_fetcher.h", "supervised_user/kids_chrome_management/kids_chrome_management_client_factory.cc",
diff --git a/chrome/browser/android/explore_sites/explore_sites_fetcher.cc b/chrome/browser/android/explore_sites/explore_sites_fetcher.cc index 96a51ec..f59560a7 100644 --- a/chrome/browser/android/explore_sites/explore_sites_fetcher.cc +++ b/chrome/browser/android/explore_sites/explore_sites_fetcher.cc
@@ -209,7 +209,6 @@ ExploreSitesRequestStatus ExploreSitesFetcher::HandleResponseCode() { int response_code = -1; int net_error = url_loader_->NetError(); - base::UmaHistogramSparse("ExploreSites.FetcherNetErrorCode", -net_error); if (url_loader_->ResponseInfo() && url_loader_->ResponseInfo()->headers) response_code = url_loader_->ResponseInfo()->headers->response_code(); @@ -221,9 +220,6 @@ : ExploreSitesRequestStatus::kFailure; } - base::UmaHistogramSparse("ExploreSites.FetcherHttpResponseCode", - response_code); - if (response_code < 200 || response_code > 299) { DVLOG(1) << "HTTP status: " << response_code; switch (response_code) {
diff --git a/chrome/browser/android/explore_sites/explore_sites_fetcher_unittest.cc b/chrome/browser/android/explore_sites/explore_sites_fetcher_unittest.cc index 9da473b..6cbb2fb8 100644 --- a/chrome/browser/android/explore_sites/explore_sites_fetcher_unittest.cc +++ b/chrome/browser/android/explore_sites/explore_sites_fetcher_unittest.cc
@@ -8,7 +8,6 @@ #include "base/functional/bind.h" #include "base/test/bind.h" -#include "base/test/metrics/histogram_tester.h" #include "base/test/mock_callback.h" #include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" @@ -86,10 +85,6 @@ return &task_environment_; } - const base::HistogramTester* histograms() const { - return histogram_tester_.get(); - } - private: ExploreSitesFetcher::Callback StoreResult(); network::TestURLLoaderFactory::PendingRequest* GetLastPendingRequest(); @@ -107,7 +102,6 @@ base::test::SingleThreadTaskEnvironment::MainThreadType::IO, base::test::SingleThreadTaskEnvironment::TimeSource::MOCK_TIME}; base::test::ScopedFeatureList scoped_feature_list_; - std::unique_ptr<base::HistogramTester> histogram_tester_; }; ExploreSitesFetcher::Callback ExploreSitesFetcherTest::StoreResult() { @@ -140,10 +134,6 @@ &data_received); EXPECT_TRUE(data_received.empty()); - histograms()->ExpectUniqueSample("ExploreSites.FetcherNetErrorCode", - -net_error, 1); - histograms()->ExpectTotalCount("ExploreSites.FetcherHttpResponseCode", 0); - return status; } @@ -156,11 +146,6 @@ &data_received); EXPECT_TRUE(data_received.empty()); - histograms()->ExpectUniqueSample("ExploreSites.FetcherNetErrorCode", - -net::ERR_HTTP_RESPONSE_CODE_FAILURE, 1); - histograms()->ExpectUniqueSample("ExploreSites.FetcherHttpResponseCode", - http_error, 1); - return status; } @@ -212,7 +197,6 @@ ExploreSitesRequestStatus ExploreSitesFetcherTest::RunFetcher( base::OnceCallback<void(void)> respond_callback, std::string* data_received) { - histogram_tester_ = std::make_unique<base::HistogramTester>(); std::unique_ptr<ExploreSitesFetcher> fetcher = CreateFetcher(true /* disable_retry*/, true /*is_immediate_fetch*/);
diff --git a/chrome/browser/ash/browser_context_keyed_service_factories.cc b/chrome/browser/ash/browser_context_keyed_service_factories.cc index 5463719..6940656 100644 --- a/chrome/browser/ash/browser_context_keyed_service_factories.cc +++ b/chrome/browser/ash/browser_context_keyed_service_factories.cc
@@ -92,6 +92,7 @@ #include "chrome/browser/ash/remote_apps/remote_apps_manager_factory.h" #include "chrome/browser/ash/secure_channel/nearby_connector_factory.h" #include "chrome/browser/ash/smb_client/smb_service_factory.h" +#include "chrome/browser/ash/sync/sync_appsync_service_factory.h" #include "chrome/browser/ash/sync/sync_error_notifier_factory.h" #include "chrome/browser/ash/sync/sync_mojo_service_factory_ash.h" #include "chrome/browser/ash/tether/tether_service_factory.h" @@ -190,6 +191,7 @@ file_manager::VolumeManagerFactory::GetInstance(); file_system_provider::ServiceFactory::GetInstance(); full_restore::FullRestoreServiceFactory::GetInstance(); + GlanceablesKeyedServiceFactory::GetInstance(); guest_os::GuestOsMimeTypesServiceFactory::GetInstance(); guest_os::GuestOsRegistryServiceFactory::GetInstance(); guest_os::GuestOsServiceFactory::GetInstance(); @@ -220,11 +222,11 @@ secure_channel::NearbyConnectorFactory::GetInstance(); sharesheet::SharesheetServiceFactory::GetInstance(); smb_client::SmbServiceFactory::GetInstance(); + SyncAppsyncServiceFactory::GetInstance(); SyncedPrintersManagerFactory::GetInstance(); SyncMojoServiceFactoryAsh::GetInstance(); tether::TetherServiceFactory::GetInstance(); TtsEngineExtensionObserverChromeOS::EnsureFactoryBuilt(); - GlanceablesKeyedServiceFactory::GetInstance(); } } // namespace ash
diff --git a/chrome/browser/ash/crosapi/browser_manager.cc b/chrome/browser/ash/crosapi/browser_manager.cc index 01f2fc9..19a54aa 100644 --- a/chrome/browser/ash/crosapi/browser_manager.cc +++ b/chrome/browser/ash/crosapi/browser_manager.cc
@@ -236,8 +236,6 @@ base::FilePath locale_path = lacros_dir.Append(base::StringPrintf("locales/%s.pak", locale.c_str())); PreloadFile(locale_path); - base::FilePath locale_info_path = locale_path.AddExtension(".info"); - PreloadFile(locale_info_path); // Preload Widevine for the right architecture. #if defined(ARCH_CPU_ARM_FAMILY) @@ -567,6 +565,16 @@ component_update_service_(update_service), environment_provider_(std::make_unique<EnvironmentProvider>()), launch_at_login_screen_( + // NOTE: We only want to pre-launch Lacros if Ash is launched in login + // manager mode. When the `kLoginUser` switch is passed, we are + // restarting the session for an already logged in user, either in + // production, or after PRE_ tests. In both of those cases, the user + // is already logged in, and we do not want Lacros to prelaunch. + // Originally introduced because of https://crbug.com/1432779, which + // causes PRE_ tests to restart back to login screen, but with the + // user still "logged in" (UserManager::IsUserLoggedIn() == true). + !base::CommandLine::ForCurrentProcess()->HasSwitch( + ash::switches::kLoginUser) && base::FeatureList::IsEnabled(kLacrosLaunchAtLoginScreen)), disabled_for_testing_(g_disabled_for_testing) { DCHECK(!g_instance); @@ -724,6 +732,11 @@ } void BrowserManager::InitializeAndStartIfNeeded() { + // If we already tried to load Lacros but for some reason it wasn't available + // (for example, in some tests), then we should return here to avoid failure. + if (state_ == State::UNAVAILABLE) { + return; + } DCHECK_EQ(state_, State::NOT_INITIALIZED); // Ensure this isn't run multiple times.
diff --git a/chrome/browser/ash/login/login_after_update_to_flex_browsertest.cc b/chrome/browser/ash/login/login_after_update_to_flex_browsertest.cc index de74069..6ef745a 100644 --- a/chrome/browser/ash/login/login_after_update_to_flex_browsertest.cc +++ b/chrome/browser/ash/login/login_after_update_to_flex_browsertest.cc
@@ -92,7 +92,7 @@ LocalStateMixin local_state_mixin_{&mixin_host_, this}; }; -IN_PROC_BROWSER_TEST_F(LoginAfterUpdateToFlexTest, DeviceOwner) { +IN_PROC_BROWSER_TEST_F(LoginAfterUpdateToFlexTest, DISABLED_DeviceOwner) { LoginUser(GetOwnerAccountId()); EXPECT_FALSE(ProfileManager::GetActiveUserProfile()->GetPrefs()->GetBoolean( prefs::kRevenOobeConsolidatedConsentAccepted));
diff --git a/chrome/browser/ash/policy/core/device_policy_decoder.cc b/chrome/browser/ash/policy/core/device_policy_decoder.cc index 4f4376c4..357002f 100644 --- a/chrome/browser/ash/policy/core/device_policy_decoder.cc +++ b/chrome/browser/ash/policy/core/device_policy_decoder.cc
@@ -921,6 +921,11 @@ policies, key::kDeviceActivityHeartbeatCollectionRateMs, container.device_activity_heartbeat_collection_rate_ms()); } + if (container.has_report_network_events()) { + policies->Set(key::kDeviceReportNetworkEvents, POLICY_LEVEL_MANDATORY, + POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, + base::Value(container.report_network_events()), nullptr); + } } if (policy.has_device_heartbeat_settings()) {
diff --git a/chrome/browser/ash/policy/core/device_policy_decoder_unittest.cc b/chrome/browser/ash/policy/core/device_policy_decoder_unittest.cc index 99832ca..1a8b9a8 100644 --- a/chrome/browser/ash/policy/core/device_policy_decoder_unittest.cc +++ b/chrome/browser/ash/policy/core/device_policy_decoder_unittest.cc
@@ -400,6 +400,20 @@ base::Value(std::move(signal_strength_telemetry_list))); } +TEST_F(DevicePolicyDecoderTest, DeviceReportNetworkEvents) { + em::ChromeDeviceSettingsProto device_policy; + + DecodeUnsetDevicePolicyTestHelper(device_policy, + key::kDeviceReportNetworkEvents); + + base::Value report_network_events_value(true); + device_policy.mutable_device_reporting()->set_report_network_events( + report_network_events_value.GetBool()); + + DecodeDevicePolicyTestHelper(device_policy, key::kDeviceReportNetworkEvents, + std::move(report_network_events_value)); +} + TEST_F(DevicePolicyDecoderTest, DecodeServiceUUIDListSuccess) { std::string error; absl::optional<base::Value> decoded_json = DecodeJsonStringAndNormalize(
diff --git a/chrome/browser/ash/policy/enrollment/OWNERS b/chrome/browser/ash/policy/enrollment/OWNERS index ac665b8..75b4913 100644 --- a/chrome/browser/ash/policy/enrollment/OWNERS +++ b/chrome/browser/ash/policy/enrollment/OWNERS
@@ -1,3 +1,4 @@ rbock@google.com +sergiyb@google.com per-file *auto_enrollment*=amraboelkher@chromium.org
diff --git a/chrome/browser/ash/policy/enrollment/enrollment_state_fetcher_unittest.cc b/chrome/browser/ash/policy/enrollment/enrollment_state_fetcher_unittest.cc index b5fff34..ffa954e 100644 --- a/chrome/browser/ash/policy/enrollment/enrollment_state_fetcher_unittest.cc +++ b/chrome/browser/ash/policy/enrollment/enrollment_state_fetcher_unittest.cc
@@ -8,7 +8,6 @@ #include "ash/constants/ash_switches.h" #include "base/functional/bind.h" -#include "base/run_loop.h" #include "base/strings/stringprintf.h" #include "base/test/gmock_callback_support.h" #include "base/test/scoped_command_line.h" @@ -21,7 +20,6 @@ #include "chrome/browser/ash/policy/enrollment/psm/rlwe_test_support.h" #include "chrome/browser/ash/policy/server_backed_state/server_backed_device_state.h" #include "chrome/browser/ash/policy/server_backed_state/server_backed_state_keys_broker.h" -#include "chrome/browser/ash/settings/device_settings_service.h" #include "chrome/common/pref_names.h" #include "chromeos/ash/components/dbus/system_clock/fake_system_clock_client.h" #include "chromeos/ash/components/install_attributes/stub_install_attributes.h" @@ -36,7 +34,6 @@ #include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/test/test_url_loader_factory.h" -#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" namespace policy { @@ -449,10 +446,9 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kNoEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - EXPECT_TRUE(device_state.GetDict().empty()); + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + EXPECT_TRUE(device_state.empty()); } TEST_F(EnrollmentStateFetcherTest, InitialEnrollmentEnforced) { @@ -474,19 +470,18 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateMode)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateMode), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateMode)); + EXPECT_EQ(*device_state.FindString(kDeviceStateMode), kDeviceStateInitialModeEnrollmentEnforced); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateManagementDomain)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateManagementDomain), + ASSERT_TRUE(device_state.FindString(kDeviceStateManagementDomain)); + EXPECT_EQ(*device_state.FindString(kDeviceStateManagementDomain), "example.org"); - EXPECT_FALSE(device_state.FindStringKey(kDeviceStateDisabledMessage)); - EXPECT_FALSE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_FALSE(device_state.FindStringKey(kDeviceStatePackagedLicense)); - EXPECT_FALSE(device_state.FindStringKey(kDeviceStateAssignedUpgradeType)); + EXPECT_FALSE(device_state.FindString(kDeviceStateDisabledMessage)); + EXPECT_FALSE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_FALSE(device_state.FindString(kDeviceStatePackagedLicense)); + EXPECT_FALSE(device_state.FindString(kDeviceStateAssignedUpgradeType)); } TEST_F(EnrollmentStateFetcherTest, InitialEnrollmentDisabled) { @@ -508,14 +503,13 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kDisabled); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateMode)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateMode), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateMode)); + EXPECT_EQ(*device_state.FindString(kDeviceStateMode), kDeviceStateModeDisabled); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateDisabledMessage)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateDisabledMessage), + ASSERT_TRUE(device_state.FindString(kDeviceStateDisabledMessage)); + EXPECT_EQ(*device_state.FindString(kDeviceStateDisabledMessage), kTestDisabledMessage); } @@ -541,16 +535,15 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateMode)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateMode), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateMode)); + EXPECT_EQ(*device_state.FindString(kDeviceStateMode), kDeviceStateInitialModeEnrollmentZeroTouch); - ASSERT_TRUE(device_state.FindBoolKey(kDeviceStatePackagedLicense)); - EXPECT_EQ(*device_state.FindBoolKey(kDeviceStatePackagedLicense), true); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateLicenseType), + ASSERT_TRUE(device_state.FindBool(kDeviceStatePackagedLicense)); + EXPECT_EQ(*device_state.FindBool(kDeviceStatePackagedLicense), true); + ASSERT_TRUE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_EQ(*device_state.FindString(kDeviceStateLicenseType), kDeviceStateLicenseTypeEnterprise); } @@ -576,13 +569,12 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindBoolKey(kDeviceStatePackagedLicense)); - EXPECT_EQ(*device_state.FindBoolKey(kDeviceStatePackagedLicense), false); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateLicenseType), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindBool(kDeviceStatePackagedLicense)); + EXPECT_EQ(*device_state.FindBool(kDeviceStatePackagedLicense), false); + ASSERT_TRUE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_EQ(*device_state.FindString(kDeviceStateLicenseType), kDeviceStateLicenseTypeEducation); } @@ -607,11 +599,10 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateLicenseType), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_EQ(*device_state.FindString(kDeviceStateLicenseType), kDeviceStateLicenseTypeTerminal); } @@ -636,12 +627,11 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateAssignedUpgradeType)); + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateAssignedUpgradeType)); EXPECT_TRUE( - device_state.FindStringKey(kDeviceStateAssignedUpgradeType)->empty()); + device_state.FindString(kDeviceStateAssignedUpgradeType)->empty()); } TEST_F(EnrollmentStateFetcherTest, ZTEWithChromeEnterpriseUpgrade) { @@ -665,11 +655,10 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateAssignedUpgradeType)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateAssignedUpgradeType), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateAssignedUpgradeType)); + EXPECT_EQ(*device_state.FindString(kDeviceStateAssignedUpgradeType), kDeviceStateAssignedUpgradeTypeChromeEnterprise); } @@ -694,11 +683,10 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateAssignedUpgradeType)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateAssignedUpgradeType), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateAssignedUpgradeType)); + EXPECT_EQ(*device_state.FindString(kDeviceStateAssignedUpgradeType), kDeviceStateAssignedUpgradeTypeKiosk); } @@ -719,19 +707,18 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateMode)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateMode), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateMode)); + EXPECT_EQ(*device_state.FindString(kDeviceStateMode), kDeviceStateRestoreModeReEnrollmentRequested); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateManagementDomain)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateManagementDomain), + ASSERT_TRUE(device_state.FindString(kDeviceStateManagementDomain)); + EXPECT_EQ(*device_state.FindString(kDeviceStateManagementDomain), "example.org"); - EXPECT_FALSE(device_state.FindStringKey(kDeviceStateDisabledMessage)); - EXPECT_FALSE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_FALSE(device_state.FindStringKey(kDeviceStatePackagedLicense)); - EXPECT_FALSE(device_state.FindStringKey(kDeviceStateAssignedUpgradeType)); + EXPECT_FALSE(device_state.FindString(kDeviceStateDisabledMessage)); + EXPECT_FALSE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_FALSE(device_state.FindString(kDeviceStatePackagedLicense)); + EXPECT_FALSE(device_state.FindString(kDeviceStateAssignedUpgradeType)); } TEST_F(EnrollmentStateFetcherTest, ReEnrollmentEnforced) { @@ -750,11 +737,10 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateMode)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateMode), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateMode)); + EXPECT_EQ(*device_state.FindString(kDeviceStateMode), kDeviceStateRestoreModeReEnrollmentEnforced); } @@ -775,14 +761,13 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kDisabled); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateMode)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateMode), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateMode)); + EXPECT_EQ(*device_state.FindString(kDeviceStateMode), kDeviceStateModeDisabled); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateDisabledMessage)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateDisabledMessage), + ASSERT_TRUE(device_state.FindString(kDeviceStateDisabledMessage)); + EXPECT_EQ(*device_state.FindString(kDeviceStateDisabledMessage), kTestDisabledMessage); } @@ -804,14 +789,13 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateMode)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateMode), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateMode)); + EXPECT_EQ(*device_state.FindString(kDeviceStateMode), kDeviceStateRestoreModeReEnrollmentZeroTouch); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateLicenseType), + ASSERT_TRUE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_EQ(*device_state.FindString(kDeviceStateLicenseType), kDeviceStateLicenseTypeEnterprise); } @@ -833,11 +817,10 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_TRUE(device_state.FindStringKey(kDeviceStateLicenseType)->empty()); + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_TRUE(device_state.FindString(kDeviceStateLicenseType)->empty()); } TEST_F(EnrollmentStateFetcherTest, AutoREWithAnnualLicense) { @@ -858,11 +841,10 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateLicenseType), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_EQ(*device_state.FindString(kDeviceStateLicenseType), kDeviceStateLicenseTypeEnterprise); } @@ -884,11 +866,10 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateLicenseType), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_EQ(*device_state.FindString(kDeviceStateLicenseType), kDeviceStateLicenseTypeTerminal); } @@ -910,11 +891,10 @@ AutoEnrollmentState state = FetchEnrollmentState(); EXPECT_EQ(state, AutoEnrollmentState::kEnrollment); - const base::Value& device_state = - local_state_.GetValue(prefs::kServerBackedDeviceState); - ASSERT_TRUE(device_state.is_dict()); - ASSERT_TRUE(device_state.FindStringKey(kDeviceStateLicenseType)); - EXPECT_EQ(*device_state.FindStringKey(kDeviceStateLicenseType), + const base::Value::Dict& device_state = + local_state_.GetDict(prefs::kServerBackedDeviceState); + ASSERT_TRUE(device_state.FindString(kDeviceStateLicenseType)); + EXPECT_EQ(*device_state.FindString(kDeviceStateLicenseType), kDeviceStateLicenseTypeEnterprise); }
diff --git a/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler.cc b/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler.cc index ced227c..3cb6890 100644 --- a/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler.cc +++ b/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler.cc
@@ -6,9 +6,11 @@ #include "ash/public/cpp/ambient/ambient_prefs.h" #include "ash/shell.h" +#include "base/base64url.h" #include "base/check.h" #include "base/files/file_path.h" #include "base/functional/callback.h" +#include "base/hash/sha1.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" #include "components/prefs/pref_registry_simple.h" @@ -21,6 +23,18 @@ namespace { constexpr char kCacheDirectoryName[] = "managed_screensaver"; +constexpr char kCacheFileExt[] = ".cache"; + +// This limit is specified in the policy definition for the policies +// ScreensaverLockScreenImages and DeviceScreensaverLoginScreenImages. +constexpr size_t kMaxUrlsToProcessFromPolicy = 25u; + +std::string GetHashedNameForUrl(const std::string& url) { + std::string hashed_url; + base::Base64UrlEncode(base::SHA1HashString(url), + base::Base64UrlEncodePolicy::OMIT_PADDING, &hashed_url); + return hashed_url + kCacheFileExt; +} } // namespace @@ -41,15 +55,41 @@ return; } - // TODO(b/271093572): Read the value from the pref and try to download + // TODO(b/277729103): If the pref value is empty, delete files in the download + // directory, clear `downloaded_images_`, and do not trigger new download + // jobs. + + // TODO(b/271093110): Implement clean up logic before sending new download + // jobs. + + const base::Value::List& urls_list = user_pref_service_->GetList( + ash::ambient::prefs::kAmbientModeManagedScreensaverImages); + for (size_t i = 0; i < kMaxUrlsToProcessFromPolicy && i < urls_list.size(); + ++i) { + const base::Value& url = urls_list[i]; + if (!url.is_string() || url.GetString().empty()) { + continue; + } + auto job = std::make_unique<ScreensaverImageDownloader::Job>( + url.GetString(), GetHashedNameForUrl(url.GetString()), + base::BindOnce(&ScreensaverImagesPolicyHandler::OnDownloadJobCompleted, + weak_ptr_factory_.GetWeakPtr())); + + image_downloader_->QueueDownloadJob(std::move(job)); + } } -// TODO(b/271093572): Call this function when images have been downloaded -void ScreensaverImagesPolicyHandler::OnScreensaverImagesDownloaded() { - // TODO(b/271093572): Run with all downloaded file paths. - if (on_images_updated_callback_) { - on_images_updated_callback_.Run({}); +void ScreensaverImagesPolicyHandler::OnDownloadJobCompleted( + ScreensaverImageDownloadResult result, + absl::optional<base::FilePath> path) { + if (result != ScreensaverImageDownloadResult::kSuccess) { + return; } + CHECK(path.has_value()); + downloaded_images_.insert(*path); + + on_images_updated_callback_.Run(std::vector<base::FilePath>( + downloaded_images_.begin(), downloaded_images_.end())); } void ScreensaverImagesPolicyHandler::SetScreensaverImagesUpdatedCallback( @@ -60,9 +100,8 @@ std::vector<base::FilePath> ScreensaverImagesPolicyHandler::GetScreensaverImages() { - // TODO(b/271093572): return the file paths to the images that have been - // already downloaded. - return {}; + return std::vector<base::FilePath>(downloaded_images_.begin(), + downloaded_images_.end()); } void ScreensaverImagesPolicyHandler::OnActiveUserPrefServiceChanged(
diff --git a/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler.h b/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler.h index d69c757e..4092090 100644 --- a/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler.h +++ b/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler.h
@@ -11,6 +11,7 @@ #include "ash/public/cpp/ambient/ambient_managed_photo_source.h" #include "ash/public/cpp/session/session_observer.h" #include "ash/session/session_controller_impl.h" +#include "base/containers/flat_set.h" #include "base/files/file_path.h" #include "base/functional/callback_forward.h" #include "base/memory/raw_ptr.h" @@ -48,7 +49,10 @@ void OnAmbientModeManagedScreensaverImagesPrefChanged(); // Download completion handler. - void OnScreensaverImagesDownloaded(); + void OnDownloadJobCompleted(ScreensaverImageDownloadResult result, + absl::optional<base::FilePath> path); + + base::flat_set<base::FilePath> downloaded_images_; base::raw_ptr<PrefService> user_pref_service_ = nullptr;
diff --git a/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler_unittest.cc b/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler_unittest.cc index 393a2fd..32c99299 100644 --- a/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler_unittest.cc +++ b/chrome/browser/ash/policy/handlers/screensaver_images_policy_handler_unittest.cc
@@ -4,28 +4,49 @@ #include "chrome/browser/ash/policy/handlers/screensaver_images_policy_handler.h" +#include <algorithm> #include <memory> +#include <vector> #include "ash/public/cpp/ambient/ambient_managed_photo_source.h" #include "ash/public/cpp/ambient/ambient_prefs.h" #include "ash/public/cpp/ash_prefs.h" #include "ash/test/ash_test_helper.h" +#include "base/base64url.h" #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" +#include "base/hash/sha1.h" #include "base/test/repeating_test_future.h" #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h" +#include "chrome/browser/ash/policy/handlers/screensaver_image_downloader.h" #include "chrome/test/base/testing_profile.h" #include "components/user_manager/scoped_user_manager.h" #include "content/public/test/browser_task_environment.h" +#include "screensaver_image_downloader.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/test/test_url_loader_factory.h" #include "testing/gtest/include/gtest/gtest.h" +#include "third_party/abseil-cpp/absl/types/optional.h" namespace policy { namespace { + constexpr char kTestProfileDirectoryName[] = "test_profile"; constexpr char kUserEmail[] = "user@mail.com"; +constexpr char kFakeFilePath1[] = "/path/to/file1"; +constexpr char kFakeFilePath2[] = "/path/to/file2"; + +constexpr char kCacheDirectoryName[] = "managed_screensaver"; +constexpr char kCacheFileExt[] = ".cache"; + +constexpr char kImageUrl1[] = "http://example.com/1.jpg"; +constexpr char kImageUrl2[] = "http://example.com/2.jpg"; +constexpr char kFileContents1[] = "file contents 1"; +constexpr char kFileContents2[] = "file contents 2"; + +constexpr size_t kMaxUrlsToProcessFromPolicy = 25u; + } // namespace class ScreensaverImagesPolicyHandlerTest : public testing::Test { @@ -65,9 +86,10 @@ void TearDown() override { policy_handler_.reset(); } - void TriggerOnScreensaverImagesDownloaded() { + void TriggerOnDownloadJobCompleted(ScreensaverImageDownloadResult result, + absl::optional<base::FilePath> path) { ASSERT_TRUE(ScreensaverImagesPolicyHandler::Get()); - policy_handler_->OnScreensaverImagesDownloaded(); + policy_handler_->OnDownloadJobCompleted(result, path); } void RegisterUser(const AccountId& account_id, @@ -114,6 +136,26 @@ EXPECT_TRUE(policy_handler_->image_downloader_); } + base::FilePath GetExpectedFilePath(const std::string url) { + std::string file_name; + base::Base64UrlEncode(base::SHA1HashString(url), + base::Base64UrlEncodePolicy::OMIT_PADDING, + &file_name); + file_name += kCacheFileExt; + + return fake_profile_dir_.AppendASCII(kCacheDirectoryName) + .AppendASCII(file_name); + } + + TestingPrefServiceSimple* user_prefs() { + CHECK(user_prefs_); + return user_prefs_; + } + + network::TestURLLoaderFactory* url_loader_factory() { + return &url_loader_factory_; + } + private: content::BrowserTaskEnvironment task_environment_; @@ -153,13 +195,104 @@ test_future.GetCallback<const std::vector<base::FilePath>&>()); // Expect callbacks when images are downloaded. - TriggerOnScreensaverImagesDownloaded(); - EXPECT_TRUE(test_future.Wait()); - test_future.Take(); - TriggerOnScreensaverImagesDownloaded(); - EXPECT_TRUE(test_future.Wait()); - test_future.Take(); + base::FilePath file_path1(kFakeFilePath1); + { + TriggerOnDownloadJobCompleted(ScreensaverImageDownloadResult::kSuccess, + file_path1); + EXPECT_TRUE(test_future.Wait()); + std::vector<base::FilePath> file_paths = test_future.Take(); + ASSERT_EQ(1u, file_paths.size()); + EXPECT_EQ(file_path1, file_paths.front()); + } + base::FilePath file_path2(kFakeFilePath2); + { + TriggerOnDownloadJobCompleted(ScreensaverImageDownloadResult::kSuccess, + file_path2); + EXPECT_TRUE(test_future.Wait()); + std::vector<base::FilePath> file_paths = test_future.Take(); + ASSERT_EQ(2u, file_paths.size()); + EXPECT_NE(file_paths.end(), + std::find(file_paths.begin(), file_paths.end(), file_path1)); + EXPECT_NE(file_paths.end(), + std::find(file_paths.begin(), file_paths.end(), file_path2)); + } + EXPECT_TRUE(test_future.IsEmpty()); } +TEST_F(ScreensaverImagesPolicyHandlerTest, DownloadImagesTest) { + CreateHandlerInstanceWithUserProfile(); + base::test::RepeatingTestFuture<std::vector<base::FilePath>> test_future; + ScreensaverImagesPolicyHandler::Get()->SetScreensaverImagesUpdatedCallback( + test_future.GetCallback<const std::vector<base::FilePath>&>()); + + base::Value::List image_urls; + image_urls.Append(kImageUrl1); + image_urls.Append(kImageUrl2); + + // Fill the pref service to trigger the logic under test. + user_prefs()->SetManagedPref( + ash::ambient::prefs::kAmbientModeManagedScreensaverImages, + image_urls.Clone()); + + // Verify that the first request is resolved + { + url_loader_factory()->AddResponse(image_urls[0].GetString(), + kFileContents1); + EXPECT_TRUE(test_future.Wait()); + std::vector<base::FilePath> file_paths = test_future.Take(); + ASSERT_EQ(1u, file_paths.size()); + EXPECT_EQ(GetExpectedFilePath(kImageUrl1), file_paths.front()); + } + + // Verify that the second request is resolved and both file paths are present. + { + url_loader_factory()->AddResponse(image_urls[1].GetString(), + kFileContents2); + EXPECT_TRUE(test_future.Wait()); + std::vector<base::FilePath> file_paths = test_future.Take(); + ASSERT_EQ(2u, file_paths.size()); + EXPECT_NE(file_paths.end(), std::find(file_paths.begin(), file_paths.end(), + GetExpectedFilePath(kImageUrl1))); + EXPECT_NE(file_paths.end(), std::find(file_paths.begin(), file_paths.end(), + GetExpectedFilePath(kImageUrl2))); + } +} + +TEST_F(ScreensaverImagesPolicyHandlerTest, VerifyPolicyLimit) { + CreateHandlerInstanceWithUserProfile(); + base::test::RepeatingTestFuture<std::vector<base::FilePath>> test_future; + ScreensaverImagesPolicyHandler::Get()->SetScreensaverImagesUpdatedCallback( + test_future.GetCallback<const std::vector<base::FilePath>&>()); + + base::Value::List image_urls; + // Append the same URL request `kMaxUrlsToProcessFromPolicy` times. This + // should be the only URL that can be requested. + for (size_t i = 0; i < kMaxUrlsToProcessFromPolicy; ++i) { + image_urls.Append(kImageUrl1); + } + // Append a new URL that must be ignored. + image_urls.Append(kImageUrl2); + + // Add both responses in the URL factory. + url_loader_factory()->AddResponse(image_urls[0].GetString(), kFileContents1); + url_loader_factory()->AddResponse(image_urls[1].GetString(), kFileContents2); + + // Fill the pref service to trigger the logic under test. + user_prefs()->SetManagedPref( + ash::ambient::prefs::kAmbientModeManagedScreensaverImages, + image_urls.Clone()); + + const base::FilePath expected_file_path = GetExpectedFilePath(kImageUrl1); + for (size_t i = 0; i < kMaxUrlsToProcessFromPolicy; ++i) { + EXPECT_TRUE(test_future.Wait()); + std::vector<base::FilePath> file_paths = test_future.Take(); + ASSERT_TRUE(file_paths.size()); + ASSERT_GT(kMaxUrlsToProcessFromPolicy, file_paths.size()); + for (const base::FilePath& p : file_paths) { + EXPECT_EQ(expected_file_path, p); + } + } +} + } // namespace policy
diff --git a/chrome/browser/ash/settings/device_settings_provider.cc b/chrome/browser/ash/settings/device_settings_provider.cc index 2d0a1e06..151c262 100644 --- a/chrome/browser/ash/settings/device_settings_provider.cc +++ b/chrome/browser/ash/settings/device_settings_provider.cc
@@ -178,6 +178,7 @@ kVariationsRestrictParameter, kVirtualMachinesAllowed, kDeviceReportXDREvents, + kDeviceReportNetworkEvents, }; constexpr char InvalidCombinationsOfAllowedUsersPoliciesHistogram[] = @@ -824,6 +825,10 @@ kDeviceActivityHeartbeatCollectionRateMs, reporting_policy.device_activity_heartbeat_collection_rate_ms()); } + if (reporting_policy.has_report_network_events()) { + new_values_cache->SetBoolean(kDeviceReportNetworkEvents, + reporting_policy.report_network_events()); + } } }
diff --git a/chrome/browser/ash/settings/device_settings_provider_unittest.cc b/chrome/browser/ash/settings/device_settings_provider_unittest.cc index 0622dc99..50dbcf3 100644 --- a/chrome/browser/ash/settings/device_settings_provider_unittest.cc +++ b/chrome/browser/ash/settings/device_settings_provider_unittest.cc
@@ -110,6 +110,7 @@ proto->set_report_login_logout(enable_reporting); proto->set_report_crd_sessions(enable_reporting); proto->set_device_activity_heartbeat_enabled(enable_reporting); + proto->set_report_network_events(enable_reporting); proto->set_report_network_telemetry_collection_rate_ms(frequency); proto->set_report_network_telemetry_event_checking_rate_ms(frequency); proto->set_device_status_frequency(frequency); @@ -186,7 +187,8 @@ kReportDeviceSecurityStatus, kReportDeviceGraphicsStatus, kReportDeviceCrashReportInfo, kReportDeviceAppInfo, kReportDevicePrintJobs, kReportDeviceLoginLogout, kReportOsUpdateStatus, - kReportRunningKioskApp, kDeviceActivityHeartbeatEnabled}; + kReportRunningKioskApp, kDeviceActivityHeartbeatEnabled, + kDeviceReportNetworkEvents}; const base::Value expected_enable_value(expected_enable_state); for (auto* setting : reporting_settings) {
diff --git a/chrome/browser/ash/sync/sync_appsync_optin_client.cc b/chrome/browser/ash/sync/sync_appsync_optin_client.cc index 8e5f2de..165419c 100644 --- a/chrome/browser/ash/sync/sync_appsync_optin_client.cc +++ b/chrome/browser/ash/sync/sync_appsync_optin_client.cc
@@ -10,6 +10,7 @@ #include "base/metrics/histogram_functions.h" #include "base/task/task_traits.h" #include "base/task/thread_pool.h" +#include "components/account_id/account_id.h" #include "components/signin/public/identity_manager/account_info.h" #include "components/sync/base/user_selectable_type.h" #include "components/sync/driver/sync_service.h" @@ -68,8 +69,8 @@ return ""; } - AccountId account_id = AccountId::FromUserEmailGaiaId(sync_user_account.email, - sync_user_account.gaia); + AccountId account_id = AccountId::FromNonCanonicalEmail( + sync_user_account.email, sync_user_account.gaia, AccountType::GOOGLE); const user_manager::User* user = user_manager_->FindUser(account_id);
diff --git a/chrome/browser/ash/sync/sync_appsync_service_factory.cc b/chrome/browser/ash/sync/sync_appsync_service_factory.cc index c7cc0cb..385c10a8 100644 --- a/chrome/browser/ash/sync/sync_appsync_service_factory.cc +++ b/chrome/browser/ash/sync/sync_appsync_service_factory.cc
@@ -39,7 +39,8 @@ SyncAppsyncServiceFactory::~SyncAppsyncServiceFactory() = default; -KeyedService* SyncAppsyncServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +SyncAppsyncServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); syncer::SyncService* sync_service = @@ -59,7 +60,19 @@ user_manager::UserManager* user_manager = user_manager::UserManager::Get(); - return new SyncAppsyncService(sync_service, user_manager); + return std::make_unique<SyncAppsyncService>(sync_service, user_manager); +} + +// SyncAppsyncService needs to be created by default as it is responsible for +// populating the current profile's apps sync status to the daemon-store, as +// well as monitoring for changes, and we need this information to exist / be +// current. +bool SyncAppsyncServiceFactory::ServiceIsCreatedWithBrowserContext() const { + return true; +} + +bool SyncAppsyncServiceFactory::ServiceIsNULLWhileTesting() const { + return true; } } // namespace ash
diff --git a/chrome/browser/ash/sync/sync_appsync_service_factory.h b/chrome/browser/ash/sync/sync_appsync_service_factory.h index cc0b5d9..884bdc9 100644 --- a/chrome/browser/ash/sync/sync_appsync_service_factory.h +++ b/chrome/browser/ash/sync/sync_appsync_service_factory.h
@@ -5,7 +5,10 @@ #ifndef CHROME_BROWSER_ASH_SYNC_SYNC_APPSYNC_SERVICE_FACTORY_H_ #define CHROME_BROWSER_ASH_SYNC_SYNC_APPSYNC_SERVICE_FACTORY_H_ +#include <memory> + #include "chrome/browser/profiles/profile_keyed_service_factory.h" +#include "components/keyed_service/core/keyed_service.h" class Profile; @@ -14,6 +17,10 @@ struct DefaultSingletonTraits; } // namespace base +namespace content { +class BrowserContext; +} // namespace content + namespace ash { class SyncAppsyncService; @@ -33,9 +40,10 @@ SyncAppsyncServiceFactory(); ~SyncAppsyncServiceFactory() override; - // BrowserContextKeyedServiceFactory implementation. - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; + bool ServiceIsCreatedWithBrowserContext() const override; + bool ServiceIsNULLWhileTesting() const override; }; } // namespace ash
diff --git a/chrome/browser/background/background_contents_service.h b/chrome/browser/background/background_contents_service.h index d3a5eefe..7326150 100644 --- a/chrome/browser/background/background_contents_service.h +++ b/chrome/browser/background/background_contents_service.h
@@ -234,7 +234,7 @@ // Delay (in ms) before restarting a force-installed extension that crashed. static int restart_delay_in_ms_; - raw_ptr<Profile> profile_; + raw_ptr<Profile, DanglingUntriaged> profile_; base::ObserverList<BackgroundContentsServiceObserver> observers_;
diff --git a/chrome/browser/browsing_data/counters/sync_aware_counter_browsertest.cc b/chrome/browser/browsing_data/counters/sync_aware_counter_browsertest.cc index 73d77420d..5139fbf 100644 --- a/chrome/browser/browsing_data/counters/sync_aware_counter_browsertest.cc +++ b/chrome/browser/browsing_data/counters/sync_aware_counter_browsertest.cc
@@ -157,7 +157,7 @@ EXPECT_TRUE(IsSyncEnabled()); // Stopping the Sync service triggers a restart. - sync_service->GetUserSettings()->SetSyncRequested(false); + sync_service->GetUserSettings()->ClearSyncRequested(); WaitForCounting(); EXPECT_FALSE(IsSyncEnabled()); } @@ -227,7 +227,7 @@ EXPECT_TRUE(IsSyncEnabled()); // Stopping the Sync service triggers a restart. - sync_service->GetUserSettings()->SetSyncRequested(false); + sync_service->GetUserSettings()->ClearSyncRequested(); WaitForCounting(); EXPECT_FALSE(IsSyncEnabled()); } @@ -316,7 +316,7 @@ // active again. // Stopping the Sync service triggers a restart. - sync_service->GetUserSettings()->SetSyncRequested(false); + sync_service->GetUserSettings()->ClearSyncRequested(); WaitForCounting(); EXPECT_FALSE(IsSyncEnabled()); }
diff --git a/chrome/browser/chromeos/platform_keys/extension_key_permissions_service.h b/chrome/browser/chromeos/platform_keys/extension_key_permissions_service.h index fb18a01..941da06 100644 --- a/chrome/browser/chromeos/platform_keys/extension_key_permissions_service.h +++ b/chrome/browser/chromeos/platform_keys/extension_key_permissions_service.h
@@ -210,7 +210,8 @@ bool can_user_grant_permission); const std::string extension_id_; - raw_ptr<extensions::StateStore> extensions_state_store_ = nullptr; + raw_ptr<extensions::StateStore, DanglingUntriaged> extensions_state_store_ = + nullptr; std::vector<KeyEntry> state_store_entries_; const raw_ptr<policy::PolicyService> profile_policies_; const raw_ptr<crosapi::mojom::KeystoreService> keystore_service_ = nullptr;
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc b/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc index 84d0f9d..eeec5882 100644 --- a/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc +++ b/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc
@@ -156,7 +156,10 @@ } autofill::AutofillProfile CreateNewAutofillProfile( - autofill::PersonalDataManager* personal_data) { + autofill::PersonalDataManager* personal_data, + const absl::optional<std::string>& country_code) { + static const base::NoDestructor<base::flat_set<std::string>> + kSanctionedCountries({"CU", "IR", "KP", "SD", "SY"}); autofill::AutofillProfile::Source source = personal_data->IsEligibleForAddressAccountStorage() ? autofill::AutofillProfile::Source::kAccount @@ -168,6 +171,11 @@ // Note: overriding address profile source only if test feature is enabled. source = autofill::AutofillProfile::Source::kAccount; } + if (country_code && kSanctionedCountries->count(country_code.value())) { + // Note: addresses from sanctioned countries can't be saved in account. + // TODO(crbug.com/1432505): remove temporary sanctioned countries filtering. + source = autofill::AutofillProfile::Source::kLocalOrSyncable; + } return autofill::AutofillProfile(base::GenerateGUID(), kSettingsOrigin, source); } @@ -224,8 +232,9 @@ return RespondNow(Error(kErrorDataUnavailable)); } autofill::AutofillProfile profile = - existing_profile ? *existing_profile - : CreateNewAutofillProfile(personal_data); + existing_profile + ? *existing_profile + : CreateNewAutofillProfile(personal_data, address->country_code); if (address->full_names) { std::string full_name;
diff --git a/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc b/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc index c8ba0520..63a5852 100644 --- a/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc +++ b/chrome/browser/extensions/api/browsing_data/browsing_data_test.cc
@@ -113,7 +113,7 @@ // Sync is running. syncer::SyncService* sync_service = SyncServiceFactory::GetForProfile(profile); - sync_service->GetUserSettings()->SetSyncRequested(true); + sync_service->GetUserSettings()->SetSyncRequested(); sync_service->GetUserSettings()->SetFirstSetupComplete( syncer::SyncFirstSetupCompleteSource::BASIC_FLOW);
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc index 0e15bf2..98096c3 100644 --- a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc +++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc
@@ -390,9 +390,8 @@ State state = bulk_leak_check_service_adapter_.GetBulkLeakCheckState(); - result.total_number_of_passwords = base::ranges::count_if( - saved_passwords_presenter_->GetSavedCredentials(), - [](const auto& credential) { return !credential.blocked_by_user; }); + result.total_number_of_passwords = + saved_passwords_presenter_->GetSavedPasswords().size(); // Handle the currently running case first, only then consider errors. if (state == State::kRunning) {
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc index 3eb7116b..e58ee40 100644 --- a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc +++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
@@ -79,12 +79,15 @@ constexpr char16_t kUsername1[] = u"alice"; constexpr char16_t kUsername2[] = u"bob"; +constexpr char16_t kUsername3[] = u"eve"; constexpr char16_t kPassword1[] = u"fnlsr4@cm^mdls@fkspnsg3d"; constexpr char16_t kPassword2[] = u"pmsFlsnoab4nsl#losb@skpfnsbkjb^klsnbs!cns"; constexpr char16_t kWeakPassword1[] = u"123456"; constexpr char16_t kWeakPassword2[] = u"111111"; +constexpr char kGoogleAccounts[] = "https://accounts.google.com"; + using api::passwords_private::CompromisedInfo; using api::passwords_private::PasswordCheckStatus; using api::passwords_private::PasswordUiEntry; @@ -192,6 +195,21 @@ return form; } +PasswordForm MakeSavedFederatedCredential( + base::StringPiece signon_realm, + base::StringPiece16 username, + base::StringPiece provider = kGoogleAccounts, + PasswordForm::Store store = PasswordForm::Store::kProfileStore) { + PasswordForm form; + form.signon_realm = std::string(signon_realm); + form.url = GURL(signon_realm); + form.username_value = std::u16string(username); + form.federation_origin = url::Origin::Create(GURL(provider)); + CHECK(!form.federation_origin.opaque()); + form.in_store = store; + return form; +} + void AddIssueToForm(PasswordForm* form, InsecureType type, base::TimeDelta time_since_creation = base::TimeDelta(), @@ -878,6 +896,20 @@ EXPECT_EQ(1, *status.remaining_in_queue); } +// Verifies that the total password count is reported accurately. +// Regression test for crbug.com/1432734. +TEST_F(PasswordCheckDelegateTest, GetPasswordCheckStatusCount) { + identity_test_env().MakeAccountAvailable(kTestEmail); + store().AddLogin(MakeSavedPassword(kExampleCom, kUsername1, kPassword1)); + store().AddLogin(MakeSavedPassword(kExampleCom, kUsername2, kPassword2)); + store().AddLogin(MakeSavedFederatedCredential(kExampleCom, kUsername3)); + RunUntilIdle(); + + delegate().StartPasswordCheck(); + PasswordCheckStatus status = delegate().GetPasswordCheckStatus(); + EXPECT_EQ(*status.total_number_of_passwords, 2); +} + // Verifies that the case where the check is canceled is reported correctly. TEST_F(PasswordCheckDelegateTest, GetPasswordCheckStatusCanceled) { identity_test_env().MakeAccountAvailable(kTestEmail);
diff --git a/chrome/browser/extensions/api/preference/preference_api.cc b/chrome/browser/extensions/api/preference/preference_api.cc index fcb566d..8f74c29 100644 --- a/chrome/browser/extensions/api/preference/preference_api.cc +++ b/chrome/browser/extensions/api/preference/preference_api.cc
@@ -70,6 +70,8 @@ #if BUILDFLAG(IS_CHROMEOS_LACROS) constexpr char kPrimaryProfileOnlyErrorMessage[] = "You may only access the preference '*' in the primary profile."; +constexpr char kAshDoesNotSupportPreference[] = + "The browser preference is not supported."; #endif constexpr char kIncognitoKey[] = "incognito"; constexpr char kScopeKey[] = "scope"; @@ -701,6 +703,11 @@ return; } + if (!opt_value) { + Respond(Error(kAshDoesNotSupportPreference)); + return; + } + // Get read/write permissions and pref name again. Profile* profile = Profile::FromBrowserContext(browser_context());
diff --git a/chrome/browser/extensions/api/preference/preference_api_lacros_browsertest.cc b/chrome/browser/extensions/api/preference/preference_api_lacros_browsertest.cc index 16329eb..1958d87 100644 --- a/chrome/browser/extensions/api/preference/preference_api_lacros_browsertest.cc +++ b/chrome/browser/extensions/api/preference/preference_api_lacros_browsertest.cc
@@ -26,6 +26,9 @@ #include "extensions/browser/test_extension_registry_observer.h" #include "extensions/test/extension_test_message_listener.h" #include "extensions/test/result_catcher.h" +#include "mojo/public/cpp/bindings/receiver_set.h" +#include "mojo/public/cpp/bindings/remote_set.h" +#include "testing/gtest/include/gtest/gtest.h" using ContextType = extensions::ExtensionBrowserTest::ContextType; @@ -65,6 +68,9 @@ } void SetUpOnMainThread() override { + if (!IsServiceAvailable()) { + GTEST_SKIP() << "The Lacros service is not available."; + } extensions::ExtensionApiTest::SetUpOnMainThread(); // The browser might get closed later (and therefore be destroyed), so we @@ -117,12 +123,12 @@ INSTANTIATE_TEST_SUITE_P(EventPage, ExtensionPreferenceApiLacrosBrowserTest, - ::testing::Values(ContextType::kPersistentBackground)); + ::testing::Values(ContextType::kEventPage)); +INSTANTIATE_TEST_SUITE_P(ServiceWorker, + ExtensionPreferenceApiLacrosBrowserTest, + ::testing::Values(ContextType::kServiceWorker)); IN_PROC_BROWSER_TEST_P(ExtensionPreferenceApiLacrosBrowserTest, Lacros) { - if (!IsServiceAvailable()) { - return; - } absl::optional<::base::Value> out_value; crosapi::mojom::PrefsAsyncWaiter async_waiter( chromeos::LacrosService::Get()->GetRemote<crosapi::mojom::Prefs>().get()); @@ -186,9 +192,6 @@ } IN_PROC_BROWSER_TEST_P(ExtensionPreferenceApiLacrosBrowserTest, OnChange) { - if (!IsServiceAvailable()) { - return; - } if (!DoesAshSupportObservers()) { LOG(WARNING) << "Ash does not support observers, skipping the test."; return; @@ -208,3 +211,97 @@ RunExtensionTest("preference/onchange", {}, {.allow_in_incognito = true})) << message_; } + +// An implementation of the `crosapi::mojom::Prefs` mojo service which returns +// null when fetching a pref value. Used for testing the Preference API against +// Ash-Lacros version skew where Ash does not recognize the Lacros extension +// pref. Since it's not possible to extend the PrefPath enum at runtime, this +// class implements the same behaviour like the Ash implementation when it does +// not recognize the pref i.e, sends a null value as a response to +// `GetExtensionPrefWithControl`. +class FakePrefsAshService : public crosapi::mojom::Prefs { + public: + FakePrefsAshService() = default; + FakePrefsAshService(const FakePrefsAshService&) = delete; + FakePrefsAshService& operator=(const FakePrefsAshService&) = delete; + ~FakePrefsAshService() override {} + + private: + // crosapi::mojom::Prefs: + void GetPref(crosapi::mojom::PrefPath path, + GetPrefCallback callback) override { + std::move(callback).Run(absl::nullopt); + } + void SetPref(crosapi::mojom::PrefPath path, + base::Value value, + SetPrefCallback callback) override { + std::move(callback).Run(); + } + void AddObserver( + crosapi::mojom::PrefPath path, + mojo::PendingRemote<crosapi::mojom::PrefObserver> observer) override { + mojo::Remote<crosapi::mojom::PrefObserver> remote(std::move(observer)); + observers_.Add(std::move(remote)); + } + void GetExtensionPrefWithControl( + crosapi::mojom::PrefPath path, + GetExtensionPrefWithControlCallback callback) override { + // Not a valid prefpath + std::move(callback).Run(absl::nullopt, + crosapi::mojom::PrefControlState::kDefaultUnknown); + } + void ClearExtensionControlledPref( + crosapi::mojom::PrefPath path, + ClearExtensionControlledPrefCallback callback) override { + std::move(callback).Run(); + } + + mojo::RemoteSet<crosapi::mojom::PrefObserver> observers_; +}; + +class ExtensionPreferenceApiUnsupportedInAshBrowserTest + : public ExtensionPreferenceApiLacrosBrowserTest { + public: + ExtensionPreferenceApiUnsupportedInAshBrowserTest( + const ExtensionPreferenceApiUnsupportedInAshBrowserTest&) = delete; + ExtensionPreferenceApiUnsupportedInAshBrowserTest& operator=( + const ExtensionPreferenceApiUnsupportedInAshBrowserTest&) = delete; + + protected: + ExtensionPreferenceApiUnsupportedInAshBrowserTest() = default; + ~ExtensionPreferenceApiUnsupportedInAshBrowserTest() override = default; + + void SetUpOnMainThread() override { + ExtensionApiTest::SetUpOnMainThread(); + // If the lacros service or the network settings service interface are not + // available on this version of ash-chrome, this test suite will no-op. + if (!IsServiceAvailable()) { + GTEST_SKIP() << "The Lacros service is not available."; + } + // Replace the production prefs service with a fake for testing. + mojo::Remote<crosapi::mojom::Prefs>& remote = + chromeos::LacrosService::Get()->GetRemote<crosapi::mojom::Prefs>(); + remote.reset(); + receiver_.Bind(remote.BindNewPipeAndPassReceiver()); + } + + FakePrefsAshService service_; + mojo::Receiver<crosapi::mojom::Prefs> receiver_{&service_}; +}; + +INSTANTIATE_TEST_SUITE_P(PersistentBackground, + ExtensionPreferenceApiUnsupportedInAshBrowserTest, + ::testing::Values(ContextType::kPersistentBackground)); +INSTANTIATE_TEST_SUITE_P(ServiceWorker, + ExtensionPreferenceApiUnsupportedInAshBrowserTest, + ::testing::Values(ContextType::kServiceWorker)); + +// Tests that verifies that an error message is returned when an extension is +// requesting the value of a pref that should be controlled in Ash but it's not +// supported in the Ash version due to the Ash-Lacros version skew. +IN_PROC_BROWSER_TEST_P(ExtensionPreferenceApiUnsupportedInAshBrowserTest, + UnsupportedInAsh) { + EXPECT_TRUE(RunExtensionTest("preference/unsupported_in_ash", {}, + {.allow_in_incognito = false})) + << message_; +}
diff --git a/chrome/browser/extensions/external_pref_loader.h b/chrome/browser/extensions/external_pref_loader.h index fbd1158..eebdd127 100644 --- a/chrome/browser/extensions/external_pref_loader.h +++ b/chrome/browser/extensions/external_pref_loader.h
@@ -120,7 +120,7 @@ // Profile that loads these external prefs. // Needed for waiting for waiting priority sync. - raw_ptr<Profile> profile_; + raw_ptr<Profile, DanglingUntriaged> profile_; // User type determined by |profile_|. Used to filter extensions. In some unit // tests may not be set.
diff --git a/chrome/browser/feedback/android/family_info_feedback_source_unittest.cc b/chrome/browser/feedback/android/family_info_feedback_source_unittest.cc index 097b067..4dc94ae 100644 --- a/chrome/browser/feedback/android/family_info_feedback_source_unittest.cc +++ b/chrome/browser/feedback/android/family_info_feedback_source_unittest.cc
@@ -26,7 +26,6 @@ #include "chrome/test/test_support_jni_headers/FamilyInfoFeedbackSourceTestBridge_jni.h" #include "components/signin/public/identity_manager/identity_test_environment.h" #include "components/supervised_user/core/browser/supervised_user_url_filter.h" -#include "components/supervised_user/core/common/supervised_user_denylist.h" #include "content/public/test/browser_task_environment.h" #include "testing/gtest/include/gtest/gtest.h" @@ -120,8 +119,6 @@ FamilyInfoFetcher::FamilyMemberRole role_; raw_ptr<SupervisedUserService> supervised_user_service_; - supervised_user::SupervisedUserDenylist deny_list_ = - supervised_user::SupervisedUserDenylist(); private: // Creates a Java instance of FamilyInfoFeedbackSource. @@ -157,11 +154,6 @@ supervised_user_service_->GetURLFilter()->SetDefaultFilteringBehavior( filtering_behavior); - bool safe_sites_enabled = std::get<1>(GetParam()); - if (safe_sites_enabled) { - supervised_user_service_->GetURLFilter()->SetDenylist(&deny_list_); - } - std::vector<FamilyInfoFetcher::FamilyMember> members( {FamilyInfoFetcher::FamilyMember( primary_account.gaia, role_, "Name", kTestEmail, @@ -171,6 +163,11 @@ CreateFamilyInfoFeedbackSource(); OnGetFamilyMembersSuccess(feedback_source, members); + bool safe_sites_enabled = std::get<1>(GetParam()); + // TODO(b/264668884): set up the AsyncURLChecker and re-add test cases with + // safe_sites_enabled == true. These were removed as SupervisedUserDenylist is + // deprecated. + std::string expected_filter = GetFilterTypeAsString(filtering_behavior, safe_sites_enabled); EXPECT_EQ(expected_filter, @@ -185,14 +182,8 @@ supervised_user::SupervisedUserURLFilter::FilteringBehavior::BLOCK, false), std::make_tuple( - supervised_user::SupervisedUserURLFilter::FilteringBehavior::BLOCK, - true), - std::make_tuple( supervised_user::SupervisedUserURLFilter::FilteringBehavior::ALLOW, - false), - std::make_tuple( - supervised_user::SupervisedUserURLFilter::FilteringBehavior::ALLOW, - true))); + false))); class FamilyInfoFeedbackSourceTest : public testing::TestWithParam<FamilyInfoFetcher::FamilyMemberRole> {
diff --git a/chrome/browser/metrics/ukm_browsertest.cc b/chrome/browser/metrics/ukm_browsertest.cc index 66f299c..890e2b29 100644 --- a/chrome/browser/metrics/ukm_browsertest.cc +++ b/chrome/browser/metrics/ukm_browsertest.cc
@@ -494,7 +494,7 @@ // Client ID should not have been reset. EXPECT_EQ(original_client_id, ukm_test_helper.GetClientId()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); ClosePlatformBrowser(browser1); } @@ -522,7 +522,7 @@ ClosePlatformBrowser(incognito_browser); EXPECT_TRUE(ukm_test_helper.IsRecordingEnabled()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); ClosePlatformBrowser(browser); } @@ -549,7 +549,7 @@ // Client ID should not have been reset. EXPECT_EQ(original_client_id, ukm_test_helper.GetClientId()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(regular_browser); } #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) @@ -584,7 +584,7 @@ profiles::testing::WaitForPickerClosed(); EXPECT_TRUE(ukm_test_helper.IsRecordingEnabled()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(regular_browser); } #endif // !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_ANDROID) @@ -626,7 +626,7 @@ } #endif - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(sync_browser); } #endif // !BUILDFLAG(IS_ANDROID) @@ -661,7 +661,7 @@ // Client ID should have been reset. EXPECT_NE(original_client_id, ukm_test_helper.GetClientId()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); ClosePlatformBrowser(browser); } @@ -695,7 +695,7 @@ EXPECT_EQ(base::SysInfo::HardwareModelName(), report->system_profile().hardware().hardware_class()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(sync_browser); } #endif // !BUILDFLAG(IS_ANDROID) @@ -820,7 +820,7 @@ EXPECT_EQ(SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_4G, report->system_profile().network().max_effective_connection_type()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(sync_browser); } #endif // !BUILDFLAG(IS_ANDROID) @@ -851,7 +851,7 @@ g_browser_process->GetMetricsServicesManager()->UpdateUploadPermissions(true); EXPECT_TRUE(ukm_test_helper.IsRecordingEnabled()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); ClosePlatformBrowser(browser); } @@ -884,7 +884,7 @@ // Client ID should not be reset. EXPECT_EQ(original_client_id, ukm_test_helper.GetClientId()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(sync_browser); } #endif // !BUILDFLAG(IS_ANDROID) @@ -935,8 +935,8 @@ EXPECT_TRUE(ukm_test_helper.IsExtensionRecordingEnabled()); EXPECT_EQ(original_client_id, ukm_test_helper.GetClientId()); - harness2->service()->GetUserSettings()->SetSyncRequested(false); - harness1->service()->GetUserSettings()->SetSyncRequested(false); + harness2->service()->GetUserSettings()->ClearSyncRequested(); + harness1->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(browser2); CloseBrowserSynchronously(browser1); } @@ -1098,7 +1098,7 @@ EXPECT_FALSE(ukm_test_helper.IsRecordingEnabled()); EXPECT_NE(original_client_id, ukm_test_helper.GetClientId()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); ClosePlatformBrowser(browser); } #endif // !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) @@ -1131,8 +1131,8 @@ EXPECT_FALSE(ukm_test_helper.IsRecordingEnabled()); EXPECT_NE(original_client_id, ukm_test_helper.GetClientId()); - harness2->service()->GetUserSettings()->SetSyncRequested(false); - harness1->service()->GetUserSettings()->SetSyncRequested(false); + harness2->service()->GetUserSettings()->ClearSyncRequested(); + harness1->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(browser2); CloseBrowserSynchronously(browser1); } @@ -1153,7 +1153,7 @@ Browser* sync_browser = CreateBrowser(profile); EXPECT_FALSE(ukm_test_helper.IsRecordingEnabled()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(sync_browser); } #endif // !BUILDFLAG(IS_ANDROID) @@ -1180,7 +1180,7 @@ Browser* sync_browser = CreateBrowser(profile); EXPECT_TRUE(ukm_test_helper.IsRecordingEnabled()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(sync_browser); } #endif // !BUILDFLAG(IS_ANDROID) @@ -1222,7 +1222,7 @@ EXPECT_EQ(original_client_id, ukm_test_helper.GetClientId()); EXPECT_TRUE(ukm_test_helper.IsRecordingEnabled()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); ClosePlatformBrowser(browser); } @@ -1284,7 +1284,7 @@ UkmConsentParamBrowserTest::IsMetricsAndCrashReportingEnabled()); EXPECT_EQ(is_enabled, ukm_test_helper.IsRecordingEnabled()); - harness->service()->GetUserSettings()->SetSyncRequested(false); + harness->service()->GetUserSettings()->ClearSyncRequested(); CloseBrowserSynchronously(sync_browser); } #endif // !BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/net/file_downloader.cc b/chrome/browser/net/file_downloader.cc deleted file mode 100644 index cc93eeb..0000000 --- a/chrome/browser/net/file_downloader.cc +++ /dev/null
@@ -1,103 +0,0 @@ -// Copyright 2015 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/net/file_downloader.h" - -#include "base/files/file_path.h" -#include "base/files/file_util.h" -#include "base/functional/bind.h" -#include "base/logging.h" -#include "base/task/task_traits.h" -#include "base/task/thread_pool.h" -#include "content/public/browser/browser_context.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/storage_partition.h" -#include "net/base/load_flags.h" -#include "net/http/http_status_code.h" -#include "services/network/public/cpp/resource_request.h" -#include "services/network/public/cpp/shared_url_loader_factory.h" -#include "services/network/public/cpp/simple_url_loader.h" -#include "services/network/public/mojom/url_response_head.mojom.h" -#include "url/gurl.h" - -const int kNumFileDownloaderRetries = 1; - -FileDownloader::FileDownloader( - const GURL& url, - const base::FilePath& path, - bool overwrite, - scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, - DownloadFinishedCallback callback, - const net::NetworkTrafficAnnotationTag& traffic_annotation) - : url_loader_factory_(url_loader_factory), - callback_(std::move(callback)), - local_path_(path) { - auto resource_request = std::make_unique<network::ResourceRequest>(); - resource_request->url = url; - resource_request->credentials_mode = network::mojom::CredentialsMode::kOmit; - simple_url_loader_ = network::SimpleURLLoader::Create( - std::move(resource_request), traffic_annotation); - simple_url_loader_->SetRetryOptions( - kNumFileDownloaderRetries, - network::SimpleURLLoader::RetryMode::RETRY_ON_NETWORK_CHANGE); - if (overwrite) { - simple_url_loader_->DownloadToTempFile( - url_loader_factory_.get(), - base::BindOnce(&FileDownloader::OnSimpleDownloadComplete, - base::Unretained(this))); - } else { - base::ThreadPool::CreateTaskRunner( - {base::MayBlock(), base::TaskPriority::BEST_EFFORT, - base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}) - ->PostTaskAndReplyWithResult( - FROM_HERE, base::BindOnce(&base::PathExists, local_path_), - base::BindOnce(&FileDownloader::OnFileExistsCheckDone, - weak_ptr_factory_.GetWeakPtr())); - } -} - -FileDownloader::~FileDownloader() {} - -void FileDownloader::OnSimpleDownloadComplete(base::FilePath response_path) { - if (response_path.empty()) { - if (simple_url_loader_->ResponseInfo() && - simple_url_loader_->ResponseInfo()->headers) { - int response_code = - simple_url_loader_->ResponseInfo()->headers->response_code(); - DLOG(WARNING) << "HTTP error " << response_code - << " while trying to download " - << simple_url_loader_->GetFinalURL().spec(); - } - std::move(callback_).Run(FAILED); - return; - } - - base::ThreadPool::CreateTaskRunner( - {base::MayBlock(), base::TaskPriority::BEST_EFFORT, - base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}) - ->PostTaskAndReplyWithResult( - FROM_HERE, base::BindOnce(&base::Move, response_path, local_path_), - base::BindOnce(&FileDownloader::OnFileMoveDone, - weak_ptr_factory_.GetWeakPtr())); -} - -void FileDownloader::OnFileExistsCheckDone(bool exists) { - if (exists) { - std::move(callback_).Run(EXISTS); - } else { - simple_url_loader_->DownloadToTempFile( - url_loader_factory_.get(), - base::BindOnce(&FileDownloader::OnSimpleDownloadComplete, - base::Unretained(this))); - } -} - -void FileDownloader::OnFileMoveDone(bool success) { - if (!success) { - DLOG(WARNING) << "Could not move file to " - << local_path_.LossyDisplayName(); - } - - std::move(callback_).Run(success ? DOWNLOADED : FAILED); -}
diff --git a/chrome/browser/net/file_downloader.h b/chrome/browser/net/file_downloader.h deleted file mode 100644 index 942ed38f..0000000 --- a/chrome/browser/net/file_downloader.h +++ /dev/null
@@ -1,73 +0,0 @@ -// Copyright 2015 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_NET_FILE_DOWNLOADER_H_ -#define CHROME_BROWSER_NET_FILE_DOWNLOADER_H_ - -#include <memory> - -#include "base/files/file_path.h" -#include "base/functional/callback.h" -#include "base/memory/weak_ptr.h" -#include "net/traffic_annotation/network_traffic_annotation.h" - -namespace network { -class SimpleURLLoader; -class SharedURLLoaderFactory; -} // namespace network - -class GURL; - -// Helper class to download a file from a given URL and store it in a local -// file. If |overwrite| is true, any existing file will be overwritten; -// otherwise if the local file already exists, this will report success without -// downloading anything. -class FileDownloader { - public: - enum Result { - // The file was successfully downloaded. - DOWNLOADED, - // A local file at the given path already existed and was kept. - EXISTS, - // Downloading failed. - FAILED - }; - using DownloadFinishedCallback = base::OnceCallback<void(Result)>; - - // Directly starts the download (if necessary) and runs |callback| when done. - // If the instance is destroyed before it is finished, |callback| is not run. - FileDownloader( - const GURL& url, - const base::FilePath& path, - bool overwrite, - scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, - DownloadFinishedCallback callback, - const net::NetworkTrafficAnnotationTag& traffic_annotation); - - FileDownloader(const FileDownloader&) = delete; - FileDownloader& operator=(const FileDownloader&) = delete; - - ~FileDownloader(); - - static bool IsSuccess(Result result) { return result != FAILED; } - - private: - void OnSimpleDownloadComplete(base::FilePath response_path); - - void OnFileExistsCheckDone(bool exists); - - void OnFileMoveDone(bool success); - - scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; - - DownloadFinishedCallback callback_; - - std::unique_ptr<network::SimpleURLLoader> simple_url_loader_; - - base::FilePath local_path_; - - base::WeakPtrFactory<FileDownloader> weak_ptr_factory_{this}; -}; - -#endif // CHROME_BROWSER_NET_FILE_DOWNLOADER_H_
diff --git a/chrome/browser/net/file_downloader_unittest.cc b/chrome/browser/net/file_downloader_unittest.cc deleted file mode 100644 index 60b9de1..0000000 --- a/chrome/browser/net/file_downloader_unittest.cc +++ /dev/null
@@ -1,124 +0,0 @@ -// Copyright 2015 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/net/file_downloader.h" - -#include "base/files/file_path.h" -#include "base/files/file_util.h" -#include "base/files/scoped_temp_dir.h" -#include "base/functional/bind.h" -#include "base/test/task_environment.h" -#include "content/public/test/test_utils.h" -#include "net/http/http_status_code.h" -#include "net/traffic_annotation/network_traffic_annotation_test_helper.h" -#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" -#include "services/network/public/mojom/url_response_head.mojom.h" -#include "services/network/test/test_url_loader_factory.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "url/gurl.h" - -const char kURL[] = "https://www.url.com/path"; -const char kFilename[] = "filename.ext"; -const char kFileContents1[] = "file contents"; -const char kFileContents2[] = "different contents"; - -class FileDownloaderTest : public testing::Test { - public: - FileDownloaderTest() - : test_shared_loader_factory_( - base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( - &test_url_loader_factory_)) {} - - void SetUp() override { - ASSERT_TRUE(dir_.CreateUniqueTempDir()); - path_ = dir_.GetPath().AppendASCII(kFilename); - ASSERT_FALSE(base::PathExists(path_)); - } - - MOCK_METHOD1(OnDownloadFinished, void(FileDownloader::Result)); - - protected: - const base::FilePath& path() const { return path_; } - - void SetValidResponse() { - test_url_loader_factory_.AddResponse(kURL, kFileContents1); - } - - void SetValidResponse2() { - test_url_loader_factory_.AddResponse(kURL, kFileContents2); - } - - void SetFailedResponse() { - test_url_loader_factory_.AddResponse( - GURL(kURL), network::mojom::URLResponseHead::New(), std::string(), - network::URLLoaderCompletionStatus(net::HTTP_NOT_FOUND)); - } - - void Download(bool overwrite, FileDownloader::Result expected_result) { - FileDownloader downloader( - GURL(kURL), path_, overwrite, test_shared_loader_factory_, - base::BindOnce(&FileDownloaderTest::OnDownloadFinished, - base::Unretained(this)), - TRAFFIC_ANNOTATION_FOR_TESTS); - EXPECT_CALL(*this, OnDownloadFinished(expected_result)); - // Wait for the FileExists check to happen if necessary. - content::RunAllTasksUntilIdle(); - } - - private: - base::ScopedTempDir dir_; - base::FilePath path_; - - base::test::TaskEnvironment task_environment_; - network::TestURLLoaderFactory test_url_loader_factory_; - scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_; -}; - -TEST_F(FileDownloaderTest, Success) { - SetValidResponse(); - Download(true, FileDownloader::DOWNLOADED); - EXPECT_TRUE(base::PathExists(path())); - std::string contents; - ASSERT_TRUE(base::ReadFileToString(path(), &contents)); - EXPECT_EQ(std::string(kFileContents1), contents); -} - -TEST_F(FileDownloaderTest, Failure) { - SetFailedResponse(); - Download(true, FileDownloader::FAILED); - EXPECT_FALSE(base::PathExists(path())); -} - -TEST_F(FileDownloaderTest, Overwrite) { - SetValidResponse(); - Download(true, FileDownloader::DOWNLOADED); - ASSERT_TRUE(base::PathExists(path())); - std::string contents; - ASSERT_TRUE(base::ReadFileToString(path(), &contents)); - ASSERT_EQ(std::string(kFileContents1), contents); - - SetValidResponse2(); - Download(true, FileDownloader::DOWNLOADED); - // The file should have been overwritten with the new contents. - EXPECT_TRUE(base::PathExists(path())); - ASSERT_TRUE(base::ReadFileToString(path(), &contents)); - EXPECT_EQ(std::string(kFileContents2), contents); -} - -TEST_F(FileDownloaderTest, DontOverwrite) { - SetValidResponse(); - Download(true, FileDownloader::DOWNLOADED); - ASSERT_TRUE(base::PathExists(path())); - std::string contents; - ASSERT_TRUE(base::ReadFileToString(path(), &contents)); - EXPECT_EQ(std::string(kFileContents1), contents); - - SetValidResponse2(); - Download(false, FileDownloader::EXISTS); - // The file should still have the old contents. - EXPECT_TRUE(base::PathExists(path())); - ASSERT_TRUE(base::ReadFileToString(path(), &contents)); - EXPECT_EQ(std::string(kFileContents1), contents); -}
diff --git a/chrome/browser/new_tab_page/modules/new_tab_page_modules_interactive_uitest.cc b/chrome/browser/new_tab_page/modules/new_tab_page_modules_interactive_uitest.cc index 68a2e408..a40a11d 100644 --- a/chrome/browser/new_tab_page/modules/new_tab_page_modules_interactive_uitest.cc +++ b/chrome/browser/new_tab_page/modules/new_tab_page_modules_interactive_uitest.cc
@@ -84,8 +84,7 @@ WaitForStateChange(kNewTabPageElementId, std::move(main_history_cluster_tile_loaded)), // 3. Scroll to tile. Modules may sometimes load below the fold. - ExecuteJsAt(kNewTabPageElementId, kMainHistoryClusterTileLink, - "(el) => { el.scrollIntoView({ behavior: 'instant' }); }"), + ScrollIntoView(kNewTabPageElementId, kMainHistoryClusterTileLink), // 4. Click the tile. MoveMouseTo(kNewTabPageElementId, kMainHistoryClusterTileLink), ClickMouse(),
diff --git a/chrome/browser/pdf/pdf_extension_printing_test.cc b/chrome/browser/pdf/pdf_extension_printing_test.cc index 1ee60fc..4b48584 100644 --- a/chrome/browser/pdf/pdf_extension_printing_test.cc +++ b/chrome/browser/pdf/pdf_extension_printing_test.cc
@@ -93,7 +93,7 @@ using PrintViewManagerImpl = printing::PrintViewManagerBasic; #endif const raw_ptr<PrintViewManagerImpl> print_view_manager_; - const raw_ptr<const content::RenderFrameHost> rfh_; + const raw_ptr<const content::RenderFrameHost, DanglingUntriaged> rfh_; base::RunLoop run_loop_; };
diff --git a/chrome/browser/preloading/prefetch/search_prefetch/streaming_search_prefetch_url_loader.h b/chrome/browser/preloading/prefetch/search_prefetch/streaming_search_prefetch_url_loader.h index b51e0f12..b328367c 100644 --- a/chrome/browser/preloading/prefetch/search_prefetch/streaming_search_prefetch_url_loader.h +++ b/chrome/browser/preloading/prefetch/search_prefetch/streaming_search_prefetch_url_loader.h
@@ -325,7 +325,7 @@ // The initiating prefetch request. Cleared when handing this request off to // the navigation stack. - raw_ptr<SearchPrefetchRequest> streaming_prefetch_request_; + raw_ptr<SearchPrefetchRequest, DanglingUntriaged> streaming_prefetch_request_; // Whether we are serving from |body_content_|. bool serving_from_data_ = false;
diff --git a/chrome/browser/printing/test_print_preview_observer.h b/chrome/browser/printing/test_print_preview_observer.h index 7d28fd35..bb7c3b0 100644 --- a/chrome/browser/printing/test_print_preview_observer.h +++ b/chrome/browser/printing/test_print_preview_observer.h
@@ -57,7 +57,7 @@ uint32_t rendered_page_count_ = 0; const bool wait_for_loaded_; - raw_ptr<content::WebContents> preview_dialog_ = nullptr; + raw_ptr<content::WebContents, DanglingUntriaged> preview_dialog_ = nullptr; // This field is not a raw_ptr<> because it was filtered by the rewriter for: // #addr-of RAW_PTR_EXCLUSION base::RunLoop* run_loop_ = nullptr;
diff --git a/chrome/browser/privacy_sandbox/android/BUILD.gn b/chrome/browser/privacy_sandbox/android/BUILD.gn index 429689e0..76ff9ed 100644 --- a/chrome/browser/privacy_sandbox/android/BUILD.gn +++ b/chrome/browser/privacy_sandbox/android/BUILD.gn
@@ -37,6 +37,7 @@ "java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogConsentEEAV4.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeEEAV4.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeROWV4.java", + "java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeRestrictedV4.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogUtils.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxSettingsFragmentV4.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/v4/TopicsBlockedFragmentV4.java", @@ -145,6 +146,7 @@ "java/res/layout/privacy_sandbox_notice_bottom_sheet.xml", "java/res/layout/privacy_sandbox_notice_eea_dropdown_v4.xml", "java/res/layout/privacy_sandbox_notice_eea_v4.xml", + "java/res/layout/privacy_sandbox_notice_restricted_v4.xml", "java/res/layout/privacy_sandbox_notice_row_dropdown_v4.xml", "java/res/layout/privacy_sandbox_notice_row_v4.xml", "java/res/values/dimens.xml",
diff --git a/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_restricted_v4.xml b/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_restricted_v4.xml new file mode 100644 index 0000000..71c58d1 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_restricted_v4.xml
@@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2023 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/privacy_sandbox_dialog" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <org.chromium.components.browser_ui.widget.BoundedLinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:layout_gravity="center" + app:maxWidthLandscape="@dimen/privacy_sandbox_dialog_max_width" + app:maxWidthPortrait="@dimen/privacy_sandbox_dialog_max_width"> + + <org.chromium.components.browser_ui.widget.FadingEdgeScrollView + android:id="@+id/privacy_sandbox_dialog_scroll_view" + android:layout_width="match_parent" + android:layout_height="0dp" + android:fillViewport="true" + android:layout_weight="1"> + + <LinearLayout + android:id="@+id/privacy_sandbox_notice_restricted_content" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center_vertical" + android:layout_marginHorizontal="@dimen/list_item_default_margin" + android:orientation="vertical"> + + <ImageView + android:layout_marginTop="@dimen/privacy_sandbox_dialog_illustration_margin_top" + android:layout_marginBottom="@dimen/privacy_sandbox_dialog_title_margin" + android:layout_height="@dimen/privacy_sandbox_chrome_logo_height" + android:layout_width="@dimen/privacy_sandbox_chrome_logo_width" + android:layout_gravity="center" + app:srcCompat="@drawable/chrome_sync_logo" + android:importantForAccessibility="no" /> + + <TextView + android:id="@+id/privacy_sandbox_notice_title" + android:layout_marginBottom="@dimen/privacy_sandbox_dialog_title_margin" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:text="@string/privacy_sandbox_m1_notice_restricted_title" + android:gravity="center" + style="@style/TextAppearance.Headline.Primary" /> + + <org.chromium.ui.widget.TextViewWithLeading + android:layout_marginBottom="@dimen/list_item_default_margin" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/privacy_sandbox_m1_notice_restricted_description_1" + app:leading="@dimen/text_size_medium_leading" + style="@style/TextAppearance.TextMedium.Secondary" /> + + <org.chromium.ui.widget.TextViewWithLeading + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/privacy_sandbox_m1_notice_restricted_description_2" + app:leading="@dimen/text_size_medium_leading" + style="@style/TextAppearance.TextMedium.Secondary" /> + + <ImageView + android:layout_marginVertical="@dimen/privacy_sandbox_dialog_illustration_margin_vertical" + android:layout_height="wrap_content" + android:layout_width="match_parent" + app:srcCompat="@drawable/privacy_sandbox_interests_illustration_v4" + android:adjustViewBounds="true" + android:importantForAccessibility="no" /> + + <org.chromium.ui.widget.TextViewWithLeading + android:layout_marginBottom="@dimen/list_item_default_margin" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/privacy_sandbox_m1_notice_restricted_description_3" + app:leading="@dimen/text_size_medium_leading" + style="@style/TextAppearance.TextMedium.Secondary" /> + + </LinearLayout> + + </org.chromium.components.browser_ui.widget.FadingEdgeScrollView> + + <org.chromium.ui.widget.ButtonCompat + android:id="@+id/more_button" + android:focusable="true" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/privacy_sandbox_m1_dialog_more_button" + android:visibility="gone" + android:layout_marginHorizontal="24dp" + android:layout_marginVertical="@dimen/promo_dialog_padding" + android:layout_gravity="end" + android:gravity="center_vertical" + android:drawableEnd="@drawable/ic_arrow_down" + android:drawableTint="?attr/globalFilledButtonTextColor" + android:drawablePadding="@dimen/privacy_sandbox_more_button_drawable_padding" + style="@style/FilledButton.Flat" /> + + <LinearLayout + android:id="@+id/action_buttons" + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:weightSum="2" + android:layout_marginVertical="@dimen/promo_dialog_padding" + android:layout_marginHorizontal="24dp" + android:visibility="invisible"> + + <org.chromium.ui.widget.ButtonCompat + android:id="@+id/settings_button" + android:focusable="true" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:layout_marginEnd="@dimen/privacy_sandbox_consent_button_margin_between" + android:text="@string/privacy_sandbox_m1_notice_restricted_settings_button" + style="@style/OutlinedButton" /> + <org.chromium.ui.widget.ButtonCompat + android:id="@+id/ack_button" + android:focusable="true" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/privacy_sandbox_consent_button_margin_between" + android:text="@string/privacy_sandbox_m1_notice_restricted_ack_button" + style="@style/FilledButton.Flat" /> + + </LinearLayout> + </org.chromium.components.browser_ui.widget.BoundedLinearLayout> +</LinearLayout> +
diff --git a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogController.java b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogController.java index a270e88..50932571 100644 --- a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogController.java +++ b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogController.java
@@ -14,6 +14,7 @@ import org.chromium.chrome.browser.privacy_sandbox.v4.PrivacySandboxDialogConsentEEAV4; import org.chromium.chrome.browser.privacy_sandbox.v4.PrivacySandboxDialogNoticeEEAV4; import org.chromium.chrome.browser.privacy_sandbox.v4.PrivacySandboxDialogNoticeROWV4; +import org.chromium.chrome.browser.privacy_sandbox.v4.PrivacySandboxDialogNoticeRestrictedV4; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.settings.SettingsLauncher; @@ -57,6 +58,11 @@ dialog.show(); sDialog = new WeakReference<>(dialog); return true; + case PromptType.M1_NOTICE_RESTRICTED: + dialog = new PrivacySandboxDialogNoticeRestrictedV4(context, settingsLauncher); + dialog.show(); + sDialog = new WeakReference<>(dialog); + return true; case PromptType.NOTICE: if (bottomSheetController == null || !showNewNotice()) return false; new PrivacySandboxBottomSheetNotice(
diff --git a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeRestrictedV4.java b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeRestrictedV4.java new file mode 100644 index 0000000..90e1fc5 --- /dev/null +++ b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeRestrictedV4.java
@@ -0,0 +1,108 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.privacy_sandbox.v4; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.ScrollView; + +import androidx.annotation.NonNull; + +import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxBridge; +import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxReferrer; +import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsBaseFragment; +import org.chromium.chrome.browser.privacy_sandbox.PromptAction; +import org.chromium.chrome.browser.privacy_sandbox.R; +import org.chromium.components.browser_ui.settings.SettingsLauncher; +import org.chromium.ui.widget.ButtonCompat; + +/** + * Dialog in the form of a notice shown for the Privacy Sandbox. + */ +public class PrivacySandboxDialogNoticeRestrictedV4 + extends Dialog implements View.OnClickListener, DialogInterface.OnShowListener { + private SettingsLauncher mSettingsLauncher; + private View mContentView; + + private ButtonCompat mMoreButton; + private LinearLayout mActionButtons; + private ScrollView mScrollView; + + public PrivacySandboxDialogNoticeRestrictedV4( + Context context, @NonNull SettingsLauncher settingsLauncher) { + super(context, R.style.ThemeOverlay_BrowserUI_Fullscreen); + mSettingsLauncher = settingsLauncher; + mContentView = LayoutInflater.from(context).inflate( + R.layout.privacy_sandbox_notice_restricted_v4, null); + setContentView(mContentView); + + ButtonCompat ackButton = mContentView.findViewById(R.id.ack_button); + ackButton.setOnClickListener(this); + ButtonCompat settingsButton = mContentView.findViewById(R.id.settings_button); + settingsButton.setOnClickListener(this); + + mMoreButton = mContentView.findViewById(R.id.more_button); + mActionButtons = mContentView.findViewById(R.id.action_buttons); + mScrollView = mContentView.findViewById(R.id.privacy_sandbox_dialog_scroll_view); + + mMoreButton.setOnClickListener(this); + setOnShowListener(this); + setCancelable(false); + + mScrollView.getViewTreeObserver().addOnScrollChangedListener(() -> { + if (!mScrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { + mMoreButton.setVisibility(View.GONE); + mActionButtons.setVisibility(View.VISIBLE); + mScrollView.post(() -> { mScrollView.pageScroll(ScrollView.FOCUS_DOWN); }); + } + }); + } + + @Override + public void show() { + PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_SHOWN); + super.show(); + } + + // OnClickListener: + @Override + public void onClick(View view) { + int id = view.getId(); + if (id == R.id.ack_button) { + PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_ACKNOWLEDGE); + dismiss(); + } else if (id == R.id.settings_button) { + PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_OPEN_SETTINGS); + dismiss(); + PrivacySandboxSettingsBaseFragment.launchPrivacySandboxSettings( + getContext(), mSettingsLauncher, PrivacySandboxReferrer.PRIVACY_SANDBOX_NOTICE); + } else if (id == R.id.more_button) { + PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_MORE_BUTTON_CLICKED); + if (mScrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { + mScrollView.post(() -> { mScrollView.pageScroll(ScrollView.FOCUS_DOWN); }); + } else { + mMoreButton.setVisibility(View.GONE); + mActionButtons.setVisibility(View.VISIBLE); + mScrollView.post(() -> { mScrollView.pageScroll(ScrollView.FOCUS_DOWN); }); + } + } + } + + @Override + public void onShow(DialogInterface dialogInterface) { + if (mScrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { + mMoreButton.setVisibility(View.VISIBLE); + mActionButtons.setVisibility(View.GONE); + } else { + mMoreButton.setVisibility(View.GONE); + mActionButtons.setVisibility(View.VISIBLE); + } + mScrollView.setVisibility(View.VISIBLE); + } +}
diff --git a/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java b/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java index 1905813..7431ab7 100644 --- a/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java +++ b/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java
@@ -49,6 +49,7 @@ import org.chromium.chrome.browser.privacy_sandbox.v4.PrivacySandboxDialogConsentEEAV4; import org.chromium.chrome.browser.privacy_sandbox.v4.PrivacySandboxDialogNoticeEEAV4; import org.chromium.chrome.browser.privacy_sandbox.v4.PrivacySandboxDialogNoticeROWV4; +import org.chromium.chrome.browser.privacy_sandbox.v4.PrivacySandboxDialogNoticeRestrictedV4; import org.chromium.chrome.browser.privacy_sandbox.v4.PrivacySandboxSettingsFragmentV4; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeTabbedActivityTestRule; @@ -157,7 +158,8 @@ assertEquals("Last dialog action", PromptAction.CONSENT_MORE_BUTTON_CLICKED, (int) mFakePrivacySandboxBridge.getLastPromptAction()); } else if (promptType == PromptType.M1_NOTICE_EEA - || promptType == PromptType.M1_NOTICE_ROW) { + || promptType == PromptType.M1_NOTICE_ROW + || promptType == PromptType.M1_NOTICE_RESTRICTED) { assertEquals("Last dialog action", PromptAction.NOTICE_MORE_BUTTON_CLICKED, (int) mFakePrivacySandboxBridge.getLastPromptAction()); } @@ -245,6 +247,19 @@ @Test @SmallTest + @Feature({"RenderTest"}) + public void testRenderRestrictedNotice() throws IOException { + PrivacySandboxDialogNotice notice = null; + TestThreadUtils.runOnUiThreadBlocking(() -> { + mDialog = new PrivacySandboxDialogNoticeRestrictedV4( + sActivityTestRule.getActivity(), mSettingsLauncher); + mDialog.show(); + }); + renderViewWithId(R.id.privacy_sandbox_dialog, "privacy_sandbox_restricted_notice_dialog"); + } + + @Test + @SmallTest public void testControllerIncognito() throws IOException { TestThreadUtils.runOnUiThreadBlocking(() -> { PrivacySandboxDialogController.maybeLaunchPrivacySandboxDialog( @@ -505,4 +520,31 @@ .launchSettingsActivity(any(Context.class), eq(PrivacySandboxSettingsFragmentV4.class), any(Bundle.class)); } + + @Test + @SmallTest + @Features.EnableFeatures(ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4) + public void testControllerShowsRestrictedNotice() throws IOException { + mFakePrivacySandboxBridge.setRequiredPromptType(PromptType.M1_NOTICE_RESTRICTED); + launchDialog(); + // Verify that the restricted notice is shown + onViewWaiting(withId(R.id.privacy_sandbox_notice_title)); + assertEquals("Last dialog action", PromptAction.NOTICE_SHOWN, + (int) mFakePrivacySandboxBridge.getLastPromptAction()); + // Ack the notice and verify it worked correctly. + tryClickOn(withId(R.id.ack_button)); + assertEquals("Last dialog action", PromptAction.NOTICE_ACKNOWLEDGE, + (int) mFakePrivacySandboxBridge.getLastPromptAction()); + onView(withId(R.id.privacy_sandbox_notice_title)).check(doesNotExist()); + + // Click on the settings button and verify it worked correctly. + launchDialog(); + tryClickOn(withId(R.id.settings_button)); + assertEquals("Last dialog action", PromptAction.NOTICE_OPEN_SETTINGS, + (int) mFakePrivacySandboxBridge.getLastPromptAction()); + onView(withId(R.id.privacy_sandbox_notice_title)).check(doesNotExist()); + Mockito.verify(mSettingsLauncher) + .launchSettingsActivity(any(Context.class), + eq(PrivacySandboxSettingsFragmentV4.class), any(Bundle.class)); + } }
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc b/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc index 6404f12..6e03609 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc
@@ -1620,13 +1620,7 @@ } } -// Test is flaky on Win and Mac dbg: crbug.com/1121731 -#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_MAC) && !defined(NDEBUG)) -#define MAYBE_OpenLinkInProfile DISABLED_OpenLinkInProfile -#else -#define MAYBE_OpenLinkInProfile OpenLinkInProfile -#endif -IN_PROC_BROWSER_TEST_F(ContextMenuBrowserTest, MAYBE_OpenLinkInProfile) { +IN_PROC_BROWSER_TEST_F(ContextMenuBrowserTest, OpenLinkInProfile) { signin_util::ScopedForceSigninSetterForTesting force_signin_setter(true); // Create |num_profiles| extra profiles for testing. const int num_profiles = 8;
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-HK.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-HK.xtb index d04120c..80fc659 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-HK.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-HK.xtb
@@ -113,7 +113,7 @@ <translation id="1653266918374749391">上一個第 3 級標題</translation> <translation id="1657616855184033958">顯示活動串流篩選器</translation> <translation id="1659072772017912254">未勾選</translation> -<translation id="1666326070478924810">選取以朗讀設定</translation> +<translation id="1666326070478924810">揀選朗讀內容設定</translation> <translation id="1674262202423278359">ChromeVox 瀏覽</translation> <translation id="16777221443363124">選單列</translation> <translation id="1680732992526857724">「<ph name="NAME" />」已開啟</translation> @@ -984,7 +984,7 @@ <translation id="773906353055481349">按下 Search+Ctrl+Alt 鍵和箭咀鍵,即可按儲存格導覽</translation> <translation id="7746976083433980639"><ph name="ACTION" />即可<ph name="LABEL" /></translation> <translation id="7763537600611320912">開始咗下載「<ph name="FILE_NAME" />」</translation> -<translation id="7768784765476638775">選取以朗讀</translation> +<translation id="7768784765476638775">揀選朗讀內容</translation> <translation id="7776293189010177726">開啟 ChromeVox 選單</translation> <translation id="7799302833060027366">按上下左右鍵即可探索數字資料</translation> <translation id="7800558923657349506">結語</translation>
diff --git a/chrome/browser/resources/password_manager/BUILD.gn b/chrome/browser/resources/password_manager/BUILD.gn index 8544513..53e609d 100644 --- a/chrome/browser/resources/password_manager/BUILD.gn +++ b/chrome/browser/resources/password_manager/BUILD.gn
@@ -44,6 +44,7 @@ "dialogs/edit_password_dialog.ts", "dialogs/edit_password_disclaimer_dialog.ts", "dialogs/multi_store_delete_password_dialog.ts", + "dialogs/move_passwords_dialog.ts", "password_details_card.ts", "password_details_section.ts", "password_list_item.ts",
diff --git a/chrome/browser/resources/password_manager/dialogs/move_passwords_dialog.html b/chrome/browser/resources/password_manager/dialogs/move_passwords_dialog.html new file mode 100644 index 0000000..85b3152 --- /dev/null +++ b/chrome/browser/resources/password_manager/dialogs/move_passwords_dialog.html
@@ -0,0 +1,27 @@ +<style include="shared-style"> + #avatar { + border-radius: 50%; + height: 16px; + margin-inline-end: 10px; + width: 16px; + } +</style> +<cr-dialog id="dialog" show-on-attach> + <div slot="title" class="dialog-title">$i18n{movePasswordsTitle}</div> + <div slot="body"> + <div>$i18n{movePasswordsDescription}</div> + <!-- TODO(crbug.com/1420919): Show all passwords --> + </div> + <div slot="button-container"> + <cr-button id="cancel" class="cancel-button" on-click="onCancel_"> + $i18n{cancel} + </cr-button> + <cr-button id="move" class="action-button" on-click="onMoveButtonClick_"> + $i18n{movePasswordsButton} + </cr-button> + </div> + <div slot="footer" class="flex-centered"> + <img id="avatar" src="[[avatarImage]]"></img> + <div id="accountEmail" class="label">[[accountEmail]]</div> + </div> +</cr-dialog>
diff --git a/chrome/browser/resources/password_manager/dialogs/move_passwords_dialog.ts b/chrome/browser/resources/password_manager/dialogs/move_passwords_dialog.ts new file mode 100644 index 0000000..5faa3aa --- /dev/null +++ b/chrome/browser/resources/password_manager/dialogs/move_passwords_dialog.ts
@@ -0,0 +1,72 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'chrome://resources/cr_elements/cr_button/cr_button.js'; +import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js'; +import '../shared_style.css.js'; +import '../user_utils_mixin.js'; + +import {CrButtonElement} from 'chrome://resources/cr_elements/cr_button/cr_button.js'; +import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js'; +import {assert} from 'chrome://resources/js/assert_ts.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {UserUtilMixin} from '../user_utils_mixin.js'; + +import {getTemplate} from './move_passwords_dialog.html.js'; + +export interface MovePasswordsDialogElement { + $: { + accountEmail: HTMLElement, + avatar: HTMLImageElement, + cancel: CrButtonElement, + dialog: CrDialogElement, + move: CrButtonElement, + }; +} + +const MovePasswordsDialogElementBase = UserUtilMixin(PolymerElement); + +export class MovePasswordsDialogElement extends MovePasswordsDialogElementBase { + static get is() { + return 'move-passwords-dialog'; + } + + static get template() { + return getTemplate(); + } + + static get properties() { + return { + /** + * Password groups displayed in the UI. + */ + passwords: { + type: Array, + value: () => [], + }, + }; + } + + passwords: chrome.passwordsPrivate.PasswordUiEntry[]; + + private onCancel_() { + this.$.dialog.close(); + } + + private onMoveButtonClick_() { + assert(this.isOptedInForAccountStorage); + // TODO(crbug.com/1420919): Implement password moving. + this.$.dialog.close(); + } +} + +declare global { + interface HTMLElementTagNameMap { + 'move-passwords-dialog': MovePasswordsDialogElement; + } +} + +customElements.define( + MovePasswordsDialogElement.is, MovePasswordsDialogElement);
diff --git a/chrome/browser/resources/password_manager/passwords_section.html b/chrome/browser/resources/password_manager/passwords_section.html index 1622340..c46b7845 100644 --- a/chrome/browser/resources/password_manager/passwords_section.html +++ b/chrome/browser/resources/password_manager/passwords_section.html
@@ -52,12 +52,13 @@ inner-h-t-m-l="[[i18nAdvanced('passwordsSectionDescription')]]"> </div> <div id="movePasswords" class="cr-secondary-text" - hidden="[[!showMovePasswords_]]" + hidden="[[!showMovePasswords_]]" on-click="onMovePasswordsClicked_" inner-h-t-m-l="[[getMovePasswordsText_(movePasswordsText_)]]"> </div> <div id="importPasswords" class="cr-secondary-text" hidden="[[!showImportPasswordsOption_(groups_, passwordManagerDisabled_)]]" - inner-h-t-m-l="[[getImportPasswordsText_()]]"> + inner-h-t-m-l="[[getImportPasswordsText_()]]" + on-click="onImportPasswordsClicked_"> </div> <div class="card" id="passwords" role="list" hidden$="[[hideGroupsList_(groups_, searchTerm_)]]"> @@ -70,12 +71,17 @@ </template> </div> <template is="dom-if" if="[[showAddPasswordDialog_]]" restamp> - <add-password-dialog on-close="onAddPasswordDialogClosed_" + <add-password-dialog on-close="onAddPasswordDialogClose_" id="addPasswordDialog"> </add-password-dialog> </template> <template is="dom-if" if="[[showAuthTimedOutDialog_]]" restamp> - <auth-timed-out-dialog on-close="onAuthTimedOutDialogClosed_" + <auth-timed-out-dialog on-close="onAuthTimedOutDialogClose_" id="authTimedOutDialog"> </auth-timed-out-dialog> </template> +<template is="dom-if" if="[[showMovePasswordsDialog_]]" restamp> + <move-passwords-dialog on-close="onMovePasswordsDialogClose_" + id="movePasswordsDialog" passwords="[[passwordsOnDevice_]]"> + </move-passwords-dialog> +</template>
diff --git a/chrome/browser/resources/password_manager/passwords_section.ts b/chrome/browser/resources/password_manager/passwords_section.ts index 8b9bdd5..94c6adb 100644 --- a/chrome/browser/resources/password_manager/passwords_section.ts +++ b/chrome/browser/resources/password_manager/passwords_section.ts
@@ -9,6 +9,7 @@ import './password_list_item.js'; import './dialogs/add_password_dialog.js'; import './dialogs/auth_timed_out_dialog.js'; +import './dialogs/move_passwords_dialog.js'; import './user_utils_mixin.js'; // <if expr="_google_chrome"> import './promo_cards/promo_card.js'; @@ -81,19 +82,21 @@ showAddPasswordDialog_: Boolean, showAuthTimedOutDialog_: Boolean, + showMovePasswordsDialog_: Boolean, movePasswordsText_: String, - numberOfPasswordsOnDevice_: { + passwordsOnDevice_: { type: Number, - computed: 'computeNumberOfPasswordsOnDevice_(groups_)', + computed: 'computePasswordsOnDevice_(groups_)', }, showMovePasswords_: { type: Boolean, computed: 'computeShowMovePasswords_(isAccountStoreUser, ' + - 'numberOfPasswordsOnDevice_)', + 'passwordsOnDevice_)', }, + // <if expr="_google_chrome"> promoCard_: { type: Object, @@ -115,6 +118,7 @@ private shownGroupsCount_: number; private showAddPasswordDialog_: boolean; private showAuthTimedOutDialog_: boolean; + private showMovePasswordsDialog_: boolean; private movePasswordsText_: string; // <if expr="_google_chrome"> private promoCard_: PromoCard|null; @@ -152,10 +156,6 @@ this.authTimedOutListener_ = this.onAuthTimedOut_.bind(this); window.addEventListener('auth-timed-out', this.authTimedOutListener_); - this.$.movePasswords.addEventListener( - 'click', this.onMovePasswordsClicked_); - this.$.importPasswords.addEventListener( - 'click', this.onImportPasswordsClicked_); } override disconnectedCallback() { @@ -208,7 +208,7 @@ this.showAddPasswordDialog_ = true; } - private onAddPasswordDialogClosed_() { + private onAddPasswordDialogClose_() { this.showAddPasswordDialog_ = false; } @@ -216,31 +216,31 @@ this.showAuthTimedOutDialog_ = true; } - private onAuthTimedOutDialogClosed_() { + private onAuthTimedOutDialogClose_() { this.showAuthTimedOutDialog_ = false; } - private computeNumberOfPasswordsOnDevice_(): number { + private computePasswordsOnDevice_(): + chrome.passwordsPrivate.PasswordUiEntry[] { const localStorage = [ chrome.passwordsPrivate.PasswordStoreSet.DEVICE_AND_ACCOUNT, chrome.passwordsPrivate.PasswordStoreSet.DEVICE, ]; return this.groups_.map(group => group.entries) .flat() - .filter(entry => localStorage.includes(entry.storedIn)) - .length; + .filter(entry => localStorage.includes(entry.storedIn)); } private computeShowMovePasswords_(): boolean { // TODO(crbug.com/1420548): Check for conflicts if needed. - return this.computeNumberOfPasswordsOnDevice_() > 0 && + return this.computePasswordsOnDevice_().length > 0 && this.isAccountStoreUser; } private async onGroupsChanged_() { this.movePasswordsText_ = await PluralStringProxyImpl.getInstance().getPluralString( - 'movePasswords', this.computeNumberOfPasswordsOnDevice_()); + 'movePasswords', this.computePasswordsOnDevice_().length); } private getMovePasswordsText_(): TrustedHTML { @@ -250,7 +250,11 @@ private onMovePasswordsClicked_(e: Event) { e.preventDefault(); - // TODO(crbug.com/1420548): Show move passwords dialog. + this.showMovePasswordsDialog_ = true; + } + + private onMovePasswordsDialogClose_() { + this.showMovePasswordsDialog_ = false; } private showImportPasswordsOption_(): boolean {
diff --git a/chrome/browser/resources/settings/autofill_page/address_edit_dialog.ts b/chrome/browser/resources/settings/autofill_page/address_edit_dialog.ts index e376e4f..6dc1d256 100644 --- a/chrome/browser/resources/settings/autofill_page/address_edit_dialog.ts +++ b/chrome/browser/resources/settings/autofill_page/address_edit_dialog.ts
@@ -27,6 +27,9 @@ import {getTemplate} from './address_edit_dialog.html.js'; import * as uiComponents from './address_edit_dialog_components.js'; +const SANCTOINED_COUNTRY_CODES: readonly string[] = + Object.freeze(['CU', 'IR', 'KP', 'SD', 'SY']); + export interface SettingsAddressEditDialogElement { $: { accountSourceNotice: HTMLElement, @@ -123,6 +126,14 @@ assert(this.address); this.countryInfo_.getCountryList().then(countryList => { + if (this.address.guid && this.address.metadata !== undefined && + this.address.metadata.source === AddressSource.ACCOUNT) { + // TODO(crbug.com/1432505): remove temporary sanctioned countries + // filtering. + countryList = countryList.filter( + country => !!country.countryCode && + !SANCTOINED_COUNTRY_CODES.includes(country.countryCode)); + } this.countries_ = countryList; const isEditingExistingAddress = !!this.address.guid;
diff --git a/chrome/browser/supervised_user/android/web_content_handler_impl.cc b/chrome/browser/supervised_user/android/web_content_handler_impl.cc index a21375bc..18748cc2 100644 --- a/chrome/browser/supervised_user/android/web_content_handler_impl.cc +++ b/chrome/browser/supervised_user/android/web_content_handler_impl.cc
@@ -36,10 +36,9 @@ } // namespace -WebContentHandlerImpl::WebContentHandlerImpl(content::WebContents* web_contents) - : supervised_user::WebContentHandler(), web_contents_(web_contents) { - CHECK(web_contents_); -} +WebContentHandlerImpl::WebContentHandlerImpl(content::WebContents* web_contents, + int frame_id) + : ChromeWebContentHandlerBase(web_contents, frame_id) {} WebContentHandlerImpl::~WebContentHandlerImpl() = default; @@ -63,16 +62,6 @@ std::move(callback).Run(true); } -bool WebContentHandlerImpl::IsMainFrame(int frame_id) { - return web_contents_->GetPrimaryMainFrame()->GetFrameTreeNodeId() == frame_id; -} - -void WebContentHandlerImpl::CleanUpInfoBarOnMainFrame(int frame_id) { - if (IsMainFrame(frame_id)) { - supervised_user::CleanUpInfoBarForContent(web_contents_.get()); - } -} - void WebContentHandlerImpl::ShowFeedback(GURL url, std::u16string reason) { std::string message = l10n_util::GetStringFUTF8( IDS_BLOCK_INTERSTITIAL_DEFAULT_FEEDBACK_TEXT, reason);
diff --git a/chrome/browser/supervised_user/android/web_content_handler_impl.h b/chrome/browser/supervised_user/android/web_content_handler_impl.h index b65b3c5..2894292 100644 --- a/chrome/browser/supervised_user/android/web_content_handler_impl.h +++ b/chrome/browser/supervised_user/android/web_content_handler_impl.h
@@ -8,29 +8,24 @@ #include <string> #include "base/memory/weak_ptr.h" +#include "chrome/browser/supervised_user/chrome_web_content_handler_base.h" #include "components/supervised_user/core/browser/web_content_handler.h" enum class AndroidLocalWebApprovalFlowOutcome; -namespace content { -class WebContents; -} // namespace content - // Android specific implementation of web content handler. -class WebContentHandlerImpl : public supervised_user::WebContentHandler { +class WebContentHandlerImpl : public ChromeWebContentHandlerBase { public: - explicit WebContentHandlerImpl(content::WebContents* web_contents); + WebContentHandlerImpl(content::WebContents* web_contents, int frame_id); WebContentHandlerImpl(const WebContentHandlerImpl&) = delete; WebContentHandlerImpl& operator=(const WebContentHandlerImpl&) = delete; ~WebContentHandlerImpl() override; - // supervised_user::WebContentHandler: + // ChromeWebContentHandlerBase implementaion: void RequestLocalApproval(const GURL& url, const std::u16string& child_display_name, ApprovalRequestInitiatedCallback callback) override; - bool IsMainFrame(int frame_id) override; - void CleanUpInfoBarOnMainFrame(int frame_id) override; void ShowFeedback(GURL url, std::u16string reason) override; private: @@ -48,7 +43,6 @@ FRIEND_TEST_ALL_PREFIXES(WebContentHandlerImplTest, LocalWebApprovalDurationHistogramCancellationTest); - const raw_ptr<content::WebContents> web_contents_; base::WeakPtrFactory<WebContentHandlerImpl> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/supervised_user/android/web_content_handler_impl_unittest.cc b/chrome/browser/supervised_user/android/web_content_handler_impl_unittest.cc index 4bbbd5cb..531ed8a 100644 --- a/chrome/browser/supervised_user/android/web_content_handler_impl_unittest.cc +++ b/chrome/browser/supervised_user/android/web_content_handler_impl_unittest.cc
@@ -70,7 +70,7 @@ content::WebContents::Create( content::WebContents::CreateParams(GetProfilePtr())); WebContentHandlerImpl web_content_handler = - WebContentHandlerImpl(web_contents.get()); + WebContentHandlerImpl(web_contents.get(), /*frame_id=*/0); web_content_handler.OnLocalApprovalRequestCompleted( supervisedUserSettingsServiceMock, url, start_time, @@ -104,7 +104,7 @@ content::WebContents::Create( content::WebContents::CreateParams(GetProfilePtr())); WebContentHandlerImpl web_content_handler = - WebContentHandlerImpl(web_contents.get()); + WebContentHandlerImpl(web_contents.get(), /*frame_id=*/0); // Receive a request canceled by the parent. // Check that no duration metric is recorded for incomplete requests. @@ -136,7 +136,7 @@ content::WebContents::Create( content::WebContents::CreateParams(GetProfilePtr())); WebContentHandlerImpl web_content_handler = - WebContentHandlerImpl(web_contents.get()); + WebContentHandlerImpl(web_contents.get(), /*frame_id=*/0); // Receive a request accepted by the parent with a total duration of 5 // minutes. Check that duration metric is recorded.
diff --git a/chrome/browser/supervised_user/chrome_web_content_handler_base.cc b/chrome/browser/supervised_user/chrome_web_content_handler_base.cc new file mode 100644 index 0000000..61e6bf08 --- /dev/null +++ b/chrome/browser/supervised_user/chrome_web_content_handler_base.cc
@@ -0,0 +1,58 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/supervised_user/chrome_web_content_handler_base.h" + +#include "chrome/browser/supervised_user/supervised_user_navigation_observer.h" +#include "components/infobars/content/content_infobar_manager.h" +#include "components/infobars/core/infobar.h" +#include "content/public/browser/navigation_details.h" +#include "content/public/browser/navigation_entry.h" +#include "content/public/browser/web_contents.h" + +ChromeWebContentHandlerBase::ChromeWebContentHandlerBase( + content::WebContents* web_contents, + int frame_id) + : web_contents_(web_contents), frame_id_(frame_id) { + CHECK(web_contents_); +} + +ChromeWebContentHandlerBase::~ChromeWebContentHandlerBase() = default; + +bool ChromeWebContentHandlerBase::IsMainFrame() const { + return web_contents_->GetPrimaryMainFrame()->GetFrameTreeNodeId() == + frame_id_; +} + +void ChromeWebContentHandlerBase::CleanUpInfoBarOnMainFrame() { + if (!IsMainFrame()) { + return; + } + infobars::ContentInfoBarManager* manager = + infobars::ContentInfoBarManager::FromWebContents(web_contents_); + if (!manager) { + return; + } + content::LoadCommittedDetails details; + // |details.is_same_document| is default false, and |details.is_main_frame| + // is default true. This results in is_navigation_to_different_page() + // returning true. + CHECK(details.is_navigation_to_different_page()); + content::NavigationController& controller = web_contents_->GetController(); + details.entry = controller.GetVisibleEntry(); + if (controller.GetLastCommittedEntry()) { + details.previous_entry_index = controller.GetLastCommittedEntryIndex(); + details.previous_main_frame_url = + controller.GetLastCommittedEntry()->GetURL(); + } + for (int i = manager->infobar_count() - 1; i >= 0; --i) { + infobars::InfoBar* infobar = manager->infobar_at(i); + + if (infobar->delegate()->ShouldExpire( + infobars::ContentInfoBarManager:: + NavigationDetailsFromLoadCommittedDetails(details))) { + manager->RemoveInfoBar(infobar); + } + } +}
diff --git a/chrome/browser/supervised_user/chrome_web_content_handler_base.h b/chrome/browser/supervised_user/chrome_web_content_handler_base.h new file mode 100644 index 0000000..e6bb606 --- /dev/null +++ b/chrome/browser/supervised_user/chrome_web_content_handler_base.h
@@ -0,0 +1,38 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_SUPERVISED_USER_CHROME_WEB_CONTENT_HANDLER_BASE_H_ +#define CHROME_BROWSER_SUPERVISED_USER_CHROME_WEB_CONTENT_HANDLER_BASE_H_ + +#include "base/allocator/partition_allocator/pointers/raw_ptr.h" +#include "components/supervised_user/core/browser/web_content_handler.h" + +namespace content { +class WebContents; +} // namespace content + +// Implements common Web Content Handler functionality that can be shared +// accross non-IOS platforms, but cannot belong in the base class due to +// prohibited dependencies in components. +class ChromeWebContentHandlerBase : public supervised_user::WebContentHandler { + public: + ChromeWebContentHandlerBase(const ChromeWebContentHandlerBase&) = delete; + ChromeWebContentHandlerBase& operator=(const ChromeWebContentHandlerBase&) = + delete; + ~ChromeWebContentHandlerBase() override; + + // supervised_user::WebContentHandler implementation: + bool IsMainFrame() const override; + void CleanUpInfoBarOnMainFrame() override; + + protected: + ChromeWebContentHandlerBase(content::WebContents* web_contents, int frame_id); + raw_ptr<content::WebContents> web_contents_; + + private: + // The uniquely identifying global id for the frame. + const int frame_id_; +}; + +#endif // CHROME_BROWSER_SUPERVISED_USER_CHROME_WEB_CONTENT_HANDLER_BASE_H_
diff --git a/chrome/browser/supervised_user/chromeos/web_content_handler_impl.cc b/chrome/browser/supervised_user/chromeos/web_content_handler_impl.cc index da813248..c7130cec 100644 --- a/chrome/browser/supervised_user/chromeos/web_content_handler_impl.cc +++ b/chrome/browser/supervised_user/chromeos/web_content_handler_impl.cc
@@ -69,8 +69,9 @@ WebContentHandlerImpl::WebContentHandlerImpl( content::WebContents* web_contents, const GURL& url, - favicon::LargeIconService& large_icon_service) - : web_contents_(web_contents), + favicon::LargeIconService& large_icon_service, + int frame_id) + : ChromeWebContentHandlerBase(web_contents, frame_id), favicon_handler_(std::make_unique<SupervisedUserFaviconRequestHandler>( url.GetWithEmptyPath(), &large_icon_service)), @@ -111,16 +112,6 @@ std::move(callback).Run(true); } -bool WebContentHandlerImpl::IsMainFrame(int frame_id) { - return web_contents_->GetPrimaryMainFrame()->GetFrameTreeNodeId() == frame_id; -} - -void WebContentHandlerImpl::CleanUpInfoBarOnMainFrame(int frame_id) { - if (IsMainFrame(frame_id)) { - supervised_user::CleanUpInfoBarForContent(web_contents_.get()); - } -} - void WebContentHandlerImpl::ShowFeedback(GURL url, std::u16string reason) { std::string message = l10n_util::GetStringFUTF8( IDS_BLOCK_INTERSTITIAL_DEFAULT_FEEDBACK_TEXT, reason);
diff --git a/chrome/browser/supervised_user/chromeos/web_content_handler_impl.h b/chrome/browser/supervised_user/chromeos/web_content_handler_impl.h index 8ca15e5..8995769 100644 --- a/chrome/browser/supervised_user/chromeos/web_content_handler_impl.h +++ b/chrome/browser/supervised_user/chromeos/web_content_handler_impl.h
@@ -10,16 +10,12 @@ #include "base/memory/weak_ptr.h" #include "chrome/browser/ash/crosapi/crosapi_ash.h" -#include "components/supervised_user/core/browser/web_content_handler.h" +#include "chrome/browser/supervised_user/chrome_web_content_handler_base.h" #include "ui/gfx/image/image_skia.h" #include "url/gurl.h" class Profile; -namespace content { -class WebContents; -} // namespace content - namespace favicon { class LargeIconService; } // namespace favicon @@ -27,22 +23,21 @@ class SupervisedUserFaviconRequestHandler; // Chrome Ash specific implementation of web content handler. -class WebContentHandlerImpl : public supervised_user::WebContentHandler { +class WebContentHandlerImpl : public ChromeWebContentHandlerBase { public: WebContentHandlerImpl(content::WebContents* web_contents, const GURL& url, - favicon::LargeIconService& large_icon_service); + favicon::LargeIconService& large_icon_service, + int frame_id); WebContentHandlerImpl(const WebContentHandlerImpl&) = delete; WebContentHandlerImpl& operator=(const WebContentHandlerImpl&) = delete; ~WebContentHandlerImpl() override; - // supervised_user::WebContentHandler: + // ChromeWebContentHandlerBase implementation: void RequestLocalApproval(const GURL& url, const std::u16string& child_display_name, ApprovalRequestInitiatedCallback callback) override; - bool IsMainFrame(int frame_id) override; - void CleanUpInfoBarOnMainFrame(int frame_id) override; void ShowFeedback(GURL url, std::u16string reason) override; private: @@ -62,7 +57,6 @@ FRIEND_TEST_ALL_PREFIXES(WebContentHandlerImplTest, LocalWebApprovalErrorChromeOSTest); - const raw_ptr<content::WebContents> web_contents_; std::unique_ptr<SupervisedUserFaviconRequestHandler> favicon_handler_; const raw_ref<Profile> profile_; base::WeakPtrFactory<WebContentHandlerImpl> weak_ptr_factory_{this};
diff --git a/chrome/browser/supervised_user/chromeos/web_content_handler_impl_unittest.cc b/chrome/browser/supervised_user/chromeos/web_content_handler_impl_unittest.cc index e081355..83d5592 100644 --- a/chrome/browser/supervised_user/chromeos/web_content_handler_impl_unittest.cc +++ b/chrome/browser/supervised_user/chromeos/web_content_handler_impl_unittest.cc
@@ -84,8 +84,8 @@ std::unique_ptr<content::WebContents> web_contents = content::WebContents::Create( content::WebContents::CreateParams(GetProfilePtr())); - WebContentHandlerImpl web_content_handler(web_contents.get(), url, - large_icon_service()); + WebContentHandlerImpl web_content_handler( + web_contents.get(), url, large_icon_service(), /*frame_id=*/0); web_content_handler.OnLocalApprovalRequestCompleted( supervisedUserSettingsServiceMock, url, start_time, std::move(result)); @@ -125,8 +125,8 @@ std::unique_ptr<content::WebContents> web_contents = content::WebContents::Create( content::WebContents::CreateParams(GetProfilePtr())); - WebContentHandlerImpl web_content_handler(web_contents.get(), url, - large_icon_service()); + WebContentHandlerImpl web_content_handler( + web_contents.get(), url, large_icon_service(), /*frame_id=*/0); web_content_handler.OnLocalApprovalRequestCompleted( supervisedUserSettingsServiceMock, url, start_time, std::move(result)); @@ -166,8 +166,8 @@ std::unique_ptr<content::WebContents> web_contents = content::WebContents::Create( content::WebContents::CreateParams(GetProfilePtr())); - WebContentHandlerImpl web_content_handler(web_contents.get(), url, - large_icon_service()); + WebContentHandlerImpl web_content_handler( + web_contents.get(), url, large_icon_service(), /*frame_id=*/0); web_content_handler.OnLocalApprovalRequestCompleted( supervisedUserSettingsServiceMock, url, start_time, std::move(result)); @@ -205,8 +205,8 @@ std::unique_ptr<content::WebContents> web_contents = content::WebContents::Create( content::WebContents::CreateParams(GetProfilePtr())); - WebContentHandlerImpl web_content_handler(web_contents.get(), url, - large_icon_service()); + WebContentHandlerImpl web_content_handler( + web_contents.get(), url, large_icon_service(), /*frame_id=*/0); web_content_handler.OnLocalApprovalRequestCompleted( supervisedUserSettingsServiceMock, url, start_time, std::move(result));
diff --git a/chrome/browser/supervised_user/supervised_user_browser_utils.cc b/chrome/browser/supervised_user/supervised_user_browser_utils.cc index a1a17ef..529051b 100644 --- a/chrome/browser/supervised_user/supervised_user_browser_utils.cc +++ b/chrome/browser/supervised_user/supervised_user_browser_utils.cc
@@ -7,11 +7,7 @@ #include "base/strings/string_util.h" #include "chrome/common/url_constants.h" -#include "components/infobars/content/content_infobar_manager.h" -#include "components/infobars/core/infobar.h" #include "components/url_matcher/url_util.h" -#include "content/public/browser/navigation_details.h" -#include "content/public/browser/navigation_entry.h" #include "extensions/buildflags/buildflags.h" #include "extensions/common/extension_urls.h" #include "url/url_constants.h" @@ -68,32 +64,4 @@ GURL(chrome::kChromeUIEDUCoexistenceLoginURLV2); } -void CleanUpInfoBarForContent(content::WebContents* web_contents) { - infobars::ContentInfoBarManager* manager = - infobars::ContentInfoBarManager::FromWebContents(web_contents); - if (manager) { - content::LoadCommittedDetails details; - // |details.is_same_document| is default false, and |details.is_main_frame| - // is default true. This results in is_navigation_to_different_page() - // returning true. - DCHECK(details.is_navigation_to_different_page()); - content::NavigationController& controller = web_contents->GetController(); - details.entry = controller.GetVisibleEntry(); - if (controller.GetLastCommittedEntry()) { - details.previous_entry_index = controller.GetLastCommittedEntryIndex(); - details.previous_main_frame_url = - controller.GetLastCommittedEntry()->GetURL(); - } - for (int i = manager->infobar_count() - 1; i >= 0; --i) { - infobars::InfoBar* infobar = manager->infobar_at(i); - - if (infobar->delegate()->ShouldExpire( - infobars::ContentInfoBarManager:: - NavigationDetailsFromLoadCommittedDetails(details))) { - manager->RemoveInfoBar(infobar); - } - } - } -} - } // namespace supervised_user
diff --git a/chrome/browser/supervised_user/supervised_user_browser_utils.h b/chrome/browser/supervised_user/supervised_user_browser_utils.h index 6bc7e45..bbe6448c 100644 --- a/chrome/browser/supervised_user/supervised_user_browser_utils.h +++ b/chrome/browser/supervised_user/supervised_user_browser_utils.h
@@ -18,10 +18,6 @@ // Returns true if the parent allowlist should be skipped. bool ShouldContentSkipParentAllowlistFiltering(content::WebContents* contents); -// Removes all the infobars which are attached to |web_contents| and for -// which ShouldExpire() returns true. -void CleanUpInfoBarForContent(content::WebContents* web_contents); - } // namespace supervised_user #endif // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_BROWSER_UTILS_H_
diff --git a/chrome/browser/supervised_user/supervised_user_interstitial.cc b/chrome/browser/supervised_user/supervised_user_interstitial.cc index 856156a..d311ad0 100644 --- a/chrome/browser/supervised_user/supervised_user_interstitial.cc +++ b/chrome/browser/supervised_user/supervised_user_interstitial.cc
@@ -125,7 +125,7 @@ web_contents, std::move(web_content_handler), supervised_user_service, url, reason, frame_id, interstitial_navigation_id)); - interstitial->web_content_handler()->CleanUpInfoBarOnMainFrame(frame_id); + interstitial->web_content_handler()->CleanUpInfoBarOnMainFrame(); // Caller is responsible for deleting the interstitial. return interstitial; @@ -250,7 +250,7 @@ void SupervisedUserInterstitial::OutputRequestPermissionSourceMetric() { RequestPermissionSource source; - if (web_content_handler_->IsMainFrame(frame_id_)) { + if (web_content_handler_->IsMainFrame()) { source = RequestPermissionSource::MAIN_FRAME; } else { source = RequestPermissionSource::SUB_FRAME;
diff --git a/chrome/browser/supervised_user/supervised_user_navigation_observer.cc b/chrome/browser/supervised_user/supervised_user_navigation_observer.cc index 18a160c..b8c0385b 100644 --- a/chrome/browser/supervised_user/supervised_user_navigation_observer.cc +++ b/chrome/browser/supervised_user/supervised_user_navigation_observer.cc
@@ -50,13 +50,14 @@ std::unique_ptr<supervised_user::WebContentHandler> CreateWebContentHandler( content::WebContents* web_contents, GURL url, - Profile* profile) { + Profile* profile, + int frame_id) { #if BUILDFLAG(IS_CHROMEOS_ASH) return std::make_unique<WebContentHandlerImpl>( web_contents, url, - *LargeIconServiceFactory::GetForBrowserContext(profile)); + *LargeIconServiceFactory::GetForBrowserContext(profile), frame_id); #elif BUILDFLAG(IS_ANDROID) - return std::make_unique<WebContentHandlerImpl>(web_contents); + return std::make_unique<WebContentHandlerImpl>(web_contents, frame_id); #else return nullptr; #endif @@ -312,7 +313,8 @@ Profile::FromBrowserContext(web_contents()->GetBrowserContext()); std::unique_ptr<SupervisedUserInterstitial> interstitial = SupervisedUserInterstitial::Create( - web_contents(), CreateWebContentHandler(web_contents(), url, profile), + web_contents(), + CreateWebContentHandler(web_contents(), url, profile, frame_id), *supervised_user_service_, url, reason, frame_id, navigation_id); supervised_user_interstitials_[frame_id] = std::move(interstitial);
diff --git a/chrome/browser/supervised_user/supervised_user_navigation_throttle.cc b/chrome/browser/supervised_user/supervised_user_navigation_throttle.cc index 9009736..b00c2ca9 100644 --- a/chrome/browser/supervised_user/supervised_user_navigation_throttle.cc +++ b/chrome/browser/supervised_user/supervised_user_navigation_throttle.cc
@@ -30,7 +30,7 @@ enum { FILTERING_BEHAVIOR_ALLOW = 1, FILTERING_BEHAVIOR_ALLOW_UNCERTAIN, - FILTERING_BEHAVIOR_BLOCK_DENYLIST, + FILTERING_BEHAVIOR_BLOCK_DENYLIST, // deprecated FILTERING_BEHAVIOR_BLOCK_SAFESITES, FILTERING_BEHAVIOR_BLOCK_MANUAL, FILTERING_BEHAVIOR_BLOCK_DEFAULT, @@ -65,8 +65,6 @@ : FILTERING_BEHAVIOR_ALLOW; case supervised_user::SupervisedUserURLFilter::BLOCK: switch (reason) { - case supervised_user::FilteringBehaviorReason::DENYLIST: - return FILTERING_BEHAVIOR_BLOCK_DENYLIST; case supervised_user::FilteringBehaviorReason::ASYNC_CHECKER: return FILTERING_BEHAVIOR_BLOCK_SAFESITES; case supervised_user::FilteringBehaviorReason::ALLOWLIST: @@ -90,14 +88,14 @@ int GetHistogramValueForTransitionType(ui::PageTransition transition_type) { int value = static_cast<int>(ui::PageTransitionStripQualifier(transition_type)); - if (0 <= value && value <= kHistogramPageTransitionMaxKnownValue) + if (0 <= value && value <= kHistogramPageTransitionMaxKnownValue) { return value; + } NOTREACHED(); return kHistogramPageTransitionFallbackValue; } void RecordFilterResultEvent( - bool safesites_histogram, supervised_user::SupervisedUserURLFilter::FilteringBehavior behavior, supervised_user::FilteringBehaviorReason reason, bool uncertain, @@ -107,13 +105,7 @@ kHistogramFilteringBehaviorSpacing + GetHistogramValueForTransitionType(transition_type); DCHECK_LT(value, kHistogramMax); - // Note: We can't pass in the histogram name as a parameter to this function - // because of how the macro works (look up the histogram on the first - // invocation and cache it in a static variable). - if (safesites_histogram) - base::UmaHistogramSparse("ManagedUsers.SafetyFilter", value); - else - base::UmaHistogramSparse("ManagedUsers.FilteringResult", value); + base::UmaHistogramSparse("ManagedUsers.FilteringResult", value); } } // namespace @@ -186,10 +178,12 @@ // If we got a "not blocked" result synchronously, don't defer. deferred_ = !got_result || (behavior_ == supervised_user::SupervisedUserURLFilter::BLOCK); - if (got_result) + if (got_result) { behavior_ = supervised_user::SupervisedUserURLFilter::INVALID; - if (deferred_) + } + if (deferred_) { return NavigationThrottle::DEFER; + } return NavigationThrottle::PROCEED; } @@ -243,30 +237,24 @@ DCHECK_EQ(supervised_user::SupervisedUserURLFilter::INVALID, behavior_); // If we got a result synchronously, pass it back to ShowInterstitialIfNeeded. - if (!deferred_) + if (!deferred_) { behavior_ = behavior; + } reason_ = reason; ui::PageTransition transition = navigation_handle()->GetPageTransition(); - RecordFilterResultEvent(false, behavior, reason, uncertain, transition); - - // If both the static denylist and the async checker are enabled, also record - // SafeSites-only UMA events. - if (url_filter_->HasDenylist() && url_filter_->HasAsyncURLChecker() && - (reason == supervised_user::FilteringBehaviorReason::ASYNC_CHECKER || - reason == supervised_user::FilteringBehaviorReason::DENYLIST)) { - RecordFilterResultEvent(true, behavior, reason, uncertain, transition); - } + RecordFilterResultEvent(behavior, reason, uncertain, transition); if (navigation_handle()->IsInPrimaryMainFrame()) { // Update navigation observer about the navigation state of the main frame. auto* navigation_observer = SupervisedUserNavigationObserver::FromWebContents( navigation_handle()->GetWebContents()); - if (navigation_observer) + if (navigation_observer) { navigation_observer->UpdateMainFrameFilteringStatus(behavior, reason); + } } if (behavior == supervised_user::SupervisedUserURLFilter::BLOCK) {
diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc index e29d239e..262388e 100644 --- a/chrome/browser/supervised_user/supervised_user_service.cc +++ b/chrome/browser/supervised_user/supervised_user_service.cc
@@ -11,13 +11,10 @@ #include "base/check.h" #include "base/containers/contains.h" #include "base/feature_list.h" -#include "base/files/file_path.h" -#include "base/files/file_util.h" #include "base/functional/bind.h" #include "base/logging.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/user_metrics.h" -#include "base/path_service.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/task/thread_pool.h" @@ -26,7 +23,6 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/common/chrome_paths.h" #include "chrome/common/pref_names.h" #include "chrome/grit/generated_resources.h" #include "components/pref_registry/pref_registry_syncable.h" @@ -43,7 +39,6 @@ #include "components/sync/driver/sync_user_settings.h" #include "content/public/browser/storage_partition.h" #include "extensions/buildflags/buildflags.h" -#include "net/traffic_annotation/network_traffic_annotation.h" #include "ui/base/l10n/l10n_util.h" #if BUILDFLAG(IS_CHROMEOS) @@ -70,12 +65,6 @@ namespace { -// The URL from which to download a host denylist if no local one exists yet. -const char kDenylistURL[] = - "https://www.gstatic.com/chrome/supervised_user/denylist-20141001-1k.bin"; - -const char kDenylistSourceHistogramName[] = "FamilyUser.DenylistSource"; - #if BUILDFLAG(ENABLE_EXTENSIONS) // These extensions are allowed for supervised users for internal development // purposes. @@ -85,12 +74,6 @@ #endif // BUILDFLAG(ENABLE_EXTENSIONS) -base::FilePath GetDenylistPath() { - base::FilePath denylist_dir; - base::PathService::Get(chrome::DIR_USER_DATA, &denylist_dir); - return denylist_dir.Append(supervised_user::kDenylistFilename); -} - bool AreWebFilterPrefsDefault(const PrefService& pref_service) { return pref_service .FindPreference(prefs::kDefaultSupervisedUserFilteringBehavior) @@ -127,16 +110,6 @@ } } -// static -const char* SupervisedUserService::GetDenylistSourceHistogramForTesting() { - return kDenylistSourceHistogramName; -} - -// static -base::FilePath SupervisedUserService::GetDenylistPathForTesting() { - return GetDenylistPath(); -} - void SupervisedUserService::Init() { DCHECK(!did_init_); did_init_ = true; @@ -270,8 +243,7 @@ kids_chrome_management_client_(kids_chrome_management_client), delegate_(nullptr), url_filter_(std::move(check_webstore_url_callback), - std::move(url_filter_delegate)), - denylist_state_(DenylistLoadState::NOT_LOADED) { + std::move(url_filter_delegate)) { url_filter_.AddObserver(this); #if BUILDFLAG(ENABLE_EXTENSIONS) registry_observation_.Observe(extensions::ExtensionRegistry::Get(profile)); @@ -481,21 +453,6 @@ } void SupervisedUserService::OnSafeSitesSettingChanged() { - bool use_denylist = - IsSafeSitesEnabled() && - !base::FeatureList::IsEnabled(supervised_user::kRetireStaticDenyList); - if (use_denylist != url_filter_.HasDenylist()) { - if (use_denylist && denylist_state_ == DenylistLoadState::NOT_LOADED) { - LoadDenylist(GetDenylistPath(), GURL(kDenylistURL)); - } else if (!use_denylist || denylist_state_ == DenylistLoadState::LOADED) { - // Either the denylist was turned off, or it was turned on but has - // already been loaded previously. Just update the setting. - UpdateDenylist(); - } - // Else: The denylist was enabled, but the load is already in progress. - // Do nothing - we'll check the setting again when the load finishes. - } - UpdateAsyncUrlChecker(); supervised_user::SupervisedUserURLFilter::WebFilterType filter_type = @@ -527,105 +484,6 @@ } } -void SupervisedUserService::LoadDenylist(const base::FilePath& path, - const GURL& url) { - DCHECK(denylist_state_ == DenylistLoadState::NOT_LOADED); - denylist_state_ = DenylistLoadState::LOAD_STARTED; - base::ThreadPool::PostTaskAndReplyWithResult( - FROM_HERE, - {base::MayBlock(), base::TaskPriority::BEST_EFFORT, - base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}, - base::BindOnce(&base::PathExists, path), - base::BindOnce(&SupervisedUserService::OnDenylistFileChecked, - weak_ptr_factory_.GetWeakPtr(), path, url)); -} - -void SupervisedUserService::OnDenylistFileChecked(const base::FilePath& path, - const GURL& url, - bool file_exists) { - DCHECK(denylist_state_ == DenylistLoadState::LOAD_STARTED); - if (file_exists) { - LoadDenylistFromFile(path); - base::UmaHistogramEnumeration(kDenylistSourceHistogramName, - DenylistSource::kDenylist); - return; - } - - DCHECK(!denylist_downloader_); - - // Create traffic annotation tag. - net::NetworkTrafficAnnotationTag traffic_annotation = - net::DefineNetworkTrafficAnnotation("supervised_users_denylist", R"( - semantics { - sender: "Supervised Users" - description: - "Downloads a static denylist consisting of hostname hashes of " - "common inappropriate websites. This is only enabled for child " - "accounts and only if the corresponding setting is enabled by the " - "parent." - trigger: - "The file is downloaded on demand if the child account profile is " - "created and the setting is enabled." - data: - "No additional data is sent to the server beyond the request " - "itself." - destination: GOOGLE_OWNED_SERVICE - } - policy { - cookies_allowed: NO - setting: - "The feature can be remotely enabled or disabled by the parent. In " - "addition, if sign-in is restricted to accounts from a managed " - "domain, those accounts are not going to be child accounts." - chrome_policy { - RestrictSigninToPattern { - policy_options {mode: MANDATORY} - RestrictSigninToPattern: "*@manageddomain.com" - } - } - })"); - - auto factory = profile_->GetDefaultStoragePartition() - ->GetURLLoaderFactoryForBrowserProcess(); - denylist_downloader_ = std::make_unique<FileDownloader>( - url, path, false, std::move(factory), - base::BindOnce(&SupervisedUserService::OnDenylistDownloadDone, - base::Unretained(this), path), - traffic_annotation); -} - -void SupervisedUserService::LoadDenylistFromFile(const base::FilePath& path) { - DCHECK(denylist_state_ == DenylistLoadState::LOAD_STARTED); - denylist_.ReadFromFile( - path, base::BindRepeating(&SupervisedUserService::OnDenylistLoaded, - base::Unretained(this))); -} - -void SupervisedUserService::OnDenylistDownloadDone( - const base::FilePath& path, - FileDownloader::Result result) { - DCHECK(denylist_state_ == DenylistLoadState::LOAD_STARTED); - if (FileDownloader::IsSuccess(result)) { - LoadDenylistFromFile(path); - base::UmaHistogramEnumeration(kDenylistSourceHistogramName, - DenylistSource::kDenylist); - } - LOG(WARNING) << "Denylist download failed"; - denylist_downloader_.reset(); -} - -void SupervisedUserService::OnDenylistLoaded() { - DCHECK(denylist_state_ == DenylistLoadState::LOAD_STARTED); - denylist_state_ = DenylistLoadState::LOADED; - UpdateDenylist(); -} - -void SupervisedUserService::UpdateDenylist() { - url_filter_.SetDenylist(IsSafeSitesEnabled() ? &denylist_ : nullptr); - for (SupervisedUserServiceObserver& observer : observer_list_) - observer.OnURLFilterChanged(); -} - void SupervisedUserService::UpdateManualHosts() { const base::Value::Dict& dict = user_prefs_->GetDict(prefs::kSupervisedUserManualHosts);
diff --git a/chrome/browser/supervised_user/supervised_user_service.h b/chrome/browser/supervised_user/supervised_user_service.h index 46db4cc..a77d3d1 100644 --- a/chrome/browser/supervised_user/supervised_user_service.h +++ b/chrome/browser/supervised_user/supervised_user_service.h
@@ -18,12 +18,10 @@ #include "base/scoped_observation.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" -#include "chrome/browser/net/file_downloader.h" #include "components/keyed_service/core/keyed_service.h" #include "components/prefs/pref_change_registrar.h" #include "components/supervised_user/core/browser/remote_web_approvals_manager.h" #include "components/supervised_user/core/browser/supervised_user_url_filter.h" -#include "components/supervised_user/core/common/supervised_user_denylist.h" #include "components/supervised_user/core/common/supervised_users.h" #include "extensions/buildflags/buildflags.h" @@ -42,7 +40,6 @@ } // namespace supervised_user namespace base { -class FilePath; class Version; } // namespace base @@ -86,20 +83,6 @@ virtual void SetActive(bool active) = 0; }; - // These enum values represent the source from which the supervised user's - // denylist has been loaded from. These values are logged to UMA. Entries - // should not be renumbered and numeric values should never be reused. Please - // keep in sync with "FamilyUserDenylistSource" in - // src/tools/metrics/histograms/enums.xml - enum class DenylistSource { - kNoSource = 0, - kDenylist = 1, - kOldDenylist = 2, // Deprecated. - // Used for UMA. Update kMaxValue to the last value. Add future entries - // above this comment. Sync with enums.xml. - kMaxValue = kOldDenylist, - }; - #if BUILDFLAG(ENABLE_EXTENSIONS) // These enum values represent operations to manage the // kSupervisedUserApprovedExtensions user pref, which stores parent approved @@ -119,10 +102,6 @@ static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); - static const char* GetDenylistSourceHistogramForTesting(); - - static base::FilePath GetDenylistPathForTesting(); - supervised_user::RemoteWebApprovalsManager& remote_web_approvals_manager() { return remote_web_approvals_manager_; } @@ -328,30 +307,6 @@ void UpdateAsyncUrlChecker(); - // Asynchronously loads a denylist from a binary file at |path| and applies - // it to the URL filters. If no file exists at |path| yet, downloads a file - // from |url| and stores it at |path| first. - void LoadDenylist(const base::FilePath& path, const GURL& url); - - void OnDenylistFileChecked(const base::FilePath& path, - const GURL& url, - bool file_exists); - - // Tries loading an older copy of the denylist if the new denylist fails to - // load. - void TryLoadingOldDenylist(const base::FilePath& path, bool file_exists); - - // Asynchronously loads a denylist from a binary file at |path| and applies - // it to the URL filters. - void LoadDenylistFromFile(const base::FilePath& path); - - void OnDenylistDownloadDone(const base::FilePath& path, - FileDownloader::Result result); - - void OnDenylistLoaded(); - - void UpdateDenylist(); - // Updates the manual overrides for hosts in the URL filters when the // corresponding preference is changed. void UpdateManualHosts(); @@ -392,15 +347,6 @@ // It is only relevant for SU-initiated installs. std::set<std::string> approved_extensions_set_; - enum class DenylistLoadState { - NOT_LOADED, - LOAD_STARTED, - LOADED - } denylist_state_; - - supervised_user::SupervisedUserDenylist denylist_; - std::unique_ptr<FileDownloader> denylist_downloader_; - // Manages remote web approvals. supervised_user::RemoteWebApprovalsManager remote_web_approvals_manager_;
diff --git a/chrome/browser/supervised_user/supervised_user_service_browsertest.cc b/chrome/browser/supervised_user/supervised_user_service_browsertest.cc index f5cc83e..84d188e 100644 --- a/chrome/browser/supervised_user/supervised_user_service_browsertest.cc +++ b/chrome/browser/supervised_user/supervised_user_service_browsertest.cc
@@ -93,94 +93,3 @@ EXPECT_FALSE(prefs->IsUserModifiablePreference( policy::policy_prefs::kForceYouTubeRestrict)); } - -// Disabled due to excessive flakiness (crbug/1251785). -IN_PROC_BROWSER_TEST_F(SupervisedUserServiceTestSupervised, - DISABLED_DenylistLoaded) { - base::HistogramTester histogram_tester; - histogram_tester.ExpectTotalCount( - SupervisedUserService::GetDenylistSourceHistogramForTesting(), 0); - - base::ScopedAllowBlockingForTesting allow_blocking; - base::ScopedPathOverride path_override(chrome::DIR_USER_DATA, - fake_user_data_dir_.GetPath()); - base::FilePath denylist_path = - SupervisedUserService::GetDenylistPathForTesting(); - EXPECT_FALSE(base::PathExists(denylist_path)); - - base::RunLoop run_loop; - content::URLLoaderInterceptor interceptor(base::BindLambdaForTesting( - [&](content::URLLoaderInterceptor::RequestParams* params) { - std::string headers = - "HTTP/1.1 200 OK\n" - "Content-Type: text/html\n"; - content::URLLoaderInterceptor::WriteResponse(headers, "", - params->client.get()); - run_loop.Quit(); - return true; - })); - - logged_in_user_mixin_.LogInUser(); - run_loop.Run(); - - EXPECT_TRUE(base::PathExists(denylist_path)); - histogram_tester.ExpectUniqueSample( - SupervisedUserService::GetDenylistSourceHistogramForTesting(), - SupervisedUserService::DenylistSource::kDenylist, 1); -} - -// Disabled due to excessive flakiness (crbug/1251785). -IN_PROC_BROWSER_TEST_F(SupervisedUserServiceTestSupervised, - DISABLED_ExistingDenylistLoaded) { - base::HistogramTester histogram_tester; - histogram_tester.ExpectTotalCount( - SupervisedUserService::GetDenylistSourceHistogramForTesting(), 0); - - base::ScopedAllowBlockingForTesting allow_blocking; - base::ScopedPathOverride path_override(chrome::DIR_USER_DATA, - fake_user_data_dir_.GetPath()); - - base::FilePath denylist_path = - SupervisedUserService::GetDenylistPathForTesting(); - base::WriteFile(denylist_path, ""); - EXPECT_TRUE(base::PathExists(denylist_path)); - - logged_in_user_mixin_.LogInUser(); - - histogram_tester.ExpectUniqueSample( - SupervisedUserService::GetDenylistSourceHistogramForTesting(), - SupervisedUserService::DenylistSource::kDenylist, 1); -} - -// Disabled due to excessive flakiness (crbug/1251785). -IN_PROC_BROWSER_TEST_F(SupervisedUserServiceTestSupervised, - DISABLED_NoDenylistLoaded) { - base::HistogramTester histogram_tester; - histogram_tester.ExpectTotalCount( - SupervisedUserService::GetDenylistSourceHistogramForTesting(), 0); - - base::ScopedAllowBlockingForTesting allow_blocking; - base::ScopedPathOverride path_override(chrome::DIR_USER_DATA, - fake_user_data_dir_.GetPath()); - - base::RunLoop run_loop; - content::URLLoaderInterceptor interceptor(base::BindLambdaForTesting( - [&](content::URLLoaderInterceptor::RequestParams* params) { - LOG(ERROR) << params->url_request.url.path(); - std::string headers = "HTTP/1.1 500 Internal Server Error\n\n"; - content::URLLoaderInterceptor::WriteResponse(headers, "", - params->client.get()); - run_loop.Quit(); - return true; - })); - - logged_in_user_mixin_.LogInUser(); - run_loop.Run(); - - base::FilePath denylist_path = - SupervisedUserService::GetDenylistPathForTesting(); - EXPECT_FALSE(base::PathExists(denylist_path)); - histogram_tester.ExpectUniqueSample( - SupervisedUserService::GetDenylistSourceHistogramForTesting(), - SupervisedUserService::DenylistSource::kNoSource, 1); -}
diff --git a/chrome/browser/sync/android/java/src/org/chromium/chrome/browser/sync/SyncService.java b/chrome/browser/sync/android/java/src/org/chromium/chrome/browser/sync/SyncService.java index 14650ac8..0c17f6a6 100644 --- a/chrome/browser/sync/android/java/src/org/chromium/chrome/browser/sync/SyncService.java +++ b/chrome/browser/sync/android/java/src/org/chromium/chrome/browser/sync/SyncService.java
@@ -171,7 +171,7 @@ public abstract boolean isFirstSetupComplete(); - public abstract void setSyncRequested(boolean requested); + public abstract void setSyncRequested(); /** * Checks whether syncing is requested by the user, i.e. the user has at least started a Sync
diff --git a/chrome/browser/sync/android/java/src/org/chromium/chrome/browser/sync/SyncServiceImpl.java b/chrome/browser/sync/android/java/src/org/chromium/chrome/browser/sync/SyncServiceImpl.java index 08e67a17..48c89b1 100644 --- a/chrome/browser/sync/android/java/src/org/chromium/chrome/browser/sync/SyncServiceImpl.java +++ b/chrome/browser/sync/android/java/src/org/chromium/chrome/browser/sync/SyncServiceImpl.java
@@ -161,8 +161,8 @@ } @Override - public void setSyncRequested(boolean requested) { - SyncServiceImplJni.get().setSyncRequested(mSyncServiceAndroidBridge, requested); + public void setSyncRequested() { + SyncServiceImplJni.get().setSyncRequested(mSyncServiceAndroidBridge); } @Override @@ -384,7 +384,7 @@ // Please keep all methods below in the same order as sync_service_android_bridge.h. boolean isSyncRequested(long nativeSyncServiceAndroidBridge); - void setSyncRequested(long nativeSyncServiceAndroidBridge, boolean requested); + void setSyncRequested(long nativeSyncServiceAndroidBridge); boolean canSyncFeatureStart(long nativeSyncServiceAndroidBridge); boolean isSyncFeatureEnabled(long nativeSyncServiceAndroidBridge); boolean isSyncFeatureActive(long nativeSyncServiceAndroidBridge);
diff --git a/chrome/browser/sync/android/sync_service_android_bridge.cc b/chrome/browser/sync/android/sync_service_android_bridge.cc index 071e9f4..e4a6cc5 100644 --- a/chrome/browser/sync/android/sync_service_android_bridge.cc +++ b/chrome/browser/sync/android/sync_service_android_bridge.cc
@@ -110,10 +110,9 @@ return native_sync_service_->GetUserSettings()->IsSyncRequested(); } -void SyncServiceAndroidBridge::SetSyncRequested(JNIEnv* env, - jboolean requested) { +void SyncServiceAndroidBridge::SetSyncRequested(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - native_sync_service_->GetUserSettings()->SetSyncRequested(requested); + native_sync_service_->GetUserSettings()->SetSyncRequested(); } jboolean SyncServiceAndroidBridge::CanSyncFeatureStart(JNIEnv* env) {
diff --git a/chrome/browser/sync/android/sync_service_android_bridge.h b/chrome/browser/sync/android/sync_service_android_bridge.h index 376d1a7..b93fc87f 100644 --- a/chrome/browser/sync/android/sync_service_android_bridge.h +++ b/chrome/browser/sync/android/sync_service_android_bridge.h
@@ -40,7 +40,7 @@ // Please keep all methods below in the same order as the @NativeMethods in // SyncServiceImpl.java. jboolean IsSyncRequested(JNIEnv* env); - void SetSyncRequested(JNIEnv* env, jboolean requested); + void SetSyncRequested(JNIEnv* env); jboolean CanSyncFeatureStart(JNIEnv* env); jboolean IsSyncFeatureEnabled(JNIEnv* env); jboolean IsSyncFeatureActive(JNIEnv* env);
diff --git a/chrome/browser/sync/test/integration/single_client_common_sync_test.cc b/chrome/browser/sync/test/integration/single_client_common_sync_test.cc index 3655b19..6da7b33 100644 --- a/chrome/browser/sync/test/integration/single_client_common_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_common_sync_test.cc
@@ -2,16 +2,66 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/containers/enum_set.h" #include "chrome/browser/sync/test/integration/sync_service_impl_harness.h" #include "chrome/browser/sync/test/integration/sync_test.h" #include "components/sync/protocol/sync.pb.h" +#include "components/sync/protocol/sync_enums.pb.h" #include "components/sync/test/fake_server.h" #include "content/public/test/browser_test.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +using fake_server::FakeServer; +using sync_pb::SyncEnums; +using syncer::ModelType; +using syncer::ModelTypeSet; + namespace { +// Collects all the updated data types and used GetUpdates origins. +class GetUpdatesObserver : public FakeServer::Observer { + public: + explicit GetUpdatesObserver(FakeServer* fake_server) + : fake_server_(fake_server) { + DCHECK(fake_server); + fake_server_->AddObserver(this); + } + + ~GetUpdatesObserver() override { fake_server_->RemoveObserver(this); } + + using GetUpdatesOriginSet = base::EnumSet<SyncEnums::GetUpdatesOrigin, + SyncEnums::GetUpdatesOrigin_MIN, + SyncEnums::GetUpdatesOrigin_MAX>; + + // fake_server::FakeServer::Observer overrides. + void OnSuccessfulGetUpdates() override { + sync_pb::ClientToServerMessage message; + fake_server_->GetLastGetUpdatesMessage(&message); + DCHECK_NE(message.get_updates().get_updates_origin(), + SyncEnums::UNKNOWN_ORIGIN); + + get_updates_origins_.Put(message.get_updates().get_updates_origin()); + for (const sync_pb::DataTypeProgressMarker& progress_marker : + message.get_updates().from_progress_marker()) { + ModelType type = syncer::GetModelTypeFromSpecificsFieldNumber( + progress_marker.data_type_id()); + DCHECK_NE(type, ModelType::UNSPECIFIED); + updated_types_.Put(type); + } + } + + GetUpdatesOriginSet GetAllOrigins() const { return get_updates_origins_; } + + ModelTypeSet GetUpdatedTypes() const { return updated_types_; } + + private: + const raw_ptr<FakeServer> fake_server_; + + GetUpdatesOriginSet get_updates_origins_; + ModelTypeSet updated_types_; +}; + class SingleClientCommonSyncTest : public SyncTest { public: SingleClientCommonSyncTest() : SyncTest(SINGLE_CLIENT) {} @@ -19,16 +69,6 @@ SingleClientCommonSyncTest(const SingleClientCommonSyncTest&) = delete; SingleClientCommonSyncTest& operator=(const SingleClientCommonSyncTest&) = delete; - - // SyncTest overrides. - bool UseArcPackage() override { - // ARC_PACKAGE data type is deferred during browser startup by disabling it - // in the model type controller. This may result in an additional GetUpdates - // request if the data type gets ready after the configuration. As a - // workaround, just disable it to prevent an additional GetUpdates request - // after browser restart. - return false; - } }; // Android doesn't currently support PRE_ tests, see crbug.com/1117345. @@ -40,16 +80,33 @@ IN_PROC_BROWSER_TEST_F(SingleClientCommonSyncTest, ShouldNotIssueGetUpdatesOnBrowserRestart) { + GetUpdatesObserver get_updates_observer(GetFakeServer()); + ASSERT_TRUE(SetupClients()); ASSERT_TRUE(GetClient(0)->AwaitSyncSetupCompletion()); + // Some data types may use preconditions in the model type controller to + // postpone their startup. Since such data types were paused (even for a short + // period), an additional GetUpdates request may be sent during initialization + // for them. + // TODO(crbug.com/1432855): remove once GetUpdates is not issued anymore. + GetUpdatesObserver::GetUpdatesOriginSet get_updates_origins_to_exclude{ + SyncEnums::PROGRAMMATIC}; + ModelTypeSet types_to_exclude{ModelType::ARC_PACKAGE, ModelType::HISTORY, + ModelType::CONTACT_INFO, ModelType::NIGORI}; + // Verify that there were no unexpected GetUpdates requests during Sync // initialization. // TODO(crbug.com/1418329): wait for invalidations to initialize and consider // making a Commit request. This would help to verify that there are no // unnecessary GetUpdates requests after browser restart. - sync_pb::ClientToServerMessage message; - EXPECT_FALSE(GetFakeServer()->GetLastGetUpdatesMessage(&message)); + EXPECT_TRUE(Difference(get_updates_observer.GetAllOrigins(), + get_updates_origins_to_exclude) + .Empty()); + EXPECT_TRUE( + Difference(get_updates_observer.GetUpdatedTypes(), types_to_exclude) + .Empty()) + << "Updated data types: " << get_updates_observer.GetUpdatedTypes(); } #endif // !BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/sync/test/integration/single_client_custom_passphrase_sync_test.cc b/chrome/browser/sync/test/integration/single_client_custom_passphrase_sync_test.cc index 26fd100..0a4236e 100644 --- a/chrome/browser/sync/test/integration/single_client_custom_passphrase_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_custom_passphrase_sync_test.cc
@@ -310,7 +310,7 @@ // Mimic custom passphrase being set during initial sync setup. ASSERT_TRUE(GetClient(0)->SignInPrimaryAccount()); ASSERT_TRUE(GetClient(0)->AwaitEngineInitialization()); - GetSyncService()->GetUserSettings()->SetSyncRequested(true); + GetSyncService()->GetUserSettings()->SetSyncRequested(); GetSyncService()->GetUserSettings()->SetEncryptionPassphrase("hunter2"); GetClient(0)->FinishSyncSetup();
diff --git a/chrome/browser/sync/test/integration/single_client_device_info_sync_test.cc b/chrome/browser/sync/test/integration/single_client_device_info_sync_test.cc index ece5869..9c16ee1 100644 --- a/chrome/browser/sync/test/integration/single_client_device_info_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_device_info_sync_test.cc
@@ -326,7 +326,7 @@ // On ChromeOS, Sync-the-feature gets started automatically once a primary // account is signed in. To prevent that, explicitly set SyncRequested to // false. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(false); + GetSyncService(0)->GetUserSettings()->ClearSyncRequested(); #endif // BUILDFLAG(IS_CHROMEOS_ASH) // Setup a primary account, but don't actually enable Sync-the-feature (so @@ -354,7 +354,7 @@ // On ChromeOS, Sync-the-feature gets started automatically once a primary // account is signed in. To prevent that, explicitly set SyncRequested to // false. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(false); + GetSyncService(0)->GetUserSettings()->ClearSyncRequested(); #endif // BUILDFLAG(IS_CHROMEOS_ASH) // Setup a primary account, but don't actually enable Sync-the-feature (so
diff --git a/chrome/browser/sync/test/integration/single_client_offer_sync_test.cc b/chrome/browser/sync/test/integration/single_client_offer_sync_test.cc index 50ee8d8..4bc41246 100644 --- a/chrome/browser/sync/test/integration/single_client_offer_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_offer_sync_test.cc
@@ -102,7 +102,7 @@ EXPECT_EQ(0uL, pdm->GetAutofillOffers().size()); // Turn sync on again, the data should come back. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); // StopAndClear() also clears the "first setup complete" flag, so set it // again. GetSyncService(0)->GetUserSettings()->SetFirstSetupComplete( @@ -125,12 +125,12 @@ ASSERT_EQ(1uL, pdm->GetAutofillOffers().size()); // Stop sync, the offer data should be gone. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(false); + GetSyncService(0)->GetUserSettings()->ClearSyncRequested(); WaitForNumberOfOffers(0, pdm); EXPECT_EQ(0uL, pdm->GetAutofillOffers().size()); // Turn sync on again, the data should come back. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); // Wait until Sync restores the card and it arrives at PDM. WaitForNumberOfOffers(1, pdm); EXPECT_EQ(1uL, pdm->GetAutofillOffers().size());
diff --git a/chrome/browser/sync/test/integration/single_client_passwords_sync_test.cc b/chrome/browser/sync/test/integration/single_client_passwords_sync_test.cc index 490d57fc..dd7a2fa5 100644 --- a/chrome/browser/sync/test/integration/single_client_passwords_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_passwords_sync_test.cc
@@ -413,7 +413,7 @@ // On ChromeOS, Sync-the-feature gets started automatically once a primary // account is signed in. To prevent that, explicitly set SyncRequested to // false. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(false); + GetSyncService(0)->GetUserSettings()->ClearSyncRequested(); #endif // BUILDFLAG(IS_CHROMEOS_ASH) // Setup a primary account, but don't actually enable Sync-the-feature (so @@ -542,7 +542,7 @@ // account is signed in. To prevent that, explicitly set SyncRequested to // false on ChromeOS. #if BUILDFLAG(IS_CHROMEOS_ASH) - GetSyncService(0)->GetUserSettings()->SetSyncRequested(false); + GetSyncService(0)->GetUserSettings()->ClearSyncRequested(); #endif // !BUILDFLAG(IS_CHROMEOS_ASH) // Sign in to a primary account, but don't enable Sync-the-feature. @@ -563,7 +563,7 @@ ASSERT_EQ(passwords_helper::GetAllLogins(account_store).size(), 1u); // Turn on Sync-the-feature. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); GetSyncService(0)->GetUserSettings()->SetFirstSetupComplete( kSetSourceFromTest); ASSERT_TRUE(GetClient(0)->AwaitSyncSetupCompletion()); @@ -579,7 +579,7 @@ // Turn off Sync-the-feature again. // Note: Turning Sync off without signing out isn't actually exposed to the // user, so this generally shouldn't happen. Still best to cover it here. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(false); + GetSyncService(0)->GetUserSettings()->ClearSyncRequested(); ASSERT_TRUE(GetClient(0)->AwaitSyncTransportActive()); ASSERT_FALSE(GetSyncService(0)->IsSyncFeatureEnabled()); @@ -616,7 +616,7 @@ // Turn on Sync-the-feature. secondary_account_helper::GrantSyncConsent(GetProfile(0), "user@email.com"); - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); GetSyncService(0)->GetUserSettings()->SetFirstSetupComplete( kSetSourceFromTest); ASSERT_TRUE(GetClient(0)->AwaitSyncSetupCompletion()); @@ -667,7 +667,7 @@ // Turn on Sync-the-feature. secondary_account_helper::GrantSyncConsent(GetProfile(0), "user@email.com"); - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); GetSyncService(0)->GetUserSettings()->SetFirstSetupComplete( kSetSourceFromTest); ASSERT_TRUE(GetClient(0)->AwaitSyncSetupCompletion());
diff --git a/chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc b/chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc index 755c6d3..9b0ebb6 100644 --- a/chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc
@@ -136,7 +136,7 @@ // Simulate the user opting in to full Sync, and set first-time setup to // complete. secondary_account_helper::GrantSyncConsent(profile(), "user@email.com"); - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); GetSyncService(0)->GetUserSettings()->SetFirstSetupComplete( syncer::SyncFirstSetupCompleteSource::BASIC_FLOW);
diff --git a/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc b/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc index fda4730..3746ffbe 100644 --- a/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
@@ -134,7 +134,7 @@ // Turn off Sync-the-feature by user choice. The machinery should start up // again in transport-only mode. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(false); + GetSyncService(0)->GetUserSettings()->ClearSyncRequested(); EXPECT_TRUE(GetClient(0)->AwaitSyncTransportActive()); EXPECT_EQ(syncer::SyncService::TransportState::ACTIVE, @@ -149,7 +149,7 @@ << syncer::ModelTypeSetToDebugString(bad_types); // Finally, turn Sync-the-feature on again. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); EXPECT_TRUE(GetClient(0)->AwaitSyncSetupCompletion()); EXPECT_EQ(syncer::SyncService::TransportState::ACTIVE, GetSyncService(0)->GetTransportState());
diff --git a/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc b/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc index 5e2938df..5bd013e 100644 --- a/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc
@@ -463,7 +463,7 @@ EXPECT_EQ(0U, GetServerAddressesMetadata(0).size()); // Turn sync on again, the data should come back. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); // StopAndClear() also clears the "first setup complete" flag, so set it // again. GetSyncService(0)->GetUserSettings()->SetFirstSetupComplete( @@ -500,7 +500,7 @@ ASSERT_EQ(1U, GetServerAddressesMetadata(0).size()); // Stop sync, the data & metadata should be gone. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(false); + GetSyncService(0)->GetUserSettings()->ClearSyncRequested(); WaitForNumberOfCards(0, pdm); EXPECT_EQ(0uL, pdm->GetServerProfiles().size()); @@ -511,7 +511,7 @@ EXPECT_EQ(0U, GetServerAddressesMetadata(0).size()); // Turn sync on again, the data should come back. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); // Wait until Sync restores the card and it arrives at PDM. WaitForNumberOfCards(1, pdm); @@ -1393,7 +1393,7 @@ // Simulate the user opting in to full Sync, and set first-time setup to // complete. secondary_account_helper::GrantSyncConsent(profile(), "user@email.com"); - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); GetSyncService(0)->GetUserSettings()->SetFirstSetupComplete( kSetSourceFromTest); @@ -1462,7 +1462,7 @@ secondary_account_helper::GrantSyncConsent(profile(), "user@email.com"); // Now start actually configuring Sync. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); std::unique_ptr<syncer::SyncSetupInProgressHandle> setup_handle = GetSyncService(0)->GetSetupInProgressHandle(); @@ -1504,11 +1504,11 @@ // Sync-standalone-transport properly migrates server credit cards between the // profile (i.e. persisted) and account (i.e. ephemeral) storage. // Sync can either be turned off temporarily via -// SyncUserSettings::SetSyncRequested(false), or permanently via +// SyncUserSettings::ClearSyncRequested(), or permanently via // SyncService::StopAndClear. For full coverage, we test all transitions, and // each time verify that the card is in the correct storage: // 1. Start out in Sync-the-feature mode -> profile storage. -// 2. SetSyncRequested(false) -> account storage. +// 2. ClearSyncRequested() -> account storage. // 3. Enable Sync-the-feature again -> profile storage. // 4. StopAndClear() -> account storage. // 5. Enable Sync-the-feature again -> profile storage. @@ -1549,7 +1549,7 @@ // STEP 2. Turn off Sync-the-feature temporarily (e.g. the Sync feature toggle // on Android), i.e. leave the Sync data around. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(false); + GetSyncService(0)->GetUserSettings()->ClearSyncRequested(); // Wait for Sync to get reconfigured into transport mode. ASSERT_TRUE(GetClient(0)->AwaitSyncTransportActive()); @@ -1575,7 +1575,7 @@ EXPECT_EQ(0U, GetCreditCardCloudTokenData(profile_data).size()); // STEP 3. Turn Sync-the-feature on again. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); // Wait for Sync to get reconfigured into full feature mode again. ASSERT_TRUE(GetClient(0)->AwaitSyncSetupCompletion()); @@ -1621,7 +1621,7 @@ EXPECT_EQ(0U, GetCreditCardCloudTokenData(profile_data).size()); // STEP 5. Turn Sync-the-feature on again. - GetSyncService(0)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(0)->GetUserSettings()->SetSyncRequested(); GetSyncService(0)->GetUserSettings()->SetFirstSetupComplete( kSetSourceFromTest);
diff --git a/chrome/browser/sync/test/integration/sync_service_impl_harness.cc b/chrome/browser/sync/test/integration/sync_service_impl_harness.cc index 417e663..46d5898 100644 --- a/chrome/browser/sync/test/integration/sync_service_impl_harness.cc +++ b/chrome/browser/sync/test/integration/sync_service_impl_harness.cc
@@ -299,7 +299,7 @@ } // Now that auth is completed, request that sync actually start. - service()->GetUserSettings()->SetSyncRequested(true); + service()->GetUserSettings()->SetSyncRequested(); if (!AwaitEngineInitialization()) { return false; @@ -333,14 +333,14 @@ void SyncServiceImplHarness::StopSyncServiceWithoutClearingData() { DVLOG(1) << "Requesting stop for service without clearing data."; - service()->GetUserSettings()->SetSyncRequested(false); + service()->GetUserSettings()->ClearSyncRequested(); } bool SyncServiceImplHarness::StartSyncService() { std::unique_ptr<syncer::SyncSetupInProgressHandle> blocker = service()->GetSetupInProgressHandle(); DVLOG(1) << "Requesting start for service"; - service()->GetUserSettings()->SetSyncRequested(true); + service()->GetUserSettings()->SetSyncRequested(); if (!AwaitEngineInitialization()) { LOG(ERROR) << "AwaitEngineInitialization failed.";
diff --git a/chrome/browser/sync/test/integration/sync_test.h b/chrome/browser/sync/test/integration/sync_test.h index c6ce616..305f321c 100644 --- a/chrome/browser/sync/test/integration/sync_test.h +++ b/chrome/browser/sync/test/integration/sync_test.h
@@ -214,10 +214,6 @@ // tests are rewritten in a way to not use verifier. virtual bool UseVerifier(); - // Used to determine whether ARC_PACKAGE data type needs to be enabled. This - // is applicable on ChromeOS-Ash platform only. - virtual bool UseArcPackage(); - // Initializes sync clients and profiles but does not sync any of them. [[nodiscard]] virtual bool SetupClients(); @@ -364,6 +360,10 @@ void ClearProfiles(); + // Used to determine whether ARC_PACKAGE data type needs to be enabled. This + // is applicable on ChromeOS-Ash platform only. + bool UseArcPackage(); + // Waits for all the changes which might be done asynchronously after setting // up sync engine. This is used to prevent starting another sync cycle after // SetupSync() call which might be unexpected in several tests.
diff --git a/chrome/browser/task_manager/providers/web_contents/fenced_frame_task.h b/chrome/browser/task_manager/providers/web_contents/fenced_frame_task.h index 9ff62192..f485b90 100644 --- a/chrome/browser/task_manager/providers/web_contents/fenced_frame_task.h +++ b/chrome/browser/task_manager/providers/web_contents/fenced_frame_task.h
@@ -44,7 +44,7 @@ // the task. At that point the RFH is still alive. const raw_ptr<content::SiteInstance> site_instance_; // Allows us to focus on the embedder's tab. - const raw_ptr<RendererTask> embedder_task_; + const raw_ptr<RendererTask, DanglingUntriaged> embedder_task_; }; } // namespace task_manager
diff --git a/chrome/browser/thumbnail/cc/etc1_thumbnail_helper.h b/chrome/browser/thumbnail/cc/etc1_thumbnail_helper.h index 92f8bb6..ca6d7b22 100644 --- a/chrome/browser/thumbnail/cc/etc1_thumbnail_helper.h +++ b/chrome/browser/thumbnail/cc/etc1_thumbnail_helper.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_THUMBNAIL_CC_ETC1_THUMBNAIL_HELPER_H_ #include "base/files/file_path.h" +#include "base/memory/weak_ptr.h" #include "chrome/browser/thumbnail/cc/thumbnail.h" namespace thumbnail { @@ -22,31 +23,36 @@ Etc1ThumbnailHelper(const Etc1ThumbnailHelper&) = delete; Etc1ThumbnailHelper& operator=(const Etc1ThumbnailHelper&) = delete; - // Callback post_compression_task will run on the thread created by this - // helper. + // `post_compression_task` will run on the thread that created this + // Etc1ThumbnailHelper. void Compress(SkBitmap raw_data, gfx::Size encoded_size, base::OnceCallback<void(sk_sp<SkPixelRef>, const gfx::Size&)> post_compression_task); - // Closure post_write_task will run on the thread created by this helper. + // `post_write_task` will run on the thread that created this + // Etc1ThumbnailHelper. void Write(thumbnail::TabId tab_id, sk_sp<SkPixelRef> compressed_data, float scale, const gfx::Size& content_size, base::OnceClosure post_write_task); - // Callback post_read_task will run on the thread created by this helper. + // Callers are expected to bind `post_read_task` to the correct thread. void Read(thumbnail::TabId tab_id, base::OnceCallback<void(sk_sp<SkPixelRef>, float, const gfx::Size&)> post_read_task); void Delete(thumbnail::TabId tab_id); - // Callback post_decompress_callback will run on the thread created by this - // helper. + // `post_decompress_callback` will run on the thread that created this + // Etc1ThumbnailHelper. void Decompress( base::OnceCallback<void(bool, const SkBitmap&)> post_decompress_callback, sk_sp<SkPixelRef> compressed_data, float scale, const gfx::Size& encoded_size); + base::WeakPtr<Etc1ThumbnailHelper> GetWeakPtr() { + return weak_ptr_factory_.GetWeakPtr(); + } + private: friend class Etc1ThumbnailHelperTest; @@ -58,6 +64,7 @@ scoped_refptr<base::SequencedTaskRunner> default_task_runner_; scoped_refptr<base::SequencedTaskRunner> file_task_runner_; + base::WeakPtrFactory<Etc1ThumbnailHelper> weak_ptr_factory_{this}; }; } // namespace thumbnail
diff --git a/chrome/browser/thumbnail/cc/jpeg_thumbnail_helper.h b/chrome/browser/thumbnail/cc/jpeg_thumbnail_helper.h index 039daf2e..e219523 100644 --- a/chrome/browser/thumbnail/cc/jpeg_thumbnail_helper.h +++ b/chrome/browser/thumbnail/cc/jpeg_thumbnail_helper.h
@@ -24,17 +24,19 @@ JpegThumbnailHelper(const JpegThumbnailHelper&) = delete; JpegThumbnailHelper& operator=(const JpegThumbnailHelper&) = delete; - // Callback post_processing_task will run on the thread created by this - // helper. + // `post_processing_task` will run on the thread that created this + // JpegThumbnailHelper. void Compress( double jpeg_aspect_ratio, const SkBitmap& bitmap, base::OnceCallback<void(std::vector<uint8_t>)> post_processing_task); - // Closure post_write_task will run on the thread created by this helper. + // `post_write_task` will run on the thread that created this + // JpegThumbnailHelper. void Write(thumbnail::TabId tab_id, std::vector<uint8_t> compressed_data, base::OnceClosure post_write_task); - // Callback post_read_task will run on the thread created by this helper. + // `post_read_task` will run on the thread that created this + // JpegThumbnailHelper. void Read(thumbnail::TabId tab_id, base::OnceCallback<void(absl::optional<std::vector<uint8_t>>)> post_read_task);
diff --git a/chrome/browser/thumbnail/cc/thumbnail_cache.cc b/chrome/browser/thumbnail/cc/thumbnail_cache.cc index a814ae4..6a1b602 100644 --- a/chrome/browser/thumbnail/cc/thumbnail_cache.cc +++ b/chrome/browser/thumbnail/cc/thumbnail_cache.cc
@@ -20,9 +20,13 @@ #include "base/files/file_util.h" #include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" +#include "base/no_destructor.h" #include "base/rand_util.h" #include "base/ranges/algorithm.h" #include "base/strings/string_number_conversions.h" +#include "base/task/bind_post_task.h" +#include "base/task/sequenced_task_runner.h" +#include "base/task/task_traits.h" #include "base/task/thread_pool.h" #include "base/time/time.h" #include "build/build_config.h" @@ -52,8 +56,6 @@ base::Milliseconds(1000)); constexpr int kKiB = 1024; -constexpr int kCompressedKey = 0xABABABAB; -constexpr int kCurrentExtraVersion = 1; // Indicates whether we prefer to have more free CPU memory over GPU memory. constexpr bool kPreferCPUMemory = true; @@ -89,64 +91,6 @@ } } -template <typename T> -bool ReadBigEndianFromFile(base::File& file, T* out) { - uint8_t buffer[sizeof(T)]; - if (file.ReadAtCurrentPos(reinterpret_cast<char*>(buffer), sizeof(T)) != - sizeof(T)) { - return false; - } - base::ReadBigEndian(buffer, out); - return true; -} - -template <typename T> -bool WriteBigEndianToFile(base::File& file, T val) { - char buffer[sizeof(T)]; - base::WriteBigEndian(buffer, val); - return file.WriteAtCurrentPos(buffer, sizeof(T)) == sizeof(T); -} - -bool ReadBigEndianFloatFromFile(base::File& file, float* out) { - char buffer[sizeof(float)]; - if (file.ReadAtCurrentPos(buffer, sizeof(buffer)) != sizeof(buffer)) { - return false; - } - -#if defined(ARCH_CPU_LITTLE_ENDIAN) - for (size_t i = 0; i < sizeof(float) / 2; i++) { - char tmp = buffer[i]; - buffer[i] = buffer[sizeof(float) - 1 - i]; - buffer[sizeof(float) - 1 - i] = tmp; - } -#endif - memcpy(out, buffer, sizeof(buffer)); - - return true; -} - -bool WriteBigEndianFloatToFile(base::File& file, float val) { - char buffer[sizeof(float)]; - memcpy(buffer, &val, sizeof(buffer)); - -#if defined(ARCH_CPU_LITTLE_ENDIAN) - for (size_t i = 0; i < sizeof(float) / 2; i++) { - char tmp = buffer[i]; - buffer[i] = buffer[sizeof(float) - 1 - i]; - buffer[sizeof(float) - 1 - i] = tmp; - } -#endif - return file.WriteAtCurrentPos(buffer, sizeof(buffer)) == sizeof(buffer); -} - -// TODO(khushalsagar): This is a hack to ensure correct byte size computation -// for SkPixelRefs wrapping encoded data for ETC1 compressed bitmaps. We ideally -// shouldn't be using SkPixelRefs to wrap encoded data. -size_t ETC1RowBytes(int width) { - DCHECK_EQ(width & 1, 0); - return width / 2; -} - // Borrowed from GetDelayForNextMemoryLog() in browser_metrics.cc. // // A Poisson distributed delay with a mean of `mean_time` for computing time @@ -167,6 +111,8 @@ double jpeg_aspect_ratio) : file_sequenced_task_runner_( base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()})), + etc1_helper_(GetCacheDirectory(), file_sequenced_task_runner_), + jpeg_helper_(GetCacheDirectory(), file_sequenced_task_runner_), compression_queue_max_size_(compression_queue_max_size), write_queue_max_size_(write_queue_max_size), use_approximation_thumbnail_(use_approximation_thumbnail), @@ -299,18 +245,12 @@ } base::FilePath ThumbnailCache::GetCacheDirectory() { - base::FilePath path; - base::android::GetThumbnailCacheDirectory(&path); - return path; -} - -base::FilePath ThumbnailCache::GetFilePath(TabId tab_id) { - base::FilePath path = GetCacheDirectory(); - return path.Append(base::NumberToString(tab_id)); -} - -base::FilePath ThumbnailCache::GetJpegFilePath(TabId tab_id) { - return GetFilePath(tab_id).AddExtension(".jpeg"); + static const base::NoDestructor<base::FilePath> cache_dir([] { + base::FilePath path; + base::android::GetThumbnailCacheDirectory(&path); + return path; + }()); + return *cache_dir; } bool ThumbnailCache::CheckAndUpdateThumbnailMetaData(TabId tab_id, @@ -431,13 +371,11 @@ transcoding_callback = std::move(post_decompress_callback); } - base::OnceCallback<void(sk_sp<SkPixelRef>, float, const gfx::Size&)> - decompress_task = base::BindOnce(&ThumbnailCache::DecompressionTask, - std::move(transcoding_callback)); - - file_sequenced_task_runner_->PostTask( - FROM_HERE, base::BindOnce(&ThumbnailCache::ReadTask, true, tab_id, - std::move(decompress_task))); + auto decompress_task = base::BindOnce( + &thumbnail::Etc1ThumbnailHelper::Decompress, etc1_helper_.GetWeakPtr(), + std::move(transcoding_callback)); + etc1_helper_.Read( + tab_id, base::BindPostTaskToCurrentDefault(std::move(decompress_task))); } void ThumbnailCache::ScheduleRecordCacheMetrics(base::TimeDelta mean_delay) { @@ -472,22 +410,11 @@ } void ThumbnailCache::RemoveFromDisk(TabId tab_id) { - file_sequenced_task_runner_->PostTask( - FROM_HERE, base::BindOnce(&ThumbnailCache::RemoveFromDiskTask, tab_id)); + jpeg_helper_.Delete(tab_id); + etc1_helper_.Delete(tab_id); } -void ThumbnailCache::RemoveFromDiskTask(TabId tab_id) { - base::FilePath file_path = GetFilePath(tab_id); - if (base::PathExists(file_path)) { - base::DeleteFile(file_path); - } - base::FilePath jpeg_file_path = GetJpegFilePath(tab_id); - if (base::PathExists(jpeg_file_path)) { - base::DeleteFile(jpeg_file_path); - } -} - -void ThumbnailCache::WriteThumbnailIfNecessary( +void ThumbnailCache::WriteEtc1ThumbnailIfNecessary( TabId tab_id, sk_sp<SkPixelRef> compressed_data, float scale, @@ -502,10 +429,8 @@ base::OnceClosure post_write_task = base::BindOnce( &ThumbnailCache::PostWriteTask, weak_factory_.GetWeakPtr()); - file_sequenced_task_runner_->PostTask( - FROM_HERE, - base::BindOnce(&ThumbnailCache::WriteTask, tab_id, compressed_data, scale, - content_size, std::move(post_write_task))); + etc1_helper_.Write(tab_id, compressed_data, scale, content_size, + std::move(post_write_task)); } void ThumbnailCache::WriteJpegThumbnailIfNecessary( @@ -524,10 +449,8 @@ base::OnceClosure post_write_task = base::BindOnce( &ThumbnailCache::PostWriteTask, weak_factory_.GetWeakPtr()); - file_sequenced_task_runner_->PostTask( - FROM_HERE, - base::BindOnce(&ThumbnailCache::WriteJpegTask, tab_id, - std::move(compressed_data), std::move(post_write_task))); + jpeg_helper_.Write(tab_id, std::move(compressed_data), + std::move(post_write_task)); } void ThumbnailCache::SaveAsJpeg(TabId tab_id, @@ -537,12 +460,8 @@ base::BindOnce(&ThumbnailCache::WriteJpegThumbnailIfNecessary, weak_factory_.GetWeakPtr(), tab_id); - base::ThreadPool::PostTask( - FROM_HERE, - {base::TaskPriority::BEST_EFFORT, - base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}, - base::BindOnce(&ThumbnailCache::JpegProcessingTask, jpeg_aspect_ratio, - bitmap, std::move(post_jpeg_compression_task))); + jpeg_helper_.Compress(jpeg_aspect_ratio, bitmap, + std::move(post_jpeg_compression_task)); } void ThumbnailCache::CompressThumbnailIfNecessary(TabId tab_id, @@ -559,19 +478,14 @@ base::OnceCallback<void(sk_sp<SkPixelRef>, const gfx::Size&)> post_compression_task = - base::BindOnce(&ThumbnailCache::PostCompressionTask, + base::BindOnce(&ThumbnailCache::PostEtc1CompressionTask, weak_factory_.GetWeakPtr(), tab_id, time_stamp, scale); gfx::Size raw_data_size(bitmap.width(), bitmap.height()); gfx::Size encoded_size = GetEncodedSize( raw_data_size, ui_resource_provider_->SupportsETC1NonPowerOfTwo()); - base::ThreadPool::PostTask( - FROM_HERE, - {base::TaskPriority::BEST_EFFORT, - base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}, - base::BindOnce(&ThumbnailCache::CompressionTask, bitmap, encoded_size, - std::move(post_compression_task))); + etc1_helper_.Compress(bitmap, encoded_size, std::move(post_compression_task)); if (save_jpeg_thumbnails_) { SaveAsJpeg(tab_id, bitmap, jpeg_aspect_ratio); @@ -587,12 +501,11 @@ read_in_progress_ = true; base::OnceCallback<void(sk_sp<SkPixelRef>, float, const gfx::Size&)> - post_read_task = base::BindOnce(&ThumbnailCache::PostReadTask, + post_read_task = base::BindOnce(&ThumbnailCache::PostEtc1ReadTask, weak_factory_.GetWeakPtr(), tab_id); - file_sequenced_task_runner_->PostTask( - FROM_HERE, base::BindOnce(&ThumbnailCache::ReadTask, false, tab_id, - std::move(post_read_task))); + etc1_helper_.Read( + tab_id, base::BindPostTaskToCurrentDefault(std::move(post_read_task))); } void ThumbnailCache::MakeSpaceForNewItemIfNecessary(TabId tab_id) { @@ -678,200 +591,17 @@ } } -namespace { - -bool WriteToFile(base::File& file, - const gfx::Size& content_size, - const float scale, - sk_sp<SkPixelRef> compressed_data) { - if (!file.IsValid()) { - return false; - } - - if (!WriteBigEndianToFile(file, kCompressedKey)) { - return false; - } - - if (!WriteBigEndianToFile(file, content_size.width())) { - return false; - } - - if (!WriteBigEndianToFile(file, content_size.height())) { - return false; - } - - // Write ETC1 header. - CHECK(compressed_data->width() >= 0); - CHECK(compressed_data->height() >= 0); - unsigned width = static_cast<unsigned>(compressed_data->width()); - unsigned height = static_cast<unsigned>(compressed_data->height()); - - unsigned char etc1_buffer[ETC_PKM_HEADER_SIZE]; - etc1_pkm_format_header(etc1_buffer, width, height); - - int header_bytes_written = file.WriteAtCurrentPos( - reinterpret_cast<char*>(etc1_buffer), ETC_PKM_HEADER_SIZE); - if (header_bytes_written != ETC_PKM_HEADER_SIZE) { - return false; - } - - int data_size = etc1_get_encoded_data_size(width, height); - int pixel_bytes_written = file.WriteAtCurrentPos( - reinterpret_cast<char*>(compressed_data->pixels()), data_size); - if (pixel_bytes_written != data_size) { - return false; - } - - if (!WriteBigEndianToFile(file, kCurrentExtraVersion)) { - return false; - } - - if (!WriteBigEndianFloatToFile(file, 1.f / scale)) { - return false; - } - - return true; -} - -} // anonymous namespace - -void ThumbnailCache::WriteTask(TabId tab_id, - sk_sp<SkPixelRef> compressed_data, - float scale, - const gfx::Size& content_size, - base::OnceClosure post_write_task) { - DCHECK(compressed_data); - - base::FilePath file_path = GetFilePath(tab_id); - - base::File file(file_path, - base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE); - - bool success = WriteToFile(file, content_size, scale, compressed_data); - - file.Close(); - - if (!success) { - base::DeleteFile(file_path); - } - - content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE, - std::move(post_write_task)); -} - -void ThumbnailCache::WriteJpegTask(TabId tab_id, - std::vector<uint8_t> compressed_data, - base::OnceClosure post_write_task) { - DCHECK(!compressed_data.empty()); - - base::FilePath file_path = GetJpegFilePath(tab_id); - base::File file(file_path, - base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE); - - bool success = file.IsValid(); - if (success) { - int bytes_written = - file.Write(0, reinterpret_cast<const char*>(compressed_data.data()), - compressed_data.size()); - success &= bytes_written == static_cast<int>(compressed_data.size()); - file.Close(); - } - - if (!success) { - base::DeleteFile(file_path); - } - - content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE, - std::move(post_write_task)); -} - void ThumbnailCache::PostWriteTask() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); write_tasks_count_--; } -void ThumbnailCache::CompressionTask( - SkBitmap raw_data, - gfx::Size encoded_size, - base::OnceCallback<void(sk_sp<SkPixelRef>, const gfx::Size&)> - post_compression_task) { - sk_sp<SkPixelRef> compressed_data; - gfx::Size content_size; - - if (!raw_data.empty()) { - gfx::Size raw_data_size(raw_data.width(), raw_data.height()); - size_t pixel_size = 4; // Pixel size is 4 bytes for kARGB_8888_Config. - size_t stride = pixel_size * raw_data_size.width(); - - size_t encoded_bytes = - etc1_get_encoded_data_size(encoded_size.width(), encoded_size.height()); - SkImageInfo info = - SkImageInfo::Make(encoded_size.width(), encoded_size.height(), - kUnknown_SkColorType, kUnpremul_SkAlphaType); - sk_sp<SkData> etc1_pixel_data(SkData::MakeUninitialized(encoded_bytes)); - sk_sp<SkPixelRef> etc1_pixel_ref(SkMallocPixelRef::MakeWithData( - info, ETC1RowBytes(encoded_size.width()), std::move(etc1_pixel_data))); - - bool success = etc1_encode_image( - reinterpret_cast<unsigned char*>(raw_data.getPixels()), - raw_data_size.width(), raw_data_size.height(), pixel_size, stride, - reinterpret_cast<unsigned char*>(etc1_pixel_ref->pixels()), - encoded_size.width(), encoded_size.height()); - etc1_pixel_ref->setImmutable(); - - if (success) { - compressed_data = std::move(etc1_pixel_ref); - content_size = raw_data_size; - } - } - - content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, base::BindOnce(std::move(post_compression_task), - std::move(compressed_data), content_size)); -} - -void ThumbnailCache::JpegProcessingTask( - double jpeg_aspect_ratio, - SkBitmap bitmap, - base::OnceCallback<void(std::vector<uint8_t>)> post_processing_task) { - // We want to show thumbnails in a specific aspect ratio. Therefore, the - // thumbnail saved needs to be cropped to the target aspect ratio, otherwise - // it would be vertically center-aligned and the top would be hidden in - // portrait mode, or it would be shown in the wrong aspect ratio in - // landscape mode. - int scale = 2; - double aspect_ratio = std::clamp(jpeg_aspect_ratio, 0.5, 2.0); - - int width = std::min(bitmap.width() / scale, - (int)(bitmap.height() * aspect_ratio / scale)); - int height = std::min(bitmap.height() / scale, - (int)(bitmap.width() / aspect_ratio / scale)); - // When cropping the thumbnails, we want to keep the top center portion. - int begin_x = (bitmap.width() / scale - width) / 2; - int end_x = begin_x + width; - SkIRect dest_subset = {begin_x, 0, end_x, height}; - - SkBitmap result_bitmap = skia::ImageOperations::Resize( - bitmap, skia::ImageOperations::RESIZE_BETTER, bitmap.width() / scale, - bitmap.height() / scale, dest_subset); - - constexpr int kCompressionQuality = 97; - std::vector<uint8_t> data; - const bool result = - gfx::JPEGCodec::Encode(result_bitmap, kCompressionQuality, &data); - DCHECK(result); - - content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, - base::BindOnce(std::move(post_processing_task), std::move(data))); -} - -void ThumbnailCache::PostCompressionTask(TabId tab_id, - const base::Time& time_stamp, - float scale, - sk_sp<SkPixelRef> compressed_data, - const gfx::Size& content_size) { +void ThumbnailCache::PostEtc1CompressionTask(TabId tab_id, + const base::Time& time_stamp, + float scale, + sk_sp<SkPixelRef> compressed_data, + const gfx::Size& content_size) { compression_tasks_count_--; if (!compressed_data) { RemoveOnMatchedTimeStamp(tab_id, time_stamp); @@ -892,160 +622,14 @@ NotifyObserversOfThumbnailAddedToCache(tab_id); } } - WriteThumbnailIfNecessary(tab_id, std::move(compressed_data), scale, - content_size); + WriteEtc1ThumbnailIfNecessary(tab_id, std::move(compressed_data), scale, + content_size); } -namespace { - -bool ReadFromFile(base::File& file, - gfx::Size* out_content_size, - float* out_scale, - sk_sp<SkPixelRef>* out_pixels) { - if (!file.IsValid()) { - return false; - } - - int key = 0; - if (!ReadBigEndianFromFile(file, &key)) { - return false; - } - - if (key != kCompressedKey) { - return false; - } - - int content_width = 0; - if (!ReadBigEndianFromFile(file, &content_width) || content_width <= 0) { - return false; - } - - int content_height = 0; - if (!ReadBigEndianFromFile(file, &content_height) || content_height <= 0) { - return false; - } - - out_content_size->SetSize(content_width, content_height); - - // Read ETC1 header. - int header_bytes_read = 0; - unsigned char etc1_buffer[ETC_PKM_HEADER_SIZE]; - header_bytes_read = file.ReadAtCurrentPos( - reinterpret_cast<char*>(etc1_buffer), ETC_PKM_HEADER_SIZE); - if (header_bytes_read != ETC_PKM_HEADER_SIZE) { - return false; - } - - if (!etc1_pkm_is_valid(etc1_buffer)) { - return false; - } - - int raw_width = 0; - raw_width = etc1_pkm_get_width(etc1_buffer); - if (raw_width <= 0) { - return false; - } - - int raw_height = 0; - raw_height = etc1_pkm_get_height(etc1_buffer); - if (raw_height <= 0) { - return false; - } - - // Do some simple sanity check validation. We can't have thumbnails larger - // than the max display size of the screen. We also can't have etc1 texture - // data larger than the next power of 2 up from that. - gfx::Size display_size = - display::Screen::GetScreen()->GetPrimaryDisplay().GetSizeInPixel(); - int max_dimension = std::max(display_size.width(), display_size.height()); - - if (content_width > max_dimension || content_height > max_dimension || - static_cast<size_t>(raw_width) > NextPowerOfTwo(max_dimension) || - static_cast<size_t>(raw_height) > NextPowerOfTwo(max_dimension)) { - return false; - } - - int data_size = etc1_get_encoded_data_size(raw_width, raw_height); - sk_sp<SkData> etc1_pixel_data(SkData::MakeUninitialized(data_size)); - - int pixel_bytes_read = file.ReadAtCurrentPos( - reinterpret_cast<char*>(etc1_pixel_data->writable_data()), data_size); - - if (pixel_bytes_read != data_size) { - return false; - } - - SkImageInfo info = SkImageInfo::Make( - raw_width, raw_height, kUnknown_SkColorType, kUnpremul_SkAlphaType); - - *out_pixels = SkMallocPixelRef::MakeWithData(info, ETC1RowBytes(raw_width), - std::move(etc1_pixel_data)); - - int extra_data_version = 0; - if (!ReadBigEndianFromFile(file, &extra_data_version)) { - return false; - } - - *out_scale = 1.f; - if (extra_data_version == 1) { - if (!ReadBigEndianFloatFromFile(file, out_scale)) { - return false; - } - - if (*out_scale == 0.f) { - return false; - } - - *out_scale = 1.f / *out_scale; - } - - return true; -} - -} // anonymous namespace - -void ThumbnailCache::ReadTask( - bool decompress, - TabId tab_id, - base::OnceCallback<void(sk_sp<SkPixelRef>, float, const gfx::Size&)> - post_read_task) { - gfx::Size content_size; - float scale = 0.f; - sk_sp<SkPixelRef> compressed_data; - base::FilePath file_path = GetFilePath(tab_id); - - if (base::PathExists(file_path)) { - base::File file(file_path, base::File::FLAG_OPEN | base::File::FLAG_READ); - - bool valid_contents = - ReadFromFile(file, &content_size, &scale, &compressed_data); - file.Close(); - - if (!valid_contents) { - content_size.SetSize(0, 0); - scale = 0.f; - compressed_data.reset(); - base::DeleteFile(file_path); - } - } - - if (decompress) { - base::ThreadPool::PostTask( - FROM_HERE, {base::TaskPriority::USER_VISIBLE}, - base::BindOnce(std::move(post_read_task), std::move(compressed_data), - scale, content_size)); - } else { - content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, - base::BindOnce(std::move(post_read_task), std::move(compressed_data), - scale, content_size)); - } -} - -void ThumbnailCache::PostReadTask(TabId tab_id, - sk_sp<SkPixelRef> compressed_data, - float scale, - const gfx::Size& content_size) { +void ThumbnailCache::PostEtc1ReadTask(TabId tab_id, + sk_sp<SkPixelRef> compressed_data, + float scale, + const gfx::Size& content_size) { read_in_progress_ = false; auto iter = base::ranges::find(read_queue_, tab_id); @@ -1106,49 +690,6 @@ } } -void ThumbnailCache::DecompressionTask( - base::OnceCallback<void(bool, const SkBitmap&)> post_decompression_callback, - sk_sp<SkPixelRef> compressed_data, - float scale, - const gfx::Size& content_size) { - SkBitmap raw_data_small; - bool success = false; - - if (compressed_data) { - gfx::Size buffer_size = - gfx::Size(compressed_data->width(), compressed_data->height()); - - SkBitmap raw_data; - raw_data.allocPixels(SkImageInfo::MakeN32( - buffer_size.width(), buffer_size.height(), kOpaque_SkAlphaType)); - success = etc1_decode_image( - reinterpret_cast<unsigned char*>(compressed_data->pixels()), - reinterpret_cast<unsigned char*>(raw_data.getPixels()), - buffer_size.width(), buffer_size.height(), raw_data.bytesPerPixel(), - raw_data.rowBytes()); - raw_data.setImmutable(); - - if (!success) { - // Leave raw_data_small empty for consistency with other failure modes. - } else if (content_size == buffer_size) { - // Shallow copy the pixel reference. - raw_data_small = raw_data; - } else { - // The content size is smaller than the buffer size (likely because of - // a power-of-two rounding), so deep copy the bitmap. - raw_data_small.allocPixels(SkImageInfo::MakeN32( - content_size.width(), content_size.height(), kOpaque_SkAlphaType)); - SkCanvas small_canvas(raw_data_small); - small_canvas.drawImage(raw_data.asImage(), 0, 0); - raw_data_small.setImmutable(); - } - } - - content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, base::BindOnce(std::move(post_decompression_callback), success, - raw_data_small)); -} - ThumbnailCache::ThumbnailMetaData::ThumbnailMetaData( const base::Time& current_time, GURL url)
diff --git a/chrome/browser/thumbnail/cc/thumbnail_cache.h b/chrome/browser/thumbnail/cc/thumbnail_cache.h index d61b982..728663b 100644 --- a/chrome/browser/thumbnail/cc/thumbnail_cache.h +++ b/chrome/browser/thumbnail/cc/thumbnail_cache.h
@@ -21,6 +21,8 @@ #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" #include "base/time/time.h" +#include "chrome/browser/thumbnail/cc/etc1_thumbnail_helper.h" +#include "chrome/browser/thumbnail/cc/jpeg_thumbnail_helper.h" #include "chrome/browser/thumbnail/cc/scoped_ptr_expiring_cache.h" #include "chrome/browser/thumbnail/cc/thumbnail.h" #include "third_party/skia/include/core/SkBitmap.h" @@ -90,8 +92,6 @@ // ThumbnailDelegate implementation void InvalidateCachedThumbnail(Thumbnail* thumbnail) override; static base::FilePath GetCacheDirectory(); - static base::FilePath GetFilePath(TabId tab_id); - static base::FilePath GetJpegFilePath(TabId tab_id); private: friend class ThumbnailCacheTest; @@ -117,11 +117,10 @@ void PruneCache(); void RemoveFromDisk(TabId tab_id); - static void RemoveFromDiskTask(TabId tab_id); - void WriteThumbnailIfNecessary(TabId tab_id, - sk_sp<SkPixelRef> compressed_data, - float scale, - const gfx::Size& content_size); + void WriteEtc1ThumbnailIfNecessary(TabId tab_id, + sk_sp<SkPixelRef> compressed_data, + float scale, + const gfx::Size& content_size); void WriteJpegThumbnailIfNecessary(TabId tab_id, std::vector<uint8_t> compressed_data); void SaveAsJpeg(TabId tab_id, @@ -142,43 +141,16 @@ void ReadNextThumbnail(); void MakeSpaceForNewItemIfNecessary(TabId tab_id); void RemoveFromReadQueue(TabId tab_id); - static void WriteTask(TabId tab_id, + void PostWriteTask(); + void PostEtc1CompressionTask(TabId tab_id, + const base::Time& time_stamp, + float scale, + sk_sp<SkPixelRef> compressed_data, + const gfx::Size& content_size); + void PostEtc1ReadTask(TabId tab_id, sk_sp<SkPixelRef> compressed_data, float scale, - const gfx::Size& content_size, - base::OnceClosure post_write_task); - static void WriteJpegTask(TabId tab_id, - std::vector<uint8_t> compressed_data, - base::OnceClosure post_write_task); - void PostWriteTask(); - static void CompressionTask( - SkBitmap raw_data, - gfx::Size encoded_size, - base::OnceCallback<void(sk_sp<SkPixelRef>, const gfx::Size&)> - post_compression_task); - static void JpegProcessingTask( - double jpeg_aspect_ratio, - SkBitmap bitmap, - base::OnceCallback<void(std::vector<uint8_t>)> post_processing_task); - void PostCompressionTask(TabId tab_id, - const base::Time& time_stamp, - float scale, - sk_sp<SkPixelRef> compressed_data, - const gfx::Size& content_size); - static void DecompressionTask( - base::OnceCallback<void(bool, const SkBitmap&)> post_decompress_callback, - sk_sp<SkPixelRef> compressed_data, - float scale, - const gfx::Size& encoded_size); - static void ReadTask( - bool decompress, - TabId tab_id, - base::OnceCallback<void(sk_sp<SkPixelRef>, float, const gfx::Size&)> - post_read_task); - void PostReadTask(TabId tab_id, - sk_sp<SkPixelRef> compressed_data, - float scale, - const gfx::Size& content_size); + const gfx::Size& content_size); void NotifyObserversOfThumbnailAddedToCache(TabId tab_id); void NotifyObserversOfThumbnailRead(TabId tab_id); void RemoveOnMatchedTimeStamp(TabId tab_id, const base::Time& time_stamp); @@ -188,7 +160,11 @@ void OnMemoryPressure( base::MemoryPressureListener::MemoryPressureLevel level); + // TODO(ckitagawa): Look into making this USER_VISIBLE for at least a subset + // of tasks. const scoped_refptr<base::SequencedTaskRunner> file_sequenced_task_runner_; + thumbnail::Etc1ThumbnailHelper etc1_helper_; + thumbnail::JpegThumbnailHelper jpeg_helper_; const size_t compression_queue_max_size_; const size_t write_queue_max_size_;
diff --git a/chrome/browser/ui/android/multiwindow/java/res/layout/instance_switcher_item.xml b/chrome/browser/ui/android/multiwindow/java/res/layout/instance_switcher_item.xml index 74d77f2..776f7630 100644 --- a/chrome/browser/ui/android/multiwindow/java/res/layout/instance_switcher_item.xml +++ b/chrome/browser/ui/android/multiwindow/java/res/layout/instance_switcher_item.xml
@@ -64,7 +64,7 @@ <TextView android:id="@+id/desc" android:layout_width="match_parent" - android:layout_height="20dp" + android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:maxLines="1" android:textAppearance="@style/TextAppearance.TextMedium.Secondary"
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java index 28ef10c96..d6927b7 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
@@ -16,6 +16,7 @@ import org.chromium.base.Callback; import org.chromium.base.Log; +import org.chromium.base.TraceEvent; import org.chromium.chrome.browser.omnibox.UrlBarProperties.AutocompleteText; import org.chromium.chrome.browser.omnibox.UrlBarProperties.UrlBarTextState; import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; @@ -61,9 +62,17 @@ } else if (UrlBarProperties.TEXT_STATE.equals(propertyKey)) { UrlBarTextState state = model.get(UrlBarProperties.TEXT_STATE); view.setIgnoreTextChangesForAutocomplete(true); - view.setText(state.text); + + try (TraceEvent te1 = TraceEvent.scoped("UrlBarViewBinder.setText")) { + view.setText(state.text); + } + view.setTextForAutofillServices(state.textForAutofillServices); - view.setScrollState(state.scrollType, state.scrollToIndex); + + try (TraceEvent te2 = TraceEvent.scoped("UrlBarViewBinder.setScrollState")) { + view.setScrollState(state.scrollType, state.scrollToIndex); + } + view.setIgnoreTextChangesForAutocomplete(false); if (view.hasFocus()) {
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd index cf1f33bd..39d7409 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1078,9 +1078,12 @@ <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_EEA_BULLET_2" desc="* This is 2 of 2 bullets that site beneath the sentence: 'We’re launching new ways to limit what sites can learn about you when they show you personalized ads, for example:' * 'ad measurement' is the name of a new setting we're launching and that appears on the Ad privacy page of Chrome settings. * 'limited types of data': This setting helps an advertiser associate a user's actions on one site with their actions on another. For example, a user sees an ad on one site and then later buys that product from the company that sells the product. The ad measurement setting allows Chrome to help a company make the association between the two sites so that the first site can be fairly compensated for showing an ad. Compared with third-party cookies, very little info is shared between sites to support this functionality. **** CONTEXT PRIVACY SANDBOX **** Chrome’s Privacy Sandbox initiative 1) deprecates third-party cookies in Chrome, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** CONTEXT EEA NOTICE **** 1) This screen provides notice to Chrome users in the European Economic Area (EEA). It follows guidelines established by the GDPR. 2) This screen is the second of 2 screens. This second screen describes 2 settings: “Site-suggested ads” and “Ad measurement”. The first screen describes the “Ad topics” setting. " formatter_data="android_java"> With ad measurement, limited types of data can be shared among sites and apps to measure the performance of their ads, such as the time of day an ad was shown to you. </message> - <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_ROW_DESCRIPTION_3" desc="A paragraph on the 'Enhanced ad privacy in Chrome' page that provides notice to Chrome users outside of the EEA. **** CONTEXT PRIVACY SANDBOX **** Chrome’s Privacy Sandbox initiative 1) deprecates third-party cookies in Chrome, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** CONTEXT ROW NOTICE **** 1) This screen provides notice to Chrome users outside of the European Economic Area (EEA) (we typically refer to this screen as “Rest of World” or “ROW”). It follows guidelines established by the GDPR. 2) We’re using similar but distinct content for EEA / ROW because legal requirements differ. For ROW, we can provide notice for all 3 settings, and so all 3 settings can appear on a single screen. " formatter_data="android_java"> + <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_ROW_DESCRIPTION_3" desc="A paragraph on the 'Enhanced ad privacy in Chrome' page that provides notice to Chrome users outside of the EEA. **** CONTEXT PRIVACY SANDBOX **** Chrome’s Privacy Sandbox initiative 1) deprecates third-party cookies in Chrome, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** CONTEXT ROW NOTICE **** 1) This screen provides notice to Chrome users outside of the European Economic Area (EEA) (we typically refer to this screen as “Rest of World” or “ROW”). It follows guidelines established by the GDPR. 2) We’re using similar but distinct content for EEA / ROW because legal requirements differ. For ROW, we can provide notice for all 3 settings, and so all 3 settings can appear on a single screen. "> To measure the performance of an ad, limited types of data can be shared among sites, such as the time of day an ad was shown to you. </message> + <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_DESCRIPTION_3" translateable="false" formatter_data="android_java"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </message> <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_EEA_LEARN_MORE_DESCRIPTION_ANDROID" desc="As part of Privacy Sandbox (see details below), both Chrome and Android devices will have a new setting called 'Ad measurement'. Some details are different, but these settings essentially do the same thing. The Chrome setting allows sites you visit to ask Chrome for information that helps them measure the performance of their ads, linking 1) an ad for site B the user sees on site A, with 2) a purchase or other action the user might take on site B. On Android, it's essentially the same story only it's between apps and not sites. The challenge is that on Android, Chrome is a browser but it's also an App. This paragraph helps the user understand that, if both settings are on, information about the user's actions on a site might be connected with actions the user takes in an app. **** CONTEXT PRIVACY SANDBOX **** Chrome’s Privacy Sandbox initiative 1) deprecates third-party cookies in Chrome, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com."> Your Android device may include a similar setting. If Ad measurement is turned on in Chrome and on your Android device, a company may be able to measure the effectiveness of an ad across web sites you visit and apps you use. </message>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb index e1d935d..74e5aca4 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723"><ph name="SITE_NAME" />ን እየተከተሉ ነው</translation> <translation id="1502010315804028179">የእርስዎን ይለፍ ቃላት ለማስተዳደር የGoogle Play አገልግሎቶችን ያዘምኑ</translation> <translation id="1506061864768559482">የፍለጋ ፕሮግራም</translation> +<translation id="1508960385613684700">የግላዊነት መመሪያ <ph name="BEGIN_NEW" />አዲስ<ph name="END_NEW" /></translation> <translation id="1513352483775369820">ዕልባቶች እና የድር ታሪክ</translation> <translation id="1513814250881909472">የእርስዎን ትሮች ከሌሎች መሣሪያዎችዎ ለማግኘት ያስምሩ</translation> <translation id="1513858653616922153">የይለፍ ቃል ሰርዝ</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">የማጋሪያ አማራጮች ዝርዝር ተዘግቷል።</translation> <translation id="1919130412786645364">የChrome በመለያ መግባትን ይፍቀዱ</translation> <translation id="1922362554271624559">የተጠቆሙ ቋንቋዎች</translation> +<translation id="1924255092154549435">ትር ተዘርግቷል</translation> <translation id="1925021887439448749">ብጁ የድር አድራሻ ያስገቡ</translation> <translation id="1928696683969751773">ዝማኔዎች</translation> <translation id="19288952978244135">Chromeን ዳግም ክፈት።</translation> @@ -541,6 +543,7 @@ <translation id="3999683152997576765">ማስታወቂያዎችን ለእርስዎ ለማሳየት የሚጠቀሙባቸውን የዝንባሌ ጣቢያዎች ርዕሶች ማየት እና ማስወገድ ይችላሉ። Chrome በቅርብ ጊዜ የአሰሳ ታሪክዎ ላይ ተመስርቶ የእርስዎን ዝንባሌዎች ይገምታል።</translation> <translation id="4000212216660919741">ከመስመር ውጭ መነሻ</translation> <translation id="4016425174436051808">መከተል አልተቻለም የሆነ ችግር ተፈጥሯል።</translation> +<translation id="4024768890073681126">የእርስዎ አሳሽ በወላጅዎ የሚተዳደር ነው</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# ሰዓ}one{# ሰዓቶች}other{# ሰዓቶች}}</translation> <translation id="4035877632587724847">አትፍቀድ</translation> <translation id="4036177530563778041">በቀላሉ ካቆሙበት ቦታ ይቀጥሉ</translation> @@ -768,6 +771,7 @@ <translation id="5161254044473106830">ርዕስ ያስፈልጋል</translation> <translation id="5170568018924773124">በአቃፊ አሳይ</translation> <translation id="5171045022955879922">ይፈልጉ ወይም ዩአርኤል ይጻፉ</translation> +<translation id="5174700554036517242">ትር ወደ መጀመሪያ ቁመት ተመልሷል</translation> <translation id="5184329579814168207">በChrome ውስጥ ክፈት</translation> <translation id="5191251636205085390">የሶስተኛ ወገን ኩኪዎችን ለመተካት ዓላማ ያላቸውን አዳዲስ ቴክኖሎጂዎችን ይረዱ እና ይቆጣጠሩ</translation> <translation id="5193988420012215838">ወደ የእርስዎ ቅንጥብ ሰሌዳ ላይ ተቀድቷል</translation> @@ -1250,6 +1254,7 @@ <translation id="7686086654630106285">ስለ በጣቢያ የተጠቆሙ ማስታወቂያዎች ተጨማሪ</translation> <translation id="768618399695552958">የጎበኟቸው አንዳንድ ገጾች ቅድሚያ ተጭነዋል። ገጾች ከGoogle ጣቢያ ከተገናኙ በGoogle አገልጋዮች በኩል ቅድሚያ ሊጫኑ ይችላሉ።</translation> <translation id="7691043218961417207">ለመከተል ይዘትን ያስሱ</translation> +<translation id="7697383401610880082">መያዣ ይጎትቱ</translation> <translation id="7698359219371678927">በ<ph name="APP_NAME" /> ውስጥ ኢሜይል ይፍጠሩ</translation> <translation id="7707922173985738739">የተንቀሳቃሽ ስልክ ውሂብ</translation> <translation id="7709094866268987903">ያስወገዷቸው ፍላጎቶች እዚህ ይታያሉ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb index c0ca023..adda0eb 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
@@ -162,6 +162,7 @@ <translation id="1910950723001426294">قائمة خيارات المشاركة مغلقة.</translation> <translation id="1919130412786645364">السماح بتسجيل الدخول إلى Chrome</translation> <translation id="1922362554271624559">اللغات المقترحة</translation> +<translation id="1924255092154549435">تم توسيع علامة التبويب.</translation> <translation id="1925021887439448749">إدخال عنوان الويب المُخصص</translation> <translation id="1928696683969751773">التحديثات</translation> <translation id="19288952978244135">يُرجى إعادة فتح Chrome.</translation> @@ -771,6 +772,7 @@ <translation id="5161254044473106830">العنوان مطلوب</translation> <translation id="5170568018924773124">العرض في المجلد</translation> <translation id="5171045022955879922">البحث أو إدخال عنوان URL</translation> +<translation id="5174700554036517242">تمت إعادة علامة التبويب إلى ارتفاعها الأولي.</translation> <translation id="5184329579814168207">فتح في Chrome</translation> <translation id="5191251636205085390">يمكنك التعرّف على تقنيات جديدة تهدف إلى استبدال ملفات تعريف الارتباط التابعة لجهات خارجية وكيفية التحكُّم في تلك التقنيات.</translation> <translation id="5193988420012215838">تم النسخ إلى الحافظة</translation> @@ -1253,6 +1255,7 @@ <translation id="7686086654630106285">مزيد من المعلومات عن الإعلانات التي تقترحها المواقع الإلكترونية</translation> <translation id="768618399695552958">إنّ بعض الصفحات التي تنتقل إليها يتم تحميلها مُسبقًا. يمكن تحميل صفحات الويب مُسبقًا من خلال خوادم Google عند ربطها من موقع مصمَّم في "مواقع Google".</translation> <translation id="7691043218961417207">استكشاف محتوًى لمتابعته</translation> +<translation id="7697383401610880082">مقبض السحب</translation> <translation id="7698359219371678927">إنشاء بريد إلكتروني في <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">استخدام بيانات الجوّال</translation> <translation id="7709094866268987903">ستظهر الاهتمامات التي حذفتها هنا.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb index af856580..5e1daa3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Вы падпісаны на сайт "<ph name="SITE_NAME" />"</translation> <translation id="1502010315804028179">Каб кіраваць паролямі, абнавіце сэрвісы Google Play</translation> <translation id="1506061864768559482">Пошукавая сістэма</translation> +<translation id="1508960385613684700">Дапаможнік па прыватнасці (<ph name="BEGIN_NEW" />навінка<ph name="END_NEW" />)</translation> <translation id="1513352483775369820">Закладкі і гісторыя вэб-пошуку</translation> <translation id="1513814250881909472">Каб укладкі з іншых прылад сталі даступнымі, уключыце сінхранізацыю</translation> <translation id="1513858653616922153">Выдаліць пароль</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">Спіс варыянтаў абагульвання закрыты.</translation> <translation id="1919130412786645364">Дазволіць уваход ва ўліковы запіс Chrome</translation> <translation id="1922362554271624559">Прапанаваныя мовы</translation> +<translation id="1924255092154549435">Укладка разгорнута</translation> <translation id="1925021887439448749">Увядзіце карыстальніцкі вэб-адрас</translation> <translation id="1928696683969751773">Абнаўленні</translation> <translation id="19288952978244135">Адкрыйце Chrome яшчэ раз.</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Патрабуецца назва</translation> <translation id="5170568018924773124">Паказаць у папцы</translation> <translation id="5171045022955879922">Знайдзіце або ўвядзіце URL-адрас</translation> +<translation id="5174700554036517242">Укладка вернута да пачатковай вышыні</translation> <translation id="5184329579814168207">Адкрыць у Chrome</translation> <translation id="5191251636205085390">Даведайцеся пра новыя тэхналогіі, якія прыходзяць на змену староннім файлам cookie, а таксама пра спосабы кіравання імі</translation> <translation id="5193988420012215838">Скапіравана ў буфер абмену</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">Падрабязней пра рэкламу, якая прапануецца сайтамі</translation> <translation id="768618399695552958">Некаторыя са старонак, якія вы наведваеце, перадзагружаюцца. Калі пераход на іх ажыццяўляецца з сайта Google, перадзагрузка можа ажыццяўляцца праз серверы Google.</translation> <translation id="7691043218961417207">Шукайце змесціва, на якое варта падпісацца</translation> +<translation id="7697383401610880082">Маркер перацягвання</translation> <translation id="7698359219371678927">Напісаць электронны ліст у праграме "<ph name="APP_NAME" />"</translation> <translation id="7707922173985738739">Выкарыстоўваць мабільную перадачу даных</translation> <translation id="7709094866268987903">Выдаленыя вамі інтарэсы будуць з'яўляцца тут</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb index fa19f57..fbf4fca 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
@@ -162,6 +162,7 @@ <translation id="1910950723001426294">শেয়ার করার বিকল্পের তালিকা বন্ধ আছে।</translation> <translation id="1919130412786645364">Chrome-এ সাইন-ইন করতে দিন</translation> <translation id="1922362554271624559">সাজেস্ট করা ভাষা</translation> +<translation id="1924255092154549435">ট্যাব বড় করে দেখানো হয়েছে</translation> <translation id="1925021887439448749">কাস্টম ওয়েব ঠিকানা লিখুন</translation> <translation id="1928696683969751773">আপডেট</translation> <translation id="19288952978244135">Chrome আবার খুলুন।</translation> @@ -772,6 +773,7 @@ <translation id="5161254044473106830">শিরোনাম প্রয়োজন</translation> <translation id="5170568018924773124">ফোল্ডারে দেখান</translation> <translation id="5171045022955879922">খুঁজুন বা URL লিখুন</translation> +<translation id="5174700554036517242">ট্যাবটি প্রাথমিক অবস্থায় ফিরিয়ে দেওয়া হয়</translation> <translation id="5184329579814168207">Chrome এ খুলুন</translation> <translation id="5191251636205085390">থার্ড-পার্টি কুকি সরানোর নতুন প্রযুক্তি ও তা নিয়ন্ত্রণ সংক্রান্ত তথ্যগুলি জানুন</translation> <translation id="5193988420012215838">আপনার ক্লিপবোর্ডে কপি করা হয়েছে</translation> @@ -1254,6 +1256,7 @@ <translation id="7686086654630106285">সাইট-প্রস্তাবিত বিজ্ঞাপন সম্পর্কে আরও অনেক কিছু</translation> <translation id="768618399695552958">আপনি যেসব পৃষ্ঠা দেখেন সেগুলির মধ্যে থেকে কিছু প্রিলোড করা হয়েছে। Google সাইট থেকে লিঙ্ক করা থাকলে, Google সার্ভারের মাধ্যমে পৃষ্ঠা প্রিলোড করা হতে পারে।</translation> <translation id="7691043218961417207">ফলো করতে কন্টেন্ট এক্সপ্লোর করুন</translation> +<translation id="7697383401610880082">টেনে আনার হ্যান্ডেল</translation> <translation id="7698359219371678927"><ph name="APP_NAME" />-এ ইমেল আইডি তৈরি করুন</translation> <translation id="7707922173985738739">মোবাইল ডেটা ব্যবহার করুন</translation> <translation id="7709094866268987903">আপনার সরিয়ে দেওয়া আগ্রহের বিষয় এখানে দেখা যাবে</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb index 12de355..11040ad 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Segueixes <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Per gestionar les contrasenyes, actualitza Serveis de Google Play</translation> <translation id="1506061864768559482">Motor de cerca</translation> +<translation id="1508960385613684700">Guia de privadesa <ph name="BEGIN_NEW" />Novetat<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Adreces interès i historial web</translation> <translation id="1513814250881909472">Sincronitza per obtenir les pestanyes dels teus altres dispositius</translation> <translation id="1513858653616922153">Suprimeix la contrasenya</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb index 705c83f..f08f3a98 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Sledujete web <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Pokud chcete spravovat hesla, aktualizujte Služby Google Play</translation> <translation id="1506061864768559482">Vyhledávač</translation> +<translation id="1508960385613684700">Průvodce ochranou osobních údajů <ph name="BEGIN_NEW" />Nové<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Záložky a webová historie</translation> <translation id="1513814250881909472">Pokud chcete získat karty ze svých ostatních zařízení, zapněte synchronizaci</translation> <translation id="1513858653616922153">Vymazat heslo</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">Seznam možností sdílení je zavřený.</translation> <translation id="1919130412786645364">Povolit přihlášení do Chromu</translation> <translation id="1922362554271624559">Navrhované jazyky</translation> +<translation id="1924255092154549435">Karta je roztažená</translation> <translation id="1925021887439448749">Zadejte vlastní webovou adresu</translation> <translation id="1928696683969751773">Aktualizace</translation> <translation id="19288952978244135">Znovu spusťte Chrome.</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Je požadován název</translation> <translation id="5170568018924773124">Zobrazit ve složce</translation> <translation id="5171045022955879922">Vyhledávejte či zadejte URL</translation> +<translation id="5174700554036517242">Karta má opět původní výšku</translation> <translation id="5184329579814168207">Otevřít v Chromu</translation> <translation id="5191251636205085390">Další informace o správa nových technologií, které mají za cíl nahradit soubory cookie třetích stran</translation> <translation id="5193988420012215838">Zkopírováno do schránky</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">Další informace o reklamách navrhovaných weby</translation> <translation id="768618399695552958">Některé stránky, které navštěvujete, se načítají předběžně. Pokud na stránky odkazuje web Google, mohou se předběžně načíst prostřednictvím serverů Google.</translation> <translation id="7691043218961417207">Objevte obsah ke sledování</translation> +<translation id="7697383401610880082">Úchyt pro přetažení</translation> <translation id="7698359219371678927">Vytvořit e-mail v aplikaci <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Bude používat mobilní data</translation> <translation id="7709094866268987903">Zde se budou zobrazovat odstraněné zájmy</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb index 91f6cdb..3142408 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Du følger <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Opdater Google Play-tjenester for at administrere dine adgangskoder</translation> <translation id="1506061864768559482">Søgemaskine</translation> +<translation id="1508960385613684700">Privatlivsguide <ph name="BEGIN_NEW" />Nyhed<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Bogmærker og webhistorik</translation> <translation id="1513814250881909472">Synkroniser for at få dine faner fra dine andre enheder</translation> <translation id="1513858653616922153">Slet adgangskoden</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">Listen over delingsindstillinger er lukket.</translation> <translation id="1919130412786645364">Tillad login i Chrome</translation> <translation id="1922362554271624559">Foreslåede sprog</translation> +<translation id="1924255092154549435">Fanen er udvidet</translation> <translation id="1925021887439448749">Angiv tilpasset webadresse</translation> <translation id="1928696683969751773">Opdateringer</translation> <translation id="19288952978244135">Åbn Chrome igen.</translation> @@ -761,7 +763,7 @@ <translation id="5118713593561876160">Interesser</translation> <translation id="5122378528687922675">Spørg en af dine forældre, (<ph name="PARENT_NAME_1" /> eller <ph name="PARENT_NAME_2" />), hvis du har brug for hjælp</translation> <translation id="5123685120097942451">Inkognitofane</translation> -<translation id="5126510351761255129">Bekræft dit kort</translation> +<translation id="5126510351761255129">Verificer dit kort</translation> <translation id="5132942445612118989">Synkroniser dine adgangskoder, din historik og meget mere på alle enheder</translation> <translation id="5139940364318403933">Få oplysninger om, hvordan du bruger Google Drev</translation> <translation id="5142281402488957685">Hvis du vil se nye historier, skal du trække nedad for at opdatere</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Der skal angives en titel</translation> <translation id="5170568018924773124">Vis i mappe</translation> <translation id="5171045022955879922">Søg, eller angiv webadresse</translation> +<translation id="5174700554036517242">Fanen er tilbage til den oprindelige højde</translation> <translation id="5184329579814168207">Åbn i Chrome</translation> <translation id="5191251636205085390">Få indblik i og styr nye teknologier, der har til formål at erstatte tredjepartscookies</translation> <translation id="5193988420012215838">Kopieret til din udklipsholder</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">Mere om foreslåede annoncer fra websites</translation> <translation id="768618399695552958">Nogle af de sider, du besøger, forudindlæses. Nogle sider forudindlæses muligvis via Google-servere, når de er linket fra et Google-website.</translation> <translation id="7691043218961417207">Gennemse indhold, du vil følge</translation> +<translation id="7697383401610880082">Håndtag</translation> <translation id="7698359219371678927">Opret mail i <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Brug mobildata</translation> <translation id="7709094866268987903">Interesser, du har fjernet, vises her</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb index b97ba4a..66cf17dc 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
@@ -162,6 +162,7 @@ <translation id="1910950723001426294">Die Liste der Freigabeoptionen ist geschlossen.</translation> <translation id="1919130412786645364">Anmeldung in Chrome zulassen</translation> <translation id="1922362554271624559">Vorgeschlagene Sprachen</translation> +<translation id="1924255092154549435">Tab ist maximiert</translation> <translation id="1925021887439448749">Benutzerdefinierte Webadresse eingeben</translation> <translation id="1928696683969751773">Aktualisierungen</translation> <translation id="19288952978244135">Öffne Chrome noch einmal.</translation> @@ -770,6 +771,7 @@ <translation id="5161254044473106830">Titel erforderlich</translation> <translation id="5170568018924773124">In Ordner zeigen</translation> <translation id="5171045022955879922">Suchen oder URL eingeben</translation> +<translation id="5174700554036517242">Tab hat wieder die ursprüngliche Höhe</translation> <translation id="5184329579814168207">In Chrome öffnen</translation> <translation id="5191251636205085390">Weitere Informationen zu neuen Technologien als Ersatz für Drittanbieter-Cookies und ihrer Nutzung</translation> <translation id="5193988420012215838">In die Zwischenablage kopiert</translation> @@ -1252,6 +1254,7 @@ <translation id="7686086654630106285">Weitere Informationen zu Werbung, die von Websites vorgeschlagen wird</translation> <translation id="768618399695552958">Einige der Seiten, die du besuchst, werden vorab geladen. Diese Seiten werden über Google-Server geladen, wenn sie von einer Google Sites-Website verlinkt sind.</translation> <translation id="7691043218961417207">Inhalte, denen du folgen kannst</translation> +<translation id="7697383401610880082">Ziehpunkt</translation> <translation id="7698359219371678927">E-Mail in <ph name="APP_NAME" /> erstellen</translation> <translation id="7707922173985738739">Mobile Daten verwenden</translation> <translation id="7709094866268987903">Die von dir entfernten Interessen werden hier angezeigt</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 edbb295d..6503ad86 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
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Sigues a <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Para administrar tus contraseñas, actualiza los Servicios de Google Play.</translation> <translation id="1506061864768559482">Motor de búsqueda</translation> +<translation id="1508960385613684700">Guía de privacidad <ph name="BEGIN_NEW" />Nuevo<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Favoritos e historial web</translation> <translation id="1513814250881909472">Utiliza la función de sincronización para acceder a tus pestañas desde otros dispositivos</translation> <translation id="1513858653616922153">Borrar contraseña</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">La lista de opciones para compartir está cerrada.</translation> <translation id="1919130412786645364">Permitir el acceso a Chrome</translation> <translation id="1922362554271624559">Idiomas sugeridos</translation> +<translation id="1924255092154549435">La pestaña está expandida</translation> <translation id="1925021887439448749">Ingresa una dirección web personalizada</translation> <translation id="1928696683969751773">Actualizaciones</translation> <translation id="19288952978244135">Vuelve a abrir Chrome.</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Se requiere un título</translation> <translation id="5170568018924773124">Mostrar en carpeta</translation> <translation id="5171045022955879922">Buscar o escribir URL</translation> +<translation id="5174700554036517242">La pestaña regresó a la altura inicial</translation> <translation id="5184329579814168207">Abrir en Chrome</translation> <translation id="5191251636205085390">Conoce y domina nuevas tecnologías diseñadas para reemplazar cookies de terceros.</translation> <translation id="5193988420012215838">Se copió en tu portapapeles</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">Obtén más información sobre los anuncios sugeridos por sitios</translation> <translation id="768618399695552958">Algunas de las páginas que visitas están precargadas. Las páginas pueden precargarse por medio de servidores de Google cuando están vinculadas desde un sitio de Google.</translation> <translation id="7691043218961417207">Explorar contenido para seguir</translation> +<translation id="7697383401610880082">Controlador de arrastre</translation> <translation id="7698359219371678927">Crear correo electrónico en <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Usa los datos móviles.</translation> <translation id="7709094866268987903">Los intereses que quitaste aparecerán aquí.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb index d8376d2..be2c1043f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Hasi zara <ph name="SITE_NAME" /> webguneari jarraitzen</translation> <translation id="1502010315804028179">Pasahitza kudeatzeko, eguneratu Google Play Services</translation> <translation id="1506061864768559482">Bilatzailea</translation> +<translation id="1508960385613684700">Pribatutasun-gida <ph name="BEGIN_NEW" />Berria<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Laster-markak eta web-historia</translation> <translation id="1513814250881909472">Sinkronizatu datuak darabiltzazun beste gailuetako fitxak eskuratzeko</translation> <translation id="1513858653616922153">Ezabatu pasahitza</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">Partekatze-aukeren zerrenda itxita dago.</translation> <translation id="1919130412786645364">Baimendu Chrome-n saioa hastea</translation> <translation id="1922362554271624559">Iradokitako hizkuntzak</translation> +<translation id="1924255092154549435">Fitxa zabalduta dago</translation> <translation id="1925021887439448749">Idatzi web-helbide pertsonalizatua</translation> <translation id="1928696683969751773">Eguneratzeak</translation> <translation id="19288952978244135">Ireki berriro Chrome.</translation> @@ -768,6 +770,7 @@ <translation id="5161254044473106830">Izena behar da</translation> <translation id="5170568018924773124">Erakutsi karpetan</translation> <translation id="5171045022955879922">Bilatu edo idatzi URLa</translation> +<translation id="5174700554036517242">Fitxa hasierako altuerara itzuli da</translation> <translation id="5184329579814168207">Ireki Chrome-n</translation> <translation id="5191251636205085390">Kontrolatu hirugarrenen cookieak ordezteko helburua duten teknologia berriak eta lortu haiei buruzko informazio gehiago</translation> <translation id="5193988420012215838">Arbelean kopiatuta</translation> @@ -1250,6 +1253,7 @@ <translation id="7686086654630106285">Webguneek iradokitako iragarkiei buruzko informazio gehiago</translation> <translation id="768618399695552958">Bisitatzen dituzun orrietako batzuk aurrez kargatzen dira. Baliteke orriak Google-ren zerbitzarien bidez aurrez kargatzea esteka Google-ren webgune batean badago.</translation> <translation id="7691043218961417207">Arakatu jarraitzeko edukia</translation> +<translation id="7697383401610880082">Arrastatzeko kontrol-puntua</translation> <translation id="7698359219371678927">Sortu mezu elektronikoa <ph name="APP_NAME" /> aplikazioan</translation> <translation id="7707922173985738739">Erabili datu-konexioa</translation> <translation id="7709094866268987903">Kendutako interesak hemen agertuko dira</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb index 56eedd4..e64cf2e3 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Vous suivez <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Mettez à jour les services Google Play pour gérer vos mots de passe</translation> <translation id="1506061864768559482">Moteur de recherche</translation> +<translation id="1508960385613684700"><ph name="BEGIN_NEW" />Nouveau<ph name="END_NEW" /> Guide sur la confidentialité</translation> <translation id="1513352483775369820">Favoris et historique Web</translation> <translation id="1513814250881909472">Synchronisez vos données pour ajouter vos onglets de vos autres appareils</translation> <translation id="1513858653616922153">Supprimer le mot de passe</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">La liste d'options de partage est fermée.</translation> <translation id="1919130412786645364">Autoriser la connexion à Google Chrome</translation> <translation id="1922362554271624559">Langues suggérées</translation> +<translation id="1924255092154549435">L'onglet est développé</translation> <translation id="1925021887439448749">Entrer une adresse Web personnalisée</translation> <translation id="1928696683969751773">Mises à jour</translation> <translation id="19288952978244135">Rouvrir Chrome.</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Titre requis</translation> <translation id="5170568018924773124">Afficher dans le dossier</translation> <translation id="5171045022955879922">Effectuez une recherche ou entrez une adresse URL</translation> +<translation id="5174700554036517242">L'onglet est revenu à la hauteur initiale</translation> <translation id="5184329579814168207">Ouvrir dans Chrome</translation> <translation id="5191251636205085390">Découvrez les nouvelles technologies qui visent à remplacer les témoins tiers et apprenez à les utiliser.</translation> <translation id="5193988420012215838">Copié dans votre presse-papier</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">En savoir plus sur les annonces suggérées par les sites</translation> <translation id="768618399695552958">Certaines des pages que vous visitez sont préchargées. Les pages peuvent être préchargées par les serveurs de Google lorsqu'elles sont associées à un site Google.</translation> <translation id="7691043218961417207">Explorer le contenu à suivre</translation> +<translation id="7697383401610880082">Poignée de déplacement</translation> <translation id="7698359219371678927">Créer un courriel dans <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Utiliser les données mobiles</translation> <translation id="7709094866268987903">Les centres d'intérêt que vous avez retirés seront affichés ici</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb index eaf9eb8..ee38e0c2 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Vous suivez <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Pour gérer vos mots de passe, mettez à jour les services Google Play</translation> <translation id="1506061864768559482">Moteur de recherche</translation> +<translation id="1508960385613684700">Guide sur la confidentialité <ph name="BEGIN_NEW" />Nouveau<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Favoris et historique Web</translation> <translation id="1513814250881909472">Activez la synchronisation pour récupérer vos onglets depuis d'autres appareils</translation> <translation id="1513858653616922153">Supprimer le mot de passe</translation> @@ -542,6 +543,7 @@ <translation id="3999683152997576765">Vous pouvez voir et retirer les centres d'intérêt que les sites utilisent pour vous montrer des annonces. Chrome estime vos centres d'intérêt en fonction de votre historique de navigation récent.</translation> <translation id="4000212216660919741">Mode hors connexion</translation> <translation id="4016425174436051808">Impossible de vous abonner en raison d'une erreur.</translation> +<translation id="4024768890073681126">Ton navigateur est géré par ton parent</translation> <translation id="4034817413553209278">{HOURS,plural, =1{# h}one{# h}other{# h}}</translation> <translation id="4035877632587724847">Ne pas autoriser</translation> <translation id="4036177530563778041">Reprenez facilement où vous en étiez</translation> @@ -626,7 +628,7 @@ <translation id="4504667196171871375">Via le Wi-Fi et les données mobiles</translation> <translation id="4508528996305412043">Le menu de la carte de flux est ouvert</translation> <translation id="4508642716788467538">Choisissez votre langue</translation> -<translation id="4509501256689523862">Lorsque vous naviguez, la personnalisation des annonces dépend de ce paramètre, des <ph name="BEGIN_LINK_1" />thèmes publicitaires<ph name="END_LINK_1" />, des <ph name="BEGIN_LINK_2" />paramètres des cookies<ph name="END_LINK_2" /> et de si le site que vous consultez personnalise les annonces</translation> +<translation id="4509501256689523862">Le fait que vous voyiez ou non des annonces personnalisées lorsque vous naviguez sur Internet dépend de ce paramètre, des <ph name="BEGIN_LINK_1" />thèmes publicitaires<ph name="END_LINK_1" />, de vos <ph name="BEGIN_LINK_2" />paramètres relatifs aux cookies<ph name="END_LINK_2" /> et du comportement du site que vous consultez en matière de personnalisation</translation> <translation id="4513387527876475750">{DAYS,plural, =1{Il y a # jour}one{Il y a # jour}other{Il y a # jours}}</translation> <translation id="451872707440238414">Rechercher dans vos favoris</translation> <translation id="4521489764227272523">Les données sélectionnées ont été supprimées de Chrome et des appareils synchronisés. @@ -1281,7 +1283,7 @@ <translation id="7851858861565204677">Autres appareils</translation> <translation id="7853202427316060426">Activité</translation> <translation id="7859988229622350291">Ne jamais traduire</translation> -<translation id="7864208933699511058">Lorsque vous naviguez, la personnalisation des annonces dépend de ce paramètre, des <ph name="BEGIN_LINK_1" />annonces suggérées par les sites<ph name="END_LINK_1" />, des <ph name="BEGIN_LINK_2" />paramètres des cookies<ph name="END_LINK_2" /> et de si le site que vous consultez personnalise les annonces.</translation> +<translation id="7864208933699511058">Le fait que vous voyiez ou non des annonces personnalisées lorsque vous naviguez sur Internet dépend de ce paramètre, des <ph name="BEGIN_LINK_1" />annonces suggérées par les sites<ph name="END_LINK_1" />, de vos <ph name="BEGIN_LINK_2" />paramètres relatifs aux cookies<ph name="END_LINK_2" /> et du comportement du site que vous consultez en matière de personnalisation.</translation> <translation id="7866213166286285359">Traduisez les pages ici</translation> <translation id="78707286264420418"><ph name="PRODUCT_NAME" /> a besoin de l'autorisation Appareils à proximité pour se connecter à votre appareil</translation> <translation id="7875915731392087153">Créer un e-mail</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb index a7da516..e74456b7 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
@@ -107,7 +107,7 @@ <translation id="1493287004536771723">Estás seguindo <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Para xestionar os teus contrasinais, actualiza os servizos de Google Play</translation> <translation id="1506061864768559482">Motor de busca</translation> -<translation id="1508960385613684700">Guía de privacidade <ph name="BEGIN_NEW" />Novo<ph name="END_NEW" /></translation> +<translation id="1508960385613684700">Guía de privacidade <ph name="BEGIN_NEW" />Novidade<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Marcadores e historial web</translation> <translation id="1513814250881909472">Sincroniza os datos para obter as pestanas dos teus outros dispositivos</translation> <translation id="1513858653616922153">Eliminar contrasinal</translation> @@ -162,6 +162,7 @@ <translation id="1910950723001426294">A lista de opcións para compartir está pechada.</translation> <translation id="1919130412786645364">Permitir inicio de sesión en Chrome</translation> <translation id="1922362554271624559">Idiomas suxeridos</translation> +<translation id="1924255092154549435">Despregouse a pestana</translation> <translation id="1925021887439448749">Introducir enderezo web personalizado</translation> <translation id="1928696683969751773">Actualizacións</translation> <translation id="19288952978244135">Abre Chrome de novo.</translation> @@ -770,6 +771,7 @@ <translation id="5161254044473106830">Título obrigatorio</translation> <translation id="5170568018924773124">Mostrar no cartafol</translation> <translation id="5171045022955879922">Buscar ou escribir o URL</translation> +<translation id="5174700554036517242">A pestana volveu á súa altura inicial</translation> <translation id="5184329579814168207">Abrir en Chrome</translation> <translation id="5191251636205085390">Obtén información sobre novas tecnoloxías desenvolvidas co obxectivo de substituír as cookies de terceiros e aprende a manexalas</translation> <translation id="5193988420012215838">Copiouse no teu portapapeis</translation> @@ -1252,6 +1254,7 @@ <translation id="7686086654630106285">Máis información sobre os anuncios suxeridos polos sitios</translation> <translation id="768618399695552958">Precárganse algunhas das páxinas que visitas. As páxinas poden precargarse a través dos nosos servidores se están vinculadas a un sitio de Google.</translation> <translation id="7691043218961417207">Descubre contido para seguir</translation> +<translation id="7697383401610880082">Controlador de arrastre</translation> <translation id="7698359219371678927">Crea un correo electrónico en <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Utilizaranse datos móbiles</translation> <translation id="7709094866268987903">Os intereses que quites mostraranse aquí</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 443638b8..e27b9189 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
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">તમે <ph name="SITE_NAME" />ને ફૉલો કરી રહ્યાં છો</translation> <translation id="1502010315804028179">તમારા પાસવર્ડ મેનેજ કરવા માટે, Google Play સેવાઓ અપડેટ કરો</translation> <translation id="1506061864768559482">શોધ એન્જિન</translation> +<translation id="1508960385613684700">પ્રાઇવસી સંબંધિત માર્ગદર્શિકા <ph name="BEGIN_NEW" />નવી<ph name="END_NEW" /></translation> <translation id="1513352483775369820">બુકમાર્ક અને વેબ ઇતિહાસ</translation> <translation id="1513814250881909472">તમારા અન્ય ડિવાઇસમાંની તમારી બધી ટૅબ મેળવવા માટે, સિંક કરો</translation> <translation id="1513858653616922153">પાસવર્ડ ડિલીટ કરો</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb index 0c3fb90..fbb0802 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
@@ -162,6 +162,7 @@ <translation id="1910950723001426294">A megosztási lehetőségek listája össze van csukva.</translation> <translation id="1919130412786645364">Chrome-bejelentkezés engedélyezése</translation> <translation id="1922362554271624559">Javasolt nyelvek</translation> +<translation id="1924255092154549435">Lap kibontva</translation> <translation id="1925021887439448749">Írja be az egyéni internetcímet</translation> <translation id="1928696683969751773">Frissítések</translation> <translation id="19288952978244135">Nyissa meg újra a Chrome-ot.</translation> @@ -770,6 +771,7 @@ <translation id="5161254044473106830">Cím megadása kötelező</translation> <translation id="5170568018924773124">Megjelenítés mappában</translation> <translation id="5171045022955879922">Keressen vagy írjon be egy URL-t</translation> +<translation id="5174700554036517242">Lap visszaállítva az eredeti magasságra</translation> <translation id="5184329579814168207">Megnyitás Chrome-ban</translation> <translation id="5191251636205085390">További információ a harmadik felektől származó cookie-k leváltását célzó új technológiákról és a kezelésükről</translation> <translation id="5193988420012215838">Vágólapra másolva</translation> @@ -1252,6 +1254,7 @@ <translation id="7686086654630106285">További információ a webhelyek által javasolt hirdetésekről</translation> <translation id="768618399695552958">Az Ön által felkeresett oldalak némelyikét előre betölti a rendszer. Az oldalakat előre betöltheti a rendszer a Google szerverein keresztül, ha Google-webhellyel vannak összekapcsolva.</translation> <translation id="7691043218961417207">Követni kívánt tartalmak felfedezése</translation> +<translation id="7697383401610880082">Fogópont</translation> <translation id="7698359219371678927">E-mail létrehozása a(z) <ph name="APP_NAME" /> alkalmazásban</translation> <translation id="7707922173985738739">Mobiladat-kapcsolat használata</translation> <translation id="7709094866268987903">Az eltávolított érdeklődési körök itt jelennek meg</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb index ddad42d..84e09b4 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
@@ -162,6 +162,7 @@ <translation id="1910950723001426294">Կիսվելու տարբերակների ցանկը փակված է։</translation> <translation id="1919130412786645364">Թույլատրել մուտքը Chrome-ում</translation> <translation id="1922362554271624559">Առաջարկվող լեզուներ</translation> +<translation id="1924255092154549435">Ներդիրը ծավալվեց</translation> <translation id="1925021887439448749">Մուտքագրեք այլ հասցե</translation> <translation id="1928696683969751773">Թարմացումներ</translation> <translation id="19288952978244135">Նորից բացեք Chrome-ը:</translation> @@ -770,6 +771,7 @@ <translation id="5161254044473106830">Վերնագիրը պարտադիր է</translation> <translation id="5170568018924773124">Ցույց տալ պանակում</translation> <translation id="5171045022955879922">Որոնեք կամ մուտքագրեք URL-ը</translation> +<translation id="5174700554036517242">Ներդիրը ծալվեց հետ իր սկզբնական բարձրությանը</translation> <translation id="5184329579814168207">Բացել Chrome-ով</translation> <translation id="5191251636205085390">Իմացեք ավելին նոր տեխնոլոգիաների մասին, որոնք փոխարինելու են երրորդ կողմի քուքիներին։</translation> <translation id="5193988420012215838">Պատճենվեց սեղմատախտակին</translation> @@ -1252,6 +1254,7 @@ <translation id="7686086654630106285">Կայքերի կողմից առաջարկվող գովազդների մասին</translation> <translation id="768618399695552958">Ձեր կողմից այցելվող որոշ էջեր նախապես են բեռնվում։ Եթե հղումը կատարվում է Google-ի որևէ կայքից, նախաբեռնումը կարող է կատարվել Google-ի սերվերների միջոցով։</translation> <translation id="7691043218961417207">Բացահայտեք հետաքրքիր բովանդակություն</translation> +<translation id="7697383401610880082">Տեղափոխման նշիչ</translation> <translation id="7698359219371678927">Ստեղծեք նամակ <ph name="APP_NAME" /> հավելվածում</translation> <translation id="7707922173985738739">Օգտագործել բջջային ինտերնետ</translation> <translation id="7709094866268987903">Այստեղ կհայտնվեն ձեր հեռացրած հետաքրքրությունները</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb index 1dbea1d3..0f9856b 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Þú fylgist með <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Uppfærðu þjónustu Google Play til að stjórna aðgangsorðunum þínum</translation> <translation id="1506061864768559482">Leitarvél</translation> +<translation id="1508960385613684700">Leiðbeiningar um persónuvernd <ph name="BEGIN_NEW" />Nýtt<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Bókamerki og vefferill</translation> <translation id="1513814250881909472">Samstilltu til að sækja flipana þína úr öðrum tækjum</translation> <translation id="1513858653616922153">Eyða aðgangsorði</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb index f1d5dc6..3867ed6 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
@@ -162,6 +162,7 @@ <translation id="1910950723001426294">L'elenco di opzioni di condivisione è chiuso.</translation> <translation id="1919130412786645364">Consenti l'accesso a Chrome</translation> <translation id="1922362554271624559">Lingue consigliate</translation> +<translation id="1924255092154549435">La scheda è espansa</translation> <translation id="1925021887439448749">Inserisci l'indirizzo web personalizzato</translation> <translation id="1928696683969751773">Aggiornamenti</translation> <translation id="19288952978244135">Riapri Chrome.</translation> @@ -770,6 +771,7 @@ <translation id="5161254044473106830">Titolo obbligatorio</translation> <translation id="5170568018924773124">Mostra nella cartella</translation> <translation id="5171045022955879922">Cerca o digita un URL</translation> +<translation id="5174700554036517242">La scheda è tornata alla sua altezza iniziale</translation> <translation id="5184329579814168207">Apri in Chrome</translation> <translation id="5191251636205085390">Scopri e gestisci le nuove tecnologie che mirano a sostituire i cookie di terze parti</translation> <translation id="5193988420012215838">Copiata nei tuoi appunti</translation> @@ -1252,6 +1254,7 @@ <translation id="7686086654630106285">Scopri di più sugli annunci suggeriti dai siti</translation> <translation id="768618399695552958">Alcune delle pagine che visiti sono precaricate. Le pagine potrebbero essere precaricate tramite i server di Google quando il sito che vi rimanda è un sito Google.</translation> <translation id="7691043218961417207">Esplora i contenuti da seguire</translation> +<translation id="7697383401610880082">Punto di trascinamento</translation> <translation id="7698359219371678927">Crea email in <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Verranno utilizzati i dati mobili</translation> <translation id="7709094866268987903">Gli interessi che rimuovi verranno visualizzati qui</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb index ca58337..30d9eba5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
@@ -121,7 +121,7 @@ <translation id="1571304935088121812">Пайдаланушы атын көшіру</translation> <translation id="1592864538817356322">Стандартты қорғау:</translation> <translation id="1594635596540195766">Төмендегі тізімде <ph name="SUGGESTIONS_COUNT" /> ұсынылған элемент бар.</translation> -<translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chrome-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> +<translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген қызығушылықтарды автоматты түрде жойып отырамыз. Интернетті шолу кезінде белгілі бір қызығушылық тізімде қайтадан шығуы мүмкін. Бұл ретте Chrome-ның ескергенін қаламаған қызығушылықтарды өшіруге болады.</translation> <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{Таңдалған 1 элементті өшіру}other{Таңдалған # элементті өшіру}}</translation> <translation id="1633659023549081553">Chrome-ның негізгі бетінен жаңа контентті көріңіз.</translation> <translation id="1641113438599504367">Қауіпсіз шолу</translation> @@ -829,7 +829,7 @@ <translation id="5514904542973294328">Құрылғының әкімшісі ажыратқан</translation> <translation id="5515439363601853141">Құпия сөзді көру үшін құлыпты ашыңыз</translation> <translation id="5517095782334947753">Сізде <ph name="FROM_ACCOUNT" /> аккаунтының бетбелгілері, тарихы, құпия сөздері және басқа да параметрлері бар.</translation> -<translation id="5524761631371622910">Сынақ нұсқалары қосылғанда, Chrome сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялылығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын жойып отырады.</translation> +<translation id="5524761631371622910">Сынақ нұсқалары қосылғанда, Chrome сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын жойып отырады.</translation> <translation id="5524843473235508879">Баcқа бетке бағыттау бөгелді.</translation> <translation id="554297709083131118">Соңғы 15 минуттағы келесі деректер жойылады.</translation> <translation id="5548606607480005320">Қауіпсіздік шарасы</translation> @@ -861,7 +861,7 @@ <translation id="570347048394355941">Қойындыға ауысу</translation> <translation id="572328651809341494">Соңғы қойындылар</translation> <translation id="5726692708398506830">Беттегі барлық элементтерді үлкейту</translation> -<translation id="5727531838415286053">Chrome сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялылығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла береді.</translation> +<translation id="5727531838415286053">Chrome сізді белсенді сынақ нұсқасына кездейсоқ орналастырса, браузерді қолдану тарихы төменде берілгендей көретін жарнамалар мен қызығушылықтарға әсер етеді. Құпиялығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла береді.</translation> <translation id="5748802427693696783">Стандартты қойындыларға ауысты</translation> <translation id="5749068826913805084">Файлдарды жүктеп алу үшін, Chrome-ға сақтау орнын пайдалану құқығы қажет.</translation> <translation id="5749237766298580851">Өшірулі <ph name="SEPARATOR" /> Ұсынылмайды</translation> @@ -1490,7 +1490,7 @@ <translation id="8856931513242997049">Хабарландыру жіберу рұқсатының ағыны жабылды</translation> <translation id="8873817150012960745">Бастау үшін осы жерді басыңыз.</translation> <translation id="8881973373982641723">Тарих және іздеу өрісіндегі дерек өшіріледі.</translation> -<translation id="8884023684057697730"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялылығыңызды сақтау үшін 4 аптадан көп көрсетілген сайттарды тізімнен автоматты түрде жойып отырамыз. Сіз қайтадан кірген сайт тізімде тағы да шығуы мүмкін. Сайттың қызығушылықтарыңызды анықтағанын қаламасаңыз, оны өшіруіңізге болады.</translation> +<translation id="8884023684057697730"><ph name="BEGIN_BOLD" />Дерек қалай басқарылады:<ph name="END_BOLD" /> құпиялығыңызды сақтау үшін 4 аптадан көп көрсетілген сайттарды тізімнен автоматты түрде жойып отырамыз. Сіз қайтадан кірген сайт тізімде тағы да шығуы мүмкін. Сайттың қызығушылықтарыңызды анықтағанын қаламасаңыз, оны өшіруіңізге болады.</translation> <translation id="8898822736010347272">Жаңа қауіптерді анықтап, интернетте барлығын қорғауға көмектесу үшін кірген кейбір беттердің URL мекенжайларын, шектеулі жүйе ақпаратын және кейбір беттердің контентін Google-ға жібереді.</translation> <translation id="8909135823018751308">Бөлісу…</translation> <translation id="8912362522468806198">Google аккаунты</translation> @@ -1510,7 +1510,7 @@ <translation id="8972098258593396643">Әдепкі қалтаға жүктеп алынсын ба?</translation> <translation id="8987641763863173640">Бейнені алдын ала көру параметрлерін басқару</translation> <translation id="8987736167266086032">Тоқтаған жерден әрі қарай жалғастырыңыз</translation> -<translation id="8989968390305463310">Браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамаларға және қызығушылықтарға әсер етеді. Құпиялылығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын автоматты түрде жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла беруі мүмкін.</translation> +<translation id="8989968390305463310">Браузерді қолдану тарихы төменде берілгендей сіз көретін жарнамаларға және қызығушылықтарға әсер етеді. Құпиялығыңызды сақтау үшін Chrome қызығушылықтарды ай сайын автоматты түрде жойып отырады. Қызығушылықтарды өшірмесеңіз, олар жаңартыла беруі мүмкін.</translation> <translation id="8993760627012879038">Жаңа қойындыны инкогнито режимінде ашу</translation> <translation id="8996847606757455498">Басқа провайдер таңдау</translation> <translation id="8998289560386111590">Құрылғыңызда қолжетімсіз.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb index ad8340f..04005ea1 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
@@ -162,6 +162,7 @@ <translation id="1910950723001426294">Бөлүшүү параметрлеринин тизмеси жабылды.</translation> <translation id="1919130412786645364">Chrome'го кирүүгө уруксат берүү</translation> <translation id="1922362554271624559">Сунушталган тилдер</translation> +<translation id="1924255092154549435">Өтмөк жайылып көрсөтүлдү</translation> <translation id="1925021887439448749">Жеке веб дарегин киргизиңиз</translation> <translation id="1928696683969751773">Жаңыртуулар</translation> <translation id="19288952978244135">Chrome'ду кайра ачуу.</translation> @@ -762,6 +763,7 @@ <translation id="5161254044473106830">Аталышы керек</translation> <translation id="5170568018924773124">Куржунда көрсөтүү</translation> <translation id="5171045022955879922">URL издеңиз же териңиз</translation> +<translation id="5174700554036517242">Өтмөк баштапкы бийиктигине кайтарылды</translation> <translation id="5184329579814168207">Chrome'до ачуу</translation> <translation id="5191251636205085390">Үчүнчү тараптын cookie файлдарын алмаштыруучу жаңы технологиялар жөнүндө маалымат алып, аларды башкарыңыз</translation> <translation id="5193988420012215838">Алмашуу буферине көчүрүлдү</translation> @@ -1244,6 +1246,7 @@ <translation id="7686086654630106285">Сайтта сунушталган жарнамалар жөнүндө кеңири маалымат</translation> <translation id="768618399695552958">Cиз баш баккан айрым барактар алдын ала жүктөлгөн. Google сайтынан шилтеме берилген барактар Google'дун серверлери аркылуу алдын ала жүктөлүшү мүмкүн.</translation> <translation id="7691043218961417207">Кызыктуу контентти таап, жазылыңыз</translation> +<translation id="7697383401610880082">Маркерди сүйрөө</translation> <translation id="7698359219371678927"><ph name="APP_NAME" /> колдонмосунан электрондук почта түзүңүз</translation> <translation id="7707922173985738739">Мобилдик Интернетти колдонуу</translation> <translation id="7709094866268987903">Өчүрүлгөн кызыккан нерселериңиз тууралуу маалымат ушул жерде көрүнөт</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb index 64c3c6cd..868177c5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Jūs sekojat vietnei <ph name="SITE_NAME" />.</translation> <translation id="1502010315804028179">Lai pārvaldītu paroles, atjauniniet Google Play pakalpojumus.</translation> <translation id="1506061864768559482">Meklētājprogramma</translation> +<translation id="1508960385613684700">Konfidencialitātes ceļvedis <ph name="BEGIN_NEW" />Jaunums<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Grāmatzīmes un tīmekļa vēsture</translation> <translation id="1513814250881909472">Veiciet sinhronizāciju, lai iegūtu cilnes no savām pārējām ierīcēm</translation> <translation id="1513858653616922153">Dzēst paroli</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">Kopīgošanas opciju saraksts ir aizvērts.</translation> <translation id="1919130412786645364">Atļaut pierakstīties pārlūkā Chrome</translation> <translation id="1922362554271624559">Ieteiktās valodas</translation> +<translation id="1924255092154549435">Cilne ir izvērsta</translation> <translation id="1925021887439448749">Ievadiet pielāgotu tīmekļa adresi</translation> <translation id="1928696683969751773">Atjaunināšana</translation> <translation id="19288952978244135">Atkārtoti atveriet pārlūku Chrome.</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Jānorāda nosaukums</translation> <translation id="5170568018924773124">Rādīt mapē</translation> <translation id="5171045022955879922">Meklējiet vai ievadiet URL.</translation> +<translation id="5174700554036517242">Cilne ir sakļauta sākotnējā augstumā</translation> <translation id="5184329579814168207">Atvērt pārlūkā Chrome</translation> <translation id="5191251636205085390">Uzziniet par jaunām tehnoloģijām, kas izstrādātas, lai aizstātu trešo pušu sīkfailus, un pārvaldiet tās.</translation> <translation id="5193988420012215838">Kopēts jūsu starpliktuvē</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">Vairāk par vietnēs ieteiktajām reklāmām</translation> <translation id="768618399695552958">Dažas no jūsu apmeklētajām lapām ir ielādētas iepriekš. Lapas var tikt ielādētas iepriekš, izmantojot Google serverus, ja novirzīšana tiek veikta no Google vietnes.</translation> <translation id="7691043218961417207">Izpētiet saturu, kam sekot</translation> +<translation id="7697383401610880082">Vilkšanas turis</translation> <translation id="7698359219371678927">Izveidojiet e-pasta ziņojumu lietotnē <ph name="APP_NAME" />.</translation> <translation id="7707922173985738739">Izmantot mobilos datus</translation> <translation id="7709094866268987903">Šeit būs redzamas jūsu noņemtās intereses.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb index 2343ef7..aa84bed 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Го следите <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">За да управувате со вашите лозинки, ажурирајте ги услугите на Google Play</translation> <translation id="1506061864768559482">Пребарувач</translation> +<translation id="1508960385613684700">Водич за приватност <ph name="BEGIN_NEW" />Ново<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Обележувачи и веб-историја</translation> <translation id="1513814250881909472">Синхронизирајте за да ги преземете картичките од другите уреди</translation> <translation id="1513858653616922153">Избриши ја лозинката</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">Списокот со опции за споделување е затворен.</translation> <translation id="1919130412786645364">Дозволете најавување на Chrome</translation> <translation id="1922362554271624559">Предложени јазици</translation> +<translation id="1924255092154549435">Картичката е проширена</translation> <translation id="1925021887439448749">Внесете приспособена веб-адреса</translation> <translation id="1928696683969751773">Ажурирања</translation> <translation id="19288952978244135">Повторно отворете го Chrome.</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Потребен е наслов</translation> <translation id="5170568018924773124">Прикажи во папка</translation> <translation id="5171045022955879922">Барај или впиши URL</translation> +<translation id="5174700554036517242">Картичката е вратена на почетната висина</translation> <translation id="5184329579814168207">Отвори во Chrome</translation> <translation id="5191251636205085390">Дознајте за новите технологии што имаат за цел да ги заменат колачињата на трети лица и контролирајте ги</translation> <translation id="5193988420012215838">Копирано во привремената меморија</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">Повеќе за реклами предложени од сајтови</translation> <translation id="768618399695552958">Некои од страниците што ги посетувате се вчитани однапред. Страниците може да се вчитани однапред преку серверите на Google кога се поврзани од сајт на Google.</translation> <translation id="7691043218961417207">Истражете содржини за следење</translation> +<translation id="7697383401610880082">Рачка за влечење</translation> <translation id="7698359219371678927">Создајте е-пошта во <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Ќе користи мобилен интернет</translation> <translation id="7709094866268987903">Интересите што сте ги отстраниле ќе се појават тука</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb index 3897dfc..5c433e5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Та <ph name="SITE_NAME" />-г дагаж байна</translation> <translation id="1502010315804028179">Нууц үгнүүдээ удирдахын тулд Google Play үйлчилгээг шинэчилнэ үү</translation> <translation id="1506061864768559482">Хайлтын хэрэгсэл</translation> +<translation id="1508960385613684700">Нууцлалын хөтөч <ph name="BEGIN_NEW" />Шинэ<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Хавчуурга болон веб түүх</translation> <translation id="1513814250881909472">Бусад төхөөрөмжөөсөө табуудаа авахын тулд синк хийнэ үү</translation> <translation id="1513858653616922153">Нууц үг устгах</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb index 060a45c6..905170a 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">तपाईं <ph name="SITE_NAME" /> फलो गर्दै हुनुहुन्छ</translation> <translation id="1502010315804028179">तपाईं आफ्ना पासवर्डहरू व्यवस्थापन गर्न चाहनुहुन्छ भने Google Play services अपडेट गर्नुहोस्</translation> <translation id="1506061864768559482">सर्च इन्जिन</translation> +<translation id="1508960385613684700">गोपनीयतासम्बन्धी गाइड <ph name="BEGIN_NEW" />नयाँ<ph name="END_NEW" /></translation> <translation id="1513352483775369820">बुकमार्कहरू र वेब इतिहास</translation> <translation id="1513814250881909472">तपाईं आफूले चलाउने अन्य डिभाइसमार्फत आफ्ना ट्याबहरू प्राप्त गर्न चाहनुहुन्छ भने सिंक गर्नुहोस्</translation> <translation id="1513858653616922153">पासवर्ड मेट्नुहोस्</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 0cf9ef92..c416b81 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
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">ଆପଣ <ph name="SITE_NAME" />କୁ ଅନୁସରଣ କରୁଛନ୍ତି</translation> <translation id="1502010315804028179">ଆପଣଙ୍କ ପାସୱାର୍ଡଗୁଡ଼ିକୁ ପରିଚାଳନା କରିବା ପାଇଁ Google Play ସେବାଗୁଡ଼ିକୁ ଅପଡେଟ କରନ୍ତୁ</translation> <translation id="1506061864768559482">ସନ୍ଧାନ ଇଞ୍ଜିନ୍</translation> +<translation id="1508960385613684700"><ph name="BEGIN_NEW" />ନୂଆ<ph name="END_NEW" /> ଗୋପନୀୟତା ଗାଇଡ</translation> <translation id="1513352483775369820">ବୁକ୍ମାର୍କ ଏବଂ ୱେବ୍ ଇତିବୃତ୍ତି</translation> <translation id="1513814250881909472">ଆପଣଙ୍କ ଅନ୍ୟ ଡିଭାଇସଗୁଡ଼ିକରୁ ଆପଣଙ୍କର ଟାବଗୁଡ଼ିକ ପାଇବାକୁ ସିଙ୍କ କରନ୍ତୁ</translation> <translation id="1513858653616922153">ପାସ୍ୱାର୍ଡକୁ ଡିଲିଟ୍ କରନ୍ତୁ</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">ସେୟାରିଂ ବିକଳ୍ପଗୁଡ଼ିକର ତାଲିକା ବନ୍ଦ ଅଛି।</translation> <translation id="1919130412786645364">Chromeରେ ସାଇନ୍-ଇନ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ</translation> <translation id="1922362554271624559">ପ୍ରସ୍ତାବିତ ଭାଷାଗୁଡ଼ିକ</translation> +<translation id="1924255092154549435">ଟାବକୁ ବିସ୍ତାର କରାଯାଇଛି</translation> <translation id="1925021887439448749">ଏକ କଷ୍ଟମ୍ ୱେବ୍ ଠିକଣା ଲେଖନ୍ତୁ</translation> <translation id="1928696683969751773">ଅପ୍ଡେଟ୍</translation> <translation id="19288952978244135">Chrome ପୁଣି ଖୋଲନ୍ତୁ।</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">ଟାଇଟେଲ୍ ଆବଶ୍ୟକ</translation> <translation id="5170568018924773124">ଫୋଲ୍ଡରରେ ଦେଖାନ୍ତୁ</translation> <translation id="5171045022955879922">ଖୋଜନ୍ତୁ କିମ୍ବା URL ଟାଇପ୍ କରନ୍ତୁ</translation> +<translation id="5174700554036517242">ଟାବ ପ୍ରାରମ୍ଭିକ ଉଚ୍ଚତାକୁ ପୁଣି ଆସିଯାଇଛି</translation> <translation id="5184329579814168207">Chromeରେ ଖୋଲନ୍ତୁ</translation> <translation id="5191251636205085390">ତୃତୀୟ-ପକ୍ଷ କୁକୀଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରିବାକୁ ଲକ୍ଷ୍ୟ ରଖୁଥିବା ନୂଆ ଟେକ୍ନୋଲୋଜିଗୁଡ଼ିକ ବିଷୟରେ ଜାଣନ୍ତୁ ଏବଂ ସେଗୁଡ଼ିକୁ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ</translation> <translation id="5193988420012215838">ଆପଣଙ୍କର କ୍ଲିପ୍ବୋର୍ଡକୁ କପି କରାଯାଇଛି</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">ସାଇଟ-ଦ୍ୱାରା ପରାମର୍ଶ ଦିଆଯାଇଥିବା ବିଜ୍ଞାପନଗୁଡ଼ିକ ବିଷୟରେ ଅଧିକ ବିବରଣୀ</translation> <translation id="768618399695552958">ଆପଣ ଭିଜିଟ କରୁଥିବା କିଛି ପୃଷ୍ଠାକୁ ପ୍ରିଲୋଡ କରାଯାଇଛି। ପୃଷ୍ଠାଗୁଡ଼ିକୁ କୌଣସି Google ସାଇଟରୁ ଲିଙ୍କ କରାଯାଇଥିଲେ, Google ସର୍ଭରଗୁଡ଼ିକ ମାଧ୍ୟମରେ ସେଗୁଡ଼ିକୁ ପ୍ରିଲୋଡ କରାଯାଇପାରେ।</translation> <translation id="7691043218961417207">ଅନୁସରଣ କରିବା ପାଇଁ ବିଷୟବସ୍ତୁକୁ ଏକ୍ସପ୍ଲୋର କରନ୍ତୁ</translation> +<translation id="7697383401610880082">ଡ୍ରାଗ ହେଣ୍ଡେଲ</translation> <translation id="7698359219371678927"><ph name="APP_NAME" />ରେ ଇମେଲ୍ ତିଆରି କରନ୍ତୁ</translation> <translation id="7707922173985738739">ମୋବାଇଲ୍ ଡାଟା ବ୍ୟବହାର କରନ୍ତୁ।</translation> <translation id="7709094866268987903">ଆପଣ କାଢ଼ି ଦେଇଥିବା ରୁଚିଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯିବ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb index 43393917..ae32dd0 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
@@ -628,7 +628,7 @@ <translation id="4504667196171871375">Przez Wi-Fi i mobilną transmisję danych</translation> <translation id="4508528996305412043">Menu karty kanału jest otwarte</translation> <translation id="4508642716788467538">Wybierz język</translation> -<translation id="4509501256689523862">Personalizacja reklam wyświetlanych podczas przeglądania internetu zależy od tego ustawienia, od opcji <ph name="BEGIN_LINK_1" />Tematy reklam<ph name="END_LINK_1" />, od <ph name="BEGIN_LINK_2" />ustawień plików cookie<ph name="END_LINK_2" /> oraz od tego, czy wyświetlasz reklamy spersonalizowane</translation> +<translation id="4509501256689523862">Personalizacja reklam wyświetlanych podczas przeglądania internetu zależy od tego ustawienia, od opcji <ph name="BEGIN_LINK_1" />Tematy reklam<ph name="END_LINK_1" />, od <ph name="BEGIN_LINK_2" />ustawień plików cookie<ph name="END_LINK_2" /> oraz od tego, czy odwiedzana witryna wyświetla reklamy spersonalizowane</translation> <translation id="4513387527876475750">{DAYS,plural, =1{# dzień temu}few{# dni temu}many{# dni temu}other{# dnia temu}}</translation> <translation id="451872707440238414">Szukaj zakładek</translation> <translation id="4521489764227272523">Wybrane dane zostały usunięte z Chrome i ze zsynchronizowanych urządzeń. @@ -1283,7 +1283,7 @@ <translation id="7851858861565204677">Inne urządzenia</translation> <translation id="7853202427316060426">Aktywność</translation> <translation id="7859988229622350291">Nigdy nie tłumacz</translation> -<translation id="7864208933699511058">Personalizacja reklam wyświetlanych podczas przeglądania internetu zależy od tego ustawienia, od ustawienia dotyczącego <ph name="BEGIN_LINK_1" />reklam sugerowanych przez witryny<ph name="END_LINK_1" />, od <ph name="BEGIN_LINK_2" />ustawień plików cookie<ph name="END_LINK_2" /> oraz od tego, czy wyświetlasz reklamy spersonalizowane.</translation> +<translation id="7864208933699511058">Personalizacja reklam wyświetlanych podczas przeglądania internetu zależy od tego ustawienia, od ustawienia dotyczącego <ph name="BEGIN_LINK_1" />reklam sugerowanych przez witryny<ph name="END_LINK_1" />, od <ph name="BEGIN_LINK_2" />ustawień plików cookie<ph name="END_LINK_2" /> oraz od tego, czy odwiedzana witryna wyświetla reklamy spersonalizowane.</translation> <translation id="7866213166286285359">Tu możesz przetłumaczyć strony</translation> <translation id="78707286264420418">Aby połączyć się z Twoim urządzeniem, <ph name="PRODUCT_NAME" /> potrzebuje uprawnień Urządzenia w pobliżu</translation> <translation id="7875915731392087153">Utwórz e-maila</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb index 5b0fda1..d22b411 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Está a seguir <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Para gerir as palavras-passe, atualize os Serviços do Google Play</translation> <translation id="1506061864768559482">Motor de pesquisa</translation> +<translation id="1508960385613684700">Guia de privacidade <ph name="BEGIN_NEW" />Novo<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Marcadores e histórico da Web</translation> <translation id="1513814250881909472">Sincronize para obter os separadores dos seus outros dispositivos</translation> <translation id="1513858653616922153">Eliminar palavra-passe</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb index 5f103c7..6c32b4c 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">ඔබ <ph name="SITE_NAME" /> අනුගමනය කරයි</translation> <translation id="1502010315804028179">ඔබේ මුරපද කළමනා කිරීමට, Google Play සේවා යාවත්කාලීන කරන්න</translation> <translation id="1506061864768559482">සෙවුම් යන්ත්රය</translation> +<translation id="1508960385613684700">පෞද්ගලිකත්ව මාර්ගෝපදේශය <ph name="BEGIN_NEW" />නව<ph name="END_NEW" /></translation> <translation id="1513352483775369820">පිටුසන් සහ වෙබ් ඉතිහාසය</translation> <translation id="1513814250881909472">ඔබගේ අනෙකුත් උපාංගවලින් ඔබගේ ටැබ් ලබා ගැනීමට සමමුහුර්ත කරන්න</translation> <translation id="1513858653616922153">මුරපදය මකන්න</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb index 7a0d48d..b876ab4 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
@@ -162,6 +162,7 @@ <translation id="1910950723001426294">Zoznam možností zdieľania je zatvorený.</translation> <translation id="1919130412786645364">Povoliť prihlásenie do Chromu</translation> <translation id="1922362554271624559">Navrhované jazyky</translation> +<translation id="1924255092154549435">Karta je rozbalená</translation> <translation id="1925021887439448749">Zadajte vlastnú webovú adresu</translation> <translation id="1928696683969751773">Aktualizácie</translation> <translation id="19288952978244135">Znova otvorte Chrome.</translation> @@ -770,6 +771,7 @@ <translation id="5161254044473106830">Musíte zadať názov</translation> <translation id="5170568018924773124">Zobraziť v priečinku</translation> <translation id="5171045022955879922">Vyhľadajte alebo zadajte webovú adresu</translation> +<translation id="5174700554036517242">Karta je späť na počiatočnej výške</translation> <translation id="5184329579814168207">Otvoriť v prehliadači Chrome</translation> <translation id="5191251636205085390">Prečítajte si o nových technológiách, ktoré majú nahradiť súbory cookie tretej strany, a naučte sa ich ovládať</translation> <translation id="5193988420012215838">Skopírované do schránky</translation> @@ -1252,6 +1254,7 @@ <translation id="7686086654630106285">Ďalšie informácie o reklamách navrhovaných webmi</translation> <translation id="768618399695552958">Niektoré stránky, ktoré navštevujete, sú prednačítané. Stránky môžu byť prednačítané prostredníctvom serverov Googlu, keď s nimi prepojíte web Google.</translation> <translation id="7691043218961417207">Pozrite si obsah na sledovanie</translation> +<translation id="7697383401610880082">Presúvadlo</translation> <translation id="7698359219371678927">Vytvorte správu v aplikácii <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Používať mobilné dáta</translation> <translation id="7709094866268987903">Tu sa budú zobrazovať záujmy, ktoré odstránite</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb index 09c6b097..b35ee3d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Spremljate spletno mesto <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Če želite upravljati gesla, posodobite storitve Google Play.</translation> <translation id="1506061864768559482">Iskalnik</translation> +<translation id="1508960385613684700">Vodnik po zasebnosti <ph name="BEGIN_NEW" />Novo<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Zaznamki in spletna zgodovina</translation> <translation id="1513814250881909472">S sinhronizacijo si zagotovite zavihke iz drugih naprav.</translation> <translation id="1513858653616922153">Izbris gesla</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb index ac3a9b2..d45d3ed 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Po ndjek <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Për të menaxhuar fjalëkalimet e tua, përditëso shërbimet e Google Play</translation> <translation id="1506061864768559482">Motori i kërkimit</translation> +<translation id="1508960385613684700">Udhëzuesi i privatësisë <ph name="BEGIN_NEW" />E re<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Faqeshënuesit dhe historiku i uebit</translation> <translation id="1513814250881909472">Sinkronizoje për të marrë skedat nga pajisjet e tua të tjera</translation> <translation id="1513858653616922153">Fshi fjalëkalimin</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">Lista e opsioneve të shpërndarjes është e mbyllur.</translation> <translation id="1919130412786645364">Lejo identifikimin në Chrome</translation> <translation id="1922362554271624559">Gjuhët e sugjeruara</translation> +<translation id="1924255092154549435">Skeda është zgjeruar</translation> <translation id="1925021887439448749">Fut adresën e personalizuar të uebit</translation> <translation id="1928696683969751773">Përditësimet</translation> <translation id="19288952978244135">Rihap Chrome.</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Kërkohet titulli</translation> <translation id="5170568018924773124">Shfaq në dosje</translation> <translation id="5171045022955879922">Kërko ose shkruaj URL-në</translation> +<translation id="5174700554036517242">Skeda është kthyer përsëri në lartësinë fillestare</translation> <translation id="5184329579814168207">Hape në Chrome</translation> <translation id="5191251636205085390">Mëso dhe kontrollo teknologjitë e reja që synojnë të zëvendësojnë kukit e palëve të treta</translation> <translation id="5193988420012215838">Kopjuar te kujtesa e fragmenteve</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">Më shumë rreth reklamave të sugjeruara nga sajtet</translation> <translation id="768618399695552958">Disa nga faqet që ti viziton janë të ngarkuara paraprakisht. Faqet mund të ngarkohen paraprakisht nëpërmjet serverëve të Google kur lidhen nga një sajt i Google.</translation> <translation id="7691043218961417207">Eksploro përmbajtje për t'i ndjekur</translation> +<translation id="7697383401610880082">Doreza e zvarritjes</translation> <translation id="7698359219371678927">Krijo mail në <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Përdor të dhënat celulare</translation> <translation id="7709094866268987903">Interesat që hoqe do të shfaqen këtu</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb index 72112593..0db01af 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Unafuatilia <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Ili udhibiti manenosiri yako, sasisha Huduma za Google Play</translation> <translation id="1506061864768559482">Mtambo wa utafutaji</translation> +<translation id="1508960385613684700">Mwongozo wa Faragha <ph name="BEGIN_NEW" />Mpya<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Alamisho na historia ya wavuti</translation> <translation id="1513814250881909472">Sawazisha ili upate vichupo vyako kutoka kwenye vifaa vyako vingine</translation> <translation id="1513858653616922153">Futa nenosiri</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb index 6fd2659d..ac39b0f 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
@@ -162,6 +162,7 @@ <translation id="1910950723001426294">Список параметрів спільного доступу закрито.</translation> <translation id="1919130412786645364">Дозволити вхід у Chrome</translation> <translation id="1922362554271624559">Пропоновані мови</translation> +<translation id="1924255092154549435">Вкладку розгорнуто</translation> <translation id="1925021887439448749">Введіть веб-адресу</translation> <translation id="1928696683969751773">Оновлення</translation> <translation id="19288952978244135">Знову відкрийте Chrome.</translation> @@ -770,6 +771,7 @@ <translation id="5161254044473106830">Введіть назву</translation> <translation id="5170568018924773124">Показати в папці</translation> <translation id="5171045022955879922">Введіть запит або URL-адресу</translation> +<translation id="5174700554036517242">Вкладку згорнуто до початкової висоти</translation> <translation id="5184329579814168207">Відкрити в Chrome</translation> <translation id="5191251636205085390">Дізнайтеся про нові технології, що приходять на зміну стороннім файлам cookie, і як ними керувати</translation> <translation id="5193988420012215838">Скопійовано в буфер обміну</translation> @@ -1252,6 +1254,7 @@ <translation id="7686086654630106285">Докладніше про рекламу, пропоновану сайтами</translation> <translation id="768618399695552958">Деякі сторінки, які ви відвідуєте, попередньо завантажені. Сторінки можуть попередньо завантажуватися через сервери Google, коли вони зв’язані через сайт Google.</translation> <translation id="7691043218961417207">Ознайомтеся з контентом, на який можна підписатися</translation> +<translation id="7697383401610880082">Маркер переміщення</translation> <translation id="7698359219371678927">Створити електронну адресу в додатку <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Використовувати мобільне передавання даних</translation> <translation id="7709094866268987903">Тут з’являтимуться вилучені вами інтереси</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb index c62498b..9c5c21ce 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
@@ -107,6 +107,7 @@ <translation id="1493287004536771723"><ph name="SITE_NAME" /> tasmasiga obuna boʻlgansiz</translation> <translation id="1502010315804028179">Parollarni boshqarish uchun Google Play xizmatlarini yangilang</translation> <translation id="1506061864768559482">Qidiruv tizimi</translation> +<translation id="1508960385613684700">Maxfiylik qoʻllanmasi <ph name="BEGIN_NEW" />Yangi<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Xatcho‘plar va qidiruv tarixi</translation> <translation id="1513814250881909472">Boshqa qurilmalardan varaqlarni olish uchun sinxronlang</translation> <translation id="1513858653616922153">Parolni o‘chirish</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">Ruxsat parametrlari roʻyxati yopildi.</translation> <translation id="1919130412786645364">Chrome hisobiga kirishga ruxsat berish</translation> <translation id="1922362554271624559">Tavsiya etilgan tillar</translation> +<translation id="1924255092154549435">Varaq kengaytirildi</translation> <translation id="1925021887439448749">Boshqa veb-manzilni kiriting</translation> <translation id="1928696683969751773">Yangilanishlar</translation> <translation id="19288952978244135">Chromeni qaytadan oching.</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Sarlavha kiriting</translation> <translation id="5170568018924773124">&Jildda ko‘rsatish</translation> <translation id="5171045022955879922">Qidiring yoki URL manzili kiriting</translation> +<translation id="5174700554036517242">Varaq dastlabki balandlikka qaytdi</translation> <translation id="5184329579814168207">Chrome brauzerida ochish</translation> <translation id="5191251636205085390">Tashqi cookie fayllar oʻrniga ishlatiladigan yangi texnologiyalarni oʻrganing va boshqaring</translation> <translation id="5193988420012215838">Vaqtinchalik xotiraga nusxalandi</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">Saytlar tomonidan tavsiya etilgan reklamalar haqida</translation> <translation id="768618399695552958">Siz kiradigan ayrim sahifalar oldindan yuklanadi. Agar bu kirish Google platformasidan saytdan turib amalga oshirilsa, u Google serverlari orqali oldindan yuklanadi.</translation> <translation id="7691043218961417207">Kuzatish uchun kontent toping</translation> +<translation id="7697383401610880082">Surish dastagi</translation> <translation id="7698359219371678927"><ph name="APP_NAME" /> orqali e-pochta yaratish</translation> <translation id="7707922173985738739">Mobil internetdan foydalanish</translation> <translation id="7709094866268987903">Siz olib tashlagan qiziqishlar shu yerda chiqadi</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 60f9420..0643806 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
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">Bạn đang theo dõi <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">Để quản lý mật khẩu, hãy cập nhật Dịch vụ Google Play</translation> <translation id="1506061864768559482">Công cụ tìm kiếm</translation> +<translation id="1508960385613684700">Hướng dẫn về quyền riêng tư <ph name="BEGIN_NEW" />Mới<ph name="END_NEW" /></translation> <translation id="1513352483775369820">Dấu trang và lịch sử web</translation> <translation id="1513814250881909472">Đồng bộ hoá để lấy thẻ từ thiết bị khác</translation> <translation id="1513858653616922153">Xóa mật khẩu</translation> @@ -161,6 +162,7 @@ <translation id="1910950723001426294">Danh sách các lựa chọn chia sẻ đã đóng.</translation> <translation id="1919130412786645364">Cho phép đăng nhập vào Chrome</translation> <translation id="1922362554271624559">Ngôn ngữ đề xuất</translation> +<translation id="1924255092154549435">Thẻ được mở rộng</translation> <translation id="1925021887439448749">Nhập địa chỉ web tùy chỉnh</translation> <translation id="1928696683969751773">Bản cập nhật</translation> <translation id="19288952978244135">Mở lại Chrome.</translation> @@ -769,6 +771,7 @@ <translation id="5161254044473106830">Cần có tiêu đề</translation> <translation id="5170568018924773124">Hiển thị trong thư mục</translation> <translation id="5171045022955879922">Tìm kiếm hoặc nhập URL</translation> +<translation id="5174700554036517242">Thẻ đã trở về chiều cao ban đầu</translation> <translation id="5184329579814168207">Mở trong Chrome</translation> <translation id="5191251636205085390">Tìm hiểu và kiểm soát các công nghệ mới giúp thay thế cookie của bên thứ ba</translation> <translation id="5193988420012215838">Đã sao chép vào bảng nhớ tạm</translation> @@ -1251,6 +1254,7 @@ <translation id="7686086654630106285">Tìm hiểu thêm về quảng cáo do trang web đề xuất</translation> <translation id="768618399695552958">Một số trang bạn truy cập đã được tải trước. Những trang này có thể được tải trước thông qua các máy chủ của Google khi được liên kết bởi một trang web tạo bằng Google Sites.</translation> <translation id="7691043218961417207">Khám phá nội dung mà bạn có thể theo dõi</translation> +<translation id="7697383401610880082">Nút kéo</translation> <translation id="7698359219371678927">Tạo email trong <ph name="APP_NAME" /></translation> <translation id="7707922173985738739">Sử dụng dữ liệu di động</translation> <translation id="7709094866268987903">Các mối quan tâm bạn đã xoá sẽ xuất hiện ở đây</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 1b7ae3a..493ec91f 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
@@ -107,6 +107,7 @@ <translation id="1493287004536771723">您已关注 <ph name="SITE_NAME" /></translation> <translation id="1502010315804028179">如需管理您的密码,请更新 Google Play 服务</translation> <translation id="1506061864768559482">搜索引擎</translation> +<translation id="1508960385613684700">隐私保护指南<ph name="BEGIN_NEW" />新<ph name="END_NEW" /></translation> <translation id="1513352483775369820">书签和网络历史记录</translation> <translation id="1513814250881909472">同步即可查看您在其他设备上打开的标签页</translation> <translation id="1513858653616922153">删除密码</translation> @@ -1517,7 +1518,7 @@ <translation id="9022774213089566801">经常访问</translation> <translation id="9022871169049522985">网站和广告主可以衡量其广告的效果</translation> <translation id="9041669420854607037">{FILE_COUNT,plural, =1{# 个视频}other{# 个视频}}</translation> -<translation id="9042893549633094279">隐私设置和安全性</translation> +<translation id="9042893549633094279">隐私和安全</translation> <translation id="9050666287014529139">密码</translation> <translation id="9055497320631373736">已将此网站恢复为能够建议广告的潜在网站</translation> <translation id="9063523880881406963">关闭“请求切换到桌面版网站”</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb index 69a540f..fb7cf41 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -306,7 +306,7 @@ <translation id="2718846868787000099">為了要以您偏好的語言顯示內容,您瀏覽的網站將能看到偏好設定</translation> <translation id="2722945394406572875">閂咗私隱沙箱提示</translation> <translation id="2723001399770238859">音效檔案</translation> -<translation id="2760989362628427051">在裝置啟用深色主題背景或開啟「省電模式」後啟用深色主題背景</translation> +<translation id="2760989362628427051">在裝置啟用深色主題背景或開啟「慳電模式」後啟用深色主題背景</translation> <translation id="2762000892062317888">剛剛</translation> <translation id="276969039800130567">以 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入。</translation> <translation id="2776236159752647997">如需更多與私隱權、安全性和資料收集相關的設定,請參閱 <ph name="BEGIN_LINK" />Google 服務<ph name="END_LINK" /></translation> @@ -1229,7 +1229,7 @@ <translation id="757855969265046257">{FILES,plural, =1{已下載 <ph name="FILES_DOWNLOADED_ONE" /> 個檔案}other{已下載 <ph name="FILES_DOWNLOADED_MANY" /> 個檔案}}</translation> <translation id="7581273696622423628">填寫問卷調查</translation> <translation id="7583262514280211622">這裡會顯示您的閱讀清單</translation> -<translation id="7588219262685291874">在裝置開啟「省電模式」後啟用深色主題背景</translation> +<translation id="7588219262685291874">在裝置開啟「慳電模式」後啟用深色主題背景</translation> <translation id="7594687499944811403">讓 <ph name="EMBEDDED_ORIGIN" /> 為 <ph name="TOP_ORIGIN" /> 驗證您的身份</translation> <translation id="7596558890252710462">作業系統</translation> <translation id="7605594153474022051">同步處理功能無法正常運作</translation>
diff --git a/chrome/browser/ui/ash/glanceables/glanceables_tasks_client_impl_unittest.cc b/chrome/browser/ui/ash/glanceables/glanceables_tasks_client_impl_unittest.cc index c7c74fc..a62ae8f 100644 --- a/chrome/browser/ui/ash/glanceables/glanceables_tasks_client_impl_unittest.cc +++ b/chrome/browser/ui/ash/glanceables/glanceables_tasks_client_impl_unittest.cc
@@ -468,7 +468,7 @@ EXPECT_EQ(tasks->GetItemAt(0)->id, "task-1"); } -TEST_F(GlanceablesTasksClientImplTest, MarkAsCompletedOnHttpError) { +TEST_F(GlanceablesTasksClientImplTest, DISABLED_MarkAsCompletedOnHttpError) { EXPECT_CALL( request_handler(), HandleRequest(Field(&HttpRequest::method, Eq(HttpMethod::METHOD_GET))))
diff --git a/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt_helper.cc b/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt_helper.cc index d4a5290..51468f94 100644 --- a/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt_helper.cc +++ b/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt_helper.cc
@@ -30,12 +30,13 @@ if (!profile || !profile->IsRegularProfile()) return PrivacySandboxService::PromptType::kNone; - auto* privacy_sandbox_serivce = + auto* privacy_sandbox_service = PrivacySandboxServiceFactory::GetForProfile(profile); - if (!privacy_sandbox_serivce) + if (!privacy_sandbox_service) { return PrivacySandboxService::PromptType::kNone; + } - return privacy_sandbox_serivce->GetRequiredPromptType(); + return privacy_sandbox_service->GetRequiredPromptType(); } #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -126,10 +127,11 @@ // If a Privacy Sandbox prompt already exists for this browser, do not attempt // to open another one. - if (auto* privacy_sandbox_serivce = + if (auto* privacy_sandbox_service = PrivacySandboxServiceFactory::GetForProfile(profile())) { - if (privacy_sandbox_serivce->IsPromptOpenForBrowser(browser)) + if (privacy_sandbox_service->IsPromptOpenForBrowser(browser)) { return; + } } const bool is_window_too_small = !CanWindowFitPrivacySandboxPrompt(browser);
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc index 1bd7126..8b53c74 100644 --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc
@@ -60,7 +60,7 @@ "EvDetailsInPageInfo", base::FEATURE_ENABLED_BY_DEFAULT); -#if !defined(ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING) +#if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING) // Enables showing the "Get the most out of Chrome" section in settings. BASE_FEATURE(kGetTheMostOutOfChrome, "GetTheMostOutOfChrome",
diff --git a/chrome/browser/ui/ui_features.h b/chrome/browser/ui/ui_features.h index 57accbc..96d57a48 100644 --- a/chrome/browser/ui/ui_features.h +++ b/chrome/browser/ui/ui_features.h
@@ -43,7 +43,7 @@ BASE_DECLARE_FEATURE(kEvDetailsInPageInfo); -#if !defined(ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING) +#if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING) BASE_DECLARE_FEATURE(kGetTheMostOutOfChrome); #endif
diff --git a/chrome/browser/ui/views/privacy_sandbox/privacy_sandbox_dialog_view.cc b/chrome/browser/ui/views/privacy_sandbox/privacy_sandbox_dialog_view.cc index dde4b89..8f7ffce 100644 --- a/chrome/browser/ui/views/privacy_sandbox/privacy_sandbox_dialog_view.cc +++ b/chrome/browser/ui/views/privacy_sandbox/privacy_sandbox_dialog_view.cc
@@ -71,9 +71,9 @@ class PrivacySandboxDialogDelegate : public views::DialogDelegate { public: explicit PrivacySandboxDialogDelegate(Browser* browser) : browser_(browser) { - if (auto* privacy_sandbox_serivce = + if (auto* privacy_sandbox_service = PrivacySandboxServiceFactory::GetForProfile(browser->profile())) { - privacy_sandbox_serivce->PromptOpenedForBrowser(browser); + privacy_sandbox_service->PromptOpenedForBrowser(browser); } SetCloseCallback(base::BindOnce(&PrivacySandboxDialogDelegate::OnClose, base::Unretained(this))); @@ -88,9 +88,9 @@ } void OnClose() { - if (auto* privacy_sandbox_serivce = + if (auto* privacy_sandbox_service = PrivacySandboxServiceFactory::GetForProfile(browser_->profile())) { - privacy_sandbox_serivce->PromptClosedForBrowser(browser_); + privacy_sandbox_service->PromptClosedForBrowser(browser_); } }
diff --git a/chrome/browser/ui/webui/ash/sync/os_sync_handler_unittest.cc b/chrome/browser/ui/webui/ash/sync/os_sync_handler_unittest.cc index db2a560..84d3fcc 100644 --- a/chrome/browser/ui/webui/ash/sync/os_sync_handler_unittest.cc +++ b/chrome/browser/ui/webui/ash/sync/os_sync_handler_unittest.cc
@@ -232,7 +232,7 @@ // Tests that transport state signals not related to user intention to // configure sync don't trigger sync engine start. TEST_F(OsSyncHandlerTest, OnlyStartEngineWhenConfiguringSync) { - user_settings_->SetSyncRequested(false); + user_settings_->ClearSyncRequested(); sync_service_->SetTransportState(SyncService::TransportState::INITIALIZING); NotifySyncStateChanged(); EXPECT_FALSE(user_settings_->IsSyncRequested());
diff --git a/chrome/browser/ui/webui/extensions/extension_icon_source.h b/chrome/browser/ui/webui/extensions/extension_icon_source.h index 0d389c32..a537f0cb 100644 --- a/chrome/browser/ui/webui/extensions/extension_icon_source.h +++ b/chrome/browser/ui/webui/extensions/extension_icon_source.h
@@ -147,7 +147,7 @@ // Removes temporary data associated with |request_id|. void ClearData(int request_id); - raw_ptr<Profile> profile_; + raw_ptr<Profile, DanglingUntriaged> profile_; // Maps tracker ids to request ids. std::map<int, int> tracker_map_;
diff --git a/chrome/browser/ui/webui/family_link_user_internals/family_link_user_internals_message_handler.cc b/chrome/browser/ui/webui/family_link_user_internals/family_link_user_internals_message_handler.cc index 97b23fb..8494b8f 100644 --- a/chrome/browser/ui/webui/family_link_user_internals/family_link_user_internals_message_handler.cc +++ b/chrome/browser/ui/webui/family_link_user_internals/family_link_user_internals_message_handler.cc
@@ -202,7 +202,6 @@ GetSupervisedUserService()->GetURLFilter(); base::Value::List* section_filter = AddSection(§ion_list, "Filter"); - AddSectionEntry(section_filter, "Denylist active", filter->HasDenylist()); AddSectionEntry(section_filter, "Online checks active", filter->HasAsyncURLChecker()); AddSectionEntry(
diff --git a/chrome/browser/ui/webui/new_tab_page/untrusted_source.h b/chrome/browser/ui/webui/new_tab_page/untrusted_source.h index 7e6433c..c996cab 100644 --- a/chrome/browser/ui/webui/new_tab_page/untrusted_source.h +++ b/chrome/browser/ui/webui/new_tab_page/untrusted_source.h
@@ -85,7 +85,7 @@ base::ScopedObservation<OneGoogleBarService, OneGoogleBarServiceObserver> one_google_bar_service_observation_{this}; absl::optional<base::TimeTicks> one_google_bar_load_start_time_; - raw_ptr<Profile> profile_; + raw_ptr<Profile, DanglingUntriaged> profile_; }; #endif // CHROME_BROWSER_UI_WEBUI_NEW_TAB_PAGE_UNTRUSTED_SOURCE_H_
diff --git a/chrome/browser/ui/webui/ntp/new_tab_ui.h b/chrome/browser/ui/webui/ntp/new_tab_ui.h index 321e7ae5..19335ff 100644 --- a/chrome/browser/ui/webui/ntp/new_tab_ui.h +++ b/chrome/browser/ui/webui/ntp/new_tab_ui.h
@@ -71,7 +71,7 @@ private: // Pointer back to the original profile. - raw_ptr<Profile> profile_; + raw_ptr<Profile, DanglingUntriaged> profile_; }; void OnShowBookmarkBarChanged();
diff --git a/chrome/browser/ui/webui/password_manager/password_manager_ui.cc b/chrome/browser/ui/webui/password_manager/password_manager_ui.cc index 9f2c1f6..27412c9f 100644 --- a/chrome/browser/ui/webui/password_manager/password_manager_ui.cc +++ b/chrome/browser/ui/webui/password_manager/password_manager_ui.cc
@@ -171,6 +171,10 @@ {"moreActions", IDS_PASSWORD_MANAGER_UI_MORE_ACTIONS}, {"moreActionsAriaDescription", IDS_PASSWORD_MANAGER_UI_MORE_ACTIONS_ARIA_DESCRIPTION}, + {"movePasswordsButton", IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_BUTTON}, + {"movePasswordsDescription", + IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_DESCRIPTION}, + {"movePasswordsTitle", IDS_PASSWORD_MANAGER_UI_MOVE_PASSWORDS_TITLE}, {"muteCompromisedPassword", IDS_PASSWORD_MANAGER_UI_MUTE_ISSUE}, {"mutedCompromisedCredentials", IDS_PASSWORD_MANAGER_UI_MUTED_COMPROMISED_PASSWORDS},
diff --git a/chrome/browser/ui/webui/settings/people_handler.cc b/chrome/browser/ui/webui/settings/people_handler.cc index 6ec86161..88f2460e 100644 --- a/chrome/browser/ui/webui/settings/people_handler.cc +++ b/chrome/browser/ui/webui/settings/people_handler.cc
@@ -594,7 +594,7 @@ // Sync was set up but then was reset via the dashboard. This also pokes the // SyncService to start up immediately, i.e. bypass deferred startup. if (service) - service->GetUserSettings()->SetSyncRequested(true); + service->GetUserSettings()->SetSyncRequested(); GetLoginUIService()->SetLoginUI(this); @@ -1078,7 +1078,7 @@ // Note that this has to happen *before* checking if first-time setup is // already marked complete, because on some platforms (e.g. ChromeOS) that // gets set automatically. - service->GetUserSettings()->SetSyncRequested(true); + service->GetUserSettings()->SetSyncRequested(); // If the first-time setup is already complete, there's nothing else to do. if (service->GetUserSettings()->IsFirstSetupComplete())
diff --git a/chrome/browser/ui/webui/settings/people_handler_unittest.cc b/chrome/browser/ui/webui/settings/people_handler_unittest.cc index 989fbb7..1fc58dde 100644 --- a/chrome/browser/ui/webui/settings/people_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/people_handler_unittest.cc
@@ -419,8 +419,7 @@ .WillByDefault(Return(false)); ON_CALL(*mock_sync_service_, GetTransportState()) .WillByDefault(Return(syncer::SyncService::TransportState::INITIALIZING)); - EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), - SetSyncRequested(true)); + EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), SetSyncRequested()); // We're simulating a user setting up sync, which would cause the engine to // kick off initialization, but not download user data types. The sync @@ -457,8 +456,7 @@ ON_CALL(*mock_sync_service_, GetTransportState()) .WillByDefault( Return(syncer::SyncService::TransportState::START_DEFERRED)); - EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), - SetSyncRequested(true)); + EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), SetSyncRequested()); SetDefaultExpectationsForConfigPage(); handler_->HandleShowSyncSetupUI(base::Value::List()); @@ -499,8 +497,7 @@ EXPECT_CALL(*mock_sync_service_, GetTransportState()) .WillOnce(Return(syncer::SyncService::TransportState::INITIALIZING)) .WillRepeatedly(Return(syncer::SyncService::TransportState::ACTIVE)); - EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), - SetSyncRequested(true)); + EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), SetSyncRequested()); SetDefaultExpectationsForConfigPage(); handler_->HandleShowSyncSetupUI(base::Value::List()); @@ -530,10 +527,9 @@ .WillByDefault(Return(syncer::SyncService::TransportState::DISABLED)); // Attempting to open the setup UI should restart sync. - EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), - SetSyncRequested(true)) - .WillOnce([&](bool) { - // SetSyncRequested(true) clears DISABLE_REASON_USER_CHOICE, and + EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), SetSyncRequested()) + .WillOnce([&]() { + // SetSyncRequested() clears DISABLE_REASON_USER_CHOICE, and // immediately starts initializing the engine. ON_CALL(*mock_sync_service_, GetDisableReasons()) .WillByDefault(Return(syncer::SyncService::DisableReasonSet())); @@ -563,10 +559,9 @@ .WillByDefault(Return(syncer::SyncService::TransportState::ACTIVE)); // Attempting to open the setup UI should re-enable sync-the-feature. - EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), - SetSyncRequested(true)) - .WillOnce([&](bool) { - // SetSyncRequested(true) clears DISABLE_REASON_USER_CHOICE. Since the + EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), SetSyncRequested()) + .WillOnce([&]() { + // SetSyncRequested() clears DISABLE_REASON_USER_CHOICE. Since the // engine is already running, it just gets reconfigured. ON_CALL(*mock_sync_service_, GetDisableReasons()) .WillByDefault(Return(syncer::SyncService::DisableReasonSet())); @@ -590,8 +585,7 @@ CreatePeopleHandler(); ON_CALL(*mock_sync_service_, GetTransportState()) .WillByDefault(Return(syncer::SyncService::TransportState::INITIALIZING)); - EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), - SetSyncRequested(true)) + EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), SetSyncRequested()) .Times(0); NotifySyncStateChanged(); } @@ -1151,10 +1145,9 @@ // Now the user confirms sync again. This should set both the sync-requested // and the first-setup-complete bits. - EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), - SetSyncRequested(true)) - .WillOnce([&](bool) { - // SetSyncRequested(true) clears DISABLE_REASON_USER_CHOICE, and + EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), SetSyncRequested()) + .WillOnce([&]() { + // SetSyncRequested() clears DISABLE_REASON_USER_CHOICE, and // immediately starts initializing the engine. ON_CALL(*mock_sync_service_, GetDisableReasons()) .WillByDefault(Return(syncer::SyncService::DisableReasonSet())); @@ -1219,10 +1212,9 @@ // Now the user confirms sync again. This should set the sync-requested bit // and (if it wasn't automatically set above already) also the // first-setup-complete bit. - EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), - SetSyncRequested(true)) - .WillOnce([&](bool) { - // SetSyncRequested(true) clears DISABLE_REASON_USER_CHOICE, and + EXPECT_CALL(*mock_sync_service_->GetMockUserSettings(), SetSyncRequested()) + .WillOnce([&]() { + // SetSyncRequested() clears DISABLE_REASON_USER_CHOICE, and // immediately starts initializing the engine. ON_CALL(*mock_sync_service_, GetDisableReasons()) .WillByDefault(Return(syncer::SyncService::DisableReasonSet()));
diff --git a/chrome/browser/ui/webui/signin/turn_sync_on_helper.cc b/chrome/browser/ui/webui/signin/turn_sync_on_helper.cc index 26859163..2692baa 100644 --- a/chrome/browser/ui/webui/signin/turn_sync_on_helper.cc +++ b/chrome/browser/ui/webui/signin/turn_sync_on_helper.cc
@@ -502,7 +502,7 @@ // progress. // TODO(https://crbug.com/811211): Remove this handle. sync_blocker_ = sync_service->GetSetupInProgressHandle(); - sync_service->GetUserSettings()->SetSyncRequested(true); + sync_service->GetUserSettings()->SetSyncRequested(); // For managed users and users on enterprise machines that might have cloud // policies, it is important to wait until sync is initialized so that the
diff --git a/chrome/browser/ui/webui/sync_internals/sync_internals_message_handler.cc b/chrome/browser/ui/webui/sync_internals/sync_internals_message_handler.cc index 47ad941..ccc0390 100644 --- a/chrome/browser/ui/webui/sync_internals/sync_internals_message_handler.cc +++ b/chrome/browser/ui/webui/sync_internals/sync_internals_message_handler.cc
@@ -260,7 +260,7 @@ return; } - service->GetUserSettings()->SetSyncRequested(true); + service->GetUserSettings()->SetSyncRequested(); // If the service was previously stopped via StopAndClear(), then the // "first-setup-complete" bit was also cleared, and now the service wouldn't // fully start up. So set that too. @@ -277,7 +277,7 @@ return; } - service->GetUserSettings()->SetSyncRequested(false); + service->GetUserSettings()->ClearSyncRequested(); } void SyncInternalsMessageHandler::HandleRequestStopClearData(
diff --git a/chrome/browser/ui/webui/theme_source.h b/chrome/browser/ui/webui/theme_source.h index 25cd9be..be3cd458 100644 --- a/chrome/browser/ui/webui/theme_source.h +++ b/chrome/browser/ui/webui/theme_source.h
@@ -60,7 +60,7 @@ content::URLDataSource::GotDataCallback callback); // The profile this object was initialized with. - raw_ptr<Profile> profile_; + raw_ptr<Profile, DanglingUntriaged> profile_; // Whether this source services chrome-unstrusted://theme. bool serve_untrusted_;
diff --git a/chrome/browser/unified_consent/unified_consent_browsertest.cc b/chrome/browser/unified_consent/unified_consent_browsertest.cc index 9526eb3f..e46b3611 100644 --- a/chrome/browser/unified_consent/unified_consent_browsertest.cc +++ b/chrome/browser/unified_consent/unified_consent_browsertest.cc
@@ -45,7 +45,7 @@ sync_blocker_ = GetSyncService(client_id)->GetSetupInProgressHandle(); ASSERT_TRUE(GetClient(client_id)->SignInPrimaryAccount()); - GetSyncService(client_id)->GetUserSettings()->SetSyncRequested(true); + GetSyncService(client_id)->GetUserSettings()->SetSyncRequested(); ASSERT_TRUE(GetClient(client_id)->AwaitEngineInitialization()); }
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 2235213..6f8104f5 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1681365349-a1c645037b3087e9ed029de4dff0c7b97146f8b0.profdata +chrome-linux-main-1681386955-f0512a98defae96d024b992245588a2bcf3f03a7.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 54e21a6..d6a1e10 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1681372596-7988930414c3a1348e3b39aa217bc6dfc18a59aa.profdata +chrome-mac-arm-main-1681394130-10b03420552d3a7e771d382d6e276bfe2e51e1f6.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 5f5e5cf..129b030 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1681343974-bcdd422afba71c878998d68ac19614e1d25561b8.profdata +chrome-mac-main-1681386955-633432fea5f3f479a217505b0fb5a28cb4c081af.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 67c39c5..abb63da2 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1681343974-c76ffa8d693c3d71cec1f50665331390d9a5e5dd.profdata +chrome-win32-main-1681376373-fbe671e0f7d99283c72bb1c3dc3f3820de4f8a59.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 17f7b09..9e26dec7 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1681365349-464daa767d91bc77874f79e81cfb95a3660efa28.profdata +chrome-win64-main-1681386955-d6d720bb8e09c04489f197f8c5d4f584c48f89cf.profdata
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 9fedcfa3..9554fef 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc
@@ -560,6 +560,11 @@ // Starts the stack sampling profiler in the child process. const char kStartStackProfiler[] = "start-stack-profiler"; +// Starts the stack sampling profiler in the child process with only periodic +// profiling enabled, i.e. no startup profiling. +const char kStartStackProfilerPeriodicOnly[] = + "start-stack-profiler-periodic-only"; + // Browser test mode for the |kStartStackProfiler| switch. Limits the profile // durations to be significantly less than the test timeout. On ChromeOS, // forces the stack sampling profiler to run on all processes as well.
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index 704b9dd..7fd54c7 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h
@@ -172,6 +172,7 @@ extern const char kSSLVersionTLSv13[]; extern const char kStartMaximized[]; extern const char kStartStackProfiler[]; +extern const char kStartStackProfilerPeriodicOnly[]; extern const char kStartStackProfilerBrowserTest[]; extern const char kStoragePressureNotificationInterval[]; extern const char kSupervisedUserId[];
diff --git a/chrome/common/profiler/thread_profiler_configuration.cc b/chrome/common/profiler/thread_profiler_configuration.cc index d4bd05ba..f86bbd82 100644 --- a/chrome/common/profiler/thread_profiler_configuration.cc +++ b/chrome/common/profiler/thread_profiler_configuration.cc
@@ -69,7 +69,8 @@ bool ThreadProfilerConfiguration::IsProfilerEnabledForCurrentProcess() const { if (const ChildProcessConfiguration* child_process_configuration = absl::get_if<ChildProcessConfiguration>(&configuration_)) { - return *child_process_configuration == kChildProcessProfileEnabled; + return *child_process_configuration == kChildProcessProfileEnabled || + *child_process_configuration == kChildProcessPeriodicOnly; } const absl::optional<VariationGroup>& variation_group = @@ -157,7 +158,12 @@ switches::kStartStackProfiler, switches::kStartStackProfilerBrowserTest); } else { - child_process_command_line->AppendSwitch(switches::kStartStackProfiler); + if (*variation_group == kProfilePeriodicOnly) { + child_process_command_line->AppendSwitch( + switches::kStartStackProfilerPeriodicOnly); + } else { + child_process_command_line->AppendSwitch(switches::kStartStackProfiler); + } } } @@ -253,9 +259,13 @@ // In a child process the |kStartStackProfiler| switch passed by the // browser process determines whether the profiler is enabled for the // process. - return command_line.HasSwitch(switches::kStartStackProfiler) - ? kChildProcessProfileEnabled - : kChildProcessProfileDisabled; + if (command_line.HasSwitch(switches::kStartStackProfilerPeriodicOnly)) { + return kChildProcessPeriodicOnly; + } else if (command_line.HasSwitch(switches::kStartStackProfiler)) { + return kChildProcessProfileEnabled; + } else { + return kChildProcessProfileDisabled; + } } // static
diff --git a/chrome/common/profiler/thread_profiler_configuration.h b/chrome/common/profiler/thread_profiler_configuration.h index 60e0854..f3bca97 100644 --- a/chrome/common/profiler/thread_profiler_configuration.h +++ b/chrome/common/profiler/thread_profiler_configuration.h
@@ -97,6 +97,7 @@ enum ChildProcessConfiguration { kChildProcessProfileDisabled, kChildProcessProfileEnabled, + kChildProcessPeriodicOnly, }; // The configuration state for the current process, browser or child.
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 81e5355..9768703 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -5582,7 +5582,6 @@ "../browser/net/dns_probe_runner_unittest.cc", "../browser/net/dns_probe_service_factory_unittest.cc", "../browser/net/explicitly_allowed_network_ports_policy_handler_unittest.cc", - "../browser/net/file_downloader_unittest.cc", "../browser/net/net_error_tab_helper_unittest.cc", "../browser/net/probe_message_unittest.cc", "../browser/net/secure_dns_config_unittest.cc",
diff --git a/chrome/test/data/extensions/api_test/preference/unsupported_in_ash/manifest.json b/chrome/test/data/extensions/api_test/preference/unsupported_in_ash/manifest.json new file mode 100644 index 0000000..0f27eb5 --- /dev/null +++ b/chrome/test/data/extensions/api_test/preference/unsupported_in_ash/manifest.json
@@ -0,0 +1,11 @@ +{ + "name" : "Lacros Extension Preferences API Test Extension", + "version" : "0.1", + "manifest_version": 2, + "description" : "Test extension to verify the behaviour of new extension controlled prefs against Ash-Lacros version skew", + "permissions": [ "accessibilityFeatures.read", "accessibilityFeatures.modify"], + "background": { + "scripts": ["test.js"], + "persistent": true + } +}
diff --git a/chrome/test/data/extensions/api_test/preference/unsupported_in_ash/test.js b/chrome/test/data/extensions/api_test/preference/unsupported_in_ash/test.js new file mode 100644 index 0000000..69db9f7 --- /dev/null +++ b/chrome/test/data/extensions/api_test/preference/unsupported_in_ash/test.js
@@ -0,0 +1,32 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Preferences API test for extension controlled prefs where the underlying +// prefs should live in Ash but are not supported in the current Ash version due +// to version skew. These tests make use of the crosapi to set the value in Ash. +// Thus, they run as lacros_chrome_browsertests. +// Run with lacros_chrome_browsertests_run_in_series \ +// --gtest_filter=*/ExtensionPreferenceApiUnsupportedInAshBrowserTest.*/* +// Based on the "standard" extension test. +chrome.test.runTests([ + function getPreference() { + chrome.accessibilityFeatures.autoclick.get({}, (value) => { + chrome.test.assertEq(null, value); + chrome.test.assertEq( + chrome.runtime.lastError.message, + 'The browser preference is not supported.'); + chrome.test.succeed(); + }); + }, + function setPreference() { + chrome.accessibilityFeatures.autoclick.set({value: true}, () => { + chrome.test.succeed(); + }); + }, + function clearPreference() { + chrome.accessibilityFeatures.autoclick.clear({}, () => { + chrome.test.succeed(); + }); + }, +]);
diff --git a/chrome/test/data/webui/password_manager/BUILD.gn b/chrome/test/data/webui/password_manager/BUILD.gn index 02baef0..cec4caa 100644 --- a/chrome/test/data/webui/password_manager/BUILD.gn +++ b/chrome/test/data/webui/password_manager/BUILD.gn
@@ -15,6 +15,7 @@ "checkup_section_test.ts", "edit_password_dialog_test.ts", "extension_controlled_icon_test.ts", + "move_passwords_dialog_test.ts", "password_details_card_test.ts", "password_details_section_test.ts", "password_manager_app_test.ts",
diff --git a/chrome/test/data/webui/password_manager/move_passwords_dialog_test.ts b/chrome/test/data/webui/password_manager/move_passwords_dialog_test.ts new file mode 100644 index 0000000..8b1aa6b --- /dev/null +++ b/chrome/test/data/webui/password_manager/move_passwords_dialog_test.ts
@@ -0,0 +1,50 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'chrome://password-manager/password_manager.js'; + +import {PasswordManagerImpl, SyncBrowserProxyImpl} from 'chrome://password-manager/password_manager.js'; +import {assertEquals} from 'chrome://webui-test/chai_assert.js'; +import {flushTasks} from 'chrome://webui-test/polymer_test_util.js'; + +import {TestPasswordManagerProxy} from './test_password_manager_proxy.js'; +import {TestSyncBrowserProxy} from './test_sync_browser_proxy.js'; +import {createAffiliatedDomain, createPasswordEntry} from './test_util.js'; + +suite('AddPasswordDialogTest', function() { + let passwordManager: TestPasswordManagerProxy; + let syncProxy: TestSyncBrowserProxy; + + setup(function() { + document.body.innerHTML = window.trustedTypes!.emptyHTML; + passwordManager = new TestPasswordManagerProxy(); + PasswordManagerImpl.setInstance(passwordManager); + syncProxy = new TestSyncBrowserProxy(); + SyncBrowserProxyImpl.setInstance(syncProxy); + return flushTasks(); + }); + + test('content correctly displayed', async function() { + const password = + createPasswordEntry({id: 0, username: 'user1', password: 'sTr0nGp@@s'}); + password.affiliatedDomains = [ + createAffiliatedDomain('test.com'), + createAffiliatedDomain('m.test.com'), + ]; + + syncProxy.accountInfo = { + email: 'test@gmail.com', + avatarImage: 'chrome://image-url/', + }; + + const dialog = document.createElement('move-passwords-dialog'); + dialog.passwords = [password]; + document.body.appendChild(dialog); + await flushTasks(); + + assertEquals( + syncProxy.accountInfo.email, dialog.$.accountEmail.textContent!.trim()); + assertEquals(syncProxy.accountInfo.avatarImage, dialog.$.avatar.src); + }); +});
diff --git a/chrome/test/data/webui/password_manager/password_manager_browsertest.js b/chrome/test/data/webui/password_manager/password_manager_browsertest.js index c599b44a..4e4e80e 100644 --- a/chrome/test/data/webui/password_manager/password_manager_browsertest.js +++ b/chrome/test/data/webui/password_manager/password_manager_browsertest.js
@@ -31,6 +31,7 @@ ['CheckupDetails', 'checkup_details_section_test.js'], ['EditPassword', 'edit_password_dialog_test.js'], ['ExtensionControlledIcon', 'extension_controlled_icon_test.js'], + ['MovePasswordsDialog', 'move_passwords_dialog_test.js'], ['PasswordCard', 'password_details_card_test.js'], ['PasswordDetails', 'password_details_section_test.js'], ['PasswordsExporter', 'passwords_exporter_test.js'],
diff --git a/chrome/test/data/webui/password_manager/passwords_section_test.ts b/chrome/test/data/webui/password_manager/passwords_section_test.ts index b42ad3e..56855b1 100644 --- a/chrome/test/data/webui/password_manager/passwords_section_test.ts +++ b/chrome/test/data/webui/password_manager/passwords_section_test.ts
@@ -441,4 +441,28 @@ assertFalse(isVisible(section.$.importPasswords)); }); + + test('clicking move passwords opens move passwords dialog', async function() { + passwordManager.data.isOptedInAccountStorage = true; + passwordManager.data.groups = [createCredentialGroup({ + name: 'test.com', + credentials: [createPasswordEntry( + {username: 'user', id: 0, inProfileStore: true})], + })]; + syncProxy.syncInfo = { + isEligibleForAccountStorage: true, + }; + + const section = await createPasswordsSection(); + + assertTrue(isVisible(section.$.movePasswords)); + + section.$.movePasswords.click(); + await flushTasks(); + + const movdeDialog = + section.shadowRoot!.querySelector('move-passwords-dialog'); + assertTrue(!!movdeDialog); + assertTrue(movdeDialog.$.dialog.open); + }); });
diff --git a/chromeos/ash/components/nearby/presence/BUILD.gn b/chromeos/ash/components/nearby/presence/BUILD.gn index 7d17b33..1fdabd7 100644 --- a/chromeos/ash/components/nearby/presence/BUILD.gn +++ b/chromeos/ash/components/nearby/presence/BUILD.gn
@@ -20,6 +20,7 @@ "//ash/public/cpp", "//base", "//chrome/browser/profiles:profile", + "//chromeos/ash/components/nearby/presence/credentials", "//chromeos/ash/components/nearby/presence/proto", "//components/keyed_service/content:content", "//components/keyed_service/core", @@ -40,6 +41,7 @@ "//base", "//base/test:test_support", "//chromeos/ash/components/nearby/presence:presence", + "//chromeos/ash/components/nearby/presence/credentials:unit_tests", "//mojo/public/cpp/bindings:bindings", "//testing/gtest", ]
diff --git a/chromeos/ash/components/nearby/presence/credentials/BUILD.gn b/chromeos/ash/components/nearby/presence/credentials/BUILD.gn new file mode 100644 index 0000000..7901448 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/BUILD.gn
@@ -0,0 +1,67 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/chromeos/ui_mode.gni") +import("//testing/test.gni") + +assert(is_chromeos_ash, "Non-Chrome-OS builds must not depend on //ash") + +static_library("credentials") { + sources = [ + "local_device_data_provider.h", + "local_device_data_provider_impl.cc", + "local_device_data_provider_impl.h", + "nearby_presence_server_client.h", + "nearby_presence_server_client_impl.cc", + "nearby_presence_server_client_impl.h", + "proto_conversions.cc", + "proto_conversions.h", + ] + + deps = [ + "//chromeos/ash/components/nearby/common/client", + "//chromeos/ash/components/nearby/presence/proto", + "//components/prefs", + "//components/signin/public/identity_manager", + "//net", + "//net/traffic_annotation", + "//services/network/public/cpp", + "//services/network/public/mojom", + "//url", + ] + + public_deps = [ + "//third_party/nearby:connections_credential_proto", + "//third_party/nearby:connections_metadata_proto", + ] +} + +source_set("unit_tests") { + testonly = true + + sources = [ + "local_device_data_provider_impl_unittest.cc", + "nearby_presence_server_client_impl_unittest.cc", + "proto_conversions_unittest.cc", + ] + + deps = [ + ":credentials", + "//base", + "//base/test:test_support", + "//chromeos/ash/components/nearby/common/client", + "//chromeos/ash/components/nearby/presence/proto", + "//components/prefs:test_support", + "//components/signin/public/identity_manager:test_support", + "//net", + "//net/traffic_annotation:test_support", + "//services/network:test_support", + "//testing/gtest", + ] + + public_deps = [ + "//third_party/nearby:connections_credential_proto", + "//third_party/nearby:connections_metadata_proto", + ] +}
diff --git a/chromeos/ash/components/nearby/presence/credentials/DEPS b/chromeos/ash/components/nearby/presence/credentials/DEPS new file mode 100644 index 0000000..806cb80 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/DEPS
@@ -0,0 +1,4 @@ +include_rules = [ + "+components/signin/public", + "+third_party/nearby", +]
diff --git a/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider.h b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider.h new file mode 100644 index 0000000..1150e13e --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider.h
@@ -0,0 +1,54 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_LOCAL_DEVICE_DATA_PROVIDER_H_ +#define CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_LOCAL_DEVICE_DATA_PROVIDER_H_ + +#include <memory> +#include <string> + +namespace nearby::internal { +class SharedCredential; +class Metadata; +} // namespace nearby::internal + +namespace ash::nearby::presence { + +// Provides data for the local device: manages local device's shared +// credentials, account information, and constructs the Metadata object. +class LocalDeviceDataProvider { + public: + LocalDeviceDataProvider() = default; + virtual ~LocalDeviceDataProvider() = default; + + // Updates the persisted shared credential ids saved to prefs. + virtual void UpdatePersistedSharedCredentials( + const std::vector<::nearby::internal::SharedCredential>& + shared_credentials) = 0; + + // Returns true if the shared credentials for the local device have + // changed. + virtual bool HaveSharedCredentialsChanged( + const std::vector<::nearby::internal::SharedCredential>& + shared_credentials) = 0; + + // Returns the unique device identifier if it exists. If not,generates a + // unique device identifier, persists to prefs, and returns it. + virtual std::string GetDeviceId() = 0; + + // Constructs and returns a Metadata object for the local device. + virtual ::nearby::internal::Metadata GetDeviceMetadata() = 0; + + // Returns the cacancolized account name for the user. + virtual std::string GetAccountName() = 0; + + // Persists first time registration information returned from the server + // to Prefs to be accessed during Metadata construction + virtual void SaveUserRegistrationInfo(const std::string& display_name, + const std::string& image_url) = 0; +}; + +} // namespace ash::nearby::presence + +#endif // CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_LOCAL_DEVICE_DATA_PROVIDER_H_
diff --git a/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.cc b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.cc new file mode 100644 index 0000000..decc3b73 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.cc
@@ -0,0 +1,68 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.h" + +#include "chromeos/ash/components/nearby/presence/credentials/proto_conversions.h" +#include "components/prefs/pref_service.h" +#include "components/signin/public/identity_manager/identity_manager.h" + +namespace { + +constexpr char kPlaceHolderString[] = "0123456789"; + +} // namespace + +namespace ash::nearby::presence { + +LocalDeviceDataProviderImpl::LocalDeviceDataProviderImpl( + PrefService* pref_service, + signin::IdentityManager* identity_manager) { + CHECK(identity_manager); + CHECK(pref_service); +} + +LocalDeviceDataProviderImpl::~LocalDeviceDataProviderImpl() = default; + +void LocalDeviceDataProviderImpl::UpdatePersistedSharedCredentials( + const std::vector<::nearby::internal::SharedCredential>& + shared_credentials) {} + +bool LocalDeviceDataProviderImpl::HaveSharedCredentialsChanged( + const std::vector<::nearby::internal::SharedCredential>& + shared_credentials) { + // TODO (b/276307539): Implement `HavePublicCredentialsChanged`, this + // default implementation is to get the skeleton class to compile. + return true; +} + +std::string LocalDeviceDataProviderImpl::GetDeviceId() { + // TODO (b/276307539): Implement `GetDeviceId`, this + // default implementation is to get the skeleton class to compile. + return kPlaceHolderString; +} + +::nearby::internal::Metadata LocalDeviceDataProviderImpl::GetDeviceMetadata() { + // TODO (b/276307539): Implement `GetDeviceMetadata`, this + // default implementation is to get the skeleton class to compile. + return BuildMetadata( + /*device_type=*/::nearby::internal::DeviceType::DEVICE_TYPE_LAPTOP, + /*account_name=*/kPlaceHolderString, + /*device_name=*/kPlaceHolderString, + /*user_name=*/kPlaceHolderString, + /*profile_url=*/kPlaceHolderString, + /*mac_address=*/kPlaceHolderString); +} + +std::string LocalDeviceDataProviderImpl::GetAccountName() { + // TODO (b/276307539): Implement `GetAccountName`, this + // default implementation is to get the skeleton class to compile. + return kPlaceHolderString; +} + +void LocalDeviceDataProviderImpl::SaveUserRegistrationInfo( + const std::string& display_name, + const std::string& image_url) {} + +} // namespace ash::nearby::presence
diff --git a/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.h b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.h new file mode 100644 index 0000000..4f63be9 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.h
@@ -0,0 +1,45 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_LOCAL_DEVICE_DATA_PROVIDER_IMPL_H_ +#define CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_LOCAL_DEVICE_DATA_PROVIDER_IMPL_H_ + +#include "chromeos/ash/components/nearby/presence/credentials/local_device_data_provider.h" +#include "third_party/nearby/internal/proto/credential.pb.h" +#include "third_party/nearby/internal/proto/metadata.pb.h" + +class PrefService; + +namespace signin { +class IdentityManager; +} // namespace signin + +namespace ash::nearby::presence { + +class LocalDeviceDataProviderImpl : public LocalDeviceDataProvider { + public: + LocalDeviceDataProviderImpl(PrefService* pref_service, + signin::IdentityManager* identity_manager); + ~LocalDeviceDataProviderImpl() override; + + LocalDeviceDataProviderImpl(LocalDeviceDataProviderImpl&) = delete; + LocalDeviceDataProviderImpl& operator=(LocalDeviceDataProviderImpl&) = delete; + + // LocalDeviceDataProvider + void UpdatePersistedSharedCredentials( + const std::vector<::nearby::internal::SharedCredential>& + shared_credentials) override; + bool HaveSharedCredentialsChanged( + const std::vector<::nearby::internal::SharedCredential>& + shared_credentials) override; + std::string GetDeviceId() override; + ::nearby::internal::Metadata GetDeviceMetadata() override; + std::string GetAccountName() override; + void SaveUserRegistrationInfo(const std::string& display_name, + const std::string& image_url) override; +}; + +} // namespace ash::nearby::presence + +#endif // CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_LOCAL_DEVICE_DATA_PROVIDER_IMPL_H_
diff --git a/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl_unittest.cc b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl_unittest.cc new file mode 100644 index 0000000..445410a9 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl_unittest.cc
@@ -0,0 +1,35 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/ash/components/nearby/presence/credentials/local_device_data_provider_impl.h" + +#include "base/test/gtest_util.h" +#include "base/test/task_environment.h" +#include "chromeos/ash/components/nearby/presence/credentials/local_device_data_provider.h" +#include "components/prefs/testing_pref_service.h" +#include "components/signin/public/identity_manager/identity_test_environment.h" +#include "components/signin/public/identity_manager/identity_test_utils.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace ash::nearby::presence { + +class LocalDeviceDataProviderImplTest : public testing::Test { + public: + void SetUp() override { + local_device_data_provider_ = std::make_unique<LocalDeviceDataProviderImpl>( + &pref_service_, identity_test_env_.identity_manager()); + } + + protected: + base::test::TaskEnvironment task_environment_; + TestingPrefServiceSimple pref_service_; + signin::IdentityTestEnvironment identity_test_env_; + std::unique_ptr<LocalDeviceDataProvider> local_device_data_provider_; +}; + +TEST_F(LocalDeviceDataProviderImplTest, ObjectConstructionSuccess) { + ASSERT_TRUE(local_device_data_provider_); +} + +} // namespace ash::nearby::presence
diff --git a/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client.h b/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client.h new file mode 100644 index 0000000..35a5449 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client.h
@@ -0,0 +1,70 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_NEARBY_PRESENCE_SERVER_CLIENT_H_ +#define CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_NEARBY_PRESENCE_SERVER_CLIENT_H_ + +#include <memory> +#include <string> + +#include "base/functional/callback_forward.h" +#include "chromeos/ash/components/nearby/common/client/nearby_http_result.h" + +namespace ash::nearby::proto { +class ListPublicCertificatesRequest; +class ListPublicCertificatesResponse; +class UpdateDeviceRequest; +class UpdateDeviceResponse; +} // namespace ash::nearby::proto + +namespace ash::nearby::presence { + +// Interface for making API requests to the NearbyPresence service, which +// manages certificates. +// Implementations shall only processes a single request, so create a new +// instance for each request you make. DO NOT REUSE. +class NearbyPresenceServerClient { + public: + // Interface for creating NearbyPresenceServerClient instances. Because each + // NearbyPresenceServerClient instance can only be used for one API call, a + // factory makes it easier to make multiple requests in sequence or in + // parallel. + class Factory { + public: + Factory() = default; + virtual ~Factory() = default; + + virtual std::unique_ptr<NearbyPresenceServerClient> CreateInstance() = 0; + }; + + using ErrorCallback = base::OnceCallback<void(ash::nearby::NearbyHttpError)>; + using ListPublicCertificatesCallback = base::OnceCallback<void( + const ash::nearby::proto::ListPublicCertificatesResponse&)>; + using UpdateDeviceCallback = + base::OnceCallback<void(const ash::nearby::proto::UpdateDeviceResponse&)>; + + NearbyPresenceServerClient() = default; + virtual ~NearbyPresenceServerClient() = default; + + // Communicates with the NearbyPresenceService server v1: UpdateDevice RPC. + virtual void UpdateDevice( + const ash::nearby::proto::UpdateDeviceRequest& request, + UpdateDeviceCallback callback, + ErrorCallback error_callback) = 0; + + // Communicates with the NearbyPresenceService server v1: + // ListPublicCertificates RPC. + virtual void ListPublicCertificates( + const ash::nearby::proto::ListPublicCertificatesRequest& request, + ListPublicCertificatesCallback callback, + ErrorCallback error_callback) = 0; + + // Returns the access token used to make the request. If no request has been + // made yet, this function will return an empty string. + virtual std::string GetAccessTokenUsed() = 0; +}; + +} // namespace ash::nearby::presence + +#endif // CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_NEARBY_PRESENCE_SERVER_CLIENT_H_
diff --git a/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.cc b/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.cc new file mode 100644 index 0000000..3f49fcf --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.cc
@@ -0,0 +1,344 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.h" + +#include <memory> + +#include "base/base64url.h" +#include "base/command_line.h" +#include "base/functional/bind.h" +#include "base/memory/ptr_util.h" +#include "base/strings/string_number_conversions.h" +#include "chromeos/ash/components/nearby/common/client/nearby_api_call_flow_impl.h" +#include "chromeos/ash/components/nearby/common/client/nearby_http_result.h" +#include "chromeos/ash/components/nearby/presence/proto/list_public_certificates_rpc.pb.h" +#include "chromeos/ash/components/nearby/presence/proto/rpc_resources.pb.h" +#include "chromeos/ash/components/nearby/presence/proto/update_device_rpc.pb.h" +#include "components/signin/public/base/consent_level.h" +#include "components/signin/public/identity_manager/access_token_info.h" +#include "components/signin/public/identity_manager/identity_manager.h" +#include "components/signin/public/identity_manager/primary_account_access_token_fetcher.h" +#include "services/network/public/cpp/shared_url_loader_factory.h" + +namespace { + +// -------------- Nearby Presence Service v1 Endpoints -------------------- + +const char kDefaultNearbyPresenceV1HTTPHost[] = + "https://nearbypresence-pa.googleapis.com"; + +const char kNearbyPresenceV1Path[] = "v1/"; + +const char kListPublicCertificatesPath[] = "publicCertificates"; + +const char kPageSize[] = "page_size"; +const char kPageToken[] = "page_token"; +const char kSecretIds[] = "secret_ids"; + +const char kNearbyPresenceOAuth2Scope[] = + "https://www.googleapis.com/auth/nearbypresence-pa"; +const char kNearbyPresenceOAthConsumerName[] = "nearby_presence_client"; + +// Creates the full Nearby Presence v1 URL for endpoint to the API with +// |request_path|. +GURL CreateV1RequestUrl(const std::string& request_path) { + GURL google_apis_url = GURL(kDefaultNearbyPresenceV1HTTPHost); + return google_apis_url.Resolve(kNearbyPresenceV1Path + request_path); +} + +ash::nearby::NearbyApiCallFlow::QueryParameters +ListPublicCertificatesRequestToQueryParameters( + const ash::nearby::proto::ListPublicCertificatesRequest& request) { + ash::nearby::NearbyApiCallFlow::QueryParameters query_parameters; + if (request.page_size() > 0) { + query_parameters.emplace_back(kPageSize, + base::NumberToString(request.page_size())); + } + if (!request.page_token().empty()) { + query_parameters.emplace_back(kPageToken, request.page_token()); + } + for (const std::string& id : request.secret_ids()) { + // NOTE: One Platform requires that byte fields be URL-safe base64 encoded. + std::string encoded_id; + base::Base64UrlEncode(id, base::Base64UrlEncodePolicy::INCLUDE_PADDING, + &encoded_id); + query_parameters.emplace_back(kSecretIds, encoded_id); + } + return query_parameters; +} + +const net::PartialNetworkTrafficAnnotationTag& GetUpdateDeviceAnnotation() { + static const net::PartialNetworkTrafficAnnotationTag annotation = + net::DefinePartialNetworkTrafficAnnotation( + "nearby_presence_update_device", "oauth2_api_call_flow", + R"( + semantics { + sender: "Nearby Presence" + description: + "Used as part of the Nearby Presence feature that allows a scanning " + "abstraction layer, and a device identity management library. " + "The call sends the local device's user-defined name and " + "Nearby Presence specific crypto data from the local device to the " + "Google-owned Nearby server. This data is also uploaded to the " + "server and distributed to other devices in the user GAIA to help " + "establish an authenticated channel during the Nearby Presence flow. " + "This crypto data can be immediately invalidated by the local device " + "at any time without needing to communicate with the server. For " + "example, it expires after five days and new data needs to be " + "uploaded. The server returns the local device user's full name and " + "icon URL if available on the Google server." + trigger: + "Automatically called daily to retrieve any updates to the user's " + "full name or icon URL. This request is also sent whenever new " + "crypto data is generated by the local device and needs to be " + "shared with other devices in the user GAIA. This request is also " + "sent when a new device is added to the user GAIA and needs the " + "local device's crypto data." + data: + "Sends an OAuth 2.0 token, the local device's name, contact, and/or " + "Nearby Presence specific crypto data. Possibly receives the user's " + "full name and icon URL from the Google server." + destination: GOOGLE_OWNED_SERVICE + internal { + contacts { + email: "julietlevesque@google.com" + } + contacts { + email: "chromeos-cross-device-eng@google.com" + } + } + user_data { + type: ACCESS_TOKEN + type: ARBITRARY_DATA + } + last_reviewed: "2023-04-04" + } + policy { + setting: + "Only sent when Nearby Presence is enabled and the user is signed in " + "with their Google account." + chrome_policy { + SigninAllowed { + SigninAllowed: false + } + } + })"); + return annotation; +} + +const net::PartialNetworkTrafficAnnotationTag& +GetListPublicCertificatesAnnotation() { + static const net::PartialNetworkTrafficAnnotationTag annotation = + net::DefinePartialNetworkTrafficAnnotation( + "nearby_presence_list_public_certificates", "oauth2_api_call_flow", + R"( + semantics { + sender: "Nearby Presence" + description: + "Used as part of the Nearby Presence feature that allows a scanning " + "abstraction layer, and a device identity management library. " + "The call retrieves Nearby Presence specific crypto data " + "from the Google-owned Nearby server. The data was uploaded by other " + "devices and is needed to establish an authenticated connection with " + "those device during the Nearby Presence flow." + trigger: + "Automatically called at least once a day to retrieve any updates to " + "the list of crypto data. It is also called when Nearby Presence is " + "in use to ensure up-to-date data." + data: + "Sends an OAuth 2.0 token. Receives Nearby Presence specific crypto " + "necessary for establishing an authenticated channel with other " + "devices." + destination: GOOGLE_OWNED_SERVICE + internal { + contacts { + email: "julietlevesque@google.com" + } + contacts { + email: "chromeos-cross-device-eng@google.com" + } + } + user_data { + type: ACCESS_TOKEN + type: ARBITRARY_DATA + } + last_reviewed: "2023-04-04" + } + policy { + setting: + "Only sent when Nearby Presence is enabled and the user is signed in " + "with their Google account." + chrome_policy { + SigninAllowed { + SigninAllowed: false + } + } + })"); + return annotation; +} + +} // namespace + +namespace ash::nearby::presence { + +NearbyPresenceServerClientImpl::NearbyPresenceServerClientImpl( + std::unique_ptr<NearbyApiCallFlow> api_call_flow, + signin::IdentityManager* identity_manager, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) + : api_call_flow_(std::move(api_call_flow)), + identity_manager_(identity_manager), + url_loader_factory_(std::move(url_loader_factory)) {} + +NearbyPresenceServerClientImpl::~NearbyPresenceServerClientImpl() = default; + +void NearbyPresenceServerClientImpl::UpdateDevice( + const ash::nearby::proto::UpdateDeviceRequest& request, + UpdateDeviceCallback callback, + ErrorCallback error_callback) { + MakeApiCall(CreateV1RequestUrl(request.device().name()), RequestType::kPatch, + request.SerializeAsString(), + /*request_as_query_parameters=*/absl::nullopt, + std::move(callback), std::move(error_callback), + GetUpdateDeviceAnnotation()); +} + +void NearbyPresenceServerClientImpl::ListPublicCertificates( + const ash::nearby::proto::ListPublicCertificatesRequest& request, + ListPublicCertificatesCallback callback, + ErrorCallback error_callback) { + MakeApiCall( + CreateV1RequestUrl(request.parent() + "/" + kListPublicCertificatesPath), + RequestType::kGet, /*serialized_request=*/absl::nullopt, + ListPublicCertificatesRequestToQueryParameters(request), + std::move(callback), std::move(error_callback), + GetListPublicCertificatesAnnotation()); +} + +std::string NearbyPresenceServerClientImpl::GetAccessTokenUsed() { + return access_token_used_; +} + +template <class ResponseProto> +void NearbyPresenceServerClientImpl::MakeApiCall( + const GURL& request_url, + RequestType request_type, + const absl::optional<std::string>& serialized_request, + const absl::optional<NearbyApiCallFlow::QueryParameters>& + request_as_query_parameters, + base::OnceCallback<void(const ResponseProto&)> response_callback, + ErrorCallback error_callback, + const net::PartialNetworkTrafficAnnotationTag& partial_traffic_annotation) { + DCHECK(!has_call_started_) + << "NearbyPresenceServerClientImpl::MakeApiCall(): Tried to make an API " + << "call, but the client had already been used."; + has_call_started_ = true; + + api_call_flow_->SetPartialNetworkTrafficAnnotation( + partial_traffic_annotation); + + request_url_ = request_url; + error_callback_ = std::move(error_callback); + + OAuth2AccessTokenManager::ScopeSet scopes; + scopes.insert(kNearbyPresenceOAuth2Scope); + + access_token_fetcher_ = std::make_unique< + signin::PrimaryAccountAccessTokenFetcher>( + kNearbyPresenceOAthConsumerName, identity_manager_, scopes, + base::BindOnce( + &NearbyPresenceServerClientImpl::OnAccessTokenFetched<ResponseProto>, + weak_ptr_factory_.GetWeakPtr(), request_type, serialized_request, + request_as_query_parameters, std::move(response_callback)), + signin::PrimaryAccountAccessTokenFetcher::Mode::kWaitUntilAvailable, + signin::ConsentLevel::kSignin); +} + +template <class ResponseProto> +void NearbyPresenceServerClientImpl::OnAccessTokenFetched( + RequestType request_type, + const absl::optional<std::string>& serialized_request, + const absl::optional<NearbyApiCallFlow::QueryParameters>& + request_as_query_parameters, + base::OnceCallback<void(const ResponseProto&)> response_callback, + GoogleServiceAuthError error, + signin::AccessTokenInfo access_token_info) { + access_token_fetcher_.reset(); + + if (error.state() != GoogleServiceAuthError::NONE) { + OnApiCallFailed(NearbyHttpError::kAuthenticationError); + return; + } + access_token_used_ = access_token_info.token; + + switch (request_type) { + case RequestType::kGet: + DCHECK(request_as_query_parameters && !serialized_request); + api_call_flow_->StartGetRequest( + request_url_, *request_as_query_parameters, url_loader_factory_, + access_token_used_, + base::BindOnce( + &NearbyPresenceServerClientImpl::OnFlowSuccess<ResponseProto>, + weak_ptr_factory_.GetWeakPtr(), std::move(response_callback)), + base::BindOnce(&NearbyPresenceServerClientImpl::OnApiCallFailed, + weak_ptr_factory_.GetWeakPtr())); + break; + case RequestType::kPost: + DCHECK(serialized_request && !request_as_query_parameters); + api_call_flow_->StartPostRequest( + request_url_, *serialized_request, url_loader_factory_, + access_token_used_, + base::BindOnce( + &NearbyPresenceServerClientImpl::OnFlowSuccess<ResponseProto>, + weak_ptr_factory_.GetWeakPtr(), std::move(response_callback)), + base::BindOnce(&NearbyPresenceServerClientImpl::OnApiCallFailed, + weak_ptr_factory_.GetWeakPtr())); + break; + case RequestType::kPatch: + DCHECK(serialized_request && !request_as_query_parameters); + api_call_flow_->StartPatchRequest( + request_url_, *serialized_request, url_loader_factory_, + access_token_used_, + base::BindOnce( + &NearbyPresenceServerClientImpl::OnFlowSuccess<ResponseProto>, + weak_ptr_factory_.GetWeakPtr(), std::move(response_callback)), + base::BindOnce(&NearbyPresenceServerClientImpl::OnApiCallFailed, + weak_ptr_factory_.GetWeakPtr())); + break; + } +} + +template <class ResponseProto> +void NearbyPresenceServerClientImpl::OnFlowSuccess( + base::OnceCallback<void(const ResponseProto&)> result_callback, + const std::string& serialized_response) { + ResponseProto response; + if (!response.ParseFromString(serialized_response)) { + OnApiCallFailed(NearbyHttpError::kResponseMalformed); + return; + } + + std::move(result_callback).Run(response); +} + +void NearbyPresenceServerClientImpl::OnApiCallFailed(NearbyHttpError error) { + std::move(error_callback_).Run(error); +} + +NearbyPresenceServerClientImpl::FactoryImpl::FactoryImpl( + signin::IdentityManager* identity_manager, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) + : identity_manager_(identity_manager), + url_loader_factory_(std::move(url_loader_factory)) {} + +NearbyPresenceServerClientImpl::FactoryImpl::~FactoryImpl() = default; + +std::unique_ptr<NearbyPresenceServerClient> +NearbyPresenceServerClientImpl::FactoryImpl::CreateInstance() { + return std::make_unique<NearbyPresenceServerClientImpl>( + std::make_unique<NearbyApiCallFlowImpl>(), identity_manager_, + url_loader_factory_); +} + +} // namespace ash::nearby::presence
diff --git a/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.h b/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.h new file mode 100644 index 0000000..66371c3 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.h
@@ -0,0 +1,173 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_NEARBY_PRESENCE_SERVER_CLIENT_IMPL_H_ +#define CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_NEARBY_PRESENCE_SERVER_CLIENT_IMPL_H_ + +#include <memory> +#include <string> +#include <utility> +#include <vector> + +#include "base/functional/callback.h" +#include "base/memory/weak_ptr.h" +#include "chromeos/ash/components/nearby/common/client/nearby_api_call_flow.h" +#include "chromeos/ash/components/nearby/common/client/nearby_http_result.h" +#include "chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client.h" +#include "net/traffic_annotation/network_traffic_annotation.h" +#include "third_party/abseil-cpp/absl/types/optional.h" +#include "url/gurl.h" + +namespace signin { +struct AccessTokenInfo; +class IdentityManager; +class PrimaryAccountAccessTokenFetcher; +} // namespace signin + +namespace network { +class SharedURLLoaderFactory; +} // namespace network + +class GoogleServiceAuthError; + +namespace ash::nearby::presence { + +// An implementation of NearbyPresenceServerClient that fetches access tokens +// for the primary account and makes HTTP calls using NearbyApiCallFlow. +// Callbacks are guaranteed to not be invoked after +// NearbyPresenceServerClientImpl is destroyed. +// +// TODO(b/277074086): Delete `NearbyShareClient` in favor of this class. +// This class is a copy of `NearbyShareClient`, which is Nearby Share's +// access point to make HTTP calls to the Nearby Share server. Eventually +// when Nearby Share is migrated over to Nearby Presence, `NearbyShareClient` +// will be deleted in favor of this class. +class NearbyPresenceServerClientImpl : public NearbyPresenceServerClient { + public: + // Implementation of NearbyPresenceServerClientFactory. + class FactoryImpl : public NearbyPresenceServerClient::Factory { + public: + // |identity_manager|: Gets the user's access token. + // Not owned, so |identity_manager| needs to outlive this object. + // |url_loader_factory|: Used to make the HTTP requests. + FactoryImpl( + signin::IdentityManager* identity_manager, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory); + ~FactoryImpl() override; + + FactoryImpl(FactoryImpl&) = delete; + FactoryImpl& operator=(FactoryImpl&) = delete; + + // NearbyPresenceServerClient::Factory: + std::unique_ptr<NearbyPresenceServerClient> CreateInstance() override; + + private: + const raw_ptr<signin::IdentityManager> identity_manager_; + const scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; + }; + + // Creates the client using |url_loader_factory| to make the HTTP request + // through |api_call_flow|. + NearbyPresenceServerClientImpl( + std::unique_ptr<ash::nearby::NearbyApiCallFlow> api_call_flow, + signin::IdentityManager* identity_manager, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory); + ~NearbyPresenceServerClientImpl() override; + + NearbyPresenceServerClientImpl(NearbyPresenceServerClientImpl&) = delete; + NearbyPresenceServerClientImpl& operator=(NearbyPresenceServerClientImpl&) = + delete; + + // NearbyPresenceServerClient: + void UpdateDevice(const ash::nearby::proto::UpdateDeviceRequest& request, + UpdateDeviceCallback callback, + ErrorCallback error_callback) override; + void ListPublicCertificates( + const ash::nearby::proto::ListPublicCertificatesRequest& request, + ListPublicCertificatesCallback callback, + ErrorCallback error_callback) override; + std::string GetAccessTokenUsed() override; + + private: + enum class RequestType { kGet, kPost, kPatch }; + + // Starts a call to the API given by |request_url|. The client first fetches + // the access token and then makes the HTTP request. + // |request_url|: API endpoint. + // |request_type|: Whether the request is a GET, POST, or PATCH. + // |serialized_request|: Serialized request message proto that will be sent + // as the body of a POST or PATCH request. Null if + // request type is not POST or PATCH. + // |request_as_query_parameters|: The request message proto represented as + // key-value pairs that will be sent as query + // parameters in a GET request. Note: A key + // can have multiple values. Null if request + // type is not GET. + // |response_callback|: Callback for a successful request. + // |error_callback|: Callback for a failed request. + // |partial_traffic_annotation|: A partial tag used to mark a source of + // network traffic. + template <class ResponseProto> + void MakeApiCall( + const GURL& request_url, + RequestType request_type, + const absl::optional<std::string>& serialized_request, + const absl::optional<ash::nearby::NearbyApiCallFlow::QueryParameters>& + request_as_query_parameters, + base::OnceCallback<void(const ResponseProto&)> response_callback, + ErrorCallback error_callback, + const net::PartialNetworkTrafficAnnotationTag& + partial_traffic_annotation); + + // Called when the access token is obtained so the API request can be made. + template <class ResponseProto> + void OnAccessTokenFetched( + RequestType request_type, + const absl::optional<std::string>& serialized_request, + const absl::optional<ash::nearby::NearbyApiCallFlow::QueryParameters>& + request_as_query_parameters, + base::OnceCallback<void(const ResponseProto&)> response_callback, + GoogleServiceAuthError error, + signin::AccessTokenInfo access_token_info); + + // Called when ash::nearby::NearbyApiCallFlow completes successfully to + // de-serialize and return the result. + template <class ResponseProto> + void OnFlowSuccess( + base::OnceCallback<void(const ResponseProto&)> result_callback, + const std::string& serialized_response); + + // Called when the current API call fails at any step. + void OnApiCallFailed(NearbyHttpError error); + + // Constructs and executes the actual HTTP request. + std::unique_ptr<NearbyApiCallFlow> api_call_flow_; + + const raw_ptr<signin::IdentityManager> identity_manager_; + + // Fetches the access token authorizing the API calls. + std::unique_ptr<signin::PrimaryAccountAccessTokenFetcher> + access_token_fetcher_; + + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; + + // True if an API call has been started. Remains true even after the API call + // completes. + bool has_call_started_ = false; + + // URL of the current request. + GURL request_url_; + + // The access token fetched by |access_token_fetcher_|. + std::string access_token_used_; + + // Called when the current request fails. + ErrorCallback error_callback_; + + base::WeakPtrFactory<NearbyPresenceServerClientImpl> weak_ptr_factory_{this}; +}; + +} // namespace ash::nearby::presence + +#endif // CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_NEARBY_PRESENCE_SERVER_CLIENT_IMPL_H_
diff --git a/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl_unittest.cc b/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl_unittest.cc new file mode 100644 index 0000000..e93c4bc3 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl_unittest.cc
@@ -0,0 +1,462 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <string> +#include <utility> +#include <vector> + +#include "base/command_line.h" +#include "base/functional/bind.h" +#include "base/memory/ptr_util.h" +#include "base/strings/string_number_conversions.h" +#include "base/test/gtest_util.h" +#include "base/test/null_task_runner.h" +#include "base/test/task_environment.h" +#include "base/test/test_future.h" +#include "chromeos/ash/components/nearby/common/client/nearby_api_call_flow.h" +#include "chromeos/ash/components/nearby/common/client/nearby_api_call_flow_impl.h" +#include "chromeos/ash/components/nearby/common/client/nearby_http_result.h" +#include "chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client.h" +#include "chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.h" +#include "chromeos/ash/components/nearby/presence/proto/list_public_certificates_rpc.pb.h" +#include "chromeos/ash/components/nearby/presence/proto/rpc_resources.pb.h" +#include "chromeos/ash/components/nearby/presence/proto/update_device_rpc.pb.h" +#include "components/signin/public/identity_manager/identity_test_environment.h" +#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" + +namespace { + +const char kGet[] = "GET"; +const char kPost[] = "POST"; +const char kPatch[] = "PATCH"; +const char kAccessToken[] = "access_token"; +const char kDeviceIdPath[] = "users/me/devices/deviceid"; +const char kEmail[] = "test@gmail.com"; +const char kPageToken1[] = "pagetoken1"; +const char kPageToken2[] = "pagetoken2"; +const char kPublicKey1[] = "publickey1"; +const char kSecretId1[] = "secretid1"; +const char kSecretId2[] = "secretid2"; +const char kSecretId1Encoded[] = "c2VjcmV0aWQx"; +const char kSecretId2Encoded[] = "c2VjcmV0aWQy"; +const char kSecretKey1[] = "secretkey1"; +const char kTestGoogleApisUrl[] = "https://nearbypresence-pa.googleapis.com"; +const int32_t kNanos1 = 123123123; +const int32_t kNanos2 = 321321321; +const int32_t kPageSize1 = 1000; +const int64_t kSeconds1 = 1594392109; +const int64_t kSeconds2 = 1623336109; + +class FakeNearbyApiCallFlow : public ash::nearby::NearbyApiCallFlow { + public: + FakeNearbyApiCallFlow() = default; + ~FakeNearbyApiCallFlow() override = default; + FakeNearbyApiCallFlow(FakeNearbyApiCallFlow&) = delete; + FakeNearbyApiCallFlow& operator=(FakeNearbyApiCallFlow&) = delete; + + void StartPostRequest( + const GURL& request_url, + const std::string& serialized_request, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, + const std::string& access_token, + ResultCallback&& result_callback, + ErrorCallback&& error_callback) override { + http_method_ = kPost; + request_url_ = request_url; + serialized_request_ = serialized_request; + url_loader_factory_ = url_loader_factory; + result_callback_ = std::move(result_callback); + error_callback_ = std::move(error_callback); + EXPECT_EQ(kAccessToken, access_token); + } + + void StartPatchRequest( + const GURL& request_url, + const std::string& serialized_request, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, + const std::string& access_token, + ResultCallback&& result_callback, + ErrorCallback&& error_callback) override { + http_method_ = kPatch; + request_url_ = request_url; + serialized_request_ = serialized_request; + url_loader_factory_ = url_loader_factory; + result_callback_ = std::move(result_callback); + error_callback_ = std::move(error_callback); + EXPECT_EQ(kAccessToken, access_token); + } + + void StartGetRequest( + const GURL& request_url, + const QueryParameters& request_as_query_parameters, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, + const std::string& access_token, + ResultCallback&& result_callback, + ErrorCallback&& error_callback) override { + http_method_ = kGet; + request_url_ = request_url; + request_as_query_parameters_ = request_as_query_parameters; + url_loader_factory_ = url_loader_factory; + result_callback_ = std::move(result_callback); + error_callback_ = std::move(error_callback); + EXPECT_EQ(kAccessToken, access_token); + } + + void SetPartialNetworkTrafficAnnotation( + const net::PartialNetworkTrafficAnnotationTag& partial_traffic_annotation) + override { + // Do nothing + } + + std::string http_method_; + GURL request_url_; + std::string serialized_request_; + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; + ResultCallback result_callback_; + ErrorCallback error_callback_; + QueryParameters request_as_query_parameters_; +}; + +// Return the values associated with |key|, or fail the test if |key| isn't in +// |query_parameters| +std::vector<std::string> ExpectQueryStringValues( + const ash::nearby::NearbyApiCallFlow::QueryParameters& query_parameters, + const std::string& key) { + std::vector<std::string> values; + for (const std::pair<std::string, std::string>& pair : query_parameters) { + if (pair.first == key) { + values.push_back(pair.second); + } + } + EXPECT_TRUE(values.size() > 0); + return values; +} + +// Callback that should never be invoked. +template <class T> +void NotCalled(T type) { + EXPECT_TRUE(false); +} + +// Callback that should never be invoked. +template <class T> +void NotCalledConstRef(const T& type) { + EXPECT_TRUE(false); +} + +} // namespace + +namespace ash::nearby::presence { + +class NearbyPresenceServerClientImplTest : public testing::Test { + protected: + NearbyPresenceServerClientImplTest() { + shared_factory_ = + base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( + base::BindOnce([]() -> network::mojom::URLLoaderFactory* { + ADD_FAILURE() << "Did not expect this to actually be used"; + return nullptr; + })); + } + + void SetUp() override { + identity_test_environment_.MakePrimaryAccountAvailable( + kEmail, signin::ConsentLevel::kSync); + + std::unique_ptr<FakeNearbyApiCallFlow> api_call_flow = + std::make_unique<FakeNearbyApiCallFlow>(); + api_call_flow_ = api_call_flow.get(); + + client_ = std::make_unique<NearbyPresenceServerClientImpl>( + std::move(api_call_flow), identity_test_environment_.identity_manager(), + shared_factory_); + } + + const std::string& http_method() { return api_call_flow_->http_method_; } + const GURL& request_url() { return api_call_flow_->request_url_; } + const std::string& serialized_request() { + return api_call_flow_->serialized_request_; + } + const NearbyApiCallFlow::QueryParameters& request_as_query_parameters() { + return api_call_flow_->request_as_query_parameters_; + } + + // Returns |response_proto| as the result to the current API request. + void FinishApiCallFlow(const google::protobuf::MessageLite* response_proto) { + std::move(api_call_flow_->result_callback_) + .Run(response_proto->SerializeAsString()); + } + + // Returns |serialized_proto| as the result to the current API request. + void FinishApiCallFlowRaw(const std::string& serialized_proto) { + std::move(api_call_flow_->result_callback_).Run(serialized_proto); + } + + // Ends the current API request with |error|. + void FailApiCallFlow(NearbyHttpError error) { + std::move(api_call_flow_->error_callback_).Run(error); + } + + protected: + base::test::TaskEnvironment task_environment_; + signin::IdentityTestEnvironment identity_test_environment_; + FakeNearbyApiCallFlow* api_call_flow_; + scoped_refptr<network::SharedURLLoaderFactory> shared_factory_; + std::unique_ptr<NearbyPresenceServerClient> client_; +}; + +TEST_F(NearbyPresenceServerClientImplTest, UpdateDeviceSuccess) { + base::test::TestFuture<const ash::nearby::proto::UpdateDeviceResponse&> + future; + ash::nearby::proto::UpdateDeviceRequest request_proto; + request_proto.mutable_device()->set_name(kDeviceIdPath); + client_->UpdateDevice(request_proto, future.GetCallback(), + base::BindOnce(&NotCalled<NearbyHttpError>)); + identity_test_environment_ + .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( + kAccessToken, base::Time::Max()); + EXPECT_EQ(kPatch, http_method()); + EXPECT_EQ(request_url(), GURL(std::string(kTestGoogleApisUrl) + "/v1/" + + std::string(kDeviceIdPath))); + + ash::nearby::proto::UpdateDeviceRequest expected_request; + EXPECT_TRUE(expected_request.ParseFromString(serialized_request())); + EXPECT_EQ(kDeviceIdPath, expected_request.device().name()); + + ash::nearby::proto::UpdateDeviceResponse response_proto; + ash::nearby::proto::Device& device = *response_proto.mutable_device(); + + device.set_name(kDeviceIdPath); + FinishApiCallFlow(&response_proto); + + // Check that the result received in callback is the same as the response. + ash::nearby::proto::UpdateDeviceResponse result_proto = future.Take(); + EXPECT_EQ(kDeviceIdPath, result_proto.device().name()); +} + +TEST_F(NearbyPresenceServerClientImplTest, UpdateDeviceFailure) { + ash::nearby::proto::UpdateDeviceRequest request; + request.mutable_device()->set_name(kDeviceIdPath); + + base::test::TestFuture<NearbyHttpError> future; + client_->UpdateDevice( + request, + base::BindOnce( + &NotCalledConstRef<ash::nearby::proto::UpdateDeviceResponse>), + future.GetCallback()); + identity_test_environment_ + .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( + kAccessToken, base::Time::Max()); + + EXPECT_EQ(kPatch, http_method()); + EXPECT_EQ(request_url(), GURL(std::string(kTestGoogleApisUrl) + "/v1/" + + std::string(kDeviceIdPath))); + + FailApiCallFlow(NearbyHttpError::kInternalServerError); + EXPECT_EQ(NearbyHttpError::kInternalServerError, future.Get()); +} + +TEST_F(NearbyPresenceServerClientImplTest, ListPublicCertificatesSuccess) { + base::test::TestFuture< + const ash::nearby::proto::ListPublicCertificatesResponse&> + future; + ash::nearby::proto::ListPublicCertificatesRequest request_proto; + request_proto.set_parent(kDeviceIdPath); + request_proto.set_page_size(kPageSize1); + request_proto.set_page_token(kPageToken1); + request_proto.add_secret_ids(); + request_proto.set_secret_ids(0, kSecretId1); + request_proto.add_secret_ids(); + request_proto.set_secret_ids(1, kSecretId2); + + client_->ListPublicCertificates(request_proto, future.GetCallback(), + base::BindOnce(&NotCalled<NearbyHttpError>)); + identity_test_environment_ + .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( + kAccessToken, base::Time::Max()); + + EXPECT_EQ(kGet, http_method()); + EXPECT_EQ(request_url(), std::string(kTestGoogleApisUrl) + "/v1/" + + std::string(kDeviceIdPath) + + "/publicCertificates"); + + EXPECT_EQ( + std::vector<std::string>{base::NumberToString(kPageSize1)}, + ExpectQueryStringValues(request_as_query_parameters(), "page_size")); + EXPECT_EQ( + std::vector<std::string>{kPageToken1}, + ExpectQueryStringValues(request_as_query_parameters(), "page_token")); + EXPECT_EQ( + (std::vector<std::string>{kSecretId1Encoded, kSecretId2Encoded}), + ExpectQueryStringValues(request_as_query_parameters(), "secret_ids")); + + ash::nearby::proto::ListPublicCertificatesResponse response_proto; + response_proto.set_next_page_token(kPageToken2); + response_proto.add_public_certificates(); + response_proto.mutable_public_certificates(0)->set_secret_id(kSecretId1); + response_proto.mutable_public_certificates(0)->set_secret_key(kSecretKey1); + response_proto.mutable_public_certificates(0)->set_public_key(kPublicKey1); + response_proto.mutable_public_certificates(0) + ->mutable_start_time() + ->set_seconds(kSeconds1); + response_proto.mutable_public_certificates(0) + ->mutable_start_time() + ->set_nanos(kNanos1); + response_proto.mutable_public_certificates(0) + ->mutable_end_time() + ->set_seconds(kSeconds2); + response_proto.mutable_public_certificates(0)->mutable_end_time()->set_nanos( + kNanos2); + FinishApiCallFlow(&response_proto); + + ash::nearby::proto::ListPublicCertificatesResponse result_proto = + future.Take(); + EXPECT_EQ(kPageToken2, result_proto.next_page_token()); + EXPECT_EQ(1, result_proto.public_certificates_size()); + EXPECT_EQ(kSecretId1, result_proto.public_certificates(0).secret_id()); + EXPECT_EQ(kSecretKey1, result_proto.public_certificates(0).secret_key()); + EXPECT_EQ(kSeconds1, + result_proto.public_certificates(0).start_time().seconds()); + EXPECT_EQ(kNanos1, result_proto.public_certificates(0).start_time().nanos()); + EXPECT_EQ(kSeconds2, + result_proto.public_certificates(0).end_time().seconds()); + EXPECT_EQ(kNanos2, result_proto.public_certificates(0).end_time().nanos()); +} + +TEST_F(NearbyPresenceServerClientImplTest, FetchAccessTokenFailure) { + base::test::TestFuture<NearbyHttpError> future; + client_->UpdateDevice( + ash::nearby::proto::UpdateDeviceRequest(), + base::BindOnce( + &NotCalledConstRef<ash::nearby::proto::UpdateDeviceResponse>), + future.GetCallback()); + identity_test_environment_ + .WaitForAccessTokenRequestIfNecessaryAndRespondWithError( + GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_UNAVAILABLE)); + + EXPECT_EQ(NearbyHttpError::kAuthenticationError, future.Get()); +} + +TEST_F(NearbyPresenceServerClientImplTest, ParseResponseProtoFailure) { + ash::nearby::proto::UpdateDeviceRequest request_proto; + request_proto.mutable_device()->set_name(kDeviceIdPath); + + base::test::TestFuture<NearbyHttpError> future; + client_->UpdateDevice( + request_proto, + base::BindOnce( + &NotCalledConstRef<ash::nearby::proto::UpdateDeviceResponse>), + future.GetCallback()); + identity_test_environment_ + .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( + kAccessToken, base::Time::Max()); + + EXPECT_EQ(kPatch, http_method()); + EXPECT_EQ(request_url(), std::string(kTestGoogleApisUrl) + "/v1/" + + std::string(kDeviceIdPath)); + + FinishApiCallFlowRaw("Not a valid serialized response message."); + EXPECT_EQ(NearbyHttpError::kResponseMalformed, future.Get()); +} + +TEST_F(NearbyPresenceServerClientImplTest, + MakeSecondRequestBeforeFirstRequestSucceeds) { + ash::nearby::proto::UpdateDeviceRequest request_proto; + request_proto.mutable_device()->set_name(kDeviceIdPath); + + // Make first request. + base::test::TestFuture<const ash::nearby::proto::UpdateDeviceResponse&> + future; + client_->UpdateDevice(request_proto, future.GetCallback(), + base::BindOnce(&NotCalled<NearbyHttpError>)); + identity_test_environment_ + .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( + kAccessToken, base::Time::Max()); + + EXPECT_EQ(kPatch, http_method()); + EXPECT_EQ(request_url(), std::string(kTestGoogleApisUrl) + "/v1/" + + std::string(kDeviceIdPath)); + + // With request pending, make second request. + { + base::test::TestFuture<NearbyHttpError> future2; + EXPECT_DCHECK_DEATH(client_->ListPublicCertificates( + ash::nearby::proto::ListPublicCertificatesRequest(), + base::BindOnce(&NotCalledConstRef< + ash::nearby::proto::ListPublicCertificatesResponse>), + future2.GetCallback())); + } + + // Complete first request. + { + ash::nearby::proto::UpdateDeviceResponse response_proto; + response_proto.mutable_device()->set_name(kDeviceIdPath); + FinishApiCallFlow(&response_proto); + } + + ash::nearby::proto::UpdateDeviceResponse result_proto = future.Take(); + EXPECT_EQ(kDeviceIdPath, result_proto.device().name()); +} + +TEST_F(NearbyPresenceServerClientImplTest, + MakeSecondRequestAfterFirstRequestSucceeds) { + // Make first request successfully. + { + base::test::TestFuture<const ash::nearby::proto::UpdateDeviceResponse&> + future; + ash::nearby::proto::UpdateDeviceRequest request_proto; + request_proto.mutable_device()->set_name(kDeviceIdPath); + + client_->UpdateDevice(request_proto, future.GetCallback(), + base::BindOnce(&NotCalled<NearbyHttpError>)); + identity_test_environment_ + .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( + kAccessToken, base::Time::Max()); + + EXPECT_EQ(kPatch, http_method()); + EXPECT_EQ(request_url(), std::string(kTestGoogleApisUrl) + "/v1/" + + std::string(kDeviceIdPath)); + + ash::nearby::proto::UpdateDeviceResponse response_proto; + response_proto.mutable_device()->set_name(kDeviceIdPath); + FinishApiCallFlow(&response_proto); + ash::nearby::proto::UpdateDeviceResponse result_proto = future.Take(); + EXPECT_EQ(kDeviceIdPath, result_proto.device().name()); + } + + // Second request fails. + { + base::test::TestFuture<NearbyHttpError> future; + EXPECT_DCHECK_DEATH(client_->ListPublicCertificates( + ash::nearby::proto::ListPublicCertificatesRequest(), + base::BindOnce(&NotCalledConstRef< + ash::nearby::proto::ListPublicCertificatesResponse>), + future.GetCallback())); + } +} + +TEST_F(NearbyPresenceServerClientImplTest, GetAccessTokenUsed) { + EXPECT_TRUE(client_->GetAccessTokenUsed().empty()); + + base::test::TestFuture<const ash::nearby::proto::UpdateDeviceResponse&> + future; + ash::nearby::proto::UpdateDeviceRequest request_proto; + request_proto.mutable_device()->set_name(kDeviceIdPath); + + client_->UpdateDevice(request_proto, future.GetCallback(), + base::BindOnce(&NotCalled<NearbyHttpError>)); + identity_test_environment_ + .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( + kAccessToken, base::Time::Max()); + + EXPECT_EQ(kPatch, http_method()); + EXPECT_EQ(request_url(), std::string(kTestGoogleApisUrl) + "/v1/" + + std::string(kDeviceIdPath)); + + EXPECT_EQ(kAccessToken, client_->GetAccessTokenUsed()); +} + +} // namespace ash::nearby::presence
diff --git a/chromeos/ash/components/nearby/presence/credentials/proto_conversions.cc b/chromeos/ash/components/nearby/presence/credentials/proto_conversions.cc new file mode 100644 index 0000000..c601c3b --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/proto_conversions.cc
@@ -0,0 +1,26 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/ash/components/nearby/presence/credentials/proto_conversions.h" + +namespace ash::nearby::presence { + +::nearby::internal::Metadata BuildMetadata( + ::nearby::internal::DeviceType device_type, + const std::string& account_name, + const std::string& device_name, + const std::string& user_name, + const std::string& profile_url, + const std::string& mac_address) { + ::nearby::internal::Metadata proto; + proto.set_device_type(device_type); + proto.set_account_name(account_name); + proto.set_device_name(device_name); + proto.set_user_name(user_name); + proto.set_device_profile_url(profile_url); + proto.set_bluetooth_mac_address(mac_address); + return proto; +} + +} // namespace ash::nearby::presence
diff --git a/chromeos/ash/components/nearby/presence/credentials/proto_conversions.h b/chromeos/ash/components/nearby/presence/credentials/proto_conversions.h new file mode 100644 index 0000000..6a505c4 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/proto_conversions.h
@@ -0,0 +1,23 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/abseil-cpp/absl/types/optional.h" +#include "third_party/nearby/internal/proto/metadata.pb.h" + +#ifndef CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_PROTO_CONVERSIONS_H_ +#define CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_PROTO_CONVERSIONS_H_ + +namespace ash::nearby::presence { + +::nearby::internal::Metadata BuildMetadata( + ::nearby::internal::DeviceType device_type, + const std::string& account_name, + const std::string& device_name, + const std::string& user_name, + const std::string& profile_url, + const std::string& mac_address); + +} // namespace ash::nearby::presence + +#endif // CHROMEOS_ASH_COMPONENTS_NEARBY_PRESENCE_CREDENTIALS_PROTO_CONVERSIONS_H_
diff --git a/chromeos/ash/components/nearby/presence/credentials/proto_conversions_unittest.cc b/chromeos/ash/components/nearby/presence/credentials/proto_conversions_unittest.cc new file mode 100644 index 0000000..e415003 --- /dev/null +++ b/chromeos/ash/components/nearby/presence/credentials/proto_conversions_unittest.cc
@@ -0,0 +1,40 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/ash/components/nearby/presence/credentials/proto_conversions.h" + +#include "base/test/gtest_util.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +const std::string kUserEmail = "testtester@gmail.com"; +const std::string kDeviceName = "Test's Chromebook"; +const std::string kUserName = "Test Tester"; +const std::string kProfileUrl = "https://example.com"; +const std::string kMacAddress = "1A:2B:3C:4D:5E:6F"; + +} // namespace + +namespace ash::nearby::presence { + +class ProtoConversionsTest : public testing::Test {}; + +TEST_F(ProtoConversionsTest, BuildMetadata) { + ::nearby::internal::Metadata metadata = BuildMetadata( + /*device_type=*/::nearby::internal::DeviceType::DEVICE_TYPE_LAPTOP, + /*account_name=*/kUserEmail, + /*device_name=*/kDeviceName, + /*user_name=*/kUserName, + /*profile_url=*/kProfileUrl, + /*mac_address=*/kMacAddress); + + EXPECT_EQ(kUserEmail, metadata.account_name()); + EXPECT_EQ(kDeviceName, metadata.device_name()); + EXPECT_EQ(kUserName, metadata.user_name()); + EXPECT_EQ(kProfileUrl, metadata.device_profile_url()); + EXPECT_EQ(kMacAddress, metadata.bluetooth_mac_address()); +} + +} // namespace ash::nearby::presence
diff --git a/chromeos/ash/components/settings/cros_settings_names.cc b/chromeos/ash/components/settings/cros_settings_names.cc index bb8bf4f..f883307 100644 --- a/chromeos/ash/components/settings/cros_settings_names.cc +++ b/chromeos/ash/components/settings/cros_settings_names.cc
@@ -275,6 +275,10 @@ const char kReportDeviceSignalStrengthEventDrivenTelemetry[] = "cros.telemetry_reporting.report_signal_strength_event_driven_telemetry"; +// Determines whether the network events are reported. +const char kDeviceReportNetworkEvents[] = + "cros.reporting.report_network_events"; + // This policy should not appear in the protobuf ever but is used internally to // signal that we are running in a "safe-mode" for policy recovery. const char kPolicyMissingMitigationMode[] =
diff --git a/chromeos/ash/components/settings/cros_settings_names.h b/chromeos/ash/components/settings/cros_settings_names.h index f37950dd..0546b71 100644 --- a/chromeos/ash/components/settings/cros_settings_names.h +++ b/chromeos/ash/components/settings/cros_settings_names.h
@@ -168,6 +168,8 @@ extern const char kReportDeviceAudioStatusCheckingRateMs[]; COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SETTINGS) extern const char kReportDeviceSignalStrengthEventDrivenTelemetry[]; +COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SETTINGS) +extern const char kDeviceReportNetworkEvents[]; COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SETTINGS) extern const char kDeviceActivityHeartbeatCollectionRateMs[];
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb index a2f1b1c..45f2b4c 100644 --- a/chromeos/strings/chromeos_strings_am.xtb +++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -140,6 +140,7 @@ <translation id="2056550196601855911">IPv4/IPv6</translation> <translation id="2080070583977670716">ተጨማሪ ቅንብሮች</translation> <translation id="2085089206770112532">የማሳያ ብሩህነት መቀነሻ</translation> +<translation id="209751264101900360">ከንጋት ወደ ጨለማ - Cloud Flow</translation> <translation id="2102231663024125441">የጽሁፍ አርትዖት</translation> <translation id="2105810540595158374">መሣሪያ የጨዋታ መቆጣጠሪያ ነው።</translation> <translation id="2119172414412204879"><ph name="BOARD_NAME" />፣ ስሪት <ph name="MILESTONE_VERSION" /></translation> @@ -370,6 +371,7 @@ <translation id="4275663329226226506">ማህደረ መረጃ</translation> <translation id="4289540628985791613">ማጠቃለያ</translation> <translation id="4289849978083912975">የተንሸራታች ትዕይንት</translation> +<translation id="4293621540182258188">ከንጋት ወደ ጨለማ - Earth Flow</translation> <translation id="4297501883039923494">ቆሟል - ያልታወቀ ስህተት</translation> <translation id="4300073214558989"><ph name="IMAGE_COUNT" /> ምስሎች</translation> <translation id="4311195029067684288">ሙሉ</translation> @@ -544,6 +546,7 @@ <translation id="576835345334454681">የማሳያ ብሩህነት መጨመሪያ</translation> <translation id="57838592816432529">ድምፅ ይዝጉ</translation> <translation id="5784136236926853061">ከፍተኛ የኤችቲቲፒ የስርዓተ ምላሽ ጊዜ</translation> +<translation id="5809090008577139505">አውሮራ</translation> <translation id="5826644637650799838">ስለሥነ ጥበቡ</translation> <translation id="5832805196449965646">ሰው አክል</translation> <translation id="583281660410589416">ያልታወቀ </translation> @@ -562,6 +565,7 @@ <translation id="5907649332524363701">የቁልፍ ቀለም</translation> <translation id="5916084858004523819">የተከለከሉ</translation> <translation id="5916664084637901428">በርቷል</translation> +<translation id="5918201491776799918">የChromebook Plus ለሚመለከተው የተወሰነ ሥነ ጥበብን ይምረጡ</translation> <translation id="5921506667911082617">{COUNT,plural, =1{የእርስዎ ፋይል በተሳካ ሁኔታ ተቃኝቶ <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" /> ላይ ተቀምጧል።}one{የእርስዎ ፋይሎች በተሳካ ሁኔታ ተቃኝቶ <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" /> ላይ ተቀምጧል።}other{የእርስዎ ፋይሎች በተሳካ ሁኔታ ተቃኝቶ <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" /> ላይ ተቀምጧል።}}</translation> <translation id="5931523347251946569">ፋይል አልተገኘም</translation> <translation id="5939518447894949180">ዳግም አስጀምር</translation> @@ -818,6 +822,7 @@ <translation id="8138405288920084977">LTEAdvanced</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" />ን ምረጥ</translation> <translation id="8151185429379586178">የገንቢ መሳሪያዎች</translation> +<translation id="8153923300383192510">የChromebook Plus ለሚመለከተው የተወሰነ</translation> <translation id="8179976553408161302">አስገባ</translation> <translation id="8183974620058026102">አባሪ አድርግ</translation> <translation id="8206859287963243715">ሴሉላር</translation>
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb index f237c1f..571d7fd8 100644 --- a/chromeos/strings/chromeos_strings_ar.xtb +++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">إليك بعض المراجع المفيدة الأخرى:</translation> <translation id="1905710495812624430">تم تجاوز الحد الأقصى لعدد المحاولات المسموح بها.</translation> <translation id="1908234395526491708">تعذَّر طلب بروتوكول UDP.</translation> +<translation id="1923388006036088459">ألوان التمييز</translation> <translation id="1947737735496445907">تمت الطباعة</translation> <translation id="1951012854035635156">المساعد</translation> <translation id="1962550982027027473">يجب إدخال اسم نقطة وصول تلقائي.</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">اكتمل التنزيل</translation> <translation id="3969602104473960991">تم تعديل كلمة مرور نظام التشغيل Chrome</translation> <translation id="397105322502079400">جارٍ الحساب...</translation> +<translation id="3974175076798940554">تتوفّر الآن مواد عرض حصرية لجهاز Chromebook Plus</translation> <translation id="39823212440917567">ستتم إزالة طلبات الطباعة التي مرَّ عليها أكثر من <ph name="NUMBER_OF_DAYS" /> يوم.</translation> <translation id="3993704782688964914">الجهاز <ph name="DEVICE_NAME" /> محدَّث الآن.</translation> <translation id="4003384961948020559">تعذّرت الطباعة - المخرجات ممتلئة</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">يمكنك إضافة حساب إلى الدخول المتعدد. يمكن الدخول إلى جميع الحسابات التي تم تسجيل الدخول إليها بدون كلمة مرور، لذا فإن هذه الميزة لا يجب استخدامها إلا مع الحسابات الموثوق بها.</translation> <translation id="8364946094152050673">خادم الأسماء فارغ.</translation> <translation id="8372477600026034341">المضيفون الإضافيون</translation> +<translation id="8373046809163484087">يمكنك استخدام مجموعات الألوان التي تتطابق مع خلفيتك.</translation> <translation id="8380114448424469341">إرساء النافذة على النصف <ph name="DIRECTION" /> من الشاشة</translation> <translation id="8395584934117017006">تُدير المؤسسة جهاز <ph name="DEVICE_TYPE" /> هذا.</translation> <translation id="8398927464629426868">معدّل شحن الجهاز أو تفريغ شحنه حاليًا</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">اسم المستخدم</translation> <translation id="8503836310948963452">يُرجى الانتظار بضع دقائق فقط…</translation> <translation id="8508640263392900755">تفاصيل APN</translation> +<translation id="8522687886059337719">يمكنك الآن الوصول إلى <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />خلفيات<ph name="END_LINK_WALLPAPER_SUBPAGE" /> و<ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />شاشة استراحة<ph name="END_LINK_SCREENSAVER_SUBPAGE" /> جديدة.</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">قد يتطلّب مشغّل شبكة الجوّال تفعيل هذا الخيار للاتصال بالشبكة التابعة له. يُرجى التواصل مع مشغّل شبكة الجوّال للاطّلاع على التفاصيل.</translation>
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb index 6c98c81..5c8d36a 100644 --- a/chromeos/strings/chromeos_strings_as.xtb +++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">এইবোৰ অন্য কিছুমান সহায়ক উৎস:</translation> <translation id="1905710495812624430">চেষ্টা কৰাৰ সৰ্বাধিক সীমা অতিক্ৰম কৰিছে।</translation> <translation id="1908234395526491708">বিফল UDP অনুৰোধসমূহ</translation> +<translation id="1923388006036088459">বৈশিষ্ট্যপূৰ্ণ ৰং</translation> <translation id="1947737735496445907">প্ৰিণ্ট কৰা হ’ল</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1962550982027027473">এটা ডিফ’ল্ট এপিএনৰ আৱশ্যক</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">ডাউনল’ড সম্পূৰ্ণ হ’ল</translation> <translation id="3969602104473960991">ChromeOSৰ পাছৱৰ্ড আপডে’ট কৰা হৈছে</translation> <translation id="397105322502079400">গণনা কৰি থকা হৈছে…</translation> +<translation id="3974175076798940554">এতিয়া Chromebook Plusৰ বিশেষ সম্পদসমূহ উপলব্ধ</translation> <translation id="39823212440917567"><ph name="NUMBER_OF_DAYS" /> দিনতকৈ পুৰণি প্ৰিণ্টৰ কামসমূহ আঁতৰোৱা হ’ব</translation> <translation id="3993704782688964914">আপোনাৰ <ph name="DEVICE_NAME" />টো এতিয়া আপ টু ডে’ট হৈ আছে</translation> <translation id="4003384961948020559">বিফল হৈছে - আউটপুট ভৰ্তি হৈ গৈছে</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">একাধিক ছাইন-ইন কৰিবলৈ এটা একাউণ্ট যোগ কৰক। ছাইন ইন কৰি থোৱা সকলো একাউণ্ট পাছৱৰ্ড অবিহনেই এক্সেছ কৰিব পাৰি, সেয়েহে এই সুবিধাটো কেৱল বিশ্বাসযোগ্য একাউণ্টৰ সৈতেহে ব্যৱহাৰ কৰা উচিত।</translation> <translation id="8364946094152050673">ড’মেইনৰ নাম থকা ছাৰ্ভাৰসমূহ খালী</translation> <translation id="8372477600026034341">অতিৰিক্ত হ’ষ্ট</translation> +<translation id="8373046809163484087">আপোনাৰ ৱালপেপাৰৰ সৈতে মিলা ৰঙৰ ছেট ব্যৱহাৰ কৰক</translation> <translation id="8380114448424469341">স্ক্ৰীনৰ <ph name="DIRECTION" /> ফালৰ আধা অংশত ৱিণ্ড’ ড’ক কৰক</translation> <translation id="8395584934117017006">এই <ph name="DEVICE_TYPE" />টো এণ্টাৰপ্ৰাইজে পৰিচালনা কৰে</translation> <translation id="8398927464629426868">বৰ্তমান ডিভাইচটো চাৰ্জ অথবা ডিছচাৰ্জ হৈ থকাৰ হাৰ</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">ব্যৱহাৰকাৰীৰ নাম</translation> <translation id="8503836310948963452">আৰু মাত্ৰ কেইমিনিটমান বাকী…</translation> <translation id="8508640263392900755">এপিএনৰ সবিশেষ</translation> +<translation id="8522687886059337719">আপোনাৰ এতিয়া নতুন <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />ৱালপেপাৰ<ph name="END_LINK_WALLPAPER_SUBPAGE" /> আৰু <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />স্ক্ৰীন ছেভাৰ<ph name="END_LINK_SCREENSAVER_SUBPAGE" />ৰ এক্সেছ আছে</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">আপোনাৰ বাহকৰ নেটৱৰ্কৰ সৈতে সংযুক্ত হ’বলৈ সেইটোক এই বিকল্পটোৰ আৱশ্যক হ’ব পাৰে। সবিশেষৰ বাবে আপোনাৰ বাহকৰ সৈতে যোগাযোগ কৰক।</translation>
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb index 71b2cb9..ed4c1c9 100644 --- a/chromeos/strings/chromeos_strings_bn.xtb +++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">এখানে কিছু অন্যান্য সহায়ক রিসোর্স রয়েছে:</translation> <translation id="1905710495812624430">সর্বোচ্চ অনুমোদিত প্রচেষ্টা ছাড়িয়ে গেছে।</translation> <translation id="1908234395526491708">UDP-এর অনুরোধ করা যায়নি</translation> +<translation id="1923388006036088459">অ্যাকসেন্ট কালার</translation> <translation id="1947737735496445907">প্রিন্ট করা হয়েছে</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1962550982027027473">ডিফল্ট APN দিতে হবে</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">ডাউনলোড সম্পূর্ণ</translation> <translation id="3969602104473960991">ChromeOS-এর পাসওয়ার্ড আপডেট করা হয়েছে</translation> <translation id="397105322502079400">গণনা করা হচ্ছে...</translation> +<translation id="3974175076798940554">এক্সক্লুসিভ Chromebook Plus অ্যাসেট এখন উপলভ্য</translation> <translation id="39823212440917567"><ph name="NUMBER_OF_DAYS" /> দিনের বেশি পুরনো প্রিন্ট জব সরিয়ে দেওয়া হবে</translation> <translation id="3993704782688964914">আপনার <ph name="DEVICE_NAME" /> ডিভাইস এখন আপ-টু-ডেট আছে</translation> <translation id="4003384961948020559">প্রিন্ট করা যায়নি - আউটপুট বিন ভর্তি হয়ে গেছে</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">একাধিক সাইন-ইন-এ একটি অ্যাকাউন্ট যোগ করুন৷ সমস্ত সাইন-ইন থাকা অ্যাকাউন্টগুলি কোনো পাসওয়ার্ড ছাড়াই অ্যাক্সেস করা যাবে, তাই এই বৈশিষ্ট্যটি শুধুমাত্র বিশ্বস্ত অ্যাকাউন্টগুলির সাথে ব্যবহার করা উচিৎ৷</translation> <translation id="8364946094152050673">ডোমেন নেম সার্ভার খালি রয়েছে</translation> <translation id="8372477600026034341">এক্সট্রা হোস্ট</translation> +<translation id="8373046809163484087">আপনার ওয়ালপেপারের সাথে মেলে এমন রঙের সেট ব্যবহার করুন</translation> <translation id="8380114448424469341">স্ক্রিনের <ph name="DIRECTION" /> দিকের অর্ধেক জায়গায় উইন্ডো ডক করুন</translation> <translation id="8395584934117017006">এই <ph name="DEVICE_TYPE" /> এন্টারপ্রাইজ ম্যানেজ করে</translation> <translation id="8398927464629426868">বর্তমানে যে হারে ডিভাইসটি চার্জ হচ্ছে বা এটির চার্জ শেষ হচ্ছে</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">ইউজারনেম</translation> <translation id="8503836310948963452">আর মাত্র কয়েক মিনিট...</translation> <translation id="8508640263392900755">APN সম্পর্কিত বিবরণ</translation> +<translation id="8522687886059337719">আপনি এখন নতুন <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />ওয়ালপেপার<ph name="END_LINK_WALLPAPER_SUBPAGE" /> এবং <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />স্ক্রিন সেভার<ph name="END_LINK_SCREENSAVER_SUBPAGE" /> অ্যাক্সেস করতে পারবেন</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">নেটওয়ার্কে কানেক্ট করার জন্য আপনার পরিষেবা প্রদানকারীর এই বিকল্পের প্রয়োজন হতে পারে। বিশদ বিবরণের জন্য আপনার পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।</translation>
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb index 3338847..336d8dc 100644 --- a/chromeos/strings/chromeos_strings_bs.xtb +++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -123,7 +123,7 @@ <translation id="1904932688895783618">Evo još nekih korisnih izvora:</translation> <translation id="1905710495812624430">Prekoračen je maksimalan broj dozvoljenih pokušaja.</translation> <translation id="1908234395526491708">Greške UDP zahtjeva</translation> -<translation id="1923388006036088459">Boje isticanja</translation> +<translation id="1923388006036088459">Boje naglašavanja</translation> <translation id="1947737735496445907">Odštampano</translation> <translation id="1951012854035635156">Asistent</translation> <translation id="1962550982027027473">Potreban je zadani APN</translation> @@ -333,7 +333,7 @@ <translation id="3967822245660637423">Preuzimanje je završeno</translation> <translation id="3969602104473960991">Lozinka za ChromeOS je ažurirana</translation> <translation id="397105322502079400">Računanje…</translation> -<translation id="3974175076798940554">Sada su dostupni ekskluzivni elementi za Chromebook Plus</translation> +<translation id="3974175076798940554">Ekskluzivni materijali za Chromebook Plus su sada dostupni</translation> <translation id="39823212440917567">Zadaci za štampanje stariji od <ph name="NUMBER_OF_DAYS" /> dana će se ukloniti</translation> <translation id="3993704782688964914">Vaš uređaj <ph name="DEVICE_NAME" /> je sada ažuriran</translation> <translation id="4003384961948020559">Nije uspjelo – izlaz je pun</translation> @@ -517,6 +517,7 @@ <translation id="5423849171846380976">Aktivirano</translation> <translation id="5430931332414098647">Trenutno dijeljenje internetske veze</translation> <translation id="5431318178759467895">Boja</translation> +<translation id="5456936324019847994">Povezivanje s omogućenim prilagođenim APN-ovima nije moguće. Za više informacije obratite se mobilnom operateru.</translation> <translation id="5457599981699367932">Pregledajte kao gost</translation> <translation id="54609108002486618">Upravljani</translation> <translation id="5478289488939624992">{ATTEMPTS_LEFT,plural, =1{Preostao je još {0} pokušaj}one{Preostao je još {0} pokušaj}few{Preostala su još {0} pokušaja}other{Preostalo je još {0} pokušaja}}</translation> @@ -847,7 +848,7 @@ <translation id="8352772353338965963">Dodajte račun za višestruku prijavu. Svim računima na kojima je izvršena prijava je moguće pristupiti bez lozinke. Ovu funkciju treba koristiti isključivo s pouzdanim računima.</translation> <translation id="8364946094152050673">Prazni serveri naziva</translation> <translation id="8372477600026034341">Dodatni host računari</translation> -<translation id="8373046809163484087">Upotreba skupova boja koji odgovaraju pozadini</translation> +<translation id="8373046809163484087">Koristite skupove boja koji odgovaraju pozadinskoj slici</translation> <translation id="8380114448424469341">Priključivanje prozora na <ph name="DIRECTION" /> polovini ekrana</translation> <translation id="8395584934117017006">Ovim uređajem <ph name="DEVICE_TYPE" /> upravlja preduzeće</translation> <translation id="8398927464629426868">Brzina kojom se uređaj trenutno puni ili prazni</translation> @@ -867,7 +868,7 @@ <translation id="8503813439785031346">Korisničko ime</translation> <translation id="8503836310948963452">Još samo nekoliko minuta...</translation> <translation id="8508640263392900755">Detalji APN-a</translation> -<translation id="8522687886059337719">Sada imate pristup novim <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />pozadinama<ph name="END_LINK_WALLPAPER_SUBPAGE" /> i <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />čuvaru zaslona<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> +<translation id="8522687886059337719">Sada imate pristup novim <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />pozadinskim slikama<ph name="END_LINK_WALLPAPER_SUBPAGE" /> i <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />čuvaru ekrana<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">Mobilni operater može zahtijevati ovu opciju radi povezivanja s njegovom mrežom. Za detalje se obratite mobilnom operateru.</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb index 368c154d..0d56ed29 100644 --- a/chromeos/strings/chromeos_strings_fr.xtb +++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -140,6 +140,7 @@ <translation id="2056550196601855911">IPv4/IPv6</translation> <translation id="2080070583977670716">Plus de paramètres</translation> <translation id="2085089206770112532">Baisser la luminosité de l'écran</translation> +<translation id="209751264101900360">Du lever au coucher de soleil (flux nuageux)</translation> <translation id="2102231663024125441">Modification de texte</translation> <translation id="2105810540595158374">L'appareil est une manette de jeu.</translation> <translation id="2119172414412204879"><ph name="BOARD_NAME" />, version <ph name="MILESTONE_VERSION" /></translation> @@ -370,6 +371,7 @@ <translation id="4275663329226226506">Médias</translation> <translation id="4289540628985791613">Présentation</translation> <translation id="4289849978083912975">Diaporama</translation> +<translation id="4293621540182258188">Du lever au coucher de soleil (flux terrestre)</translation> <translation id="4297501883039923494">Tâche suspendue - Erreur inconnue</translation> <translation id="4300073214558989"><ph name="IMAGE_COUNT" /> images</translation> <translation id="4311195029067684288">Plein écran</translation> @@ -544,6 +546,7 @@ <translation id="576835345334454681">Augmenter la luminosité de l'écran</translation> <translation id="57838592816432529">Couper le son</translation> <translation id="5784136236926853061">Latence HTTP élevée</translation> +<translation id="5809090008577139505">Aurore</translation> <translation id="5826644637650799838">À propos de l'art</translation> <translation id="5832805196449965646">Ajouter une personne</translation> <translation id="583281660410589416">Inconnu</translation> @@ -562,6 +565,7 @@ <translation id="5907649332524363701">couleur touche</translation> <translation id="5916084858004523819">Interdit</translation> <translation id="5916664084637901428">Activé</translation> +<translation id="5918201491776799918">Sélectionner une exclusivité Chromebook Plus</translation> <translation id="5921506667911082617">{COUNT,plural, =1{Votre fichier a été scanné et enregistré dans <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" />.}one{Votre fichier a été scanné et enregistré dans <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" />.}other{Vos fichiers ont été scannés et enregistrés dans <ph name="LINK_BEGIN" /><ph name="FOLDER_NAME" /><ph name="LINK_END" />.}}</translation> <translation id="5931523347251946569">Fichier introuvable</translation> <translation id="5939518447894949180">Réinitialiser</translation> @@ -818,6 +822,7 @@ <translation id="8138405288920084977">LTE Advanced</translation> <translation id="8143951647992294073">Sélectionnez <ph name="TOPIC_SOURCE" /> - <ph name="TOPIC_SOURCE_DESC" /></translation> <translation id="8151185429379586178">Outils de développement</translation> +<translation id="8153923300383192510">Exclusivité Chromebook Plus</translation> <translation id="8179976553408161302">Entrée</translation> <translation id="8183974620058026102">Joindre</translation> <translation id="8206859287963243715">Mobile</translation>
diff --git a/chromeos/strings/chromeos_strings_hr.xtb b/chromeos/strings/chromeos_strings_hr.xtb index ac53bf6..3342fba 100644 --- a/chromeos/strings/chromeos_strings_hr.xtb +++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -517,6 +517,7 @@ <translation id="5423849171846380976">Aktivirano</translation> <translation id="5430931332414098647">Automatsko modemsko povezivanje</translation> <translation id="5431318178759467895">Boja</translation> +<translation id="5456936324019847994">Povezivanje s omogućenim prilagođenim APN-ovima nije moguće. Za više informacije obratite se mobilnom operateru.</translation> <translation id="5457599981699367932">Pregledavaj kao gost</translation> <translation id="54609108002486618">Upravljani</translation> <translation id="5478289488939624992">{ATTEMPTS_LEFT,plural, =1{Preostao je {0} pokušaj.}one{Preostao je {0} pokušaj.}few{Preostala su {0} pokušaja.}other{Preostalo je {0} pokušaja.}}</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb index 038bf435..9ad9636 100644 --- a/chromeos/strings/chromeos_strings_it.xtb +++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">Ecco alcune altre risorse utili:</translation> <translation id="1905710495812624430">Numero massimo di tentativi consentiti superato.</translation> <translation id="1908234395526491708">Errori delle richieste UDP</translation> +<translation id="1923388006036088459">Colori intensi</translation> <translation id="1947737735496445907">Stampato</translation> <translation id="1951012854035635156">Assistente</translation> <translation id="1962550982027027473">È richiesto un APN predefinito</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">Download completato</translation> <translation id="3969602104473960991">Password di ChromeOS aggiornata</translation> <translation id="397105322502079400">Calcolo in corso...</translation> +<translation id="3974175076798940554">Asset esclusivi per Chromebook Plus ora disponibili</translation> <translation id="39823212440917567">I processi di stampa risalenti a oltre <ph name="NUMBER_OF_DAYS" /> giorni fa verranno rimossi</translation> <translation id="3993704782688964914">Dispositivo (<ph name="DEVICE_NAME" />) aggiornato</translation> <translation id="4003384961948020559">Operazione non riuscita - Vassoio di uscita pieno</translation> @@ -515,6 +517,7 @@ <translation id="5423849171846380976">Attivato</translation> <translation id="5430931332414098647">Tethering istantaneo</translation> <translation id="5431318178759467895">A colori</translation> +<translation id="5456936324019847994">Impossibile connettersi agli APN personalizzati attivi. Per ulteriori informazioni, contatta il tuo operatore di telefonia mobile.</translation> <translation id="5457599981699367932">Naviga come ospite</translation> <translation id="54609108002486618">Gestito</translation> <translation id="5478289488939624992">{ATTEMPTS_LEFT,plural, =1{{0} tentativo rimanente}other{{0} tentativi rimanenti}}</translation> @@ -570,6 +573,7 @@ <translation id="5931523347251946569">File non trovato</translation> <translation id="5939518447894949180">Reimposta</translation> <translation id="594552776027197022">Genera coppia di chiavi casuale</translation> +<translation id="5946538341867151940">La connessione non è stata ancora stabilita. Se il tuo operatore di telefonia mobile consiglia un APN personalizzato, inserisci le relative informazioni selezionando "+ Nuovo APN"</translation> <translation id="5972388717451707488">Update Engine</translation> <translation id="5984145644188835034">Sfondo predefinito</translation> <translation id="6017514345406065928">Verde</translation> @@ -845,6 +849,7 @@ <translation id="8352772353338965963">Aggiungi un account per l'accesso simultaneo. Poiché gli account che hanno effettuato l'accesso sono tutti accessibili senza password, devi utilizzare questa funzione solo con gli account attendibili.</translation> <translation id="8364946094152050673">il campo dei server dei nomi è vuoto</translation> <translation id="8372477600026034341">Host aggiuntivi</translation> +<translation id="8373046809163484087">Utilizza set di colori corrispondenti al tuo sfondo</translation> <translation id="8380114448424469341">Aggancia la finestra alla metà <ph name="DIRECTION" /> dello schermo</translation> <translation id="8395584934117017006">Questo dispositivo <ph name="DEVICE_TYPE" /> è gestito dall'azienda</translation> <translation id="8398927464629426868">L'attuale velocità di carica o scaricamento del dispositivo</translation> @@ -864,6 +869,7 @@ <translation id="8503813439785031346">Nome utente</translation> <translation id="8503836310948963452">Solo qualche altro minuto…</translation> <translation id="8508640263392900755">Dettagli APN</translation> +<translation id="8522687886059337719">Ora hai accesso a nuovi <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />sfondi<ph name="END_LINK_WALLPAPER_SUBPAGE" /> e <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />salvaschermi<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">Il tuo operatore potrebbe richiedere questa opzione per consentire di collegarsi alla sua rete. Contatta l'operatore per avere informazioni dettagliate.</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb index eaa49dc0..67f6f6e 100644 --- a/chromeos/strings/chromeos_strings_iw.xtb +++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">הנה עוד כמה מקורות מידע שימושיים:</translation> <translation id="1905710495812624430">חריגה ממספר הניסיונות המרבי המותר.</translation> <translation id="1908234395526491708">בקשות UDP נכשלו</translation> +<translation id="1923388006036088459">צבעים משניים</translation> <translation id="1947737735496445907">הודפסה</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1962550982027027473">נדרש APN כברירת מחדל</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">ההורדה הושלמה</translation> <translation id="3969602104473960991">הסיסמה של ChromeOS עודכנה</translation> <translation id="397105322502079400">מתבצע חישוב...</translation> +<translation id="3974175076798940554">עכשיו אפשר לגשת לנכסים בלעדיים של Chromebook Plus</translation> <translation id="39823212440917567">משימות הדפסה בנות יותר מ-<ph name="NUMBER_OF_DAYS" /> ימים יוסרו</translation> <translation id="3993704782688964914">עכשיו המכשיר <ph name="DEVICE_NAME" /> מעודכן</translation> <translation id="4003384961948020559">נכשלה – מגש הפלט מלא</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">יש להוסיף חשבון לכניסה עם מספר חשבונות. כל החשבונות שאליהם נכנסת נגישים ללא סיסמה, לכן יש להשתמש בתכונה זו עם חשבונות אמינים בלבד.</translation> <translation id="8364946094152050673">שרתי שמות ריקים</translation> <translation id="8372477600026034341">מארחים נוספים</translation> +<translation id="8373046809163484087">שימוש בקבוצות צבעים שמתאימות לטפט שלך</translation> <translation id="8380114448424469341">קיבוע החלון בחצי המסך בצד <ph name="DIRECTION" /></translation> <translation id="8395584934117017006"><ph name="DEVICE_TYPE" /> זה מנוהל על ידי ארגון</translation> <translation id="8398927464629426868">קצב הטעינה או קצב הפריקה הנוכחיים של המכשיר</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">שם משתמש</translation> <translation id="8503836310948963452">רק עוד מספר דקות…</translation> <translation id="8508640263392900755">פרטי APN</translation> +<translation id="8522687886059337719">עכשיו יש לך גישה ל<ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />טפטים<ph name="END_LINK_WALLPAPER_SUBPAGE" /> חדשים ול<ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />שומר מסך<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">ייתכן שהספק שלך ידרוש את האפשרות הזו כדי להתחבר לרשת שלו. למידע נוסף, ניתן לפנות לספק.</translation>
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb index 6c1ab110..de84b5e 100644 --- a/chromeos/strings/chromeos_strings_km.xtb +++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -517,6 +517,7 @@ <translation id="5423849171846380976">បានធ្វើសកម្មភាព</translation> <translation id="5430931332414098647">ការភ្ជាប់ភ្លាមៗ</translation> <translation id="5431318178759467895">ពណ៌</translation> +<translation id="5456936324019847994">មិនអាចភ្ជាប់ទៅ APN ផ្ទាល់ខ្លួនទាំងឡាយដែលបានបើកទេ។ សូមទាក់ទងទៅក្រុមហ៊ុនសេវាទូរសព្ទចល័តរបស់អ្នក ដើម្បីទទួលបានព័ត៌មានបន្ថែម។</translation> <translation id="5457599981699367932">រុករកជារបៀបភ្ញៀវ</translation> <translation id="54609108002486618">បានគ្រប់គ្រង</translation> <translation id="5478289488939624992">{ATTEMPTS_LEFT,plural, =1{អាចព្យាយាមបាន {0} ដងទៀត}other{អាចព្យាយាមបាន {0} ដងទៀត}}</translation> @@ -572,6 +573,7 @@ <translation id="5931523347251946569">រកមិនឃើញឯកសារទេ</translation> <translation id="5939518447894949180">កំណត់ឡើងវិញ</translation> <translation id="594552776027197022">បង្កើតគូសោចៃដន្យ</translation> +<translation id="5946538341867151940">អ្នកមិនត្រូវបានភ្ជាប់នៅឡើយទេ។ ប្រសិនបើក្រុមហ៊ុនសេវាទូរសព្ទចល័តរបស់អ្នកណែនាំ APN ផ្ទាល់ខ្លួន សូមបញ្ចូលព័ត៌មាន APN ដោយជ្រើសរើស "+ APN ថ្មី"</translation> <translation id="5972388717451707488">Update Engine</translation> <translation id="5984145644188835034">ផ្ទាំងរូបភាពលំនាំដើម</translation> <translation id="6017514345406065928">បៃតង</translation>
diff --git a/chromeos/strings/chromeos_strings_kn.xtb b/chromeos/strings/chromeos_strings_kn.xtb index 1285754..2009449 100644 --- a/chromeos/strings/chromeos_strings_kn.xtb +++ b/chromeos/strings/chromeos_strings_kn.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">ಕೆಲವು ಇತರ ಉಪಯುಕ್ತ ಮಾಹಿತಿಯ ಮೂಲಗಳು ಇಲ್ಲಿವೆ:</translation> <translation id="1905710495812624430">ಅನುಮತಿಸಲಾದ ಗರಿಷ್ಟ ಪ್ರಯತ್ನಗಳು ಮೀರಿವೆ.</translation> <translation id="1908234395526491708">UDP ವಿನಂತಿ ವೈಫಲ್ಯಗಳು</translation> +<translation id="1923388006036088459">ಆ್ಯಕ್ಸೆಂಟ್ನ ಬಣ್ಣಗಳು</translation> <translation id="1947737735496445907">ಮುದ್ರಿಸಲಾಗಿದೆ</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1962550982027027473">ಡೀಫಾಲ್ಟ್ APN ಅಗತ್ಯವಿದೆ</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">ಡೌನ್ಲೋಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ</translation> <translation id="3969602104473960991">ChromeOS ಪಾಸ್ವರ್ಡ್ ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="397105322502079400">ಎಣಿಸಲಾಗುತ್ತಿದೆ...</translation> +<translation id="3974175076798940554">ವಿಶಿಷ್ಟ Chromebook Plus ಸ್ವತ್ತುಗಳು ಈಗ ಲಭ್ಯವಿವೆ</translation> <translation id="39823212440917567"><ph name="NUMBER_OF_DAYS" /> ದಿನಗಳಿಗಿಂತ ಹಳೆಯದಾದ ಮುದ್ರಣ ಕಾರ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ</translation> <translation id="3993704782688964914">ನಿಮ್ಮ <ph name="DEVICE_NAME" /> ಈಗ ಅಪ್ ಟು ಡೇಟ್ ಆಗಿದೆ</translation> <translation id="4003384961948020559">ವಿಫಲವಾಗಿದೆ - ಔಟ್ಪುಟ್ ಭರ್ತಿಯಾಗಿದೆ</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">ಬಹು ಸೈನ್ಇನ್ಗೆ ಖಾತೆಯನ್ನು ಸೇರಿಸಿ. ಎಲ್ಲ ಸೈನ್-ಇನ್ ಮಾಡಲಾದ ಖಾತೆಗಳನ್ನು ಪಾಸ್ವರ್ಡ್ ಇಲ್ಲದೆಯೇ ಪ್ರವೇಶಿಸಬಹುದಾಗಿದೆ, ಹಾಗಾಗಿ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ವಿಶ್ವಾಸಾರ್ಹ ಖಾತೆಗಳಿಗಾಗಿ ಮಾತ್ರ ಬಳಸಬೇಕು.</translation> <translation id="8364946094152050673">ಖಾಲಿಯಿರುವ ಹೆಸರಿನ ಸರ್ವರ್ಗಳು</translation> <translation id="8372477600026034341">ಹೆಚ್ಚುವರಿ ಹೋಸ್ಟ್ಗಳು</translation> +<translation id="8373046809163484087">ನಿಮ್ಮ ವಾಲ್ಪೇಪರ್ಗೆ ಹೊಂದಾಣಿಕೆಯಾಗುವ ಬಣ್ಣದ ಸೆಟ್ಗಳನ್ನು ಬಳಸಿ</translation> <translation id="8380114448424469341">ಸ್ಕ್ರೀನ್ನ <ph name="DIRECTION" /> ನಲ್ಲಿನ ಅರ್ಧಭಾಗದಲ್ಲಿ ವಿಂಡೋ ಡಾಕ್ ಮಾಡಿ</translation> <translation id="8395584934117017006">ಈ <ph name="DEVICE_TYPE" /> ಅನ್ನು ಎಂಟರ್ಪ್ರೈಸ್ ನಿರ್ವಹಣೆ ಮಾಡುತ್ತಿದೆ</translation> <translation id="8398927464629426868">ಸಾಧನವು ಪ್ರಸ್ತುತವಾಗಿ ಚಾರ್ಜ್ ಅಥವಾ ಡಿಸ್ಚಾರ್ಜ್ ಆಗುತ್ತಿರುವ ದರ</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">ಬಳಕೆದಾರರಹೆಸರು</translation> <translation id="8503836310948963452">ಕೇವಲ ಕೆಲವೇ ನಿಮಿಷಗಳು…</translation> <translation id="8508640263392900755">APN ವಿವರಗಳು</translation> +<translation id="8522687886059337719">ಈದೀಗ ನೀವು ಹೊಸ <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />ವಾಲ್ಪೇಪರ್ಗಳು<ph name="END_LINK_WALLPAPER_SUBPAGE" /> ಮತ್ತು <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" /> ಸ್ಕ್ರೀನ್ಸೇವರ್ಗೆ <ph name="END_LINK_SCREENSAVER_SUBPAGE" /> ಆ್ಯಕ್ಸೆಸ್ ಹೊಂದಿದ್ದೀರಿ</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">ನಿಮ್ಮ ವಾಹಕವು ತಮ್ಮ ನೆಟ್ವರ್ಕ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಈ ಆಯ್ಕೆಯ ಅಗತ್ಯವಿರಬಹುದು. ವಿವರಗಳಿಗಾಗಿ ನಿಮ್ಮ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index 48d9a7d..56ddcd9 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">സഹായകരമായ മറ്റ് ചില ഉറവിടങ്ങൾ ഇതാ:</translation> <translation id="1905710495812624430">അനുവദനീയമായ പരമാവധി ശ്രമങ്ങൾ നടത്തിക്കഴിഞ്ഞു.</translation> <translation id="1908234395526491708">പരാജയപ്പെട്ട UDP അഭ്യർത്ഥനകൾ</translation> +<translation id="1923388006036088459">ആക്സന്റ് നിറങ്ങൾ</translation> <translation id="1947737735496445907">പ്രിന്റ് ചെയ്തു</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1962550982027027473">ഡിഫോൾട്ട് ആയ ഒരു APN ആവശ്യമാണ്</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">ഡൗൺലോഡ് പൂർത്തിയായി</translation> <translation id="3969602104473960991">ChromeOS പാസ്വേഡ് അപ്ഡേറ്റ് ചെയ്തു</translation> <translation id="397105322502079400">കണക്കാക്കുന്നു...</translation> +<translation id="3974175076798940554">എക്സ്ക്ലൂസീവായ Chromebook Plus അസറ്റുകൾ ഇപ്പോൾ ലഭ്യമാണ്</translation> <translation id="39823212440917567"><ph name="NUMBER_OF_DAYS" /> ദിവസം മുമ്പുള്ള പ്രിന്റ് ജോലികൾ നീക്കം ചെയ്യും</translation> <translation id="3993704782688964914">നിങ്ങളുടെ <ph name="DEVICE_NAME" /> ഇപ്പോൾ അപ് ടു ഡേറ്റ് ആണ്</translation> <translation id="4003384961948020559">പ്രിന്റ് ചെയ്യാനായില്ല - ഔട്ട്പുട്ട് നിറഞ്ഞിരിക്കുന്നു</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">ഒന്നിലധികം സൈൻ-ഇന്നിനായി ഒരു അക്കൗണ്ട് ചേർക്കുക. സൈൻ-ഇൻ ചെയ്ത അക്കൗണ്ടുകളെല്ലാം ഒരു പാസ്വേഡില്ലാതെ ആക്സസ് ചെയ്യാനാകുമെന്നതിനാൽ ഈ സവിശേഷത പരിചയമുള്ള അക്കൗണ്ടുകളിൽ മാത്രമേ ഉപയോഗിക്കാവൂ.</translation> <translation id="8364946094152050673">ശൂന്യമായ നെയിം സെർവറുകൾ</translation> <translation id="8372477600026034341">അധിക ഹോസ്റ്റുകൾ</translation> +<translation id="8373046809163484087">നിങ്ങളുടെ വാൾപേപ്പറുമായി പൊരുത്തപ്പെടുന്ന വർണ്ണ സെറ്റുകൾ ഉപയോഗിക്കുക</translation> <translation id="8380114448424469341">സ്ക്രീനിന്റെ <ph name="DIRECTION" /> ഭാഗത്തെ വലിയ വശത്ത് വിൻഡോ ഡോക്ക് ചെയ്യുക</translation> <translation id="8395584934117017006">ഈ <ph name="DEVICE_TYPE" /> എന്റർപ്രൈസ് മാനേജ് ചെയ്യുന്നു</translation> <translation id="8398927464629426868">ഉപകരണം നിലവിൽ ചാർജ് ചെയ്യുന്നതോ ഡിസ്ചാർജ് ചെയ്യുന്നതോ ആയ റേറ്റ്</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">ഉപയോക്തൃനാമം</translation> <translation id="8503836310948963452">കുറച്ച് മിനിറ്റുകൾ കൂടി മാത്രം…</translation> <translation id="8508640263392900755">APN വിശദാംശങ്ങൾ</translation> +<translation id="8522687886059337719">നിങ്ങൾക്ക് ഇപ്പോൾ പുതിയ <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />വാൾപേപ്പറുകളിലേക്കും<ph name="END_LINK_WALLPAPER_SUBPAGE" /> <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />സ്ക്രീൻ സേവറിലേക്കും<ph name="END_LINK_SCREENSAVER_SUBPAGE" /> ആക്സസ് ഉണ്ട്</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">നിങ്ങളുടെ സേവനദാതാവിന് അവരുടെ നെറ്റ്വർക്കിലേക്ക് കണക്റ്റ് ചെയ്യാൻ ഈ ഓപ്ഷൻ ആവശ്യമായി വന്നേക്കാം. വിശദാംശങ്ങൾക്ക് നിങ്ങളുടെ സേവനദാതാവുമായി ബന്ധപ്പെടുക.</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb index 71a018a..cd2fcee0 100644 --- a/chromeos/strings/chromeos_strings_mr.xtb +++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">हे काही इतर उपयुक्त स्रोत आहेत:</translation> <translation id="1905710495812624430">कमाल अनुमती असलेले प्रयत्न ओलांडले.</translation> <translation id="1908234395526491708">UDP विनंती पूर्ण करता आली नाही</translation> +<translation id="1923388006036088459">ॲक्सेंट रंग</translation> <translation id="1947737735496445907">प्रिंट केले</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1962550982027027473">डीफॉल्ट APN ची आवश्यकता आहे</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">पूर्ण डाउनलोड करा</translation> <translation id="3969602104473960991">ChromeOS चा पासवर्ड अपडेट केला आहे</translation> <translation id="397105322502079400">गणना करत आहे...</translation> +<translation id="3974175076798940554">Chromebook Plus साठी खास ॲसेट उपलब्ध आहेत</translation> <translation id="39823212440917567"><ph name="NUMBER_OF_DAYS" /> दिवसांपेक्षा जुने प्रिंट जॉब काढून टाकले जातील</translation> <translation id="3993704782688964914">तुमचे <ph name="DEVICE_NAME" /> आता अप टू डेट आहे</translation> <translation id="4003384961948020559">अयशस्वी झाले - आउटपुट भरले आहे</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">मल्टिपल साइन-इन वर खाते जोडा. सर्व साइन इन केलेल्या खात्यांवर पासवर्डशिवाय प्रवेश केला जाऊ शकतो, म्हणून हे वैशिष्ट्य केवळ विश्वसनीय खात्यांसह वापरले जावे.</translation> <translation id="8364946094152050673">रिकामे नेम सर्व्हर</translation> <translation id="8372477600026034341">अतिरिक्त होस्ट</translation> +<translation id="8373046809163484087">तुमच्या वॉलपेपरशी जुळणाऱ्या रंगाचे संच वापरा</translation> <translation id="8380114448424469341">स्क्रीनच्या <ph name="DIRECTION" /> अर्ध्या भागात विंडो डॉक करा</translation> <translation id="8395584934117017006">हे <ph name="DEVICE_TYPE" /> एंटरप्राइझद्वारे व्यवस्थापित केलेले आहे</translation> <translation id="8398927464629426868">ज्या गतीने डिव्हाइस सध्या चार्ज किंवा डिस्चार्ज होत आहे</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">वापरकर्ता नाव</translation> <translation id="8503836310948963452">फक्त आणखी काही मिनिटे...</translation> <translation id="8508640263392900755">APN शी संबंधित तपशील</translation> +<translation id="8522687886059337719">तुमच्याकडे आता नवीन <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />वॉलपेपर<ph name="END_LINK_WALLPAPER_SUBPAGE" /> आणि <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />स्क्रीन सेव्हर<ph name="END_LINK_SCREENSAVER_SUBPAGE" /> चा अॅक्सेस आहे</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">तुमच्या वाहकाला त्यांच्या नेटवर्कशी कनेक्ट करण्यासाठी या पर्यायाची आवश्यकता असू शकते. तपशिलांसाठी तुमच्या वाहकाशी संपर्क साधा.</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb index 1b861f60..901de6a 100644 --- a/chromeos/strings/chromeos_strings_ms.xtb +++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">Yang berikut ialah beberapa sumber lain yang berguna:</translation> <translation id="1905710495812624430">Melebihi had maksimum percubaan yang dibenarkan.</translation> <translation id="1908234395526491708">Kegagalan permintaan UDP</translation> +<translation id="1923388006036088459">Warna aksen</translation> <translation id="1947737735496445907">Dicetak</translation> <translation id="1951012854035635156">Pembantu</translation> <translation id="1962550982027027473">APN lalai diperlukan</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">Muat turun selesai</translation> <translation id="3969602104473960991">Kata laluan Chrome OS dikemas kini</translation> <translation id="397105322502079400">Mengira...</translation> +<translation id="3974175076798940554">Aset Chromebook Plus yang eksklusif kini tersedia</translation> <translation id="39823212440917567">Tugas cetak yang melebihi <ph name="NUMBER_OF_DAYS" /> hari akan dialih keluar</translation> <translation id="3993704782688964914">Kini <ph name="DEVICE_NAME" /> anda terkini</translation> <translation id="4003384961948020559">Gagal - Output penuh</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">Tambahkan akaun untuk berbilang log masuk. Semua akaun dilog masuk boleh diakses tanpa kata laluan, jadi ciri ini mesti digunakan dengan akaun yang dipercayai sahaja.</translation> <translation id="8364946094152050673">Pelayan tiada nama</translation> <translation id="8372477600026034341">Hos tambahan</translation> +<translation id="8373046809163484087">Gunakan set warna yang sepadan dengan hiasan latar anda</translation> <translation id="8380114448424469341">Dokkan tetingkap pada separuh bahagian sebelah <ph name="DIRECTION" /> skrin</translation> <translation id="8395584934117017006"><ph name="DEVICE_TYPE" /> ini diurus perusahaan</translation> <translation id="8398927464629426868">Kadar pengecasan atau penyahcasan semasa peranti</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">Nama pengguna</translation> <translation id="8503836310948963452">Hanya beberapa minit lagi…</translation> <translation id="8508640263392900755">Butiran APN</translation> +<translation id="8522687886059337719">Kini anda mempunyai akses kepada <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />hiasan latar<ph name="END_LINK_WALLPAPER_SUBPAGE" /> dan <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />penyelamat skrin<ph name="END_LINK_SCREENSAVER_SUBPAGE" /> yang baharu</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">Pembawa anda mungkin memerlukan pilihan ini untuk menyambung kepada rangkaian mereka. Hubungi pembawa anda untuk mendapatkan butiran.</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb index d34d04b..b3df2c9 100644 --- a/chromeos/strings/chromeos_strings_my.xtb +++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">အခြားအသုံးဝင်မည့် ရင်းမြစ်အချို့ကို ဤနေရာတွင် ဖော်ပြထားသည်-</translation> <translation id="1905710495812624430">အများဆုံးခွင့်ပြုပေးထားသည့် အခေါက်အရေအတွက်ထက် ကျော်လွန်သွားပါပြီ။</translation> <translation id="1908234395526491708">UDP တောင်းဆိုချက် ချွတ်ယွင်းမှုများ</translation> +<translation id="1923388006036088459">အထူးပြုအရောင်များ</translation> <translation id="1947737735496445907">ပုံနှိပ်ထုတ်ပြီးပြီ</translation> <translation id="1951012854035635156">Assistant</translation> <translation id="1962550982027027473">မူရင်း APN လိုအပ်သည်</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">ဒေါင်းလုဒ်လုပ်ခြင်း ပြည့်စုံပါပြီ</translation> <translation id="3969602104473960991">ChromeOS စကားဝှက် အပ်ဒိတ်လုပ်ထားသည်</translation> <translation id="397105322502079400">တွက်ချက်နေ...</translation> +<translation id="3974175076798940554">အထူး Chromebook Plus အစိတ်အပိုင်းများကို ယခု ရနိုင်ပြီ</translation> <translation id="39823212440917567"><ph name="NUMBER_OF_DAYS" /> ရက်အထက် ပရင့်ထုတ်ရန်ဖိုင်များကို ဖယ်ရှားပါမည်</translation> <translation id="3993704782688964914">ယခု သင့် <ph name="DEVICE_NAME" /> အပ်ဒိတ်ဖြစ်နေပါပြီ</translation> <translation id="4003384961948020559">မအောင်မြင်ပါ - စာရွက်ထုတ်သည့်နေရာ ပြည့်နေသည်</translation> @@ -513,7 +515,7 @@ <translation id="5400907029458559844">ကိရိယာ ချိတ်ဆက်နေသည်။</translation> <translation id="5401938042319910061">'ပုံမှန်အစီအစဉ်" အားလုံး အသုံးပြုရန်</translation> <translation id="5423849171846380976">အသက်သွင်းပြီး</translation> -<translation id="5430931332414098647">အမြန်ချိတ်ဆက်မျှဝေခြင်း</translation> +<translation id="5430931332414098647">အလိုအလျောက် ချိတ်ဆက်မျှဝေခြင်း</translation> <translation id="5431318178759467895">အရောင်</translation> <translation id="5457599981699367932">ဧည့်သည့် အဖြစ် ရှာကြည့်ရန်</translation> <translation id="54609108002486618">ကြီးကြပ်ထားသည်</translation> @@ -570,6 +572,7 @@ <translation id="5931523347251946569">ဖိုင်ကို ရှာမတွေ့ပါ</translation> <translation id="5939518447894949180">ပြင်ဆင်သတ်မှတ်ရန်</translation> <translation id="594552776027197022">ကျပန်းကီးအတွဲ ထုတ်ရန်</translation> +<translation id="5946538341867151940">သင်မချိတ်ဆက်ရသေးပါဘူး။ သင့်မိုဘိုင်းဖုန်းကုမ္ပဏီက စိတ်ကြိုက် APN ကို အကြံပြုလျှင် “+ APN အသစ်” ကိုရွေးပြီး APN အချက်အလက်ထည့်ပါ</translation> <translation id="5972388717451707488">အင်ဂျင် အပ်ဒိတ်လုပ်ရန်</translation> <translation id="5984145644188835034">မူရင်း နောက်ခံ</translation> <translation id="6017514345406065928">အစိမ်းရောင်</translation> @@ -845,6 +848,7 @@ <translation id="8352772353338965963">အရာ အများအပြားထဲသို့ လက်မှတ်ထိုး ဝင်နိုင်ရန် အတွက် အကောင့် တစ်ခုကို ထည့်ပါ။ လက်မှတ်ထိုး ဝင်ထားသည့် အကောင့်များ အားလုံးကို စကားဝှက် မသုံးရဘဲ သုံးနိုင်မည် ဖြစ်ရာ၊ ဒီအင်္ဂါရပ်ကို ယုံကြည်ရသည့် အကောင့်များ အတွက်သာ အသုံးပြသင့်သည်။</translation> <translation id="8364946094152050673">အမည်ဆာဗာအလွတ်များ</translation> <translation id="8372477600026034341">အပို ဆာဗာပင်ရင်းများ</translation> +<translation id="8373046809163484087">သင့်နောက်ခံပုံနှင့် ကိုက်ညီသော အရောင်စုများကို သုံးနိုင်သည်</translation> <translation id="8380114448424469341">စခရင်၏ <ph name="DIRECTION" /> အခြမ်းတွင် ဝင်းဒိုးနေရာချရန်</translation> <translation id="8395584934117017006">ဤ <ph name="DEVICE_TYPE" /> ကို လုပ်ငန်းက စီမံပါသည်</translation> <translation id="8398927464629426868">စက်ပစ္စည်း၏ လက်ရှိအားသွင်းနှုန်း (သို့) အားလျော့နှုန်း</translation> @@ -864,6 +868,7 @@ <translation id="8503813439785031346">အသုံးပြုသူအမည်</translation> <translation id="8503836310948963452">နောက်ထပ် မိနစ်အနည်းငယ်သာ လိုသည်…</translation> <translation id="8508640263392900755">APN အသေးစိတ်</translation> +<translation id="8522687886059337719">ယခု သင်သည် <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />နောက်ခံပုံ<ph name="END_LINK_WALLPAPER_SUBPAGE" /> အသစ်များနှင့် <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />စခရင်နားချိန်ပုံ<ph name="END_LINK_SCREENSAVER_SUBPAGE" /> တို့ကို သုံးနိုင်ပြီ</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">သင့်မိုဘိုင်းဖုန်းကုမ္ပဏီသည် ၎င်း၏ကွန်ရက်သို့ ချိတ်ဆက်ရန် ဤရွေးချယ်စရာကို သတ်မှတ်ထားနိုင်သည်။ အသေးစိတ်အတွက် သင့်မိုဘိုင်းဖုန်းကုမ္ပဏီကို ဆက်သွယ်ပါ။</translation>
diff --git a/chromeos/strings/chromeos_strings_ne.xtb b/chromeos/strings/chromeos_strings_ne.xtb index 63bc171..87466fd 100644 --- a/chromeos/strings/chromeos_strings_ne.xtb +++ b/chromeos/strings/chromeos_strings_ne.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">यहाँ केही अन्य उपयोगी स्रोतहरू दिइएका छन्:</translation> <translation id="1905710495812624430">अनुमति दिइएका प्रयासहरूको अधिकतम संख्या नाघ्यो।</translation> <translation id="1908234395526491708">UDP सम्बन्धी अनुरोध गर्न सकिएन</translation> +<translation id="1923388006036088459">एक्सेन्ट कलर</translation> <translation id="1947737735496445907">प्रिन्ट गरियो</translation> <translation id="1951012854035635156">सहायक</translation> <translation id="1962550982027027473">डिफल्ट APN अनिवार्य रूपमा अन गर्नु पर्छ</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">डाउनलोड पूर्ण भयो</translation> <translation id="3969602104473960991">ChromeOS को पासवर्ड परिवर्तन गरिएको छ</translation> <translation id="397105322502079400">हिसाब गर्दै...</translation> +<translation id="3974175076798940554">Chromebook Plus मा मात्र प्रयोग गर्न मिल्ने एसेटहरू उपलब्ध भएका छन्</translation> <translation id="39823212440917567"><ph name="NUMBER_OF_DAYS" /> दिनभन्दा पहिलेका प्रिन्टसम्बन्धी कार्यहरू हटाइने छ</translation> <translation id="3993704782688964914">तपाईंको <ph name="DEVICE_NAME" /> अप टु डेट छ</translation> <translation id="4003384961948020559">प्रिन्ट गर्न सकिएन - ट्रे भरियो</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">बहुविध साइन-इन को लागि एउटा खाता थप्नुहोस्। सबै साइन-इन भएका खाताहरू पासवर्ड विना नै पहुँच गर्न सकिन्छ, त्यसैले यो सुविधा विश्वसनीय खाताहरूसँग मात्रै प्रयोग गर्नुपर्छ।</translation> <translation id="8364946094152050673">डोमेन नेम सर्भरहरू खाली छन्</translation> <translation id="8372477600026034341">अतिरिक्त होस्टहरू</translation> +<translation id="8373046809163484087">तपाईंको वालपेपरसँग मिल्ने खालका कलर सेट प्रयोग गर्नुहोस्</translation> <translation id="8380114448424469341">विन्डोलाई स्क्रिनको <ph name="DIRECTION" />तिरको आधा भागमा डक गर्नुहोस्</translation> <translation id="8395584934117017006">इन्टरप्राइजले यो <ph name="DEVICE_TYPE" /> व्यवस्थापन गर्छ</translation> <translation id="8398927464629426868">यन्त्र हाल चार्ज वा डिस्चार्ज भइरहेको दर</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">एक-पटके टेक्स्ट म्यासेज</translation> <translation id="8503836310948963452">थप केही मिनेट मात्र पर्खनुहोस्…</translation> <translation id="8508640263392900755">APN सम्बन्धी विवरण</translation> +<translation id="8522687886059337719">तपाईं अब नयाँ <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />वालपेपर<ph name="END_LINK_WALLPAPER_SUBPAGE" /> तथा <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />स्क्रिन सेभर<ph name="END_LINK_SCREENSAVER_SUBPAGE" /> प्रयोग गर्न सक्नुहुन्छ</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">तपाईंको मोबाइल सेवा प्रदायकले सो सेवा प्रदायकको नेटवर्कमा कनेक्ट गर्न सकोस् भन्नाका लागि तपाईंले यो विकल्प अन गर्नु पर्ने हुन सक्छ। यससम्बन्धी थप जानकारी प्राप्त गर्न आफ्नो मोबाइल सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb index c62854f6..f6e661f2 100644 --- a/chromeos/strings/chromeos_strings_nl.xtb +++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">Een paar andere nuttige bronnen:</translation> <translation id="1905710495812624430">Maximumaantal toegestane pogingen overschreden.</translation> <translation id="1908234395526491708">Mislukte UDP-verzoeken</translation> +<translation id="1923388006036088459">Accentkleuren</translation> <translation id="1947737735496445907">Afgedrukt</translation> <translation id="1951012854035635156">Assistent</translation> <translation id="1962550982027027473">Een standaard APN is vereist</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">Downloaden voltooid</translation> <translation id="3969602104473960991">Wachtwoord voor Chrome OS geüpdatet</translation> <translation id="397105322502079400">Berekenen...</translation> +<translation id="3974175076798940554">Exclusieve items voor Chromebook Plus nu beschikbaar</translation> <translation id="39823212440917567">Afdruktaken ouder dan <ph name="NUMBER_OF_DAYS" /> dagen worden verwijderd</translation> <translation id="3993704782688964914">Je <ph name="DEVICE_NAME" /> is nu up-to-date</translation> <translation id="4003384961948020559">Mislukt - Uitvoer is vol</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">Een account toevoegen aan Toegang tot meerdere accounts. Alle ingelogde accounts zijn toegankelijk zonder wachtwoord, dus deze functie moet alleen worden gebruikt voor vertrouwde accounts.</translation> <translation id="8364946094152050673">Lege naamservers</translation> <translation id="8372477600026034341">Extra hosts</translation> +<translation id="8373046809163484087">Gebruik kleurensets die passen bij je achtergrond</translation> <translation id="8380114448424469341">Venster vastzetten op de <ph name="DIRECTION" />helft van het scherm</translation> <translation id="8395584934117017006">Deze <ph name="DEVICE_TYPE" /> wordt zakelijk beheerd</translation> <translation id="8398927464629426868">De snelheid waarmee het apparaat op dit moment wordt opgeladen of ontladen</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">Gebruikersnaam</translation> <translation id="8503836310948963452">Nog een paar minuten...</translation> <translation id="8508640263392900755">APN-gegevens</translation> +<translation id="8522687886059337719">Je hebt nu toegang tot nieuwe <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />achtergronden<ph name="END_LINK_WALLPAPER_SUBPAGE" /> en <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />screensavers<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">Je provider kan deze optie vereisen om verbinding te maken met hun netwerk. Neem contact op met je provider voor meer informatie.</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb index 85efff7..ae75351 100644 --- a/chromeos/strings/chromeos_strings_no.xtb +++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">Her er noen andre nyttige ressurser:</translation> <translation id="1905710495812624430">Du har overskredet maksimumsgrensen for antall forsøk.</translation> <translation id="1908234395526491708">Mislykkede UDP-forespørsler</translation> +<translation id="1923388006036088459">Markeringsfarger</translation> <translation id="1947737735496445907">Skrevet ut</translation> <translation id="1951012854035635156">Assistent</translation> <translation id="1962550982027027473">Et standard APN kreves</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">Nedlasting fullført</translation> <translation id="3969602104473960991">ChromeOS-passordet er oppdatert</translation> <translation id="397105322502079400">Beregner …</translation> +<translation id="3974175076798940554">Eksklusivt Chromebook Plus-innhold er nå tilgjengelig</translation> <translation id="39823212440917567">Utskriftsjobber som er eldre enn <ph name="NUMBER_OF_DAYS" /> dager, blir fjernet</translation> <translation id="3993704782688964914"><ph name="DEVICE_NAME" /> er nå oppdatert</translation> <translation id="4003384961948020559">Mislykket – utskriftsmottaket er fullt</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">Legg til en konto for multipålogging. Alle påloggede kontoer kan brukes uten passord, så denne funksjonen burde bare brukes med pålitelige kontoer.</translation> <translation id="8364946094152050673">Tomme navnetjenere</translation> <translation id="8372477600026034341">Tilleggsverter</translation> +<translation id="8373046809163484087">Bruk fargesett som matcher bakgrunnen</translation> <translation id="8380114448424469341">Forankre vinduet på <ph name="DIRECTION" /> halvdel av skjermen</translation> <translation id="8395584934117017006">Denne <ph name="DEVICE_TYPE" />-enheten er bedriftsadministrert</translation> <translation id="8398927464629426868">Hvor raskt enheten lades eller utlades for øyeblikket</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">Brukernavn</translation> <translation id="8503836310948963452">Bare noen få minutter igjen …</translation> <translation id="8508640263392900755">APN-detaljer</translation> +<translation id="8522687886059337719">Du har nå tilgang til nye <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />bakgrunner<ph name="END_LINK_WALLPAPER_SUBPAGE" /> og en ny <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />skjermsparer<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">Det kan hende operatøren din krever dette alternativet for at du skal kunne koble til nettverket deres Kontakt operatøren for mer informasjon.</translation>
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb index bc32ce88..83192d9 100644 --- a/chromeos/strings/chromeos_strings_pl.xtb +++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">Oto inne przydatne materiały:</translation> <translation id="1905710495812624430">Przekroczono maksymalną liczbę prób.</translation> <translation id="1908234395526491708">Nieudane żądania UDP</translation> +<translation id="1923388006036088459">Kolory uzupełniające</translation> <translation id="1947737735496445907">Wydrukowano</translation> <translation id="1951012854035635156">Asystent</translation> <translation id="1962550982027027473">Domyślny punkt APN jest wymagany</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">Pobieranie zakończone</translation> <translation id="3969602104473960991">Hasło do Chrome OS zostało zaktualizowane</translation> <translation id="397105322502079400">Obliczanie...</translation> +<translation id="3974175076798940554">Wyjątkowe zasoby Chromebooka Plus są już dostępne</translation> <translation id="39823212440917567">Zadania drukowania starsze niż <ph name="NUMBER_OF_DAYS" /> dni zostaną usunięte</translation> <translation id="3993704782688964914">Oprogramowanie urządzenia (<ph name="DEVICE_NAME" />) jest aktualne</translation> <translation id="4003384961948020559">Niepowodzenie – odbiornik papieru jest pełny</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">Tu możesz dodać konto do wielokrotnego logowania. Ponieważ dostęp do wszystkich zalogowanych kont można uzyskać bez podawania hasła, tej funkcji należy używać tylko z zaufanymi kontami.</translation> <translation id="8364946094152050673">Puste serwery nazw</translation> <translation id="8372477600026034341">Dodatkowe hosty</translation> +<translation id="8373046809163484087">Używaj zestawów kolorów, które pasują do tapety</translation> <translation id="8380114448424469341">Zadokuj okno po tej stronie ekranu: <ph name="DIRECTION" /></translation> <translation id="8395584934117017006">Tym urządzeniem (<ph name="DEVICE_TYPE" />) zarządza firma</translation> <translation id="8398927464629426868">Obecne tempo, w jakim urządzenie się ładuje lub rozładowuje</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">Nazwa użytkownika</translation> <translation id="8503836310948963452">Jeszcze kilka minut…</translation> <translation id="8508640263392900755">Dane APN</translation> +<translation id="8522687886059337719">Teraz masz dostęp do nowych <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />tapet<ph name="END_LINK_WALLPAPER_SUBPAGE" /> i <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />wygaszacza ekranu<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">Tej opcji może wymagać operator do połączenia z jego siecią. Aby uzyskać szczegółowe informacje, skontaktuj się z operatorem.</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb index da9858a..b4fb12a 100644 --- a/chromeos/strings/chromeos_strings_pt-BR.xtb +++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">Veja outros recursos úteis:</translation> <translation id="1905710495812624430">O número máximo de tentativas permitidas foi excedido.</translation> <translation id="1908234395526491708">Falhas de solicitações UDP</translation> +<translation id="1923388006036088459">Cores de destaque</translation> <translation id="1947737735496445907">Impresso</translation> <translation id="1951012854035635156">Assistente</translation> <translation id="1962550982027027473">Um APN padrão é obrigatório</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">Download concluído</translation> <translation id="3969602104473960991">Senha do ChromeOS atualizada</translation> <translation id="397105322502079400">Calculando...</translation> +<translation id="3974175076798940554">Recursos exclusivos do Chromebook Plus disponíveis</translation> <translation id="39823212440917567">Trabalhos de impressão enviados há mais de <ph name="NUMBER_OF_DAYS" /> dias serão removidos</translation> <translation id="3993704782688964914">O <ph name="DEVICE_NAME" /> está atualizado</translation> <translation id="4003384961948020559">Falha - Saída cheia</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">Adicione uma conta de login múltiplo. Todas as contas conectadas podem ser acessadas sem uma senha; portanto esse recurso só deve ser usado com contas confiáveis.</translation> <translation id="8364946094152050673">Servidores de nomes vazios</translation> <translation id="8372477600026034341">Hosts extras</translation> +<translation id="8373046809163484087">Use conjuntos de cores que combinem com o plano de fundo</translation> <translation id="8380114448424469341">Fixar janela na metade <ph name="DIRECTION" /> da tela</translation> <translation id="8395584934117017006">Este <ph name="DEVICE_TYPE" /> é gerenciado por uma empresa</translation> <translation id="8398927464629426868">A velocidade em que o dispositivo carrega ou descarrega atualmente</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">Nome de usuário</translation> <translation id="8503836310948963452">Só mais alguns minutos…</translation> <translation id="8508640263392900755">Detalhes do APN</translation> +<translation id="8522687886059337719">Agora você tem acesso a novos <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />planos de fundo<ph name="END_LINK_WALLPAPER_SUBPAGE" /> e <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />protetores de tela<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">Pode ser necessário ativar esta opção para se conectar à rede da sua operadora. Entre em contato com a operadora para mais informações.</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb index f27a756..a473702 100644 --- a/chromeos/strings/chromeos_strings_sl.xtb +++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">Na voljo so še nekateri drugi koristni viri:</translation> <translation id="1905710495812624430">Preseženo je največje dovoljeno število dovoljenih poskusov.</translation> <translation id="1908234395526491708">Neuspele zahteve UDP</translation> +<translation id="1923388006036088459">Barve poudarka</translation> <translation id="1947737735496445907">Natisnjeno</translation> <translation id="1951012854035635156">Pomočnik</translation> <translation id="1962550982027027473">Privzeti APN je obvezen</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">Prenos končan</translation> <translation id="3969602104473960991">Geslo za Chrome OS je posodobljeno</translation> <translation id="397105322502079400">Izračunavanje …</translation> +<translation id="3974175076798940554">Ekskluzivni elementi Chromebook Plus so zdaj na voljo</translation> <translation id="39823212440917567">Odstranjena bodo tiskalna opravila, starejša od toliko dni: <ph name="NUMBER_OF_DAYS" /></translation> <translation id="3993704782688964914">Naprava <ph name="DEVICE_NAME" /> je posodobljena.</translation> <translation id="4003384961948020559">Napaka – izhodni pladenj je poln</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">Dodajte račun za prijavo z več računi. Do vseh prijavljenih računov je mogoče dostopati brez gesla, zato to funkcijo uporabljajte samo z zaupanja vrednimi računi.</translation> <translation id="8364946094152050673">Prazni imenski strežniki</translation> <translation id="8372477600026034341">Dodatni gostitelji</translation> +<translation id="8373046809163484087">Uporabite nabore barv, ki se ujemajo z zaslonskim ozadjem</translation> <translation id="8380114448424469341">Sidranje okna na polovici zaslona <ph name="DIRECTION" /></translation> <translation id="8395584934117017006">To napravo <ph name="DEVICE_TYPE" /> upravlja podjetje.</translation> <translation id="8398927464629426868">Trenutna hitrost polnjenja ali praznjenja baterije naprave.</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">Uporabniško ime</translation> <translation id="8503836310948963452">Samo še nekaj minut …</translation> <translation id="8508640263392900755">Podrobnosti o APN-ju</translation> +<translation id="8522687886059337719">Zdaj imate dostop do novih <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />zaslonskih ozadij<ph name="END_LINK_WALLPAPER_SUBPAGE" /> in <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />ohranjevalnika zaslona<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">Operater lahko zahteva to možnost za povezovanje z njegovim omrežjem. Za podrobnejše informacije se obrnite na operaterja.</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb index 6f52a99..db842509 100644 --- a/chromeos/strings/chromeos_strings_sv.xtb +++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -572,6 +572,7 @@ <translation id="5931523347251946569">Filen hittades inte</translation> <translation id="5939518447894949180">Återställ</translation> <translation id="594552776027197022">Generera slumpmässigt nyckelpar</translation> +<translation id="5946538341867151940">Du är inte ansluten än. Om din mobiloperatör rekommenderar en anpassad APN anger du APN-uppgifterna genom att välja + Ny APN</translation> <translation id="5972388717451707488">Update Engine</translation> <translation id="5984145644188835034">Standardbakgrund</translation> <translation id="6017514345406065928">Grön</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb index ab44bb1..e7089d0 100644 --- a/chromeos/strings/chromeos_strings_ur.xtb +++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">کچھ دوسرے مددگار وسائل یہ ہیں:</translation> <translation id="1905710495812624430">زیادہ سے زیادہ مجاز کوششوں سے تجاوز کرگیا۔</translation> <translation id="1908234395526491708">UDP درخواست کی ناکامیاں</translation> +<translation id="1923388006036088459">ایکسنٹ کے رنگ</translation> <translation id="1947737735496445907">پرنٹ ہو گیا</translation> <translation id="1951012854035635156">اسسٹنٹ</translation> <translation id="1962550982027027473">ایک ڈیفالٹ APN درکار ہے</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">ڈاؤن لوڈ مکمل ہوگیا ہے</translation> <translation id="3969602104473960991">ChromeOS پاس ورڈ اپ ڈیٹ کیا گيا</translation> <translation id="397105322502079400">حساب لگایا جا رہا ہے…</translation> +<translation id="3974175076798940554">خصوصی Chromebook Plus اثاثے اب دستیاب ہیں</translation> <translation id="39823212440917567"><ph name="NUMBER_OF_DAYS" /> دن سے پرانی پرنٹ جابز کو ہٹا دیا جائے گا</translation> <translation id="3993704782688964914">آپ کا <ph name="DEVICE_NAME" /> اب اپ ٹو ڈیٹ ہے</translation> <translation id="4003384961948020559">ناکام ہو گیا - آؤٹ پٹ مکمل</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">متعدد سائن ان میں ایک اکاؤنٹ شامل کریں۔ سبھی سائن ان کردہ اکاؤنٹس تک پاس ورڈ کے بغیر رسائی کی جا سکتی ہے لہذا یہ خصوصیت صرف بھروسہ مند اکاؤنٹس کے ساتھ استعمال کی جانی چاہیے۔</translation> <translation id="8364946094152050673">نام سرورز خالی ہیں</translation> <translation id="8372477600026034341">بہت زیادہ میزبان</translation> +<translation id="8373046809163484087">اس رنگ کے سیٹس کا استعمال کریں جو آپ کے وال پیپر سے مماثل ہوں</translation> <translation id="8380114448424469341">اسکرین کے <ph name="DIRECTION" /> طرف موجود آدھے حصے پر ونڈو ڈاک کریں</translation> <translation id="8395584934117017006">یہ <ph name="DEVICE_TYPE" /> انٹرپرائز کے زیر انتظام ہے</translation> <translation id="8398927464629426868">آلے کی فی الحال چارج ہونے یا چارج ختم ہونے کی شرح</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">صارف کا نام</translation> <translation id="8503836310948963452">صرف چند مزید منٹ...</translation> <translation id="8508640263392900755">APN کی تفصیلات</translation> +<translation id="8522687886059337719">اب آپ کو نئے <ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />وال پیپرز<ph name="END_LINK_WALLPAPER_SUBPAGE" /> اور <ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />اسکرین سیور<ph name="END_LINK_SCREENSAVER_SUBPAGE" /> تک رسائی حاصل ہے</translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">آپ کے کیریئر کو اپنے نیٹ ورک سے منسلک ہونے کیلئے اس اختیار کی ضرورت پڑ سکتی ہے۔ تفصیلات کیلئے اپنے کیریئر سے رابطہ کریں۔</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb index e5fcc7ca..4c89fb3 100644 --- a/chromeos/strings/chromeos_strings_zh-HK.xtb +++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">其他實用資源如下:</translation> <translation id="1905710495812624430">允許的嘗試次數超過上限。</translation> <translation id="1908234395526491708">UDP 要求失敗</translation> +<translation id="1923388006036088459">強調色</translation> <translation id="1947737735496445907">已列印</translation> <translation id="1951012854035635156">助理</translation> <translation id="1962550982027027473">需要預設 APN</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">下載完成</translation> <translation id="3969602104473960991">已更新 Chrome OS 密碼</translation> <translation id="397105322502079400">計算中…</translation> +<translation id="3974175076798940554">Chromebook Plus 獨家資產現已推出</translation> <translation id="39823212440917567">超過 <ph name="NUMBER_OF_DAYS" /> 天前的列印工作將被移除</translation> <translation id="3993704782688964914">您的「<ph name="DEVICE_NAME" />」已是最新版本</translation> <translation id="4003384961948020559">失敗 - 輸出紙匣已滿</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">新增可多重登入的帳戶。這些帳戶的使用者不需提供密碼即可存取所有已登入的帳戶。因此,建議您只讓信任的帳戶使用這項功能。</translation> <translation id="8364946094152050673">域名伺服器空白</translation> <translation id="8372477600026034341">其他主機</translation> +<translation id="8373046809163484087">使用配合桌布的顏色組合</translation> <translation id="8380114448424469341">將視窗固定喺畫面<ph name="DIRECTION" />半部分</translation> <translation id="8395584934117017006">此 <ph name="DEVICE_TYPE" /> 由企業管理</translation> <translation id="8398927464629426868">裝置目前的充電或放電率</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">用戶名稱</translation> <translation id="8503836310948963452">只需多幾分鐘…</translation> <translation id="8508640263392900755">APN 詳情</translation> +<translation id="8522687886059337719">您現可使用全新的<ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />桌布<ph name="END_LINK_WALLPAPER_SUBPAGE" />和<ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />螢幕保護程式<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">流動網絡供應商可能會要求您必須選擇此選項,才能連接他們的網絡。詳情請聯絡流動網絡供應商。</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb index 721f522..c324322 100644 --- a/chromeos/strings/chromeos_strings_zh-TW.xtb +++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -123,6 +123,7 @@ <translation id="1904932688895783618">其他實用資源如下:</translation> <translation id="1905710495812624430">超過嘗試次數上限。</translation> <translation id="1908234395526491708">UDP 要求失敗</translation> +<translation id="1923388006036088459">強調色</translation> <translation id="1947737735496445907">已列印</translation> <translation id="1951012854035635156">小幫手</translation> <translation id="1962550982027027473">請輸入預設 APN</translation> @@ -332,6 +333,7 @@ <translation id="3967822245660637423">下載完成</translation> <translation id="3969602104473960991">已更新 Chrome OS 密碼</translation> <translation id="397105322502079400">計算中…</translation> +<translation id="3974175076798940554">現已推出 Chromebook Plus 專屬素材資源</translation> <translation id="39823212440917567">系統會移除 <ph name="NUMBER_OF_DAYS" /> 天前的列印工作</translation> <translation id="3993704782688964914">你的「<ph name="DEVICE_NAME" />」目前是最新版本</translation> <translation id="4003384961948020559">失敗 - 輸出紙匣已滿</translation> @@ -845,6 +847,7 @@ <translation id="8352772353338965963">新增可多重登入的帳戶。這些帳戶的使用者不需提供密碼即可存取所有已登入的帳戶。因此,建議你只讓信任的帳戶使用這項功能。</translation> <translation id="8364946094152050673">名稱伺服器空白</translation> <translation id="8372477600026034341">其他主機</translation> +<translation id="8373046809163484087">使用可與桌布相配的顏色組合</translation> <translation id="8380114448424469341">將視窗固定在畫面<ph name="DIRECTION" />半邊</translation> <translation id="8395584934117017006">這部 <ph name="DEVICE_TYPE" /> 是由企業管理</translation> <translation id="8398927464629426868">裝置目前的充電或放電速率</translation> @@ -864,6 +867,7 @@ <translation id="8503813439785031346">使用者名稱</translation> <translation id="8503836310948963452">請稍待幾分鐘…</translation> <translation id="8508640263392900755">APN 詳細資料</translation> +<translation id="8522687886059337719">現在起,你可以使用全新的<ph name="BEGIN_LINK_WALLPAPER_SUBPAGE" />桌布<ph name="END_LINK_WALLPAPER_SUBPAGE" />和<ph name="BEGIN_LINK_SCREENSAVER_SUBPAGE" />螢幕保護程式<ph name="END_LINK_SCREENSAVER_SUBPAGE" /></translation> <translation id="8528615187455571738">Crosvm</translation> <translation id="8557447961879934694">WPA2</translation> <translation id="8575298406870537639">你的電信業者可能會要求你必須選擇此選項才能連線至他們的網路。如要瞭解詳情,請洽詢你的電信業者。</translation>
diff --git a/components/autofill/core/browser/test_autofill_manager_waiter.cc b/components/autofill/core/browser/test_autofill_manager_waiter.cc index 54afd1b..8830062b 100644 --- a/components/autofill/core/browser/test_autofill_manager_waiter.cc +++ b/components/autofill/core/browser/test_autofill_manager_waiter.cc
@@ -319,7 +319,7 @@ base::ScopedObservation<AutofillManager, AutofillManager::Observer> observation_{this}; - const raw_ref<AutofillManager> manager_; + const raw_ref<AutofillManager, DanglingUntriaged> manager_; base::RepeatingCallback<bool(const FormStructure&)> pred_; base::RunLoop run_loop_; raw_ptr<const FormStructure> matching_form_ = nullptr;
diff --git a/components/browser_ui/settings/android/features.cc b/components/browser_ui/settings/android/features.cc index 47b55d7f..f1c2ada 100644 --- a/components/browser_ui/settings/android/features.cc +++ b/components/browser_ui/settings/android/features.cc
@@ -10,6 +10,6 @@ BASE_FEATURE(kHighlightManagedPrefDisclaimerAndroid, "HighlightManagedPrefDisclaimerAndroid", - base::FEATURE_DISABLED_BY_DEFAULT); + base::FEATURE_ENABLED_BY_DEFAULT); } // namespace browser_ui
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb index 2719e77..a953544 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb
@@ -400,7 +400,7 @@ <translation id="8324158725704657629">Fråga inte igen</translation> <translation id="8362795839483915693">Du kan zooma in eller ut på webbplatser</translation> <translation id="8372893542064058268">Tillåt bakgrundssynkronisering för en specifik webbplats.</translation> -<translation id="8376384591331888629">Inkludera cookies från tredje part på den här webbplatsen</translation> +<translation id="8376384591331888629">Inklusive cookies från tredje part på den här webbplatsen</translation> <translation id="83792324527827022">En webbplats använder kameran och mikrofonen</translation> <translation id="8380167699614421159">Påträngande eller vilseledande annonser visas på den här webbplatsen</translation> <translation id="8394832520002899662">Återgå till webbplatsen genom att trycka här</translation>
diff --git a/components/browsing_data/core/counters/bookmark_counter.h b/components/browsing_data/core/counters/bookmark_counter.h index 927f1c8..cc80264 100644 --- a/components/browsing_data/core/counters/bookmark_counter.h +++ b/components/browsing_data/core/counters/bookmark_counter.h
@@ -31,7 +31,7 @@ void Count() override; void CountBookmarks(const bookmarks::BookmarkModel* bookmark_model); - raw_ptr<bookmarks::BookmarkModel> bookmark_model_; + raw_ptr<bookmarks::BookmarkModel, DanglingUntriaged> bookmark_model_; base::WeakPtrFactory<BookmarkCounter> weak_ptr_factory_{this}; };
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json index eee98150..b3a206f8 100644 --- a/components/certificate_transparency/data/log_list.json +++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@ { - "version": "20.37", - "log_list_timestamp": "2023-04-12T12:57:23Z", + "version": "20.38", + "log_list_timestamp": "2023-04-13T12:54:19Z", "operators": [ { "name": "Google",
diff --git a/components/cronet/tools/cr_cronet.py b/components/cronet/tools/cr_cronet.py index c823a41..98884e1 100755 --- a/components/cronet/tools/cr_cronet.py +++ b/components/cronet/tools/cr_cronet.py
@@ -10,6 +10,7 @@ import argparse import os import pipes +import re import subprocess import sys @@ -30,7 +31,7 @@ def gn(out_dir, gn_args, gn_extra=None): - cmd = ['gn', 'gen', out_dir, "--args=%s" % gn_args] + cmd = ['gn', 'gen', out_dir, '--args=%s' % gn_args] if gn_extra: cmd += gn_extra return run(cmd) @@ -104,48 +105,91 @@ return [] -def get_default_gn_args(target_os, is_release): - gn_args = 'target_os="' + target_os + ('" enable_websockets=false ' - 'disable_file_support=true ' - 'disable_brotli_filter=false ' - 'is_component_build=false ' - 'use_crash_key_stubs=true ' - 'use_partition_alloc=false ' - 'include_transport_security_state_preload_list=false ') + use_goma() - if (is_release): - gn_args += 'is_debug=false is_official_build=true ' - return gn_args +def map_config_to_android_builder(is_release, target_cpu): + target_cpu_to_base_builder = { + 'x86': 'android-cronet-x86', + 'arm': 'android-cronet-arm', + 'arm64': 'android-cronet-arm64', + } + if target_cpu not in target_cpu_to_base_builder: + raise ValueError('Unsupported target CPU') + + builder_name = target_cpu_to_base_builder[target_cpu] + if is_release: + builder_name += '-rel' + else: + builder_name += '-dbg' + return builder_name -def get_mobile_gn_args(target_os, is_release): - return get_default_gn_args(target_os, is_release) + \ - 'use_platform_icu_alternatives=true ' +def get_ios_gn_args(is_release, target_cpu): + print(is_release, target_cpu) + gn_args = [ + 'target_os = "ios"', + 'enable_websockets = false', + 'disable_file_support = true', + 'disable_brotli_filter = false', + 'is_component_build = false', + 'use_crash_key_stubs = true', + 'use_partition_alloc = false', + 'include_transport_security_state_preload_list = false', + use_goma(), + 'use_platform_icu_alternatives = true', + 'is_cronet_build = true', + 'enable_remoting = false', + 'ios_app_bundle_id_prefix = "org.chromium"', + 'ios_deployment_target = "10.0"', + 'enable_dsyms = true', + 'ios_stack_profiler_enabled = false', + f'target_cpu = "{target_cpu}"', + ] + if is_release: + gn_args += [ + 'is_debug = false', + 'is_official_build = true', + ], + return ' '.join(gn_args) -def get_ios_gn_args(is_release, bundle_id_prefix, target_cpu): - print(is_release, bundle_id_prefix, target_cpu) - return get_mobile_gn_args('ios', is_release) + \ - ('is_cronet_build=true ' - 'enable_remoting=false ' - 'ios_app_bundle_id_prefix="%s" ' - 'ios_deployment_target="10.0" ' - 'enable_dsyms=true ' - 'ios_stack_profiler_enabled=false ' - 'target_cpu="%s" ') % (bundle_id_prefix, target_cpu) +def ios_gn_gen(is_release, target_cpu, out_dir): + gn_extra = ['--ide=xcode', '--filters=//components/cronet/*'] + return gn(out_dir, get_ios_gn_args(is_release, target_cpu), gn_extra) -def get_android_gn_args(is_release): - return (get_mobile_gn_args('android', is_release) + - # Keep in sync with //tools/mb/mb_config.pyl cronet_android config. - 'is_cronet_build=true ' + 'default_min_sdk_version = 19 ' + - 'use_errorprone_java_compiler=true ' + 'enable_reporting=true ' + - 'use_hashed_jni_names=true ') +def filter_gn_args(gn_args): + gn_arg_matcher = re.compile("^.*=.*$") + # `mb_py lookup` prints out a bunch of metadata lines which we don't + # care about, we only want the GN args. + assert len(gn_args) > 4 + actual_gn_args = gn_args[1:-3] + for line in gn_args: + if line in actual_gn_args: + assert gn_arg_matcher.match(line), \ + f'Not dropping {line}, which does not look like a GN arg' + else: + assert not gn_arg_matcher.match(line), \ + f'Dropping {line}, which looks like a GN arg' + + return list(filter(lambda string: "remoteexec" not in string, actual_gn_args)) -def get_mac_gn_args(is_release): - return get_default_gn_args('mac', is_release) + \ - 'disable_histogram_support=true ' + \ - 'enable_dsyms=true ' +def android_gn_gen(is_release, target_cpu, out_dir): + group_name = 'chromium.android' + mb_script = 'tools/mb/mb.py' + builder_name = map_config_to_android_builder(is_release, target_cpu) + # Ideally we would call `mb_py gen` directly, but we need to filter out the + # use_remoteexec arg, as that cannot be used in a local environment. + gn_args = subprocess.check_output([ + 'python', mb_script, 'lookup', '-m', group_name, '-b', builder_name + ]).decode('utf-8').strip() + gn_args = filter_gn_args(gn_args.split("\n")) + return gn(out_dir, ' '.join(gn_args)) + + +def gn_gen(is_release, target_cpu, out_dir, is_ios): + if is_ios: + return ios_gn_gen(is_release, target_cpu, out_dir) + return android_gn_gen(is_release, target_cpu, out_dir) def main(): @@ -180,52 +224,42 @@ help='configure bundle id prefix') options, extra_options = parser.parse_known_args() - print(options) - print(extra_options) + print("Options:", options) + print("Extra options:", extra_options) if is_ios: test_target = 'cronet_test' unit_target = 'cronet_unittests_ios' - gn_extra = ['--ide=xcode', '--filters=//components/cronet/*'] if options.iphoneos: - gn_args = get_ios_gn_args(options.release, options.bundle_id_prefix, - 'arm64') out_dir_suffix = '-iphoneos' + target_cpu = 'arm64' else: - gn_args = get_ios_gn_args(options.release, options.bundle_id_prefix, - 'x64') out_dir_suffix = '-iphonesimulator' - if options.asan: - gn_args += 'is_asan=true ' - out_dir_suffix += '-asan' - else: + target_cpu = 'x64' + else: # is_android test_target = 'cronet_test_instrumentation_apk' unit_target = 'cronet_unittests_android' - gn_args = get_android_gn_args( - options.release) + " treat_warnings_as_errors=false " - gn_extra = [] - out_dir_suffix = '' if options.x86: - gn_args += 'target_cpu="x86" ' + target_cpu = 'x86' out_dir_suffix = '-x86' else: - gn_args += 'arm_use_neon=false ' + target_cpu = 'arm64' + out_dir_suffix = '-arm64' if options.asan: # ASAN on Android requires one-time setup described here: # https://www.chromium.org/developers/testing/addresssanitizer - gn_args += 'is_asan=true is_clang=true is_debug=false ' out_dir_suffix += '-asan' - if options.release: - out_dir = 'out/Release' + out_dir_suffix - else: - out_dir = 'out/Debug' + out_dir_suffix - if options.out_dir: out_dir = options.out_dir + else: + if options.release: + out_dir = 'out/Release' + out_dir_suffix + else: + out_dir = 'out/Debug' + out_dir_suffix if (options.command=='gn'): - return gn(out_dir, gn_args, gn_extra) + return gn_gen(options.release, target_cpu, out_dir, is_ios) if (options.command=='sync'): return run(['git', 'pull', '--rebase']) or run(['gclient', 'sync']) if (options.command=='build'):
diff --git a/components/exo/text_input.cc b/components/exo/text_input.cc index d7414a5..9739931 100644 --- a/components/exo/text_input.cc +++ b/components/exo/text_input.cc
@@ -391,20 +391,8 @@ void TextInput::OnInputMethodChanged() { // This observer method does not signify anything meaningful. When the user // switches input method, |InputMethodChanged()| is triggered instead of - // this, and the ui::InputMethod we are attached to is a singleton. - - // TODO(timloh): This is dead code, remove it. - - DCHECK_EQ(surface_, seat_->GetFocusedSurface()); - ui::InputMethod* input_method = GetInputMethod(surface_->window()); - if (input_method == input_method_) - return; - input_method_->DetachTextInputClient(this); - virtual_keyboard_observation_.Reset(); - input_method_ = input_method; - if (auto* controller = input_method_->GetVirtualKeyboardController()) - virtual_keyboard_observation_.Observe(controller); - input_method_->SetFocusedTextInputClient(this); + // this, and the ui::InputMethod we are attached to is a singleton which does + // not change. } bool TextInput::ChangeTextDirectionAndLayoutAlignment(
diff --git a/components/exo/wayland/shell_unittest.cc b/components/exo/wayland/shell_unittest.cc index 582991e9..9c240ed 100644 --- a/components/exo/wayland/shell_unittest.cc +++ b/components/exo/wayland/shell_unittest.cc
@@ -234,7 +234,8 @@ using RemoteShellTest = test::WaylandServerTest; // Calling SetPined w/o commit should not crash (crbug.com/979128). -TEST_F(RemoteShellTest, DestroyRootSurfaceBeforeCommit) { +// TODO(crbug.com/1432923): Re-enable this test +TEST_F(RemoteShellTest, DISABLED_DestroyRootSurfaceBeforeCommit) { test::ResourceKey surface_key; PostToClientAndWait([&](test::TestClient* client) {
diff --git a/components/metrics/demographics/demographic_metrics_provider_unittest.cc b/components/metrics/demographics/demographic_metrics_provider_unittest.cc index 052d1fb..08468e4 100644 --- a/components/metrics/demographics/demographic_metrics_provider_unittest.cc +++ b/components/metrics/demographics/demographic_metrics_provider_unittest.cc
@@ -88,7 +88,7 @@ case SYNC_FEATURE_TEMPORARILY_DISABLED: sync_service_ = std::make_unique<syncer::TestSyncService>(); // Temporarily disable sync without turning it off. - sync_service_->GetUserSettings()->SetSyncRequested(false); + sync_service_->GetUserSettings()->ClearSyncRequested(); CHECK(!sync_service_->GetUserSettings()->IsSyncRequested()); CHECK(syncer::SyncService::DisableReasonSet(
diff --git a/components/omnibox/browser/actions/omnibox_action.h b/components/omnibox/browser/actions/omnibox_action.h index 4765a2a..7ccd01ed 100644 --- a/components/omnibox/browser/actions/omnibox_action.h +++ b/components/omnibox/browser/actions/omnibox_action.h
@@ -125,7 +125,7 @@ base::TimeTicks match_selection_timestamp, WindowOpenDisposition disposition); ~ExecutionContext(); - const raw_ref<Client> client_; + const raw_ref<Client, DanglingUntriaged> client_; OpenUrlCallback open_url_callback_; base::TimeTicks match_selection_timestamp_; WindowOpenDisposition disposition_;
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_sv.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_sv.xtb index ece8109f..e21f249 100644 --- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_sv.xtb +++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_sv.xtb
@@ -10,9 +10,9 @@ <translation id="2003251155164817216">anpassa utseende i chrome, hantera teman i chrome, ändra tema i chrome</translation> <translation id="2757458512261408467">skapa inbjudan i google kalender, skapa händelse i google kalender, skapa ny inbjudan i kalender, ny händelse i kalender, ny inbjudan i google kalender</translation> <translation id="2903767089701932453">cookieinställningar i chrome, användning av cookies, förbjuda alla tredjepartscookies, hantera cookie-inställningar, hantera cookies</translation> -<translation id="2941773220794601465">översätt den här sidan, översätt webbsida</translation> +<translation id="2941773220794601465">översätt den här sidan, översätt webbsida, översätt sida</translation> <translation id="2973110773361184993">ändra webbplatsbehörigheter, ändra behörigheter, styr webbplatsinställningar, hantera webbplatsinställningar, webbplatsinställningar i chrome</translation> -<translation id="3371457011763794419">uppdatera chrome, uppgradera webbläsaren</translation> +<translation id="3371457011763794419">uppdatera chrome, uppgradera webbläsaren, uppdatera google chrome</translation> <translation id="3489247412199563299">anpassa tillgänglighet i chrome, hantera tillgänglighetsinställningar, ändra tillgänglighetsinställningar</translation> <translation id="3936847108123063274">skapa google-webbplats, gör en google-webbplats, ny google-webbplats, öppna ny google-webbplats</translation> <translation id="4165988127016746956">skapa google-formulär, skapa ett nytt google-formulär, nytt google-formulär, öppna google-enkät</translation>
diff --git a/components/omnibox/resources/translations/omnibox_pedal_synonyms_vi.xtb b/components/omnibox/resources/translations/omnibox_pedal_synonyms_vi.xtb index 6279916..b67814c 100644 --- a/components/omnibox/resources/translations/omnibox_pedal_synonyms_vi.xtb +++ b/components/omnibox/resources/translations/omnibox_pedal_synonyms_vi.xtb
@@ -32,7 +32,7 @@ <translation id="7700496593710078083">xem nhật ký duyệt web trên chrome, xem nhật ký duyệt web</translation> <translation id="7739523284295786564">quản lý tệp đã tải xuống trong chrome, xem tệp đã tải xuống</translation> <translation id="7873993277886791795">tạo trang trình bày trên google, tạo bài trình bày mới, bản trình bày mới trên google, bắt đầu trình bày trên google</translation> -<translation id="7992725801741093524">thay đổi chế độ cài đặt quyền riêng tư của google, quản lý quyền riêng tư của google</translation> +<translation id="7992725801741093524">thay đổi chế độ cài đặt quyền riêng tư trên google, quản lý quyền riêng tư trên google</translation> <translation id="8189600756055704659">thay đổi chế độ cài đặt đồng bộ hoá trình duyệt chrome, thay đổi chế độ đồng bộ hoá chrome, chỉnh sửa tính năng đồng bộ hoá, chỉnh sửa chế độ cài đặt đồng bộ hoá, quản lý tính năng đồng bộ hoá</translation> <translation id="8307473667919507216">chạy quy trình kiểm tra an toàn trên chrome, chạy quy trình kiểm tra an toàn, kiểm tra an toàn</translation> <translation id="8319253638505741466">đóng cửa sổ ẩn danh, kết thúc chế độ ẩn danh</translation>
diff --git a/components/password_manager/core/browser/get_logins_with_affiliations_request_handler.h b/components/password_manager/core/browser/get_logins_with_affiliations_request_handler.h index 88fba54..b591360 100644 --- a/components/password_manager/core/browser/get_logins_with_affiliations_request_handler.h +++ b/components/password_manager/core/browser/get_logins_with_affiliations_request_handler.h
@@ -84,7 +84,7 @@ base::WeakPtr<PasswordStoreConsumer> consumer_; - raw_ptr<PasswordStoreInterface> store_; + raw_ptr<PasswordStoreInterface, DanglingUntriaged> store_; // Closure which is released after being called 2 times. base::RepeatingClosure forms_received_;
diff --git a/components/policy/proto/chrome_device_policy.proto b/components/policy/proto/chrome_device_policy.proto index f2a5c4d..c21738f06 100644 --- a/components/policy/proto/chrome_device_policy.proto +++ b/components/policy/proto/chrome_device_policy.proto
@@ -166,6 +166,7 @@ optional bool report_security_status = 31 [default = false]; optional bool report_crd_sessions = 36 [default = false]; optional bool report_peripherals = 37 [default = false]; + optional bool report_network_events = 41 [default = false]; // Frequency to report device status, default to 3 hours. // If changed, the default value has to be updated in @@ -1204,7 +1205,7 @@ }; message DeviceScreensaverLoginScreenEnabledProto { - optional bool device_screensaver_login_screen_mode = 1; + optional bool device_screensaver_login_screen_enabled = 1; }; message DeviceSystemAecEnabledProto {
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index b511f3c..56bcbe8b 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -1186,6 +1186,15 @@ Si habilitas la política o no la estableces, se habilitarán las definiciones de Respuestas rápidas. Si inhabilitas la política, se inhabilitarán la definiciones de Respuestas rápidas.</translation> +<translation id="2095778449451007308">Esta política controla si los usuarios pueden habilitar el modo solo HTTPS (Usar siempre conexiones seguras) en la Configuración. El modo solo HTTPS actualiza todas las navegaciones a páginas HTTPS. + Si no estableces esta configuración o la habilitas, los usuarios podrán habilitar el modo solo HTTPS. + Si inhabilitas esta configuración, los usuarios no podrán habilitar el modo solo HTTPS. + Si estableces esta configuración en force_enabled, se habilitará el modo solo HTTPS y los usuarios no podrán inhabilitarlo. + La habilitación forzosa del modo solo HTTPS es compatible a partir de la versión M112. + +Se puede usar la política <ph name="HTTP_ALLOWLIST_POLICY_NAME" /> independiente +para que esta función no actualice a HTTPS +los nombres de host o patrones de nombre de host específicos.</translation> <translation id="209586405398070749">Canal estable</translation> <translation id="2096932573113293941">Solicitar permiso al usuario para ejecutar complementos que requieren autorización</translation> <translation id="2098658257603918882">Habilitar informes de uso y datos relacionados con bloqueos</translation>
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index 3fef6d2..0cf935e 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -1174,6 +1174,13 @@ Si elle est activée ou si elle n'est pas configurée, la définition pour Réponses rapides sera activée. Si elle est désactivée, la définition pour Réponses rapides sera désactivée.</translation> +<translation id="2095778449451007308">Cette règle détermine si les utilisateurs peuvent activer ou non le mode HTTPS uniquement (toujours utiliser une connexion sécurisée) dans les paramètres. Ce mode fait passer toutes les navigations en HTTPS. + Si ce paramètre n'est pas défini ou s'il est défini sur "Autorisé", les utilisateurs seront autorisés à activer le mode HTTPS uniquement. + Si ce paramètre est défini sur "Interdit", les utilisateurs ne seront pas autorisés à activer le mode HTTPS uniquement. + Si ce paramètre est défini sur "force_enabled", le mode HTTPS uniquement sera activé et les utilisateurs ne pourront pas le désactiver. + L'activation forcée du mode HTTPS uniquement est disponible à partir de M112. + +La règle <ph name="HTTP_ALLOWLIST_POLICY_NAME" /> distincte permet d'éviter que cette fonctionnalité mette à niveau des noms d'hôte ou des modèles du nom d'hôte spécifiques vers HTTPS.</translation> <translation id="209586405398070749">Version stable</translation> <translation id="2096932573113293941">Demander à l'utilisateur l'autorisation d'exécuter les plug-ins qui nécessitent une autorisation</translation> <translation id="2098658257603918882">Autoriser l'envoi de statistiques d'utilisation et de rapports d'erreur</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index 05c14c1..72dbe4e2 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -4776,6 +4776,13 @@ <translation id="5448022937220253000">Scegli cosa fare con i dati utente dopo la disattivazione di <ph name="LACROS_NAME" /></translation> <translation id="5449690328792750354">L'API Event.path sarà disponibile.</translation> <translation id="5452024130413254050">Consente di stabilire se le VM che utilizzano questa configurazione hanno accesso a un vTPM; il valore predefinito è false e, se il criterio non viene configurato, viene usato il valore <ph name="FORCE_SHUTDOWN_IF_MORE_RESTRICTED" />.</translation> +<translation id="5452167809842762761">Questo criterio è stato rimosso nella versione M114. Serviva per disattivare CECPQ2, ma CECPQ2 è stato disattivato per impostazione predefinita e verrà sostituito da Kyber, un meccanismo di incapsulamento della chiave (KEM) post-quantistico selezionato dal NIST, nuovamente associato al nostro accordo chiave classico standard, X25519. + +Se questo criterio non viene configurato o se viene attivato, <ph name="PRODUCT_NAME" /> seguirà la procedura di implementazione predefinita di CECPQ2, un algoritmo di accordo chiave post-quantistico in TLS. + + CECPQ2 comporta la generazione di messaggi TLS di dimensioni maggiori che, in rarissimi casi, potrebbero attivare bug in alcuni componenti hardware di rete. Questo criterio può essere impostato su False per disattivare ECPQ2 durante la risoluzione dei problemi di rete. + + Questo criterio è una misura temporanea e verrà rimosso nelle future versioni di <ph name="PRODUCT_NAME" />.</translation> <translation id="5454128917282602937">Quando un utente passa da un dispositivo <ph name="PRODUCT_OS_NAME" /> a un altro dello stesso tipo, il servizio <ph name="PRODUCT_NAME" /> V2 avvia le finestre del browser e delle app del dispositivo precedente su quello nuovo. Se il criterio viene impostato su Enabled, le finestre del browser e delle app verranno avviate automaticamente al momento dell'accesso dall'ultimo dispositivo <ph name="PRODUCT_OS_NAME" /> utilizzato dall'utente corrente. Se il criterio viene impostato su Disabled o se non viene configurato, gli elementi da avviare al momento dell'accesso verranno determinati in base alle impostazioni di ripristino totale.</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index 43af88a3..4f8b277 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -1179,6 +1179,15 @@ Nếu bạn bật hoặc không đặt chính sách này, thì hệ thống sẽ bật tính năng Tra định nghĩa của thông tin nhanh. Nếu bạn tắt chính sách này, thì hệ thống sẽ tắt tính năng Tra định nghĩa của thông tin nhanh.</translation> +<translation id="2095778449451007308">Chính sách này kiểm soát việc người dùng có thể bật Chế độ Chỉ giao thức HTTPS (Luôn sử dụng kết nối an toàn) trong phần Cài đặt hay không. Chế độ Chỉ giao thức HTTPS nâng mọi hình thức chuyển hướng lên giao thức HTTPS. + Nếu bạn không đặt chế độ cài đặt này hoặc đặt thành cho phép, thì người dùng sẽ được phép bật chế độ Chỉ giao thức HTTPS. + Nếu bạn đặt chế độ cài đặt này thành không cho phép, thì người dùng sẽ không được phép bật chế độ Chỉ giao thức HTTPS. + Nếu bạn đặt chế độ cài đặt này thành force_enabled (buộc bật), thì chế độ Chỉ giao thức HTTPS sẽ bật và người dùng sẽ không thể tắt chế độ này. + Tuỳ chọn buộc bật chế độ Chỉ giao thức HTTPS được hỗ trợ trên M112 trở đi. + +Bạn có thể sử dụng chính sách <ph name="HTTP_ALLOWLIST_POLICY_NAME" /> riêng biệt +để miễn trừ việc nâng cấp lên HTTPS nhờ tính năng này +cho các tên máy chủ hoặc mẫu tên máy chủ cụ thể.</translation> <translation id="209586405398070749">Kênh ổn định</translation> <translation id="2096932573113293941">Yêu cầu người dùng cấp quyền để chạy các trình bổ trợ đòi hỏi uỷ quyền</translation> <translation id="2098658257603918882">Bật tính năng báo cáo sử dụng và dữ liệu liên quan đến sự cố</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index ae42a98..2358d1b 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -1164,6 +1164,13 @@ 如果此政策已启用或未设置,系统将启用快速解答定义功能。 如果此政策已停用,系统将停用快速解答定义功能。</translation> +<translation id="2095778449451007308">此政策用于控制用户能否在“设置”中启用 HTTPS-Only 模式(即“一律使用安全连接”)。HTTPS-Only 模式会将所有导航路径升级到 HTTPS。 + 如果此设置设为“allowed”或未配置,用户将能启用 HTTPS-Only 模式。 + 如果此设置设为“disallowed”,用户将无法启用 HTTPS-Only 模式。 + 如果此设置设为“force_enabled”,系统将会启用 HTTPS-Only 模式,且用户无法停用该模式。 + 从 M112 开始,系统支持强制启用 HTTPS-Only 模式。 + +单独的 <ph name="HTTP_ALLOWLIST_POLICY_NAME" /> 政策可用于豁免特定主机名或主机名格式,使其不会被该功能升级到 HTTPS。</translation> <translation id="209586405398070749">稳定版</translation> <translation id="2096932573113293941">请求用户许可运行需要授权的插件</translation> <translation id="2098658257603918882">启用关于使用情况和崩溃相关数据的报告</translation>
diff --git a/components/policy/resources/templates/device_policy_proto_map.yaml b/components/policy/resources/templates/device_policy_proto_map.yaml index 29207da3..c548a46 100644 --- a/components/policy/resources/templates/device_policy_proto_map.yaml +++ b/components/policy/resources/templates/device_policy_proto_map.yaml
@@ -212,3 +212,4 @@ DeviceScreensaverLoginScreenImages: device_screensaver_login_screen_images.device_screensaver_login_screen_images DeviceActivityHeartbeatEnabled: device_reporting.device_activity_heartbeat_enabled DeviceActivityHeartbeatCollectionRateMs: device_reporting.device_activity_heartbeat_collection_rate_ms +DeviceReportNetworkEvents: device_reporting.report_network_events
diff --git a/components/policy/resources/templates/policies.yaml b/components/policy/resources/templates/policies.yaml index 4ab069ae..2b2b889 100644 --- a/components/policy/resources/templates/policies.yaml +++ b/components/policy/resources/templates/policies.yaml
@@ -1095,6 +1095,7 @@ 1094: AppLaunchAutomation 1095: InsecureHashesInTLSHandshakesEnabled 1096: DeviceLoginScreenGeolocationAccessLevel + 1097: DeviceReportNetworkEvents atomic_groups: 1: Homepage
diff --git a/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/DeviceReportNetworkEvents.yaml b/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/DeviceReportNetworkEvents.yaml new file mode 100644 index 0000000..4c7bf91 --- /dev/null +++ b/components/policy/resources/templates/policy_definitions/UserAndDeviceReporting/DeviceReportNetworkEvents.yaml
@@ -0,0 +1,29 @@ +arc_support: This policy has no effect on the logging done by Android. +caption: Report network events +default: false +desc: |- + Report network connection and signal strength events on enrolled devices. + + If the policy is set to false or left unset, the information will not be reported. + If set to true, the device's network events will be reported. +device_only: true +example_value: false +features: + dynamic_refresh: true +items: +- caption: Report network events + value: true +- caption: Do not report network events + value: false +owners: +- anasr@google.com +- cros-reporting-team@google.com +schema: + type: boolean +supported_chrome_os_management: +- google_cloud +future_on: +- chrome_os +tags: +- admin-sharing +type: main
diff --git a/components/policy/test/data/policy_test_cases.json b/components/policy/test/data/policy_test_cases.json index eaa5723..72007c8 100644 --- a/components/policy/test/data/policy_test_cases.json +++ b/components/policy/test/data/policy_test_cases.json
@@ -13584,6 +13584,9 @@ "ReportDeviceSignalStrengthEventDrivenTelemetry": { "reason_for_missing_test": "Maps into CrosSettings" }, + "DeviceReportNetworkEvents": { + "reason_for_missing_test": "Maps into CrosSettings" + }, "DeviceReportXDREvents": { "reason_for_missing_test": "Maps into CrosSettings" },
diff --git a/components/privacy_sandbox/privacy_sandbox_settings.h b/components/privacy_sandbox/privacy_sandbox_settings.h index cb430be..1c0c316 100644 --- a/components/privacy_sandbox/privacy_sandbox_settings.h +++ b/components/privacy_sandbox/privacy_sandbox_settings.h
@@ -88,7 +88,7 @@ // future, in which case no history is eligible. virtual base::Time TopicsDataAccessibleSince() const = 0; - // Returns whether any Attribution Rerpoting operation would ever be allowed. + // Returns whether any Attribution Reporting operation would ever be allowed. // If false, no attribution reporting operation is allowed (e.g. because the // user has disabled the setting). If true, the appropriate context specific // check must also be made.
diff --git a/components/privacy_sandbox_strings.grdp b/components/privacy_sandbox_strings.grdp index c778b41..7c7a0f0 100644 --- a/components/privacy_sandbox_strings.grdp +++ b/components/privacy_sandbox_strings.grdp
@@ -122,6 +122,26 @@ Sites you visit can ask Chrome for information that helps them measure the performance of their ads. Chrome protects your privacy by limiting the information sites can share with one another. </message> + <!-- Privacy Sandbox v4 - Notice Restricted. --> + <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_TITLE" translateable="false" formatter_data="android_java"> + Ut enim ad minim veniam. + </message> + <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_DESCRIPTION_1" translateable="false" formatter_data="android_java"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </message> + <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_DESCRIPTION_2" translateable="false" formatter_data="android_java"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </message> + <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_DESCRIPTION_3" translateable="false" > + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </message> + <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_ACK_BUTTON" translateable="false" formatter_data="android_java"> + Lorem + </message> + <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_RESTRICTED_SETTINGS_BUTTON" translateable="false" formatter_data="android_java"> + Ipsum + </message> + <!-- Privacy Sandbox v4 - Notice ROW. --> <message name="IDS_PRIVACY_SANDBOX_M1_NOTICE_ROW_TITLE" desc="* A page title for this Notice screen for users outside of the EEA. It needs to serve 2 purposes: 1) it needs to encompass 3 settings: Ad topics, Site-suggested ads, and Ad measurement 2) it also tries to give a sense for a bigger project, Privacy Sandbox described at www.privacysandbox.com. * 'ad privacy' is also the name of a new page in Chrome settings called 'Ad settings'. That new page includes 3 settings: Ad topics, Site-suggested ads, and Ad measurement. * The new ad settings appear in the privacy section of Chrome settings: chrome://settings/adSettings **** CONTEXT PRIVACY SANDBOX **** Chrome’s Privacy Sandbox initiative 1) deprecates third-party cookies in Chrome, 2) supports free and open content on the web (by finding better ways to support ads online), 3) while providing stronger privacy protections for users. You can see a high-level description of this public project at www.privacysanbox.com. **** CONTEXT ROW NOTICE **** 1) This screen provides notice to Chrome users outside of the European Economic Area (EEA) (we typically refer to this screen as “Rest of World” or “ROW”). It follows guidelines established by the GDPR. 2) We’re using similar but distinct content for EEA / ROW because legal requirements differ. For ROW, we can provide notice for all 3 settings, and so all 3 settings can appear on a single screen. " formatter_data="android_java"> Enhanced ad privacy in Chrome
diff --git a/components/segmentation_platform/internal/execution/processing/uma_feature_processor.h b/components/segmentation_platform/internal/execution/processing/uma_feature_processor.h index 90fda47..e0b18ba 100644 --- a/components/segmentation_platform/internal/execution/processing/uma_feature_processor.h +++ b/components/segmentation_platform/internal/execution/processing/uma_feature_processor.h
@@ -66,7 +66,7 @@ const raw_ptr<SignalDatabase> signal_database_; // The FeatureAggregator aggregates all the data based on metadata and input. - const raw_ptr<FeatureAggregator> feature_aggregator_; + const raw_ptr<FeatureAggregator, DanglingUntriaged> feature_aggregator_; // Data needed for the processing of uma features. const base::Time prediction_time_;
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb index 73dc182..c4f4fe0 100644 --- a/components/strings/components_strings_af.xtb +++ b/components/strings/components_strings_af.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Besonderhede van virtuele kaart</translation> <translation id="1803020234906945288">Gesonde eetgewoontes</translation> <translation id="1803351196216024260">Kan vra om jou mikrofoon te gebruik</translation> +<translation id="1806174020048213474">Hierdie app versoek toestemming om wi-fi-eiebewyse te installeer. Jou <ph name="DEVICE_TYPE" /> sal ná die opstelling outomaties aan deelnemende wi-fi-netwerke koppel. Deïnstalleer die app om hierdie eiebewyse te verwyder.</translation> <translation id="1807246157184219062">Lig</translation> <translation id="1807528111851433570">Beginbladsy</translation> <translation id="180991881384371158">Jou CVC is op die agterkant van jou kaart. Dis die laaste 3 syfers bo regs in die handtekeningkassie.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Biometrie</translation> <translation id="3632503704576938756">Skermdeling is hervat</translation> <translation id="3632892046558972264">Skemdeling is onderbreek</translation> -<translation id="3633035844150606508">Stoor in jou Google-rekening <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Dateer Chrome Op-knoppie; druk Enter om Chrome vanuit jou Chrome-instellings op te dateer</translation> <translation id="3634530185120165534">Laai 5</translation> <translation id="3634567936866541746">Jy het sopas jou wagwoord op 'n bedrieglike werf ingevoer. Chrome beveel aan dat jy jou gestoorde wagwoorde nagaan om jou rekeninge te beveilig.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Stapelaar 6</translation> <translation id="4274173425554582601">Rekenaars en elektronika</translation> <translation id="4275830172053184480">Herbegin jou toestel</translation> +<translation id="4276974990916607331">Nee, dankie</translation> <translation id="4277028893293644418">Stel wagwoord terug</translation> <translation id="4277937682389409325">Plaaslike adres</translation> <translation id="4278390842282768270">Toegelaat</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Bevestigingdialoog</translation> <translation id="5135404736266831032">Bestuur adresse …</translation> <translation id="5136841603454277753">Voer korrekte kode in</translation> +<translation id="5137761395480718572">Hierdie app versoek toestemming om wi-fi-eiebewyse te installeer. Jou <ph name="DEVICE_TYPE" /> sal ná die opstelling outomaties aan deelnemende wi-fi-netwerke koppel. Deïnstalleer die app om hierdie eiebewyse te verwyder. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Virtuele kaart is nie op die oomblik beskikbaar nie. Kontak asseblief jou bank</translation> <translation id="5138227688689900538">Wys minder</translation> <translation id="5145883236150621069">Foutkode kom voor in die beleidantwoord</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">Webprogramme en aanlyn nutsgoed</translation> <translation id="5274025349362408263">Boeke en literatuur</translation> <translation id="5279286380302340275">Bestuur aflaaie</translation> +<translation id="5279453600310613955">Nee, dankie</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Dokumenteienskappe</translation> <translation id="528468243742722775">Einde</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">Sewende rol</translation> <translation id="6529602333819889595">Herdoen uitvee</translation> <translation id="6535751101619004418">Geldeenhede en buitelandse valuta</translation> +<translation id="6536221421038631327">As ’n Passpoint-intekening van jou <ph name="DEVICE_TYPE" /> af verwyder word, sal die geassosieerde netwerke verwyder word. Kontak “<ph name="FRIENDLY_NAME" />” om veranderinge aan jou intekeningpakket te maak. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Onderlinge beleggingstrust</translation> <translation id="6545864417968258051">Bluetooth-opsporing</translation> <translation id="6547208576736763147">Dubbelpons links</translation> @@ -3339,6 +3343,7 @@ <translation id="9219103736887031265">Prente</translation> <translation id="922152298093051471">Pasmaak Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Laat die <ph name="APP_NAME" />-app toe om wi-fi-netwerke op te stel?</translation> <translation id="936602727769022409">Jy kan toegang tot jou Google-rekening verloor. Chromium beveel aan dat jy jou wagwoord nou verander. Jy sal gevra word om aan te meld.</translation> <translation id="937457230470581909">Dieretuine, akwariums en reservate</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Watter data word gebruik:<ph name="END_BOLD" /> Jou advertensie-onderwerpe word gegrond op jou onlangse blaaigeskiedenis, ’n lys werwe wat jy besoek het terwyl jy Chrome op hierdie toestel gebruik.</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb index b9b1987f..efb7fe9 100644 --- a/components/strings/components_strings_am.xtb +++ b/components/strings/components_strings_am.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">የምናባዊ ካርድ ዝርዝሮች</translation> <translation id="1803020234906945288">ጤነኛ አመጋገብ</translation> <translation id="1803351196216024260">ማይክሮፎንዎን ለመጠቀም መጠየቅ ይችላል</translation> +<translation id="1806174020048213474">ይህ መተግበሪያ የWi-Fi የመግቢያ ማስረጃዎችን ለመጫን ፈቃድ እየጠየቀ ነው። ከውቅረት በኋላ የእርስዎ <ph name="DEVICE_TYPE" /> በራስ-ሰር ከተሳታፊ የWiFi አውታረ መረቦች ጋር ይገናኛል። እነዚህን የመግቢያ ማስረጃዎች ለማስወገድ መተግበሪያውን ያራግፉ።</translation> <translation id="1807246157184219062">ብርሃን</translation> <translation id="1807528111851433570">የመጀመሪያ ሉህ</translation> <translation id="180991881384371158">ካርድ ማረጋገጫ ኮድዎ በካርድዎ ጀርባ ላይ ነው። ከፊርማ ሳጥኑ አናት በስተቀኝ በኩል የመጨረሻዎቹ 3 አሃዞች ናቸው።</translation> @@ -725,6 +726,7 @@ <translation id="2718207025093645426">የሚተዳደር ተጠቃሚ ወይም መሣሪያ ምንም የተጫነ መመሪያ የለውም።</translation> <translation id="2721148159707890343">ጥያቄ ተሳክቷል</translation> <translation id="2723669454293168317">በChrome ቅንብሮች ውስጥ የደህንነት ፍተሻን ያሂዱ</translation> +<translation id="2725492561136085792">ይህን እርምጃ ለማግበር አስገባን ይጫኑ</translation> <translation id="2726001110728089263">የጎን መሳቢያ</translation> <translation id="2728127805433021124">የአገልጋዩ እውቅና ማረጋገጫ የተፈረመው በደካማ የፊርማ ስልተቀመር ነው።</translation> <translation id="2730326759066348565"><ph name="BEGIN_LINK" />የግንኙነት መመርመሪያን በማሄድ ላይ<ph name="END_LINK" /></translation> @@ -821,6 +823,7 @@ <translation id="299990983510665749">ሃችባኮች</translation> <translation id="3002501248619246229">የግቤት መሳቢያ ሚዲያን ይመልከቱ</translation> <translation id="3005723025932146533">የተቀመጠ ቅጂ አሳይ</translation> +<translation id="3009036448238594149"><ph name="ACTION_IN_SUGGEST_FOCUSED_FRIENDLY_MATCH_TEXT" />፣ የሚገኙ እርምጃዎችን ለማሰስ Tabን በመቀጠል የተመረጠውን እርምጃ ለመፈጸም Enterን ይጫኑ።</translation> <translation id="3013291976881901233">የMIDI መሣሪያዎች</translation> <translation id="301521992641321250">በራስ-ሰር ታግዷል</translation> <translation id="3016780570757425217">የእርስዎን መገኛ አካባቢ ይወቁ</translation> @@ -1066,7 +1069,6 @@ <translation id="3631244953324577188">ባዮሜትሪክስ</translation> <translation id="3632503704576938756">ማያ ገጽ ማጋራት ከቆመበት ቀጥሏል</translation> <translation id="3632892046558972264">ማያ ገጽ ማጋራት ባለበት ቆሟል</translation> -<translation id="3633035844150606508">በእርስዎ Google መለያ <ph name="ACCOUNT" /> ውስጥ አድራሻን ያስቀምጡ</translation> <translation id="3633738897356909127">የChrome አዝራርን ያዘምኑ፣ Chromeን ለማዘመን ከእርስዎ Chrome ቅንብሮች ሆነው አስገባን ይጫኑ</translation> <translation id="3634530185120165534">መሳቢያ 5</translation> <translation id="3634567936866541746">አሁን የይለፍ ቃልዎን በአንድ አታላይ ጣቢያ ላይ አስገብተዋል። የእርስዎን መለያዎች ደህንነት ለመጠበቅ፣ Chrome የተቀመጡ ይለፍ ቃላትዎን መፈተሽ ይመክራል።</translation> @@ -1333,6 +1335,7 @@ <translation id="4270541775497538019">ቁልል 6</translation> <translation id="4274173425554582601">ኮምፒውተር እና ኤሌክትሮኒክስ</translation> <translation id="4275830172053184480">መሣሪያዎን ዳግም ያስጀምሩ</translation> +<translation id="4276974990916607331">አይ፣ አመሰግናለሁ</translation> <translation id="4277028893293644418">የይለፍ ቃል ዳግም አቀናብር</translation> <translation id="4277937682389409325">አካባቢያዊ አድራሻ</translation> <translation id="4278390842282768270">ተፈቅዷል</translation> @@ -1693,6 +1696,7 @@ <translation id="5129534298163637277">የማረጋገጫ መገናኛ</translation> <translation id="5135404736266831032">አድራሻዎችን ያቀናብሩ...</translation> <translation id="5136841603454277753">ትክክለኛ ኮድ ያስገቡ</translation> +<translation id="5137761395480718572">ይህ መተግበሪያ የWi-Fi የመግቢያ ማስረጃዎችን ለመጫን ፈቃድ እየጠየቀ ነው። ከውቅረት በኋላ የእርስዎ <ph name="DEVICE_TYPE" /> በራስ-ሰር ከተሳታፊ የWiFi አውታረ መረቦች ጋር ይገናኛል። እነዚህን የመግቢያ ማስረጃዎች ለማስወገድ መተግበሪያውን ያራግፉ። <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">ምናባዊ ካርድ አሁን አይገኝም፣ እባክዎ ባንክዎን ያነጋግሩ</translation> <translation id="5138227688689900538">ያነሰ አሳይ</translation> <translation id="5145883236150621069">የስህተት ኮድ በመምሪያው ምላሽ ውስጥ አለ</translation> @@ -1733,6 +1737,8 @@ <translation id="5234764350956374838">አሰናብት</translation> <translation id="5239623327352565343">አካባቢ ይፈቀዳል</translation> <translation id="5242889659037569123">ሻንጣዎች እና የጉዞ መለዋወጫዎች</translation> +<translation id="5244732203286792411">በመጫን ላይ... + ይህ ትንሽ ጊዜ ሊወስድ ይችላል።</translation> <translation id="5250209940322997802">«ከአውታረ መረብ ጋር ይገናኙ»</translation> <translation id="52517543715119994">ስለChrome ባህሪዎች ይወቁ</translation> <translation id="5251803541071282808">ደመና</translation> @@ -1747,6 +1753,7 @@ <translation id="5273881944177595304">የድር መተግበሪያዎች እና መስመር ላይ መሣሪያዎች</translation> <translation id="5274025349362408263">መጽሐፍት እና ስነ ጽሁፍ</translation> <translation id="5279286380302340275">ውርዶችን ያቀናብሩ</translation> +<translation id="5279453600310613955">አይ፣ አመሰግናለሁ</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">የሰነድ ባሕሪያት</translation> <translation id="528468243742722775">ጨርስ</translation> @@ -2239,6 +2246,7 @@ <translation id="6529173248185917884">ሰባተኛ ጥቅልል</translation> <translation id="6529602333819889595">&ሰርዝን ድገም</translation> <translation id="6535751101619004418">ምንዛሬዎች እና የምንዛሬ ተመኖች</translation> +<translation id="6536221421038631327">የመተላለፊያ የደንበኝነት ምዝገባን ከእርስዎ <ph name="DEVICE_TYPE" /> ማስወገድ ተጓዳኝ አውታረ መረቦችን ያስወግዳል። በደንበኝነት ምዝገባ ዕቅድዎ ላይ ለውጦችን ለማድረግ «<ph name="FRIENDLY_NAME" />»ን ያነጋግሩ። <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">የጋራ ፈንድ</translation> <translation id="6545864417968258051">የብሉቱዝ ቅኝት</translation> <translation id="6547208576736763147">በግራ በኩል ብሳ</translation> @@ -3335,6 +3343,7 @@ <translation id="9219103736887031265">ምስሎች</translation> <translation id="922152298093051471">Chromeን አብጅ</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">የ<ph name="APP_NAME" /> መተግበሪያ የWiFi አውታረ መረቦችን እንዲያዋቅር ይፈቀድ?</translation> <translation id="936602727769022409">የGoogle መለያዎን መዳረሻ ሊያጡ ይችላሉ። Chromium የይለፍ ቃልዎን አሁኑኑ እንዲቀይሩት ይመክራል። በመለያ እንዲገቡ ይጠየቃሉ።</translation> <translation id="937457230470581909">መካነ አራዊት፣ የውሃ ማጠራቀሚያዎች እና ጥበቃዎች</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />ምን ውሂብ ጥቅም ላይ እንደሚውል፦<ph name="END_BOLD" /> የእርስዎ የማስታወቂያ ርዕሶች የተመሰረቱት በእርስዎ የቅርብ ጊዜ የአሰሳ ታሪክ ላይ ነው፣ ይህም በዚህ መሣሪያ ላይ Chromeን በመጠቀም የጎበኟቸው የጣቢያዎች ዝርዝር ነው።</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index a4c1e69..8c7fa267 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">المقاييس الحيوية</translation> <translation id="3632503704576938756">تم تفعيل ميزة "مشاركة الشاشة" مجددًا</translation> <translation id="3632892046558972264">تم إيقاف ميزة "مشاركة الشاشة" مؤقتًا</translation> -<translation id="3633035844150606508">سيتم حفظ العنوان في حسابك على Google، <ph name="ACCOUNT" />.</translation> <translation id="3633738897356909127">زر "تحديث Chrome"، اضغط على مفتاح Enter لتحديث Chrome من إعداداته.</translation> <translation id="3634530185120165534">الدُرج 5</translation> <translation id="3634567936866541746">لقد أدخلت للتو كلمة مرورك في موقع إلكتروني مريب. لحماية حساباتك، يقترح متصفِّح Chrome التحقّق من كلمات المرور المحفوظة.</translation> @@ -1582,7 +1581,7 @@ <translation id="4854853140771946034">إنشاء ملاحظة جديدة في Google Keep بسرعة</translation> <translation id="4858792381671956233">لقد سألت والديك ما إذا كانت زيارة هذا الموقع مناسبةً لك</translation> <translation id="485902285759009870">جارٍ التحقّق من الرمز…</translation> -<translation id="486459320933704969">يجب أن يوافق أحد الوالدَين أو الوصي على طلبك لزيارة هذا الموقع الإلكتروني.</translation> +<translation id="486459320933704969">يجب أن يوافق الوصي عليك أو أحد والديَك على طلبك بزيارة هذا الموقع الإلكتروني.</translation> <translation id="4866506163384898554">اضغط على |<ph name="ACCELERATOR1" />| + |<ph name="ACCELERATOR2" />| لعرض المؤشر.</translation> <translation id="4876188919622883022">العرض المبسَّط</translation> <translation id="4876305945144899064">ليس هناك اسم مستخدم</translation> @@ -1740,6 +1739,8 @@ <translation id="5234764350956374838">تجاهل</translation> <translation id="5239623327352565343">تمت الموافقة على طلب الوصول إلى الموقع الجغرافي.</translation> <translation id="5242889659037569123">أمتعة ولوازم السفر</translation> +<translation id="5244732203286792411">جارٍ التحميل... + يُرجى الانتظار قليلاً.</translation> <translation id="5250209940322997802">"الاتصال بالشبكة"</translation> <translation id="52517543715119994">التعرّف على ميزات Chrome</translation> <translation id="5251803541071282808">السحابة الإلكترونية</translation> @@ -1792,6 +1793,7 @@ <translation id="5344579389779391559">قد تُحاول هذه الصفحة تحصيل رسوم منك</translation> <translation id="5347645913823149105">زر تخصيص الخطوط في Chrome: اضغط على مفتاح Enter لتخصيص أحجام الخطوط وأنماطها في Chrome.</translation> <translation id="5355557959165512791">لا يمكنك زيارة <ph name="SITE" /> الآن لأنه تم إبطال شهادته. أخطاء الشبكة والهجمات عليها عادةً ما تكون مؤقتة، لذا ستعمل هذه الصفحة في وقت على الأرجح.</translation> +<translation id="5356345925629253198">يمكنك استخدام العناوين المحفوظة مع جميع منتجات Google. سيتم حفظ هذا العنوان في حسابك على Google (<ph name="ACCOUNT" />).</translation> <translation id="5357848622083956825">فنون بصرية وتصميم</translation> <translation id="536296301121032821">تعذّر تخزين إعدادات السياسة</translation> <translation id="5363309033720083897">منفذ تسلسلي سمحَ به مشرفك</translation> @@ -2661,7 +2663,7 @@ <translation id="7535087603100972091">القيمة</translation> <translation id="7537536606612762813">إلزامية</translation> <translation id="7542995811387359312">تم إيقاف الملء التلقائي لبطاقة الائتمان لأن هذا النموذج لا يستخدم اتصالاً آمنًا.</translation> -<translation id="7543525346216957623">اسأل والديك</translation> +<translation id="7543525346216957623">طلب الإذن من والدَيك</translation> <translation id="7546409722674205727">جارٍ تشغيل "<ph name="APP_NAME" />"</translation> <translation id="7548892272833184391">إصلاح أخطاء الاتصال</translation> <translation id="7549584377607005141">تتطلب صفحة الويب هذه البيانات التي أدخلتها في وقت سابق لعرضها بشكل صحيح. يمكنك إرسال هذه المعلومات مرة أخرى ولكن بذلك ستكرر أي إجراء اتخذته هذه الصفحة في وقت سابق.</translation> @@ -2834,7 +2836,7 @@ <translation id="7951415247503192394">(32 بت)</translation> <translation id="7952192831285741665">EDP أوروبي</translation> <translation id="7953569069500808819">خزم الحواف من الأعلى</translation> -<translation id="7955105108888461311">طلب الوصول شخصيًا</translation> +<translation id="7955105108888461311">الطلب شخصيًا</translation> <translation id="7956713633345437162">الإشارات المرجعية على الجوّال</translation> <translation id="7961015016161918242">مطلقًا</translation> <translation id="7962467575542381659">جهاز النظام الأساسي</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index dd00f37e..104aa1ec 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">ভাৰ্ছুৱেল কাৰ্ডৰ সবিশেষ</translation> <translation id="1803020234906945288">স্বাস্থ্যসন্মত খাদ্য</translation> <translation id="1803351196216024260">মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰিবলৈ বিচাৰিব পাৰে</translation> +<translation id="1806174020048213474">এই এপ্টোৱে ৱাই-ফাই ক্ৰিডেনশ্বিয়েলসমূহ ইনষ্টল কৰাৰ অনুমতি বিচাৰি অনুৰোধ জনাইছে। ছেটআপ কৰা পাছত, অংশগ্ৰহণ কৰা ৱাই-ফাই নেটৱৰ্কসমূহৰ সৈতে আপোনাৰ <ph name="DEVICE_TYPE" /> স্বয়ংক্ৰিয়ভাৱে সংযুক্ত হ’ব। এই ক্ৰিডেনশ্বিয়েলসমূহ আঁতৰাবলৈ এপ্টো আনইনষ্টল কৰক।</translation> <translation id="1807246157184219062">পাতল</translation> <translation id="1807528111851433570">আৰম্ভণিৰ শ্বীট</translation> <translation id="180991881384371158">আপোনাৰ CVC আপোনাৰ কাৰ্ডৰ পিছফালে আছে। এইটো স্বাক্ষৰ বাকচৰ একেবাৰে ওপৰৰ সোঁফালে থকা অন্তিম ৩ টা অংক।</translation> @@ -1066,7 +1067,6 @@ <translation id="3631244953324577188">বায়’মেট্ৰিক্স</translation> <translation id="3632503704576938756">স্ক্ৰীন শ্বেয়াৰ কৰাটো পুনৰ আৰম্ভ কৰা হ’ল</translation> <translation id="3632892046558972264">স্ক্ৰীন শ্বেয়াৰ কৰাটো পজ কৰা হ’ল</translation> -<translation id="3633035844150606508">ঠিকনাটো আপোনাৰ Google একাউণ্ট, <ph name="ACCOUNT" />ত ছেভ কৰক</translation> <translation id="3633738897356909127">Chrome আপডে’ট কৰক বুটাম, Chromeৰ ছেটিংসমূহৰ পৰা Chrome আপডে’ট কৰিবলৈ এণ্টাৰ টিপক</translation> <translation id="3634530185120165534">ট্ৰে’ ৫</translation> <translation id="3634567936866541746">আপুনি এটা প্ৰৱঞ্চনামূলক ছাইটত এইমাত্ৰ নিজৰ পাছৱৰ্ডটো দিছে। আপোনাৰ একাউণ্টসমূহ সুৰক্ষিত কৰিবলৈ Chromeএ আপোনাৰ ছেভ হৈ থকা পাছৱৰ্ডসমূহ পৰীক্ষা কৰিবলৈ চুপাৰিছ কৰে।</translation> @@ -1332,6 +1332,7 @@ <translation id="4270541775497538019">ষ্টেকাৰ ৬</translation> <translation id="4274173425554582601">কম্পিউটাৰ আৰু ইলেক্ট্ৰনিক্স</translation> <translation id="4275830172053184480">আপোনাৰ ডিভাইচটো ৰিষ্টাৰ্ট কৰক</translation> +<translation id="4276974990916607331">নালাগে, ধন্যবাদ</translation> <translation id="4277028893293644418">পাছৱৰ্ড ৰিছেট কৰক</translation> <translation id="4277937682389409325">স্থানীয় ঠিকনা</translation> <translation id="4278390842282768270">অনুমতি দিয়া হৈছে</translation> @@ -1692,6 +1693,7 @@ <translation id="5129534298163637277">নিশ্চিতকৰণ ডায়লগ</translation> <translation id="5135404736266831032">ঠিকনাসমূহ পৰিচালনা কৰক...</translation> <translation id="5136841603454277753">শুদ্ধ ক’ডটো দিয়ক</translation> +<translation id="5137761395480718572">এই এপ্টোৱে ৱাই-ফাই ক্ৰিডেনশ্বিয়েলসমূহ ইনষ্টল কৰাৰ অনুমতি বিচাৰি অনুৰোধ জনাইছে। ছেটআপ কৰা পাছত, অংশগ্ৰহণ কৰা ৱাই-ফাই নেটৱৰ্কসমূহৰ সৈতে আপোনাৰ <ph name="DEVICE_TYPE" /> স্বয়ংক্ৰিয়ভাৱে সংযুক্ত হ’ব। এই ক্ৰিডেনশ্বিয়েলসমূহ আঁতৰাবলৈ এপ্টো আনইনষ্টল কৰক। <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">এই মুহূৰ্তত ভাৰ্চুৱেল কাৰ্ডখন উপলব্ধ নহয়, অনুগ্ৰহ কৰি আপোনাৰ বেংকৰ সৈতে যোগাযোগ কৰক</translation> <translation id="5138227688689900538">কমকৈ দেখুৱাওক</translation> <translation id="5145883236150621069">নীতিৰ সঁহাৰিত কোনো আসোঁৱাপূর্ণ ক'ড আছে</translation> @@ -1748,6 +1750,7 @@ <translation id="5273881944177595304">ৱেব এপ্ আৰু অনলাইন সঁজুলি</translation> <translation id="5274025349362408263">কিতাপ আৰু সাহিত্য</translation> <translation id="5279286380302340275">ডাউনল’ডসমূহ পৰিচালনা কৰক</translation> +<translation id="5279453600310613955">নালাগে, ধন্যবাদ</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">নথিৰ বৈশিষ্ট্য</translation> <translation id="528468243742722775">সমাপ্ত</translation> @@ -1786,6 +1789,7 @@ <translation id="5344579389779391559">এই পৃষ্ঠাটোৱে আপোনাৰ পৰা মাচুল লোৱাৰ চেষ্টা কৰিব পাৰে</translation> <translation id="5347645913823149105">Chromeৰ বুটামত ফণ্ট কাষ্টমাইজ কৰক, Chromeত ফণ্টৰ আকাৰ আৰু টাইপফেচ কাষ্টমাইজ কৰিবলৈ এণ্টাৰ টিপক</translation> <translation id="5355557959165512791">বর্তমান আপুনি <ph name="SITE" />ৰ চাব নোৱাৰে কাৰণ ইয়াৰ প্ৰমাণপত্ৰ প্ৰত্যাহাৰ কৰা হৈছে। নেটৱর্কৰ সমস্যা আৰু আক্ৰমণবোৰ সাধাৰণতে অস্থায়ী হয় গতিকে এই পৃষ্ঠাটোৱে পাছত কাম কৰিব পাৰে।</translation> +<translation id="5356345925629253198">ছেভ হৈ থকা ঠিকনাসমূহ আপুনি সমগ্ৰ Google প্ৰ’ডাক্টত ব্যৱহাৰ কৰিব পাৰে। এই ঠিকনাটো আপোনাৰ Google একাউণ্ট (<ph name="ACCOUNT" />)ত ছেভ কৰা হ’ব।</translation> <translation id="5357848622083956825">ভিজুৱেল আৰ্ট আৰু ডিজাইন</translation> <translation id="536296301121032821">নীতিৰ ছেটিংসমূহ ষ্ট’ৰ কৰিবলৈ সক্ষম নহ’ল</translation> <translation id="5363309033720083897">আপোনাৰ প্ৰশাসকে অনুমতি দিয়া ক্ৰমিক পৰ্ট</translation> @@ -2239,6 +2243,7 @@ <translation id="6529173248185917884">সপ্তম ৰোল</translation> <translation id="6529602333819889595">মচা কার্য &ৰিডু কৰক</translation> <translation id="6535751101619004418">মুদ্ৰা আৰু বিদেশী মুদ্ৰা বিনিময়</translation> +<translation id="6536221421038631327">আপোনাৰ <ph name="DEVICE_TYPE" />ৰ পৰা এটা পাছপইণ্টৰ ছাবস্ক্ৰিপশ্বন আঁতৰোৱাটোৱে সম্পৰ্কিত নেটৱৰ্কসমূহ আঁতৰাই পেলাব। আপোনাৰ ছাবস্ক্ৰিপশ্বনৰ আঁচনিত সালসলনি কৰিবলৈ "<ph name="FRIENDLY_NAME" />"ৰ সৈতে যোগাযোগ কৰক। <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">মিউচুৱেল ফাণ্ড</translation> <translation id="6545864417968258051">ব্লুটুথ স্কেনিং</translation> <translation id="6547208576736763147">বাওঁফালে দুবাৰ পাঞ্চ কৰক</translation> @@ -3334,6 +3339,7 @@ <translation id="9219103736887031265">Images</translation> <translation id="922152298093051471">Chrome কাষ্টমাইজ কৰক</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385"><ph name="APP_NAME" /> এপ্টোক ৱাই-ফাই নেটৱৰ্ক ছেট আপ কৰাৰ অনুমতি দিবনে?</translation> <translation id="936602727769022409">আপুনি নিজৰ Google একাউণ্টৰ এক্সেছ হেৰুৱাব পাৰে। Chromiumএ আপোনাৰ পাছৱৰ্ডটো এতিয়াই সলনি কৰাটো চুপাৰিছ কৰিছে। আপোনাক ছাইন ইন কৰিবলৈ কোৱা হ’ব।</translation> <translation id="937457230470581909">চিৰিয়াখানা, একুৰিয়াম আৰু বন্য জীৱজন্তু চাব পৰা অন্য ঠাই</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />কি ডেটা ব্যৱহাৰ কৰা হয়:<ph name="END_BOLD" /> আপোনাৰ বিজ্ঞাপনৰ বিষয়বস্তু আপোনাৰ শেহতীয়া ব্ৰাউজিঙৰ ইতিহাসৰ ওপৰত নিৰ্ভৰ কৰে, যি হৈছে আপুনি এই ডিভাইচটোত Chrome ব্যৱহাৰ কৰি চোৱা ছাইটসমূহৰ সূচী।</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb index db59554..7432f88 100644 --- a/components/strings/components_strings_az.xtb +++ b/components/strings/components_strings_az.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Virtual kart detalları</translation> <translation id="1803020234906945288">Sağlam qidalanma</translation> <translation id="1803351196216024260">Saytlar mikrofonunuzdan istifadə etmək üçün icazə istəyə bilər</translation> +<translation id="1806174020048213474">Bu tətbiq Wi-Fi giriş məlumatlarını quraşdırmaq icazəsi tələb edir. Ayarlamadan sonra <ph name="DEVICE_TYPE" /> əlçatan Wi-Fi şəbəkələrinə avtomatik qoşulacaq. Bu giriş məlumatlarını silmək üçün tətbiqi sistemdən silin.</translation> <translation id="1807246157184219062">Yüngül</translation> <translation id="1807528111851433570">Başlama vərəqi</translation> <translation id="180991881384371158">CVC kartın arxa hissəsindədir. Bu, imza xanasının yuxarı sağ tərəfindəki son 3 rəqəmdir.</translation> @@ -1065,7 +1066,6 @@ <translation id="3631244953324577188">Biometriklər</translation> <translation id="3632503704576938756">Ekran paylaşımı davam etdirilir</translation> <translation id="3632892046558972264">Ekran paylaşımı durdurulub</translation> -<translation id="3633035844150606508">Ünvanı Google Hesabında (<ph name="ACCOUNT" />) saxlayın</translation> <translation id="3633738897356909127">"Chrome'u güncəlləyin" düyməsi, Chrome ayarlarında Chrome'u güncəlləmək üçün Enter düyməsinə basın</translation> <translation id="3634530185120165534">Qab 5</translation> <translation id="3634567936866541746">İndicə parolunuzu aldadıcı sayt içində yazdınız. Hesablarınızı qorumaq üçün Chrome yadda saxladığınız parolları yoxlamağı tövsiyə edir.</translation> @@ -1332,6 +1332,7 @@ <translation id="4270541775497538019">Yığıcı 6</translation> <translation id="4274173425554582601">Kompüter ve elektronika</translation> <translation id="4275830172053184480">Cihazınızı yenidən başladın</translation> +<translation id="4276974990916607331">Xeyr, təşəkkürlər</translation> <translation id="4277028893293644418">Parolu sıfırlayın</translation> <translation id="4277937682389409325">Yerli ünvan</translation> <translation id="4278390842282768270">İcazə verilib</translation> @@ -1692,6 +1693,7 @@ <translation id="5129534298163637277">Təsdiq pəncərəsi</translation> <translation id="5135404736266831032">Ünvanları idarə edin...</translation> <translation id="5136841603454277753">Düzgün kodu daxil edin</translation> +<translation id="5137761395480718572">Bu tətbiq Wi-Fi giriş məlumatlarını quraşdırmaq icazəsi tələb edir. Ayarlamadan sonra <ph name="DEVICE_TYPE" /> əlçatan Wi-Fi şəbəkələrinə avtomatik qoşulacaq. Bu giriş məlumatlarını silmək üçün tətbiqi sistemdən silin. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Virtual kart hazırda əlçatan deyil, bankınızla əlaqə saxlayın</translation> <translation id="5138227688689900538">Daha azına baxın</translation> <translation id="5145883236150621069">Xəta kodu siyasət cavabında mövcuddur</translation> @@ -1748,6 +1750,7 @@ <translation id="5273881944177595304">Veb tətbiqlər və onlayn alətlər</translation> <translation id="5274025349362408263">Kitablar və ədəbiyyat</translation> <translation id="5279286380302340275">Endirmələri idarə edin</translation> +<translation id="5279453600310613955">Xeyr, təşəkkürlər</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Sənəd xüsusiyyətləri</translation> <translation id="528468243742722775">Son</translation> @@ -2240,6 +2243,7 @@ <translation id="6529173248185917884">Yeddinci Rulon</translation> <translation id="6529602333819889595">Silinməni yenidən edin</translation> <translation id="6535751101619004418">Valyuta və məzənnə</translation> +<translation id="6536221421038631327"><ph name="DEVICE_TYPE" /> cihazından Keçid nöqtəsi abunəsini sildikdə əlaqədar şəbəkələr silinəcək. Abunə planına dəyişikliklər etmək üçün "<ph name="FRIENDLY_NAME" />" ilə əlaqə saxlayın. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Yatırım fondları</translation> <translation id="6545864417968258051">Bluetooth axtarışı</translation> <translation id="6547208576736763147">Soldan qoşa deşik açın</translation> @@ -3335,6 +3339,7 @@ <translation id="9219103736887031265">Şəkillər</translation> <translation id="922152298093051471">Chrome'u fərdiləşdirin</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385"><ph name="APP_NAME" /> tətbiqinə Wi-Fi şəbəkələrini ayarlamaq icazəsi verilsin?</translation> <translation id="936602727769022409">Google Hesabına girişi itirə bilərsiniz. Chromium parolu dəyişməyi məsləhət görür. Daxil olmağınız tələb olunacaq.</translation> <translation id="937457230470581909">Zooparklar, akvariumlar və qoruqlar</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Hansı data istifadə olunur:<ph name="END_BOLD" /> Reklam mövzularınız son baxış tarixçənizə, bu cihazda Chrome istifadə edərək ziyarət etdiyiniz saytların siyahısına əsaslanır.</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb index 8f15440..8819e6d5 100644 --- a/components/strings/components_strings_be.xtb +++ b/components/strings/components_strings_be.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Рэквізіты віртуальнай карткі</translation> <translation id="1803020234906945288">Здаровае харчаванне</translation> <translation id="1803351196216024260">Сайт можа запытваць дазвол на выкарыстанне мікрафона</translation> +<translation id="1806174020048213474">Гэта праграма запытвае дазвол усталяваць уліковыя даныя Wi-Fi. Пасля наладжвання ваша прылада (<ph name="DEVICE_TYPE" />) зможа аўтаматычна падключацца да сетак Wi-Fi. Каб выдаліць гэтыя ўліковыя даныя, неабходна выдаліць праграму.</translation> <translation id="1807246157184219062">Светлая</translation> <translation id="1807528111851433570">Пачатковы аркуш</translation> <translation id="180991881384371158">Код CVC размешчаны на заднім баку карткі. Гэта апошнія тры лічбы ў правым верхнім вугле поля для подпісу.</translation> @@ -1068,7 +1069,6 @@ <translation id="3631244953324577188">Біяметрыя</translation> <translation id="3632503704576938756">Абагульванне экрана ўзноўлена</translation> <translation id="3632892046558972264">Абагульванне экрана прыпынена</translation> -<translation id="3633035844150606508">Захаванне адраса ва Уліковым запісе Google <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Кнопка "Абнавіць Chrome". Каб абнавіць браўзер Chrome праз яго налады, націсніце Enter</translation> <translation id="3634530185120165534">Латок 5</translation> <translation id="3634567936866541746">Вы толькі што ўвялі свой пароль на сайце, вядомым падманнымі паводзінамі. Chrome рэкамендуе вам праверыць захаваныя паролі, каб абараніць свае ўліковыя запісы.</translation> @@ -1335,6 +1335,7 @@ <translation id="4270541775497538019">Укладчык 6</translation> <translation id="4274173425554582601">Камп'ютары і электроніка</translation> <translation id="4275830172053184480">Перазапусціце прыладу</translation> +<translation id="4276974990916607331">Не, дзякуй</translation> <translation id="4277028893293644418">Скінуць пароль</translation> <translation id="4277937682389409325">Мясцовы адрас</translation> <translation id="4278390842282768270">Дазволена</translation> @@ -1695,6 +1696,7 @@ <translation id="5129534298163637277">Дыялогавае акно пацвярджэння</translation> <translation id="5135404736266831032">Кіраваць адрасамі...</translation> <translation id="5136841603454277753">Увядзіце правільны код</translation> +<translation id="5137761395480718572">Гэта праграма запытвае дазвол усталяваць уліковыя даныя Wi-Fi. Пасля наладжвання ваша прылада (<ph name="DEVICE_TYPE" />) зможа аўтаматычна падключацца да сетак Wi-Fi. Каб выдаліць гэтыя ўліковыя даныя, неабходна выдаліць праграму. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Віртуальная картка зараз недаступная, звяжыцеся са сваім банкам</translation> <translation id="5138227688689900538">Паказаць менш</translation> <translation id="5145883236150621069">Код памылкі, указаны ў адказе, атрыманым ад палітыкі</translation> @@ -1735,6 +1737,8 @@ <translation id="5234764350956374838">Адхіліць</translation> <translation id="5239623327352565343">Выкарыстанне геаданых дазволена</translation> <translation id="5242889659037569123">Багаж і турыстычныя аксесуары</translation> +<translation id="5244732203286792411">Загрузка... + Гэта можа заняць хвіліну.</translation> <translation id="5250209940322997802">"Падключыцца да сеткі"</translation> <translation id="52517543715119994">Даведацца больш пра функцыі Chrome</translation> <translation id="5251803541071282808">Воблака</translation> @@ -1749,6 +1753,7 @@ <translation id="5273881944177595304">Вэб-праграмы і інструменты ў інтэрнэце</translation> <translation id="5274025349362408263">Кнігі і літаратура</translation> <translation id="5279286380302340275">Кіраваць спампоўкамі</translation> +<translation id="5279453600310613955">Не, дзякуй</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Параметры дакумента</translation> <translation id="528468243742722775">Канец</translation> @@ -2241,6 +2246,7 @@ <translation id="6529173248185917884">Сёмы рулон</translation> <translation id="6529602333819889595">&Узнавіць выдаленне</translation> <translation id="6535751101619004418">Абмен валют</translation> +<translation id="6536221421038631327">Калі вы скасуеце падпіску Passpoint на прыладзе <ph name="DEVICE_TYPE" />, даныя пра звязаныя сеткі будуць выдалены. Каб унесці змяненні ў падпіску, звяжыцеся з кампаніяй "<ph name="FRIENDLY_NAME" />". <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Паявыя фонды</translation> <translation id="6545864417968258051">Пошук прылад Bluetooth</translation> <translation id="6547208576736763147">Дзве дзіркі злева</translation> @@ -3337,6 +3343,7 @@ <translation id="9219103736887031265">Відарысы</translation> <translation id="922152298093051471">Наладзіць Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Дазволіць праграме "<ph name="APP_NAME" />" наладжваць сеткі Wi-Fi?</translation> <translation id="936602727769022409">Вы можаце страціць доступ да свайго Уліковага запісу Google. Chromium рэкамендуе змяніць пароль. Вас папросяць увайсці ва ўліковы запіс.</translation> <translation id="937457230470581909">Заапаркі, акіянарыумы і запаведнікі</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Якія даныя выкарыстоўваюцца.<ph name="END_BOLD" /> Тэмы вашай рэкламы асноўваюцца на нядаўняй гісторыі прагляду сайтаў – спісе сайтаў, якія вы адкрывалі ў Chrome на гэтай прыладзе.</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb index 627271f..c41fb21 100644 --- a/components/strings/components_strings_bg.xtb +++ b/components/strings/components_strings_bg.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Подробности на виртуалната карта</translation> <translation id="1803020234906945288">Здравословно хранене</translation> <translation id="1803351196216024260">Може да поиска разрешение да използва микрофона ви</translation> +<translation id="1806174020048213474">Това приложение иска разрешение да инсталира идентификационните данни за Wi-Fi. След настройването устройството ви <ph name="DEVICE_TYPE" /> ще се свързва автоматично с участващите Wi-Fi мрежи. За да премахнете тези идентификационни данни, деинсталирайте приложението.</translation> <translation id="1807246157184219062">Светло</translation> <translation id="1807528111851433570">Първи лист</translation> <translation id="180991881384371158">Кодът за проверка се намира на гърба на картата ви. Това са последните 3 цифри горе вдясно на полето за подпис.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Биометрика</translation> <translation id="3632503704576938756">Споделянето на екрана е възобновено</translation> <translation id="3632892046558972264">Споделянето на екрана е на пауза</translation> -<translation id="3633035844150606508">Запазване на адреса в профила ви в Google <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Бутон „Актуализиране на Chrome“. Натиснете Enter, за да актуализирате Chrome от настройките</translation> <translation id="3634530185120165534">Тава 5</translation> <translation id="3634567936866541746">Току-що въведохте паролата си в измамнически сайт. За да защитите профилите си, Chrome препоръчва да проверите запазените си пароли.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Стакер 6</translation> <translation id="4274173425554582601">Компютри и електроника</translation> <translation id="4275830172053184480">Рестартиране на устройството ви</translation> +<translation id="4276974990916607331">Не, благодаря</translation> <translation id="4277028893293644418">Повторно задаване на паролата</translation> <translation id="4277937682389409325">Местен адрес</translation> <translation id="4278390842282768270">Разрешено</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Диалогов прозорец за потвърждаване</translation> <translation id="5135404736266831032">Управление на адресите...</translation> <translation id="5136841603454277753">Въведете правилен код</translation> +<translation id="5137761395480718572">Това приложение иска разрешение да инсталира идентификационните данни за Wi-Fi. След настройването устройството ви <ph name="DEVICE_TYPE" /> ще се свързва автоматично с участващите Wi-Fi мрежи. За да премахнете тези идентификационни данни, деинсталирайте приложението. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">В момента няма достъп до виртуалната карта. Свържете се с банката си</translation> <translation id="5138227688689900538">Показване на по-малко</translation> <translation id="5145883236150621069">В отговора за правилото присъства код на грешка</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">Уеб приложения и онлайн инструменти</translation> <translation id="5274025349362408263">Книги и литература</translation> <translation id="5279286380302340275">Управление на изтеглянията</translation> +<translation id="5279453600310613955">Не, благодаря</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Свойства на документа</translation> <translation id="528468243742722775">Край</translation> @@ -2245,6 +2248,7 @@ <translation id="6529173248185917884">Седма ролка</translation> <translation id="6529602333819889595">&Възстановяване на изтриването</translation> <translation id="6535751101619004418">Валути и обмен на валута</translation> +<translation id="6536221421038631327">Премахването на абонамент за Passpoint от <ph name="DEVICE_TYPE" /> ще премахне свързаните мрежи. Свържете се с(ъс) <ph name="FRIENDLY_NAME" />, за да направите промени в абонаментния си план. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Взаимни фондове</translation> <translation id="6545864417968258051">Сканиране за устройства с Bluetooth</translation> <translation id="6547208576736763147">Двойно перфориране отляво</translation> @@ -3340,6 +3344,7 @@ <translation id="9219103736887031265">Изображения</translation> <translation id="922152298093051471">Персонализиране на Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Да се разреши ли на приложението <ph name="APP_NAME" /> да настройва Wi-Fi мрежи?</translation> <translation id="936602727769022409">Възможно е да загубите достъп до профила си в Google. Chromium препоръчва да промените паролата си сега. Ще получите подкана за влизане в профила си.</translation> <translation id="937457230470581909">Зоопаркове, аквариуми и резервати</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Какви данни се използват<ph name="END_BOLD" />: Рекламните ви теми са въз основа на скорошната ви история на сърфиране – списък на сайтовете, които сте посетили чрез Chrome на това устройство.</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb index cc36cfc..2e507421 100644 --- a/components/strings/components_strings_bn.xtb +++ b/components/strings/components_strings_bn.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">বায়োমেট্রিক্স</translation> <translation id="3632503704576938756">স্ক্রিন শেয়ার করার ফিচার আবার চালু করা হয়েছে</translation> <translation id="3632892046558972264">স্ক্রিন শেয়ার করার ফিচার পজ করা হয়েছে</translation> -<translation id="3633035844150606508">আপনার Google অ্যাকাউন্টে ঠিকানা সেভ করুন, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Chrome আপডেট করার বোতাম, আপনার Chrome সেটিংসে Chrome আপডেট করতে Enter প্রেস করুন</translation> <translation id="3634530185120165534">ট্রে ৫</translation> <translation id="3634567936866541746">আপনি এইমাত্র একটি প্রতারণামূলক সাইটে আপনার পাসওয়ার্ড লিখেছেন। আপনার অ্যাকাউন্ট সুরক্ষিত করার জন্য, Chrome আপনার সেভ করা পাসওয়ার্ড চেক করে নিতে সাজেস্ট করছে।</translation> @@ -1737,6 +1736,8 @@ <translation id="5234764350956374838">খারিজ</translation> <translation id="5239623327352565343">লোকেশনের অনুমতি আছে</translation> <translation id="5242889659037569123">মালপত্র ও ভ্রমণ অ্যাক্সেসরিজ</translation> +<translation id="5244732203286792411">লোড করা হচ্ছে... + এটি করতে এক মিনিট সময় লাগতে পারে।</translation> <translation id="5250209940322997802">"নেটওয়ার্কে কানেক্ট করুন"</translation> <translation id="52517543715119994">Chrome-এর ফিচার সম্পর্কে জানুন</translation> <translation id="5251803541071282808">ক্লাউড</translation> @@ -1789,6 +1790,7 @@ <translation id="5344579389779391559">এই পৃষ্ঠাতে আপনাকে চার্জ করা হতে পারে</translation> <translation id="5347645913823149105">Chrome বোতামে ফন্ট কাস্টমাইজ করুন, Chrome-এ ফন্ট সাইজ এবং টাইপফেস কাস্টমাইজ করতে Enter প্রেস করুন</translation> <translation id="5355557959165512791">ওয়েবসাইটটির সার্টিফিকেট তুলে নেওয়ার কারণে আপনি এখন <ph name="SITE" /> এ যেতে পারবেন না। নেটওয়ার্ক সমস্যা এবং আক্রমণ সাধারণত সাময়িকভাবে হয়, তাই এই পৃষ্ঠাটি সম্ভবত পরে কাজ করবে।</translation> +<translation id="5356345925629253198">Google প্রোডাক্ট জুড়ে সেভ করা ঠিকানা আপনি ব্যবহার করতে পারবেন। আপনার Google অ্যাকাউন্টে (<ph name="ACCOUNT" />) এই ঠিকানা সেভ করা হবে।</translation> <translation id="5357848622083956825">ভিজ্যুয়াল আর্ট ও ডিজাইন</translation> <translation id="536296301121032821">নীতি সেটিংস সংরক্ষণ করতে ব্যর্থ হয়েছে</translation> <translation id="5363309033720083897">আপনার অ্যাডমিনিস্ট্রেটরের তরফ থেকে অনুমোদিত সিরিয়াল পোর্ট</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb index 06fb694c..87975f8 100644 --- a/components/strings/components_strings_bs.xtb +++ b/components/strings/components_strings_bs.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Biometrija</translation> <translation id="3632503704576938756">Dijeljenje ekrana je nastavljeno</translation> <translation id="3632892046558972264">Dijeljenje ekrana je pauzirano</translation> -<translation id="3633035844150606508">Sačuvajte adresu na Google račun <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Dugme Ažuriraj Chrome, pritisnite Enter da ažurirate Chrome iz postavki Chromea</translation> <translation id="3634530185120165534">Ladica 5</translation> <translation id="3634567936866541746">Upravo ste unijeli lozinku na obmanjujućoj web lokaciji. Da zaštitite račune, Chrome preporučuje da provjerite sačuvane lozinke.</translation> @@ -1725,7 +1724,7 @@ <translation id="519422657042045905">Bilješke nisu dostupne</translation> <translation id="5201306358585911203">Stranica ugrađena u ovu stranicu kaže</translation> <translation id="5205222826937269299">Potrebno je ime</translation> -<translation id="5209518306177824490">SHA-1 otisak prsta</translation> +<translation id="5209518306177824490">Digitalni otisak SHA-1</translation> <translation id="5209670883520018268">Ladica 20</translation> <translation id="521659676233207110">Ladica 13</translation> <translation id="5216942107514965959">Posljednji put je posjećeno danas</translation> @@ -1794,7 +1793,7 @@ <translation id="5344579389779391559">Ova stranica vam može pokušati nešto naplatiti</translation> <translation id="5347645913823149105">Dugme za prilagođavanje fontova u Chromeu, pritisnite Enter da prilagodite veličine i stilove fonta u Chromeu</translation> <translation id="5355557959165512791">Trenutno ne možete posjetiti web lokaciju <ph name="SITE" /> jer je njena potvrda opozvana. Greške i napadi na mreži su obično privremenog karaktera, tako da će ova stranica vjerovatno funkcionirati kasnije.</translation> -<translation id="5356345925629253198">Spremljene adrese možete upotrijebiti na Googleovim proizvodima. Ta će se adresa spremiti na vaš Google račun (<ph name="ACCOUNT" />).</translation> +<translation id="5356345925629253198">Možete koristiti sačuvane adrese na Googleovim proizvodima. Adresa će se sačuvati na vašem Google računu (<ph name="ACCOUNT" />).</translation> <translation id="5357848622083956825">Vizuelna umjetnost i dizajn</translation> <translation id="536296301121032821">Pohranjivanje postavki pravila nije uspjelo</translation> <translation id="5363309033720083897">Serijski priključak koji je dozvolio vaš administrator</translation> @@ -2107,6 +2106,7 @@ <translation id="6165508094623778733">Saznajte više</translation> <translation id="6167577165590485365">Vrijeme pokušaja posljednjeg dohvatanja:</translation> <translation id="6169916984152623906">Sada može pregledati privatno, a drugi korisnici ovog uređaja neće vidjeti vašu aktivnost. Međutim, preuzimanja i oznake će se sačuvati.</translation> +<translation id="617256461084925519">Google Chrome pokušava potvrditi vaš identitet da bi mogao unijeti vaše podatke o plaćanju.</translation> <translation id="6177128806592000436">Vaša veza s ovom web lokacijom nije sigurna</translation> <translation id="6177531123306197852">Koverta C2</translation> <translation id="6180316780098470077">Interval ponovnih pokušaja</translation> @@ -2526,7 +2526,7 @@ <translation id="7234638337680728591">Cijene goriva i stanice za punjenje vozila</translation> <translation id="7236417832106250253">Završeno <ph name="PROGRESS_PERCENT" />% | <ph name="ESTIMATED_REMAINING_TIME" /></translation> <translation id="7237492777898608035">Ne prikazuj ponovo ovu poruku za ovu web lokaciju</translation> -<translation id="7238585580608191973">SHA-256 otisak prsta</translation> +<translation id="7238585580608191973">Digitalni otisak SHA-256</translation> <translation id="7240120331469437312">Alternativni naziv subjekta potvrde</translation> <translation id="7241863998525879494">Šta možete očekivati</translation> <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation> @@ -2658,6 +2658,7 @@ <translation id="7518003948725431193">Nije pronađena web stranica za web adresu: <ph name="URL" /></translation> <translation id="7521387064766892559">JavaScript</translation> <translation id="7521825010239864438">Odjeljak "<ph name="SECTION" />" je skriven</translation> +<translation id="752189128961566325">Možete je upotrebljavati na svim Googleovim proizvodima</translation> <translation id="7523408071729642236">Proizvodnja</translation> <translation id="7526934274050461096">Vaša veza s ovom web lokacijom nije privatna</translation> <translation id="7529884293139707752">Školovanje kod kuće</translation> @@ -2885,6 +2886,7 @@ <translation id="8057711352706143257">"<ph name="SOFTWARE_NAME" />" nije ispravno konfiguriran. Problem se obično riješi deinstalacijom softvera "<ph name="SOFTWARE_NAME" />". <ph name="FURTHER_EXPLANATION" /></translation> <translation id="8058009102480785916">Proizvodnja hrane</translation> <translation id="8058603697124206642">Nije potrebno</translation> +<translation id="8064892030280197386">potvrditi vaš identitet da bi mogao unijeti vaše podatke o plaćanju.</translation> <translation id="8066225060526005217">Ovim upravljaju postavke kolačića</translation> <translation id="8067872629359326442">Upravo ste unijeli lozinku na obmanjujućoj web lokaciji. Chromium vam može pomoći. Da promijenite lozinku i obavijestite Google da vam je račun možda ugrožen, kliknite Zaštiti račun.</translation> <translation id="8070439594494267500">Ikona aplikacije</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index a277b29..ba6df19 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Biometria</translation> <translation id="3632503704576938756">S'ha reprès la compartició de pantalla</translation> <translation id="3632892046558972264">S'ha posat en pausa la compartició de pantalla</translation> -<translation id="3633035844150606508">Desa l'adreça al teu Compte de Google (<ph name="ACCOUNT" />)</translation> <translation id="3633738897356909127">Botó Actualitza Chrome; prem Retorn per actualitzar Chrome des de la configuració de Chrome</translation> <translation id="3634530185120165534">Safata 5</translation> <translation id="3634567936866541746">Acabes d'introduir la contrasenya en un lloc web enganyós. Per protegir els teus comptes, Chrome et recomana que comprovis les contrasenyes desades.</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb index 385ccaea..9161d4f 100644 --- a/components/strings/components_strings_cs.xtb +++ b/components/strings/components_strings_cs.xtb
@@ -1065,7 +1065,6 @@ <translation id="3631244953324577188">Biometrické systémy</translation> <translation id="3632503704576938756">Sdílení obrazovky bylo obnoveno</translation> <translation id="3632892046558972264">Sdílení obrazovky je pozastaveno</translation> -<translation id="3633035844150606508">Adresa se uloží do vašeho účtu Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Tlačítko Aktualizovat Chrome, stisknutím klávesy Enter aktualizujete Chrome v nastavení Chromu</translation> <translation id="3634530185120165534">Přihrádka 5</translation> <translation id="3634567936866541746">Právě jste své heslo zadali na klamavém webu. Pokud chcete zabezpečit své účty, Chrome vám doporučuje zkontrolovat uložená hesla.</translation> @@ -1732,6 +1731,8 @@ <translation id="5234764350956374838">Zavřít</translation> <translation id="5239623327352565343">Poloha je povolena</translation> <translation id="5242889659037569123">Zavazadla a cestovní příslušenství</translation> +<translation id="5244732203286792411">Načítání… + Může to chvíli trvat.</translation> <translation id="5250209940322997802">Připojit k síti</translation> <translation id="52517543715119994">Informace o funkcích Chromu</translation> <translation id="5251803541071282808">Cloud</translation>
diff --git a/components/strings/components_strings_cy.xtb b/components/strings/components_strings_cy.xtb index 25c386d..f51a738 100644 --- a/components/strings/components_strings_cy.xtb +++ b/components/strings/components_strings_cy.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Manylion cerdyn rhithwir</translation> <translation id="1803020234906945288">Bwyta'n iach</translation> <translation id="1803351196216024260">Yn gallu gofyn am ddefnyddio'ch meicroffon</translation> +<translation id="1806174020048213474">Mae'r ap hwn yn gofyn am ganiatâd i osod manylion Wi-Fi. Ar ôl gosod, bydd eich <ph name="DEVICE_TYPE" /> yn cysylltu'n awtomatig â'r rhwydweithiau Wi-Fi sy'n cymryd rhan. I dynnu'r manylion hyn, dadosodwch yr ap.</translation> <translation id="1807246157184219062">Golau</translation> <translation id="1807528111851433570">Dechrau dalen</translation> <translation id="180991881384371158">Mae eich CVC ar gefn eich cerdyn. Dyma'r 3 digid olaf ar dde uchaf y blwch llofnod</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Biometreg</translation> <translation id="3632503704576938756">Mae rhannu sgrîn wedi'i barhau</translation> <translation id="3632892046558972264">Wedi seibio rhannu sgrîn</translation> -<translation id="3633035844150606508">Cadw cyfeiriad yn eich Cyfrif Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Botwm diweddaru Chrome, pwyswch Enter i ddiweddaru Chrome o'ch gosodiadau Chrome</translation> <translation id="3634530185120165534">Hambwrdd 5</translation> <translation id="3634567936866541746">Rydych newydd roi'ch cyfrinair ar wefan dwyllodrus. I ddiogelu eich cyfrifon, mae Chrome yn argymell eich bod yn gwirio'ch cyfrineiriau sydd wedi'u cadw.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Pentyrrwr 6</translation> <translation id="4274173425554582601">Cyfrifiaduron ac electroneg</translation> <translation id="4275830172053184480">Ailgychwynnwch eich dyfais</translation> +<translation id="4276974990916607331">Dim diolch</translation> <translation id="4277028893293644418">Ailosod cyfrinair</translation> <translation id="4277937682389409325">Cyfeiriad lleol</translation> <translation id="4278390842282768270">Caniateir</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Deialog cadarnhad</translation> <translation id="5135404736266831032">Rheoli cyfeiriadau…</translation> <translation id="5136841603454277753">Rhowch y cod cywir</translation> +<translation id="5137761395480718572">Mae'r ap hwn yn gofyn am ganiatâd i osod manylion Wi-Fi. Ar ôl gosod, bydd eich <ph name="DEVICE_TYPE" /> yn cysylltu'n awtomatig â'r rhwydweithiau Wi-Fi sy'n cymryd rhan. I dynnu'r manylion hyn, dadosodwch yr ap. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Nid yw'r cerdyn rhithwir ar gael ar hyn o bryd. Cysylltwch â'ch banc</translation> <translation id="5138227688689900538">Dangos llai</translation> <translation id="5145883236150621069">Mae cod gwall yn yr ymateb polisi</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">Apiau gwe ac offer ar-lein</translation> <translation id="5274025349362408263">Llyfrau a llenyddiaeth</translation> <translation id="5279286380302340275">Rheoli lawrlwythiadau</translation> +<translation id="5279453600310613955">Dim diolch</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Priodweddau'r ddogfen</translation> <translation id="528468243742722775">Diwedd</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">Seithfed Rôl</translation> <translation id="6529602333819889595">&Ailwneud Dileu</translation> <translation id="6535751101619004418">Arian cyfred a chyfnewid tramor</translation> +<translation id="6536221421038631327">Bydd dileu tanysgrifiad Passpoint o'ch <ph name="DEVICE_TYPE" /> yn dileu'r rhwydweithiau cysylltiedig. Cysylltwch "<ph name="FRIENDLY_NAME" />" i wneud newidiadau i'ch cynllun tanysgrifio. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Cronfa gilyddol</translation> <translation id="6545864417968258051">Sganio Bluetooth</translation> <translation id="6547208576736763147">Dau dwll ar y chwith</translation> @@ -3339,6 +3343,7 @@ <translation id="9219103736887031265">Lluniau</translation> <translation id="922152298093051471">Personoleiddio Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Caniatáu i'r ap <ph name="APP_NAME" /> osod rhwydweithiau Wi-Fi?</translation> <translation id="936602727769022409">Mae'n bosib y byddwch yn colli mynediad at eich Cyfrif Google. Mae Chromium yn argymell newid eich cyfrinair ar unwaith. Gofynnir i chi fewngofnodi.</translation> <translation id="937457230470581909">Sŵau, pysgotai a gwarchodfeydd</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Pa ddata a ddefnyddir:<ph name="END_BOLD" /> Mae eich pynciau hysbysebion yn seiliedig ar eich hanes pori diweddar, rhestr o wefannau rydych wedi ymweld â nhw gan ddefnyddio Chrome ar y ddyfais hon.</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb index 61ffb98..fe0f7305 100644 --- a/components/strings/components_strings_da.xtb +++ b/components/strings/components_strings_da.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Oplysninger om virtuelt kort</translation> <translation id="1803020234906945288">Sund kost</translation> <translation id="1803351196216024260">Websitet kan anmode om tilladelse til at bruge din mikrofon</translation> +<translation id="1806174020048213474">Denne app anmoder om tilladelse til at installere loginoplysninger til Wi-Fi. Efter konfigurationen opretter din <ph name="DEVICE_TYPE" /> automatisk forbindelse til deltagende Wi-Fi-netværk. Afinstaller appen for at fjerne disse loginoplysninger.</translation> <translation id="1807246157184219062">Lys</translation> <translation id="1807528111851433570">Startark</translation> <translation id="180991881384371158">Din CVC er på bagsiden af dit kort. Det er de sidste 3 cifre øverst til højre i signaturfeltet.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Biometri</translation> <translation id="3632503704576938756">Skærmdeling er genoptaget</translation> <translation id="3632892046558972264">Skærmdeling er sat på pause</translation> -<translation id="3633035844150606508">Gem adressen på din Google-konto, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Knappen Opdater Chrome – tryk på Enter for at opdatere Chrome i dine Chrome-indstillinger</translation> <translation id="3634530185120165534">Bakke 5</translation> <translation id="3634567936866541746">Du har lige angivet din adgangskode på et vildledende website. Chrome anbefaler, at du tjekker dine gemte adgangskoder for at sikre dine konti.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Stabler 6</translation> <translation id="4274173425554582601">Computere og elektronik</translation> <translation id="4275830172053184480">Genstart din enhed</translation> +<translation id="4276974990916607331">Nej tak</translation> <translation id="4277028893293644418">Nulstil adgangskoden</translation> <translation id="4277937682389409325">Lokal adresse</translation> <translation id="4278390842282768270">Tilladt</translation> @@ -1690,12 +1691,13 @@ <translation id="5123433949759960244">Basketball</translation> <translation id="5125751979347152379">Ugyldig webadresse.</translation> <translation id="512592033764059484">Fodbold</translation> -<translation id="5126510351761255129">Bekræft dit kort</translation> +<translation id="5126510351761255129">Verificer dit kort</translation> <translation id="512670116361803001">Størrelsen på <ph name="APP_NAME" /> kan muligvis ikke tilpasses uden problemer. Brug forindstillede vinduestørrelser for at sikre, at appen fungerer korrekt.</translation> <translation id="5127934926273826089">Blomster</translation> <translation id="5129534298163637277">Dialogboks til bekræftelse</translation> <translation id="5135404736266831032">Administrer adresser...</translation> <translation id="5136841603454277753">Angiv den korrekte kode</translation> +<translation id="5137761395480718572">Denne app anmoder om tilladelse til at installere loginoplysninger til Wi-Fi. Efter konfigurationen opretter din <ph name="DEVICE_TYPE" /> automatisk forbindelse til deltagende Wi-Fi-netværk. Afinstaller appen for at fjerne disse loginoplysninger. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Det virtuelle kort er ikke tilgængeligt lige nu. Du bedes kontakte din bank.</translation> <translation id="5138227688689900538">Vis færre</translation> <translation id="5145883236150621069">Fejlkode til stede i politiksvar</translation> @@ -1736,6 +1738,8 @@ <translation id="5234764350956374838">Luk</translation> <translation id="5239623327352565343">Adgang til lokation er tilladt</translation> <translation id="5242889659037569123">Bagagetasker og rejsetilbehør</translation> +<translation id="5244732203286792411">Indlæser… + Dette kan tage et øjeblik.</translation> <translation id="5250209940322997802">"Opret forbindelse til netværk"</translation> <translation id="52517543715119994">Få flere oplysninger om Chrome-funktioner</translation> <translation id="5251803541071282808">Skyen</translation> @@ -1750,6 +1754,7 @@ <translation id="5273881944177595304">Webapps og onlineværktøjer</translation> <translation id="5274025349362408263">Bøger og litteratur</translation> <translation id="5279286380302340275">Administrer downloads</translation> +<translation id="5279453600310613955">Nej tak</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Dokumentegenskaber</translation> <translation id="528468243742722775">Afslut</translation> @@ -2242,6 +2247,7 @@ <translation id="6529173248185917884">Syvende papirrulle</translation> <translation id="6529602333819889595">&Annuller fortryd slet</translation> <translation id="6535751101619004418">Valutaer og veksling</translation> +<translation id="6536221421038631327">Hvis du fjerner et Passpoint-abonnement fra din <ph name="DEVICE_TYPE" />, fjernes de tilknyttede netværk. Kontakt "<ph name="FRIENDLY_NAME" />" for at ændre dit abonnement. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Investeringsforeninger</translation> <translation id="6545864417968258051">Bluetooth-scanning</translation> <translation id="6547208576736763147">To huller i venstre side</translation> @@ -3338,6 +3344,7 @@ <translation id="9219103736887031265">Billeder</translation> <translation id="922152298093051471">Tilpas Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Vil du give appen <ph name="APP_NAME" /> tilladelse til at konfigurere Wi-Fi-netværk?</translation> <translation id="936602727769022409">Du kan miste adgangen til din Google-konto. Chromium anbefaler, at du skifter din adgangskode nu. Du bliver bedt om at logge ind.</translation> <translation id="937457230470581909">Zoologiske haver, akvarier og reservater</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Følgende data bruges:<ph name="END_BOLD" /> Dine annonceemner er baseret på din seneste browserhistorik, som er en liste over websites, du har besøgt i Chrome på denne enhed.</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb index e817135e3..07421c5 100644 --- a/components/strings/components_strings_de.xtb +++ b/components/strings/components_strings_de.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Details der virtuellen Karte</translation> <translation id="1803020234906945288">Gesunde Ernährung</translation> <translation id="1803351196216024260">Darf nachfragen, wenn sie mein Mikrofon verwenden möchte</translation> +<translation id="1806174020048213474">Diese App fordert die Berechtigung zum Installieren von WLAN-Anmeldedaten an. Nach der Einrichtung stellt <ph name="DEVICE_TYPE" /> automatisch eine Verbindung zu beteiligten WLANs her. Deinstalliere die App, um diese Anmeldedaten zu entfernen.</translation> <translation id="1807246157184219062">Hell</translation> <translation id="1807528111851433570">Startblatt</translation> <translation id="180991881384371158">Der CVC befindet sich auf der Rückseite deiner Karte. Er besteht aus den letzten drei Ziffern rechts oben über dem Unterschriftenfeld.</translation> @@ -1067,7 +1068,6 @@ <translation id="3631244953324577188">Biometrisches Verfahren</translation> <translation id="3632503704576938756">Bildschirmfreigabe fortgesetzt</translation> <translation id="3632892046558972264">Bildschirmfreigabe pausiert</translation> -<translation id="3633035844150606508">Adresse im Google-Konto <ph name="ACCOUNT" /> speichern</translation> <translation id="3633738897356909127">Schaltfläche „Chrome aktualisieren“ – drücke die Eingabetaste, um Chrome über die Chrome-Einstellungen zu aktualisieren</translation> <translation id="3634530185120165534">Fach 5</translation> <translation id="3634567936866541746">Du hast dein Passwort gerade auf einer verdächtigen Seite eingegeben. Chrome empfiehlt, deine gespeicherten Passwörter zu überprüfen, um deine Konten besser zu schützen.</translation> @@ -1334,6 +1334,7 @@ <translation id="4270541775497538019">Stapelfach 6</translation> <translation id="4274173425554582601">Computer und Elektronik</translation> <translation id="4275830172053184480">Gerät neu starten</translation> +<translation id="4276974990916607331">Nein danke</translation> <translation id="4277028893293644418">Passwort zurücksetzen</translation> <translation id="4277937682389409325">Lokale Adresse</translation> <translation id="4278390842282768270">Zugelassen</translation> @@ -1694,6 +1695,7 @@ <translation id="5129534298163637277">Bestätigungsdialogfeld</translation> <translation id="5135404736266831032">Adressen verwalten…</translation> <translation id="5136841603454277753">Richtigen Code eingeben</translation> +<translation id="5137761395480718572">Diese App fordert die Berechtigung zum Installieren von WLAN-Anmeldedaten an. Nach der Einrichtung stellt <ph name="DEVICE_TYPE" /> automatisch eine Verbindung zu beteiligten WLANs her. Deinstalliere die App, um diese Anmeldedaten zu entfernen. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Die virtuelle Karte ist zurzeit nicht verfügbar, bitte kontaktiere deine Bank</translation> <translation id="5138227688689900538">Weniger anzeigen</translation> <translation id="5145883236150621069">Fehlercode in der Richtlinienantwort</translation> @@ -1734,6 +1736,8 @@ <translation id="5234764350956374838">Schließen</translation> <translation id="5239623327352565343">Berechtigung zur Standortermittlung gewährt</translation> <translation id="5242889659037569123">Gepäck und Reisezubehör</translation> +<translation id="5244732203286792411">Wird geladen… + Dies kann einen Moment dauern.</translation> <translation id="5250209940322997802">"Mit Netzwerk verbinden"</translation> <translation id="52517543715119994">Informationen zu Chrome-Funktionen</translation> <translation id="5251803541071282808">Cloud</translation> @@ -1748,6 +1752,7 @@ <translation id="5273881944177595304">Web-Apps und Onlinetools</translation> <translation id="5274025349362408263">Bücher und Literatur</translation> <translation id="5279286380302340275">Downloads verwalten</translation> +<translation id="5279453600310613955">Nein danke</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Dokumenteigenschaften</translation> <translation id="528468243742722775">Ende</translation> @@ -2240,6 +2245,7 @@ <translation id="6529173248185917884">Siebte Rolle</translation> <translation id="6529602333819889595">&Löschen wiederholen</translation> <translation id="6535751101619004418">Währungen und Devisenkurse</translation> +<translation id="6536221421038631327">Wenn du ein Passpoint-Abo von deinem <ph name="DEVICE_TYPE" /> entfernst, werden auch die zugehörigen Netzwerke entfernt. Wende dich an „<ph name="FRIENDLY_NAME" />“, um Änderungen an deinem Abo vorzunehmen. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Anlagefonds</translation> <translation id="6545864417968258051">Bluetooth-Suche</translation> <translation id="6547208576736763147">Doppelte Lochung links</translation> @@ -3337,6 +3343,7 @@ <translation id="9219103736887031265">Bilder</translation> <translation id="922152298093051471">Chrome anpassen</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Der <ph name="APP_NAME" /> App erlauben, WLANs einzurichten?</translation> <translation id="936602727769022409">Du könntest den Zugriff auf dein Google-Konto verlieren. Chromium empfiehlt dir, dein Passwort jetzt zu ändern. Du wirst dazu aufgefordert, dich anzumelden.</translation> <translation id="937457230470581909">Zoos, Aquarien und Parks</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Folgende Daten werden verwendet<ph name="END_BOLD" />: Deine Werbethemen basieren auf deinem aktuellen Browserverlauf, also einer Liste der Websites, die du auf diesem Gerät in Chrome besucht hast.</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb index 99343293..841e154 100644 --- a/components/strings/components_strings_el.xtb +++ b/components/strings/components_strings_el.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Βιομετρικά</translation> <translation id="3632503704576938756">Συνέχιση κοινής χρήσης οθόνης</translation> <translation id="3632892046558972264">Η κοινή χρήση οθόνης τέθηκε σε παύση</translation> -<translation id="3633035844150606508">Αποθήκευση διεύθυνσης στον Λογαριασμό σας Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Κουμπί ενημέρωσης Chrome, πατήστε Enter για να ενημερώσετε το Chrome από τις ρυθμίσεις του Chrome.</translation> <translation id="3634530185120165534">Δίσκος 5</translation> <translation id="3634567936866541746">Μόλις καταχωρίσατε τον κωδικό πρόσβασής σας σε έναν παραπλανητικό ιστότοπο. Για την προστασία των λογαριασμών σας, το Chrome συνιστά να ελέγξετε τους αποθηκευμένους κωδικούς πρόσβασής σας.</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb index d3d529c..82fd755 100644 --- a/components/strings/components_strings_en-GB.xtb +++ b/components/strings/components_strings_en-GB.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Biometrics</translation> <translation id="3632503704576938756">Screen share resumed</translation> <translation id="3632892046558972264">Screen share paused</translation> -<translation id="3633035844150606508">Save address in your Google Account, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Update Chrome button; press enter to update Chrome from your Chrome settings</translation> <translation id="3634530185120165534">Tray 5</translation> <translation id="3634567936866541746">You just entered your password on a deceptive site. To secure your accounts, Chrome recommends checking your saved passwords.</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index 61f2fee..d0bf728 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Biométricos</translation> <translation id="3632503704576938756">Se reanudó compartir pantalla</translation> <translation id="3632892046558972264">Se pausó compartir pantalla</translation> -<translation id="3633035844150606508">Guardar la dirección en tu Cuenta de Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Botón Actualizar Chrome: presiona Intro para actualizar Chrome desde la configuración del navegador</translation> <translation id="3634530185120165534">Bandeja 5</translation> <translation id="3634567936866541746">Ingresaste tu contraseña en un sitio engañoso. Para proteger tus cuentas, Chrome te recomienda revisar las contraseñas que tengas guardadas.</translation> @@ -1737,6 +1736,8 @@ <translation id="5234764350956374838">Descartar</translation> <translation id="5239623327352565343">Se permite la ubicación</translation> <translation id="5242889659037569123">Equipaje y accesorios de viaje</translation> +<translation id="5244732203286792411">Cargando… + Este proceso puede demorar un minuto.</translation> <translation id="5250209940322997802">"Conectarse a una red"</translation> <translation id="52517543715119994">Más información sobre las funciones de Chrome</translation> <translation id="5251803541071282808">Nube</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index 3f4db7f..c4db5c2f 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Biometría</translation> <translation id="3632503704576938756">Pantalla compartida reanudada</translation> <translation id="3632892046558972264">Pantalla compartida en pausa</translation> -<translation id="3633035844150606508">La dirección se guardará en tu cuenta de Google (<ph name="ACCOUNT" />)</translation> <translation id="3633738897356909127">Botón Actualizar Chrome, pulsa Intro para actualizar Chrome desde la configuración de Chrome</translation> <translation id="3634530185120165534">Bandeja 5</translation> <translation id="3634567936866541746">Acabas de escribir tu contraseña en un sitio engañoso. Para proteger tus cuentas, Chrome recomienda que compruebes las contraseñas que tengas guardadas.</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb index 84ff08f..fc13685 100644 --- a/components/strings/components_strings_et.xtb +++ b/components/strings/components_strings_et.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Virtuaalkaardi üksikasjad</translation> <translation id="1803020234906945288">Tervislik toitumine</translation> <translation id="1803351196216024260">Saab küsida luba teie mikrofoni kasutamiseks</translation> +<translation id="1806174020048213474">See rakendus küsib luba WiFi mandaadi installimiseks. Pärast seadistamist loob teie <ph name="DEVICE_TYPE" /> osalevate WiFi-võrkudega automaatselt ühenduse. Selle mandaadi eemaldamiseks desinstallige rakendus.</translation> <translation id="1807246157184219062">Hele</translation> <translation id="1807528111851433570">Algusleht</translation> <translation id="180991881384371158">CVC asub kaardi tagaküljel. See on allkirjaväljast paremal ülal asuv kolmekohaline kood.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Biomeetria</translation> <translation id="3632503704576938756">Ekraani jagamist jätkati</translation> <translation id="3632892046558972264">Ekraani jagamine peatati</translation> -<translation id="3633035844150606508">Salvestage aadress oma Google’i kontole <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Nupp Värskenda Chrome'i, vajutage Chrome'i seadetes Chrome'i värskendamiseks sisestusklahvi</translation> <translation id="3634530185120165534">Salv 5</translation> <translation id="3634567936866541746">Sisestasite äsja oma parooli kahtlasele saidile. Teie kontode turvalisuse tagamiseks soovitab Chrome teil salvestatud paroole kohe kontrollida.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Virnastaja 6</translation> <translation id="4274173425554582601">Arvutid ja elektroonika</translation> <translation id="4275830172053184480">Taaskäivitage seade</translation> +<translation id="4276974990916607331">Tänan, ei</translation> <translation id="4277028893293644418">Lähtesta parool</translation> <translation id="4277937682389409325">Kohalik aadress</translation> <translation id="4278390842282768270">Lubatud</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Kinnitusdialoog</translation> <translation id="5135404736266831032">Halda aadresse …</translation> <translation id="5136841603454277753">Sisestage õige kood</translation> +<translation id="5137761395480718572">See rakendus küsib luba WiFi mandaadi installimiseks. Pärast seadistamist loob teie <ph name="DEVICE_TYPE" /> osalevate WiFi-võrkudega automaatselt ühenduse. Selle mandaadi eemaldamiseks desinstallige rakendus. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Virtuaalkaart pole praegu saadaval. Võtke ühendust oma pangaga.</translation> <translation id="5138227688689900538">Kuva vähem</translation> <translation id="5145883236150621069">Reegli vastuses sisaldus veakood</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">Veebirakendused ja võrgutööriistad</translation> <translation id="5274025349362408263">Raamatud ja kirjandus</translation> <translation id="5279286380302340275">Allalaadimiste haldamine</translation> +<translation id="5279453600310613955">Tänan, ei</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Dokumendi atribuudid</translation> <translation id="528468243742722775">Lõpeta</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">Seitsmes rull</translation> <translation id="6529602333819889595">&Kustuta uuesti</translation> <translation id="6535751101619004418">Valuuta ja valuutavahetus</translation> +<translation id="6536221421038631327">Passpointi tellimuse eemaldamisel teie seadmest <ph name="DEVICE_TYPE" /> eemaldatakse ka seotud võrgud. Tellimuspaketi muutmiseks võtke ühendust järgmisega: „<ph name="FRIENDLY_NAME" />“. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Investeerimisfondid</translation> <translation id="6545864417968258051">Bluetoothi otsimine</translation> <translation id="6547208576736763147">Kaks auku vasakul</translation> @@ -3339,6 +3343,7 @@ <translation id="9219103736887031265">Pildid</translation> <translation id="922152298093051471">Chrome'i kohandamine</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Kas lubada rakendusel <ph name="APP_NAME" /> seadistada WiFi-võrke?</translation> <translation id="936602727769022409">Võite kaotada juurdepääsu oma Google'i kontole. Chromium soovitab teil kohe oma parooli muuta. Teil palutakse sisse logida.</translation> <translation id="937457230470581909">Loomaaiad, akvaariumid, kaitsealad</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Milliseid andmeid kasutatakse?<ph name="END_BOLD" /> Teie reklaamiteemad põhinevad teie hiljutisel sirvimisajalool (saitide loend, mida olete selles seadmes Chrome'iga külastanud).</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb index 0161a85..450f6c9 100644 --- a/components/strings/components_strings_eu.xtb +++ b/components/strings/components_strings_eu.xtb
@@ -1063,7 +1063,6 @@ <translation id="3631244953324577188">Sistema biometrikoak</translation> <translation id="3632503704576938756">Pantaila-partekatzeari berrekin zaio</translation> <translation id="3632892046558972264">Pantaila-partekatzea pausatu da</translation> -<translation id="3633035844150606508">Gorde helbidea zure Google-ko kontuan (<ph name="ACCOUNT" />)</translation> <translation id="3633738897356909127">"Eguneratu Chrome" botoia: sakatu "Sartu" Chrome eguneratzeko Chrome-ren ezarpenetan</translation> <translation id="3634530185120165534">5. erretilua</translation> <translation id="3634567936866541746">Webgune engainagarri batean idatzi duzu pasahitza. Kontuak babesteko, gordetako pasahitzei begiratu bat ematea gomendatzen du Chrome-k.</translation> @@ -1730,6 +1729,8 @@ <translation id="5234764350956374838">Baztertu</translation> <translation id="5239623327352565343">Eman da kokapena erabiltzeko baimena</translation> <translation id="5242889659037569123">Ekipajea eta bidaia-osagarriak</translation> +<translation id="5244732203286792411">Kargatzen… + Minutu bat beharko da.</translation> <translation id="5250209940322997802">"Konektatu sarera"</translation> <translation id="52517543715119994">Lortu informazio gehiago Chrome-ren eginbideei buruz</translation> <translation id="5251803541071282808">Hodeia</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb index dc4b8c9..7ff8301 100644 --- a/components/strings/components_strings_fa.xtb +++ b/components/strings/components_strings_fa.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">جزئیات کارت مجازی</translation> <translation id="1803020234906945288">تغذیه سالم</translation> <translation id="1803351196216024260">میتواند برای استفاده از میکروفون درخواست دهد</translation> +<translation id="1806174020048213474">این برنامه برای نصب اطلاعات اعتباری Wi-Fi اجازه میخواهد. پساز راهاندازی، <ph name="DEVICE_TYPE" /> بهطور خودکار به شبکههای Wi-Fi شرکتکننده متصل خواهد شد. برای حذف این اطلاعات اعتباری، برنامه را حذف نصب کنید.</translation> <translation id="1807246157184219062">روشن</translation> <translation id="1807528111851433570">صفحه شروع</translation> <translation id="180991881384371158">کد تأیید کارت (CVC) پشت کارتتان درج شده است. این کد همان ۳ رقم آخر درجشده در بالا سمت راست چارگوش امضا است.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">زیستسنجشی</translation> <translation id="3632503704576938756">همرسانی صفحهنمایش ازسرگرفته شد</translation> <translation id="3632892046558972264">همرسانی صفحهنمایش موقتاً متوقف شد</translation> -<translation id="3633035844150606508">نشانی در «حساب Google» شما (<ph name="ACCOUNT" />) ذخیره میشود</translation> <translation id="3633738897356909127">دکمه «بهروزرسانی Chrome»، برای بهروزرسانی Chrome ازطریق تنظیمات Chrome، کلید Enter (ورود) را فشار دهید</translation> <translation id="3634530185120165534">سینی ۵</translation> <translation id="3634567936866541746">اخیراً گذرواژهتان را در سایتی فریبکار وارد کردهاید. برای ایمن کردن حسابتان، Chrome توصیه میکند گذرواژههای ذخیرهشدهتان را بررسی کنید.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">پشتهساز ۶</translation> <translation id="4274173425554582601">رایانه و دستگاه الکترونیکی</translation> <translation id="4275830172053184480">راهاندازی دستگاه خود</translation> +<translation id="4276974990916607331">نه متشکرم</translation> <translation id="4277028893293644418">بازنشانی گذرواژه</translation> <translation id="4277937682389409325">نشانی محلی</translation> <translation id="4278390842282768270">مجاز است</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">کادر گفتگوی تأیید</translation> <translation id="5135404736266831032">مدیریت نشانیها…</translation> <translation id="5136841603454277753">کد صحیح را وارد کنید</translation> +<translation id="5137761395480718572">این برنامه برای نصب اطلاعات اعتباری Wi-Fi اجازه میخواهد. پساز راهاندازی، <ph name="DEVICE_TYPE" /> بهطور خودکار به شبکههای Wi-Fi شرکتکننده متصل خواهد شد. برای حذف این اطلاعات اعتباری، برنامه را حذف نصب کنید. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">کارت مجازی درحالحاضر دردسترس نیست، لطفاً با بانکتان تماس بگیرید</translation> <translation id="5138227688689900538">نمایش کمتر</translation> <translation id="5145883236150621069">کد خطا در پاسخ خطمشی موجود است</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">برنامههای وب و ابزارهای آنلاین</translation> <translation id="5274025349362408263">کتاب و ادبیات</translation> <translation id="5279286380302340275">مدیریت بارگیریها</translation> +<translation id="5279453600310613955">نه متشکرم</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">مشخصات سند</translation> <translation id="528468243742722775">پایان</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">رول هفتم</translation> <translation id="6529602333819889595">&انجام مجدد حذف</translation> <translation id="6535751101619004418">پول و تبادل ارز</translation> +<translation id="6536221421038631327">حذف اشتراک Passpoint از <ph name="DEVICE_TYPE" /> باعث میشود شبکههای مرتبط نیز حذف شوند. برای تغییر در طرح اشتراکتان، با «<ph name="FRIENDLY_NAME" />» تماس بگیرید. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">صندوق مشترک سرمایهگذاری</translation> <translation id="6545864417968258051">اسکن کردن بلوتوث</translation> <translation id="6547208576736763147">دو سوراخ در چپ</translation> @@ -3339,6 +3343,7 @@ <translation id="9219103736887031265">تصاویر</translation> <translation id="922152298093051471">سفارشی کردن Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">به برنامه <ph name="APP_NAME" /> اجازه میدهید شبکه Wi-Fi راهاندازی کند؟</translation> <translation id="936602727769022409">ممکن است دسترسی به حساب Google را از دست بدهید. Chromium توصیه میکند اکنون گذرواژهتان را تغییر دهید. از شما خواسته میشود به سیستم وارد شوید.</translation> <translation id="937457230470581909">باغ وحش، آکواریوم، منطقه حفاظتشده</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />از چه دادههایی استفاده میشود:<ph name="END_BOLD" /> موضوعهای آگهی شما براساس سابقه مرور اخیرتان و فهرست سایتهایی که بااستفاده از Chrome در این دستگاه بازدید کردهاید است.</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb index 744a2a25..71fa26e 100644 --- a/components/strings/components_strings_fi.xtb +++ b/components/strings/components_strings_fi.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Virtuaalisen kortin tiedot</translation> <translation id="1803020234906945288">Terveellinen ruokavalio</translation> <translation id="1803351196216024260">Saa pyytää mikrofonin käyttölupaa</translation> +<translation id="1806174020048213474">Sovellus pyytää lupaa asentaa Wi-Fi-verkon kirjautumistietoja. Käyttöönoton jälkeen <ph name="DEVICE_TYPE" /> muodostaa yhteyden käyttöönotettuihin Wi-Fi-verkkoihin automaattisesti. Voit poistaa kirjautumistiedot poistamalla sovelluksen.</translation> <translation id="1807246157184219062">Vaalea</translation> <translation id="1807528111851433570">Aloitussivu</translation> <translation id="180991881384371158">CVC on kortin takaosassa. Koodi on allekirjoituskentän oikeassa yläkulmassa olevat kolme viimeistä numeroa.</translation> @@ -1070,7 +1071,6 @@ <translation id="3631244953324577188">Biometriikka</translation> <translation id="3632503704576938756">Näytön jakamista jatkettu</translation> <translation id="3632892046558972264">Näytön jakaminen keskeytetty</translation> -<translation id="3633035844150606508">Tallenna osoite Google-tilillesi, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Päivitä Chrome ‑painike, päivitä Chrome sen asetuksista painamalla Enter</translation> <translation id="3634530185120165534">Lokero 5</translation> <translation id="3634567936866541746">Lisäsit juuri salasanasi petolliselle sivustolle. Chrome suosittelee tarkistamaan tallennetut salasanasi tilisi suojaamiseksi.</translation> @@ -1337,6 +1337,7 @@ <translation id="4270541775497538019">Pinoaja 6</translation> <translation id="4274173425554582601">Tietokoneet ja elektroniikka</translation> <translation id="4275830172053184480">Käynnistä laite uudelleen</translation> +<translation id="4276974990916607331">Ei kiitos</translation> <translation id="4277028893293644418">Pyydä uusi salasana</translation> <translation id="4277937682389409325">Paikallinen osoite</translation> <translation id="4278390842282768270">Sallittu</translation> @@ -1697,6 +1698,7 @@ <translation id="5129534298163637277">Vahvistusikkuna</translation> <translation id="5135404736266831032">Hallinnoi osoitteita…</translation> <translation id="5136841603454277753">Lisää oikea koodi</translation> +<translation id="5137761395480718572">Sovellus pyytää lupaa asentaa Wi-Fi-verkon kirjautumistietoja. Käyttöönoton jälkeen <ph name="DEVICE_TYPE" /> muodostaa yhteyden käyttöönotettuihin Wi-Fi-verkkoihin automaattisesti. Voit poistaa kirjautumistiedot poistamalla sovelluksen. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Virtuaalinen kortti ei ole juuri nyt käytettävissä, ota yhteyttä pankkiin</translation> <translation id="5138227688689900538">Näytä vähemmän</translation> <translation id="5145883236150621069">Käytäntövastaus sisältää virhekoodin</translation> @@ -1753,6 +1755,7 @@ <translation id="5273881944177595304">Verkkosovellukset ja -työkalut</translation> <translation id="5274025349362408263">Kirjat ja kirjallisuus</translation> <translation id="5279286380302340275">Tarkista lataukset</translation> +<translation id="5279453600310613955">Ei kiitos</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Asiakirjan ominaisuudet</translation> <translation id="528468243742722775">Loppu</translation> @@ -2245,6 +2248,7 @@ <translation id="6529173248185917884">Seitsemäs rulla</translation> <translation id="6529602333819889595">&Toista poisto</translation> <translation id="6535751101619004418">Valuutat ja valuutanvaihto</translation> +<translation id="6536221421038631327">Jos poistat Passpoint-tilauksen laitteelta (<ph name="DEVICE_TYPE" />), siihen liittyvät verkot poistetaan. Jos haluat tehdä muutoksia tilaussopimukseen, ota yhteyttä kumppaniin <ph name="FRIENDLY_NAME" />. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Sijoitusrahastot</translation> <translation id="6545864417968258051">Bluetooth-haku</translation> <translation id="6547208576736763147">Kaksi reikää vasemmalla</translation> @@ -3341,6 +3345,7 @@ <translation id="9219103736887031265">Kuvat</translation> <translation id="922152298093051471">Yksilöi Chromea</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Saako sovellus (<ph name="APP_NAME" />) ottaa Wi-Fi-verkkoja käyttöön?</translation> <translation id="936602727769022409">Saatat menettää Google-tilisi käyttöoikeuden. Chromium suosittelee vaihtamaan salasanan nyt. Sinua pyydetään kirjautumaan sisään.</translation> <translation id="937457230470581909">Eläintarhat, akvaariot ja suojelualueet</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Mitä dataa käytetään:<ph name="END_BOLD" /> Mainosaiheet perustuvat viimeaikaiseen selaushistoriaasi, luetteloon sivustoista, joilla olet käynyt Chromella tällä laitteella.</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb index 181d186..939f756 100644 --- a/components/strings/components_strings_fil.xtb +++ b/components/strings/components_strings_fil.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Mga detalye ng virtual card</translation> <translation id="1803020234906945288">Masustansyang pagkain</translation> <translation id="1803351196216024260">Puwedeng hilinging gamitin ang iyong mikropono</translation> +<translation id="1806174020048213474">Nagre-request ang app na ito ng pahintulot na i-install ang mga kredensyal ng Wi-Fi. Pagkatapos ng pag-set up, awtomatikong makokonekta ang iyong <ph name="DEVICE_TYPE" /> sa mga kalahok na Wi-Fi network. Para alisin ang mga kredensyal na ito, i-uninstall ang app.</translation> <translation id="1807246157184219062">Maliwanag</translation> <translation id="1807528111851433570">Panimulang sheet</translation> <translation id="180991881384371158">Nasa likod ng iyong card ang CVC mo. Ito ang huling 3 digit sa kanang bahagi sa itaas ng kahon para sa lagda.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Biometrics</translation> <translation id="3632503704576938756">Ipinagpatuloy ang pagbabahagi ng screen</translation> <translation id="3632892046558972264">Na-pause ang pagbabahagi ng screen</translation> -<translation id="3633035844150606508">I-save ang address sa iyong Google Account na <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Button na I-update ang Chrome, pindutin ang Enter para i-update ang Chrome mula sa iyong mga setting ng Chrome</translation> <translation id="3634530185120165534">Tray 5</translation> <translation id="3634567936866541746">Kakalagay mo lang ng iyong password sa isang mapanlinang na site. Para ma-secure ang iyong mga account, inirerekomenda ng Chrome na suriin mo ang yong mga na-save na password.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Stacker 6</translation> <translation id="4274173425554582601">Mga computer at electronics</translation> <translation id="4275830172053184480">I-restart ang iyong device</translation> +<translation id="4276974990916607331">Huwag na lang</translation> <translation id="4277028893293644418">I-reset ang password</translation> <translation id="4277937682389409325">Lokal na address</translation> <translation id="4278390842282768270">Pinapayagan</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Dialog ng kumpirmasyon</translation> <translation id="5135404736266831032">Pamahalaan ang mga address...</translation> <translation id="5136841603454277753">Ilagay ang tamang code</translation> +<translation id="5137761395480718572">Nagre-request ang app na ito ng pahintulot na i-install ang mga kredensyal ng Wi-Fi. Pagkatapos ng pag-set up, awtomatikong makokonekta ang iyong <ph name="DEVICE_TYPE" /> sa mga kalahok na Wi-Fi network. Para alisin ang mga kredensyal na ito, i-uninstall ang app. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Hindi available sa ngayon ang virtual card, makipag-ugnayan sa iyong bangko</translation> <translation id="5138227688689900538">Magpakita ng mas kaunti</translation> <translation id="5145883236150621069">May code ng error sa tugon sa patakaran</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">Mga web app at online tool</translation> <translation id="5274025349362408263">Mga aklat at literatura</translation> <translation id="5279286380302340275">Pamahalaan ang mga download</translation> +<translation id="5279453600310613955">Huwag na lang</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Mga katangian ng dokumento</translation> <translation id="528468243742722775">Tapusin</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">Ikapitong Rolyo</translation> <translation id="6529602333819889595">&Gawing Muli ang Pagtanggal</translation> <translation id="6535751101619004418">Mga currency at foreign exchange</translation> +<translation id="6536221421038631327">Kapag nag-alis ng subscription sa Passpoint sa iyong <ph name="DEVICE_TYPE" />, maaalis ang mga nauugnay na network. Makipag-ugnayan sa "<ph name="FRIENDLY_NAME" />" para gumawa ng mga pagbabago sa iyong plan ng subscription. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Mga mutual fund</translation> <translation id="6545864417968258051">Pag-scan ng Bluetooth</translation> <translation id="6547208576736763147">Dual punch left</translation> @@ -3339,6 +3343,7 @@ <translation id="9219103736887031265">Mga Larawan</translation> <translation id="922152298093051471">I-customize ang Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Payagan ang <ph name="APP_NAME" /> app na mag-set up ng mga Wi-Fi network?</translation> <translation id="936602727769022409">Maaari kang mawalan ng access sa iyong Google Account. Inirerekomenda ng Chromium na palitan na ang iyong password. Hihilingin sa iyong mag-sign in.</translation> <translation id="937457230470581909">Mga zoo, aquarium, at preserve</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Anong data ang ginagamit:<ph name="END_BOLD" /> Nakabatay ang iyong mga paksa ng ad sa kamakailan mong history ng pag-browse, isang listahan ng mga site na binisita mo gamit ang Chrome sa device na ito.</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb index f918c4d..45ca889 100644 --- a/components/strings/components_strings_fr-CA.xtb +++ b/components/strings/components_strings_fr-CA.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Données biométriques</translation> <translation id="3632503704576938756">Partage d'écran repris</translation> <translation id="3632892046558972264">Partage d'écran interrompu</translation> -<translation id="3633035844150606508">Enregistrer l'adresse dans votre compte Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Bouton Mise à jour de Chrome, appuyez sur la touche Entrée pour mettre à jour Chrome dans les paramètres de Chrome</translation> <translation id="3634530185120165534">Bac 5</translation> <translation id="3634567936866541746">Vous venez d'entrer votre mot de passe sur un site trompeur. Pour sécuriser vos comptes, Chrome vous recommande de vérifier vos mots de passe enregistrés.</translation> @@ -1736,6 +1735,8 @@ <translation id="5234764350956374838">Fermer</translation> <translation id="5239623327352565343">Accès à la position autorisé</translation> <translation id="5242889659037569123">Bagages et accessoires de voyage</translation> +<translation id="5244732203286792411">Chargement en cours… + Cette opération peut prendre une minute.</translation> <translation id="5250209940322997802">« Se connecter au réseau »</translation> <translation id="52517543715119994">En savoir plus sur les fonctionnalités de Chrome</translation> <translation id="5251803541071282808">Politique provenant du nuage</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb index c5f5ffc..594fc92 100644 --- a/components/strings/components_strings_fr.xtb +++ b/components/strings/components_strings_fr.xtb
@@ -725,6 +725,7 @@ <translation id="2718207025093645426">Aucune règle chargée pour l'utilisateur ou l'appareil géré.</translation> <translation id="2721148159707890343">Demande réussie.</translation> <translation id="2723669454293168317">Effectuez un contrôle de sécurité dans les paramètres de Chrome</translation> +<translation id="2725492561136085792">Appuyez sur Entrée pour activer cette action.</translation> <translation id="2726001110728089263">Bac latéral</translation> <translation id="2728127805433021124">Le certificat du serveur a été signé avec un algorithme de signature faible.</translation> <translation id="2730326759066348565"><ph name="BEGIN_LINK" />Exécuter les diagnostics de connectivité<ph name="END_LINK" /></translation> @@ -821,6 +822,7 @@ <translation id="299990983510665749">Voitures à hayon</translation> <translation id="3002501248619246229">Vérifier le support du bac d'alimentation</translation> <translation id="3005723025932146533">Afficher la copie enregistrée</translation> +<translation id="3009036448238594149"><ph name="ACTION_IN_SUGGEST_FOCUSED_FRIENDLY_MATCH_TEXT" />, appuyez sur Tabulation pour parcourir les actions disponibles, puis sur Entrée pour exécuter l'action sélectionnée.</translation> <translation id="3013291976881901233">Appareils MIDI</translation> <translation id="301521992641321250">Bloquée automatiquement</translation> <translation id="3016780570757425217">Connaître votre position</translation> @@ -1067,7 +1069,6 @@ <translation id="3631244953324577188">Biométrie</translation> <translation id="3632503704576938756">Partage d'écran réactivé</translation> <translation id="3632892046558972264">Partage d'écran suspendu</translation> -<translation id="3633035844150606508">Enregistrer l'adresse dans votre compte Google <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Bouton "Mise à jour de Chrome" : appuyer sur Entrée pour mettre à jour Chrome depuis les paramètres du navigateur</translation> <translation id="3634530185120165534">Bac 5</translation> <translation id="3634567936866541746">Vous venez de saisir votre mot de passe sur un site trompeur. Pour sécuriser vos comptes, Chrome vous recommande de vérifier vos mots de passe enregistrés.</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb index aad570a..18ae392 100644 --- a/components/strings/components_strings_gl.xtb +++ b/components/strings/components_strings_gl.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Autenticación biométrica</translation> <translation id="3632503704576938756">Retomouse a pantalla compartida</translation> <translation id="3632892046558972264">Púxose en pausa a pantalla compartida</translation> -<translation id="3633035844150606508">O enderezo gardarase na túa Conta de Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Botón Actualizar Chrome. Preme Intro para actualizar Chrome desde a configuración do navegador</translation> <translation id="3634530185120165534">Bandexa 5</translation> <translation id="3634567936866541746">Acabas de escribir o teu contrasinal nun sitio enganoso. Para protexer as túas contas, Chrome recoméndache que comprobes os contrasinais que tes gardados.</translation> @@ -1736,6 +1735,8 @@ <translation id="5234764350956374838">Rexeitar</translation> <translation id="5239623327352565343">O acceso á localización está permitido</translation> <translation id="5242889659037569123">Maletas e accesorios de viaxe</translation> +<translation id="5244732203286792411">Cargando... + Esta acción pode tardar un minuto.</translation> <translation id="5250209940322997802">"Conectarse á rede"</translation> <translation id="52517543715119994">Máis información sobre as funcións de Chrome</translation> <translation id="5251803541071282808">Nube</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 196af2b1..d027875 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">વર્ચ્યુઅલ કાર્ડની વિગતો</translation> <translation id="1803020234906945288">આરોગ્યપ્રદ આહાર</translation> <translation id="1803351196216024260">તમારા માઇક્રોફોનનો ઉપયોગ કરવાનું પૂછી શકે છે</translation> +<translation id="1806174020048213474">આ ઍપ વાઇ-ફાઇની લૉગ ઇન વિગતો ઇન્સ્ટૉલ કરવાની પરવાનગી માટે વિનંતી કરી રહી છે. સેટઅપ પછી, તમારું <ph name="DEVICE_TYPE" /> સહભાગી વાઇ-ફાઇ નેટવર્ક સાથે ઑટોમૅટિક રીતે કનેક્ટ થઈ જશે. લૉગ ઇનની આ વિગતો કાઢી નાખવા માટે, ઍપને અનઇન્સ્ટૉલ કરો.</translation> <translation id="1807246157184219062">આછું</translation> <translation id="1807528111851433570">શરૂઆતની શીટ</translation> <translation id="180991881384371158">તમારો CVC તમારા કાર્ડની પાછળના ભાગ પર હોય છે. તે તમારા હસ્તાક્ષર બૉક્સની ઉપર જમણી બાજુએ 3 અંકનો કોડ છે.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">બાયોમેટ્રિક્સ</translation> <translation id="3632503704576938756">સ્ક્રીન શેર કરવાનું ફરી શરૂ કર્યું છે</translation> <translation id="3632892046558972264">સ્ક્રીન શેર કરવાનું થોભાવ્યું છે</translation> -<translation id="3633035844150606508">તમારા Google એકાઉન્ટ, <ph name="ACCOUNT" />માં ઍડ્રેસ સાચવો</translation> <translation id="3633738897356909127">Chrome અપડેટ કરો બટન, તમારા Chrome સેટિંગમાંથી Chrome અપડેટ કરવા માટે Enter દબાવો</translation> <translation id="3634530185120165534">ટ્રે 5</translation> <translation id="3634567936866541746">હમણાં જ કોઈ છેતરામણી સાઇટ પર તમે તમારો પાસવર્ડ દાખલ કર્યો છે. તમારા એકાઉન્ટ સુરક્ષિત રાખવા માટે, Chrome તમારા સાચવેલા પાસવર્ડ હમણાં જ ચેક કરવાનો સુઝાવ આપે છે.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">સ્ટૅકર 6</translation> <translation id="4274173425554582601">કમ્પ્યુટર અને ઇલેક્ટ્રોનિક્સ</translation> <translation id="4275830172053184480">તમારું ઉપકરણ પુનઃપ્રારંભ કરો</translation> +<translation id="4276974990916607331">ના, આભાર</translation> <translation id="4277028893293644418">પાસવર્ડ રીસેટ કરો</translation> <translation id="4277937682389409325">સ્થાનિક સરનામું</translation> <translation id="4278390842282768270">મંજૂર</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">કન્ફર્મેશન માટેનો સંવાદ</translation> <translation id="5135404736266831032">સરનામા મેનેજ કરો…</translation> <translation id="5136841603454277753">યોગ્ય કોડ દાખલ કરો</translation> +<translation id="5137761395480718572">આ ઍપ વાઇ-ફાઇની લૉગ ઇન વિગતો ઇન્સ્ટૉલ કરવાની પરવાનગી માટે વિનંતી કરી રહી છે. સેટઅપ પછી, તમારું <ph name="DEVICE_TYPE" /> સહભાગી વાઇ-ફાઇ નેટવર્ક સાથે ઑટોમૅટિક રીતે કનેક્ટ થઈ જશે. લૉગ ઇનની આ વિગતો કાઢી નાખવા માટે, ઍપને અનઇન્સ્ટૉલ કરો. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">હમણાં વર્ચ્યુઅલ કાર્ડ ઉપલબ્ધ નથી, કૃપા કરીને તમારી બેંકનો સંપર્ક કરો</translation> <translation id="5138227688689900538">ઓછું બતાવો</translation> <translation id="5145883236150621069">પૉલિસી પ્રતિક્રિયામાં ભૂલ કોડ હાજર</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">વેબ ઍપ અને ઑનલાઇન ટૂલ</translation> <translation id="5274025349362408263">પુસ્તકો અને સાહિત્ય</translation> <translation id="5279286380302340275">ડાઉનલોડ મેનેજ કરો</translation> +<translation id="5279453600310613955">ના, આભાર</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">દસ્તાવેજની પ્રોપર્ટી</translation> <translation id="528468243742722775">સમાપ્ત</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">સાતમો રોલ</translation> <translation id="6529602333819889595">&ફરી કરો ડિલીટ કરો</translation> <translation id="6535751101619004418">ચલણ અને વિદેશ વિનિમય</translation> +<translation id="6536221421038631327">તમારા <ph name="DEVICE_TYPE" />માંથી કોઈ Passpoint સબ્સ્ક્રિપ્શન કાઢી નાખવાથી, સંકળાયેલા નેટવર્કની માહિતી પણ નીકળી જશે. તમારા સબ્સ્ક્રિપ્શન પ્લાનમાં ફેરફારો કરવા માટે, "<ph name="FRIENDLY_NAME" />"નો સંપર્ક કરો. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">મ્યુચ્યુઅલ ફંડ</translation> <translation id="6545864417968258051">બ્લૂટૂથ સ્કૅનિંગ</translation> <translation id="6547208576736763147">ડાબી બાજુએ બે ચતુષ્કોણ કાણાં પાડો</translation> @@ -3339,6 +3343,7 @@ <translation id="9219103736887031265">છબીઓ</translation> <translation id="922152298093051471">Chrome કસ્ટમાઇઝ કરો</translation> <translation id="933712198907837967">ડાઇનર્સ ક્લબ</translation> +<translation id="934634059306213385"><ph name="APP_NAME" /> ઍપને વાઇ-ફાઇ નેટવર્ક સેટઅપ કરવાની મંજૂરી આપીએ?</translation> <translation id="936602727769022409">તમે તમારા Google એકાઉન્ટનો ઍક્સેસ ગુમાવી શકો છો. Chromium તમને હમણાં જ તમારો પાસવર્ડ બદલવાનો સુઝાવ આપે છે. તમને સાઇન ઇન કરવા માટે કહેવામાં આવશે.</translation> <translation id="937457230470581909">પ્રાણી સંગ્રહાલયો, માછલીઘર અને અભયારણ્યો</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />કયા ડેટાનો ઉપયોગ કરવામાં આવે છે:<ph name="END_BOLD" /> તમારા જાહેરાતના વિષયો તમારા તાજેતરના બ્રાઉઝિંગ ઇતિહાસ પર આધારિત હોય છે, જેમાં આ ડિવાઇસ પર Chrome વડે તમે મુલાકાત લીધેલી સાઇટની સૂચિનો સમાવેશ થાય છે.</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb index d8bde24f..42ec051 100644 --- a/components/strings/components_strings_hi.xtb +++ b/components/strings/components_strings_hi.xtb
@@ -365,6 +365,7 @@ <translation id="1801812870656502108">वर्चुअल कार्ड की जानकारी</translation> <translation id="1803020234906945288">पौष्टिक खाना</translation> <translation id="1803351196216024260">साइट, आपके माइक्रोफ़ोन का इस्तेमाल करने की अनुमति मांग सकती है</translation> +<translation id="1806174020048213474">यह ऐप्लिकेशन वाई-फ़ाई क्रेडेंशियल इंस्टॉल करने की अनुमति मांग रहा है. सेटअप हो जाने के बाद, आपका <ph name="DEVICE_TYPE" /> अपने-आप वाई-फ़ाई नेटवर्क से कनेक्ट हो जाएगा. इन क्रेडेंशियल को हटाने के लिए, ऐप्लिकेशन को अनइंस्टॉल करें.</translation> <translation id="1807246157184219062">हल्का</translation> <translation id="1807528111851433570">स्टार्ट शीट</translation> <translation id="180991881384371158">आपका सीवीसी आपके कार्ड के पीछे वाले हिस्से पर होता है. यह सिग्नेचर बॉक्स के ऊपर दाईं ओर मौजूद, आखिर के तीन अंकों का कोड होता है.</translation> @@ -667,7 +668,7 @@ <translation id="257674075312929031">ग्रुप</translation> <translation id="2576880857912732701">'सुरक्षा की सेटिंग मैनेज करें' बटन. Chrome की सेटिंग में सुरक्षित ब्राउज़िंग वगैरह को मैनेज करने के लिए, Enter दबाएं</translation> <translation id="2586657967955657006">क्लिपबोर्ड</translation> -<translation id="2587841377698384444">निर्देशिका API (एपीआई) आईडी:</translation> +<translation id="2587841377698384444">डायरेक्ट्री एपीआई आईडी:</translation> <translation id="2594318783181750337">फ़ास्ट वेब व्यू:</translation> <translation id="2595719060046994702">इस डिवाइस और खाते का प्रबंधन कोई कंपनी या दूसरा संगठन नहीं करता है.</translation> <translation id="2596415276201385844">सुरक्षित कनेक्शन स्थापित करने के लिए, आपकी घड़ी को सही तरीके से सेट किए जाने की आवश्यकता है. ऐसा इसलिए क्योंकि वेबसाइटों द्वारा स्वयं की पहचान करने के लिए उपयोग किए जाने वाले प्रमाणपत्र केवल विशिष्ट समयावधियों के लिए ही मान्य होते हैं. चूंकि आपके डिवाइस की घड़ी गलत है, इसलिए Chrome इन प्रमाणपत्रों का सत्यापन नहीं कर सकता.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">बायोमेट्रिक्स</translation> <translation id="3632503704576938756">स्क्रीन शेयर करना फिर से शुरू किया गया</translation> <translation id="3632892046558972264">स्क्रीन शेयर करना रोका गया</translation> -<translation id="3633035844150606508">अपने Google खाते <ph name="ACCOUNT" /> में पता सेव करें</translation> <translation id="3633738897356909127">'Chrome अपडेट करें' बटन, अपनी Chrome सेटिंग से Chrome अपडेट करने के लिए Enter दबाएं</translation> <translation id="3634530185120165534">ट्रे 5</translation> <translation id="3634567936866541746">आपने अभी जिस साइट पर अपना पासवर्ड डाला है वह सुरक्षित नहीं है. खातों को सुरक्षित करने के लिए, Chrome का सुझाव है कि आप सेव किए गए पासवर्ड की जांच करें.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">स्टैकर 6</translation> <translation id="4274173425554582601">कंप्यूटर और इलेक्ट्रॉनिक्स</translation> <translation id="4275830172053184480">अपना डिवाइस फिर से प्रारंभ करें</translation> +<translation id="4276974990916607331">रहने दें</translation> <translation id="4277028893293644418">पासवर्ड रीसेट करें</translation> <translation id="4277937682389409325">स्थानीय पता</translation> <translation id="4278390842282768270">अनुमति है</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">पुष्टि करने का डायलॉग बॉक्स</translation> <translation id="5135404736266831032">पते प्रबंधित करें...</translation> <translation id="5136841603454277753">सही कोड डालें</translation> +<translation id="5137761395480718572">यह ऐप्लिकेशन वाई-फ़ाई क्रेडेंशियल इंस्टॉल करने की अनुमति मांग रहा है. सेटअप हो जाने के बाद, आपका <ph name="DEVICE_TYPE" /> अपने-आप वाई-फ़ाई नेटवर्क से कनेक्ट हो जाएगा. इन क्रेडेंशियल को हटाने के लिए, ऐप्लिकेशन को अनइंस्टॉल करें. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">इस समय वर्चुअल कार्ड उपलब्ध नहीं है, कृपया अपने बैंक से संपर्क करें</translation> <translation id="5138227688689900538">कम दिखाएं</translation> <translation id="5145883236150621069">नीति प्रतिसाद में गड़बड़ी कोड मौजूद है</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">वेब ऐप्लिकेशन और ऑनलाइन टूल</translation> <translation id="5274025349362408263">किताबें और साहित्य</translation> <translation id="5279286380302340275">डाउनलोड मैनेज करें</translation> +<translation id="5279453600310613955">रहने दें</translation> <translation id="5283044957620376778">बी1</translation> <translation id="5284295735376057059">दस्तावेज़ की जानकारी</translation> <translation id="528468243742722775">खत्म</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">सातवां रोल</translation> <translation id="6529602333819889595">मिटाना &फिर से करें</translation> <translation id="6535751101619004418">मुद्राएं और विदेशी मुद्रा विनिमय</translation> +<translation id="6536221421038631327"><ph name="DEVICE_TYPE" /> से पासपॉइंट सदस्यता हटाने पर, उससे जुड़े नेटवर्क भी हट जाएंगे. अपनी सदस्यता की योजना में बदलाव करने के लिए, "<ph name="FRIENDLY_NAME" />" से संपर्क करें. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">म्युचुअल फ़ंड</translation> <translation id="6545864417968258051">ब्लूटूथ स्कैन करना</translation> <translation id="6547208576736763147">बाईं ओर ड्युएल पंच</translation> @@ -3340,6 +3344,7 @@ <translation id="9219103736887031265">इमेज</translation> <translation id="922152298093051471">Chrome को पसंद के मुताबिक बनाएं</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">क्या <ph name="APP_NAME" /> ऐप्लिकेशन को वाई-फ़ाई नेटवर्क सेट अप करने की अनुमति देनी है?</translation> <translation id="936602727769022409">आप अपने Google खाते का ऐक्सेस खो सकते हैं. क्रोमियम आपको इसी समय अपना पासवर्ड बदलने का सुझाव देता है. आपको साइन इन करने को कहा जाएगा.</translation> <translation id="937457230470581909">चिड़ियाघर, अक्वेरियम, और अभयारण्य</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />किस डेटा का इस्तेमाल किया जाता है:<ph name="END_BOLD" /> आपके विज्ञापन के विषय, आपके हाल ही के ब्राउज़िंग इतिहास और इस डिवाइस पर Chrome का इस्तेमाल करके विज़िट की गई साइटों की सूची पर आधारित होते हैं.</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb index 417983cc..340e97a 100644 --- a/components/strings/components_strings_hr.xtb +++ b/components/strings/components_strings_hr.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Biometrijski podaci</translation> <translation id="3632503704576938756">Nastavljeno je dijeljenje zaslona</translation> <translation id="3632892046558972264">Pauzirano je dijeljenje zaslona</translation> -<translation id="3633035844150606508">Spremite adresu na svoj Google račun, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Gumb Ažuriranje Chromea, pritisnite Enter da biste ažurirali Chrome u postavkama Chromea</translation> <translation id="3634530185120165534">Ladica 5</translation> <translation id="3634567936866541746">Upravo ste unijeli zaporku na obmanjujućoj web-lokaciji. Da bi zaštitio vaše račune, Chrome preporučuje da provjerite spremljene zaporke.</translation> @@ -2106,6 +2105,7 @@ <translation id="6165508094623778733">Saznajte više</translation> <translation id="6167577165590485365">Posljednji pokušaj dohvaćanja:</translation> <translation id="6169916984152623906">Sada možete pregledavati privatno i ostali korisnici ovog uređaja neće vidjeti vaše aktivnosti. No spremit će se preuzimanja i oznake.</translation> +<translation id="617256461084925519">Google Chrome pokušava potvrditi vaš identitet da bi mogao unijeti vaše podatke o plaćanju.</translation> <translation id="6177128806592000436">Veza s web-lokacijom nije sigurna</translation> <translation id="6177531123306197852">Omotnica C2</translation> <translation id="6180316780098470077">Interval između ponovnih pokušaja</translation> @@ -2657,6 +2657,7 @@ <translation id="7518003948725431193">Za web-adresu nije pronađena web-stranica:<ph name="URL" /></translation> <translation id="7521387064766892559">JavaScript</translation> <translation id="7521825010239864438">Odjeljak "<ph name="SECTION" />" je skriven</translation> +<translation id="752189128961566325">Možete je upotrebljavati na svim Googleovim proizvodima</translation> <translation id="7523408071729642236">Proizvodnja</translation> <translation id="7526934274050461096">Veza s web-lokacijom nije privatna</translation> <translation id="7529884293139707752">Školovanje kod kuće</translation> @@ -2884,6 +2885,7 @@ <translation id="8057711352706143257">Softver "<ph name="SOFTWARE_NAME" />" nije ispravno konfiguriran. Taj se problem obično rješava deinstaliranjem softvera "<ph name="SOFTWARE_NAME" />". <ph name="FURTHER_EXPLANATION" /></translation> <translation id="8058009102480785916">Proizvodnja hrane</translation> <translation id="8058603697124206642">Nije obavezno</translation> +<translation id="8064892030280197386">potvrditi vaš identitet da bi mogao unijeti vaše podatke o plaćanju.</translation> <translation id="8066225060526005217">Upravljaju postavke kolačića</translation> <translation id="8067872629359326442">Upravo ste unijeli zaporku na obmanjujućoj web-lokaciji. Chromium može pomoći. Da biste promijenili zaporku i obavijestili Google da je vaš račun možda ugrožen, kliknite Zaštitite račun.</translation> <translation id="8070439594494267500">Ikona aplikacije</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb index cf49280..b05bcba 100644 --- a/components/strings/components_strings_hu.xtb +++ b/components/strings/components_strings_hu.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Virtuális kártya adatai</translation> <translation id="1803020234906945288">Egészséges táplálkozás</translation> <translation id="1803351196216024260">Hozzáférést kérhet a mikrofonhoz</translation> +<translation id="1806174020048213474">Ez az alkalmazás engedélyt kér a Wi-Fi-hálózathoz tartozó hitelesítési adatok telepítésére. A beállítás után a(z) <ph name="DEVICE_TYPE" /> automatikusan csatlakozik az egyik Wi-Fi-hálózathoz. A hitelesítési adatok eltávolításához távolítsa el az alkalmazást.</translation> <translation id="1807246157184219062">Világos</translation> <translation id="1807528111851433570">Indítási lap</translation> <translation id="180991881384371158">A CVC-kód a kártyája hátulján található. Ez az aláírásmező jobb felső sarkában található utolsó 3 számjegy.</translation> @@ -1067,7 +1068,6 @@ <translation id="3631244953324577188">Biometria</translation> <translation id="3632503704576938756">Képernyőmegosztás folytatva</translation> <translation id="3632892046558972264">Képernyőmegosztás szüneteltetve</translation> -<translation id="3633035844150606508">Cím mentése az Ön Google-fiókjába (<ph name="ACCOUNT" />)</translation> <translation id="3633738897356909127">Chrome frissítése gomb, nyomja le az Enter billentyűt a Chrome-nak a Chrome beállításaiban való frissítéséhez</translation> <translation id="3634530185120165534">5. tálca</translation> <translation id="3634567936866541746">Megtévesztő webhelyen adta meg jelszavát. Fiókjai védelmében a Chrome azt javasolja, hogy ellenőrizze mentett jelszavait.</translation> @@ -1334,6 +1334,7 @@ <translation id="4270541775497538019">6. kötegelő</translation> <translation id="4274173425554582601">Számítógépek és elektronika</translation> <translation id="4275830172053184480">Indítsa újra az eszközt</translation> +<translation id="4276974990916607331">Nem</translation> <translation id="4277028893293644418">Jelszó visszaállítása</translation> <translation id="4277937682389409325">Helyi cím</translation> <translation id="4278390842282768270">Engedélyezve</translation> @@ -1694,6 +1695,7 @@ <translation id="5129534298163637277">Megerősítő párbeszédpanel</translation> <translation id="5135404736266831032">Címek kezelése…</translation> <translation id="5136841603454277753">Helyes kódot adjon meg</translation> +<translation id="5137761395480718572">Ez az alkalmazás engedélyt kér a Wi-Fi-hálózathoz tartozó hitelesítési adatok telepítésére. A beállítás után a(z) <ph name="DEVICE_TYPE" /> automatikusan csatlakozik az egyik Wi-Fi-hálózathoz. A hitelesítési adatok eltávolításához távolítsa el az alkalmazást. <ph name="LEARN_MORE" />.</translation> <translation id="5138014172396933048">A virtuális kártya jelenleg nem áll rendelkezésre, vegye fel a kapcsolatot a bankjával</translation> <translation id="5138227688689900538">Kevesebb megjelenítése</translation> <translation id="5145883236150621069">Az irányelv válasza hibakódot tartalmaz</translation> @@ -1734,6 +1736,8 @@ <translation id="5234764350956374838">Elvetés</translation> <translation id="5239623327352565343">Helyadatok engedélyezve</translation> <translation id="5242889659037569123">Poggyász és egyéb utazási kellékek</translation> +<translation id="5244732203286792411">Betöltés… + Ez eltarthat néhány percig.</translation> <translation id="5250209940322997802">„Csatlakozás a hálózathoz”</translation> <translation id="52517543715119994">További információ a Chrome funkcióiról</translation> <translation id="5251803541071282808">Felhő</translation> @@ -1748,6 +1752,7 @@ <translation id="5273881944177595304">Internetes alkalmazások és online eszközök</translation> <translation id="5274025349362408263">Könyvek és irodalom</translation> <translation id="5279286380302340275">Letöltések kezelése</translation> +<translation id="5279453600310613955">Nem</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Dokumentum tulajdonságai</translation> <translation id="528468243742722775">Befejezés</translation> @@ -2240,6 +2245,7 @@ <translation id="6529173248185917884">7. tekercs</translation> <translation id="6529602333819889595">&Törlés újra</translation> <translation id="6535751101619004418">Pénznemek és deviza</translation> +<translation id="6536221421038631327">Ha Passpoint-előfizetést távolít el <ph name="DEVICE_TYPE" /> eszközéről, akkor ezzel eltávolítja a társított hálózatokat is. Ha módosítani szeretné előfizetési csomagját, forduljon a következőhöz: „<ph name="FRIENDLY_NAME" />”. <ph name="LEARN_MORE" />.</translation> <translation id="6540534463546766581">Nyílt végű befektetési alapok</translation> <translation id="6545864417968258051">Bluetooth-alapú keresés</translation> <translation id="6547208576736763147">Kettő lyuk a bal oldalon</translation> @@ -3336,6 +3342,7 @@ <translation id="9219103736887031265">Képek</translation> <translation id="922152298093051471">A Chrome személyre szabása</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Engedélyezi, hogy a(z) <ph name="APP_NAME" /> alkalmazás Wi-Fi-hálózatokat állítson be?</translation> <translation id="936602727769022409">Elveszítheti a hozzáférést Google-fiókjához. A Chromium azt javasolja, hogy azonnal módosítsa jelszavát. Be kell majd jelentkeznie.</translation> <translation id="937457230470581909">Állatkertek, akváriumok és rezervátumok</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Felhasznált adatok<ph name="END_BOLD" />: Hirdetéstémái a legutóbbi böngészési előzményein, azaz a Chrome használatával ezen az eszközön felkeresett webhelyek listáján alapulnak.</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb index 6413891f..3b0435e 100644 --- a/components/strings/components_strings_hy.xtb +++ b/components/strings/components_strings_hy.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Կենսաչափական համակարգեր</translation> <translation id="3632503704576938756">էկրանի ցուցադրումը նորից միացված է</translation> <translation id="3632892046558972264">էկրանի ցուցադրումը դադարեցված է</translation> -<translation id="3633035844150606508">Հասցեի պահում ձեր <ph name="ACCOUNT" /> Google հաշվում</translation> <translation id="3633738897356909127">«Թարմացնել Chrome-ը» կոճակ։ Սեղմեք Enter՝ Chrome-ը թարմացելու համար։</translation> <translation id="3634530185120165534">Դարակ 5</translation> <translation id="3634567936866541746">Դուք հենց նոր մուտքագրեցիք ձեր գաղտնաբառը կասկածելի կայքում։ Ձեր հաշիվների պաշտպանության նկատառումներով՝ Chrome-ը խորհուրդ է տալիս անհապաղ ստուգել պահված գաղտնաբառերի անվտանգությունը։</translation> @@ -1737,6 +1736,8 @@ <translation id="5234764350956374838">Փակել</translation> <translation id="5239623327352565343">Տեղադրության տվյալների օգտագործումը թույլատրված է</translation> <translation id="5242889659037569123">Ճամպրուկներ և ճամփորդական պարագաներ</translation> +<translation id="5244732203286792411">Բեռնում... + Սա կարող է մեկ րոպե տևել։</translation> <translation id="5250209940322997802">«Միացեք ցանցին»</translation> <translation id="52517543715119994">Տեղեկանալ Chrome-ի գործառույթների մասին</translation> <translation id="5251803541071282808">Ամպ</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index febd11d3..0e24a97 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -122,7 +122,7 @@ <translation id="1262388120645841613"><ph name="MANAGE_CHROME_SETTINGS_FOCUSED_FRIENDLY_MATCH_TEXT" />, Tekan Tab lalu Enter untuk mengelola setelan Chrome Anda</translation> <translation id="1264309058268477500">Alternatif</translation> <translation id="1264974993859112054">Olahraga</translation> -<translation id="1266469291454105242">Buka kunci perangkat</translation> +<translation id="1266469291454105242">Pembuka kunci perangkat</translation> <translation id="1268480293435976622">Envelope Chinese #7</translation> <translation id="1269516672602708785">Buat situs baru di Google Sites dengan cepat</translation> <translation id="1270502636509132238">Metode Pengambilan</translation> @@ -364,6 +364,7 @@ <translation id="1801812870656502108">Detail kartu virtual</translation> <translation id="1803020234906945288">Makanan sehat</translation> <translation id="1803351196216024260">Dapat meminta untuk menggunakan mikrofon Anda</translation> +<translation id="1806174020048213474">Aplikasi ini meminta izin untuk menginstal kredensial Wi-Fi. Setelah penyiapan, <ph name="DEVICE_TYPE" /> akan otomatis terhubung ke jaringan Wi-Fi yang berpartisipasi. Untuk menghapus kredensial ini, uninstal aplikasi.</translation> <translation id="1807246157184219062">Terang</translation> <translation id="1807528111851433570">Lembar mulai</translation> <translation id="180991881384371158">CVC Anda terletak di bagian belakang kartu. CVC adalah 3 digit terakhir di kanan atas kotak tanda tangan.</translation> @@ -1068,7 +1069,6 @@ <translation id="3631244953324577188">Biometrik</translation> <translation id="3632503704576938756">Berbagi layar dilanjutkan</translation> <translation id="3632892046558972264">Berbagi layar dijeda</translation> -<translation id="3633035844150606508">Simpan alamat di Akun Google Anda, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Tombol Update Chrome, tekan Enter untuk mengupdate Chrome dari setelan Chrome</translation> <translation id="3634530185120165534">Baki 5</translation> <translation id="3634567936866541746">Anda baru saja memasukkan sandi ke situs penipuan. Untuk mengamankan akun Anda, Chrome merekomendasikan pemeriksaan sandi tersimpan Anda.</translation> @@ -1335,6 +1335,7 @@ <translation id="4270541775497538019">Tempat kertas 6</translation> <translation id="4274173425554582601">Komputer & elektronik</translation> <translation id="4275830172053184480">Mulai ulang perangkat Anda</translation> +<translation id="4276974990916607331">Lain kali</translation> <translation id="4277028893293644418">Reset sandi</translation> <translation id="4277937682389409325">Alamat lokal</translation> <translation id="4278390842282768270">Diizinkan</translation> @@ -1695,6 +1696,7 @@ <translation id="5129534298163637277">Dialog konfirmasi</translation> <translation id="5135404736266831032">Kelola alamat...</translation> <translation id="5136841603454277753">Masukkan kode yang benar</translation> +<translation id="5137761395480718572">Aplikasi ini meminta izin untuk menginstal kredensial Wi-Fi. Setelah penyiapan, <ph name="DEVICE_TYPE" /> akan otomatis terhubung ke jaringan Wi-Fi yang berpartisipasi. Untuk menghapus kredensial ini, uninstal aplikasi. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Kartu virtual saat ini tidak tersedia, hubungi bank Anda</translation> <translation id="5138227688689900538">Tampilkan lebih sedikit</translation> <translation id="5145883236150621069">Ada kode kesalahan dalam tanggapan kebijakan</translation> @@ -1751,6 +1753,7 @@ <translation id="5273881944177595304">Aplikasi web & alat online</translation> <translation id="5274025349362408263">Buku & sastra</translation> <translation id="5279286380302340275">Kelola download</translation> +<translation id="5279453600310613955">Lain kali</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Properti dokumen</translation> <translation id="528468243742722775">Berakhir</translation> @@ -2243,6 +2246,7 @@ <translation id="6529173248185917884">Rol Ketujuh</translation> <translation id="6529602333819889595">&Ulangi Penghapusan</translation> <translation id="6535751101619004418">Mata uang asing & kurs</translation> +<translation id="6536221421038631327">Menghapus langganan Passpoint dari <ph name="DEVICE_TYPE" /> akan menghapus jaringan terkait. Hubungi "<ph name="FRIENDLY_NAME" />" untuk melakukan perubahan pada paket langganan Anda. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Reksadana</translation> <translation id="6545864417968258051">Pemindaian Bluetooth</translation> <translation id="6547208576736763147">Dua lubang di kiri</translation> @@ -3334,6 +3338,7 @@ <translation id="9219103736887031265">Gambar</translation> <translation id="922152298093051471">Sesuaikan Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Izinkan aplikasi <ph name="APP_NAME" /> menyiapkan jaringan Wi-Fi?</translation> <translation id="936602727769022409">Anda dapat kehilangan akses ke Akun Google Anda. Chromium merekomendasikan untuk mengubah sandi Anda sekarang. Anda akan diminta untuk login.</translation> <translation id="937457230470581909">Kebun binatang, akuarium & cagar alam</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Data yang digunakan:<ph name="END_BOLD" /> Topik iklan Anda didasarkan pada histori penjelajahan terbaru, yaitu daftar situs yang telah Anda buka menggunakan Chrome di perangkat ini.</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb index 64e9e0d..ce47b52 100644 --- a/components/strings/components_strings_is.xtb +++ b/components/strings/components_strings_is.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Upplýsingar um sýndarkort</translation> <translation id="1803020234906945288">Heilsusamlegt mataræði</translation> <translation id="1803351196216024260">Getur beðið um að nota hljóðnemann</translation> +<translation id="1806174020048213474">Þetta forrit biður um heimild til að setja upp WiFi-skilríki. Eftir uppsetningu tengist <ph name="DEVICE_TYPE" /> sjálfkrafa við skráð WiFi-net. Fjarlægðu forritið til að fjarlægja skilríkin.</translation> <translation id="1807246157184219062">Ljóst</translation> <translation id="1807528111851433570">Fyrsta blað</translation> <translation id="180991881384371158">CVC-númerið er á bakhlið kortsins. Það eru 3 síðustu tölurnar til hægri ofan við undirskriftarreitinn.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Lífkenni</translation> <translation id="3632503704576938756">Skjádeiling er hafin að nýju</translation> <translation id="3632892046558972264">Hlé var gert á skjádeilingu</translation> -<translation id="3633035844150606508">Vista heimilisfang á Google-reikningnum þínum: <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Hnappurinn Uppfæra Chrome, ýttu á Enter til að uppfæra Chrome úr stillingum Chrome</translation> <translation id="3634530185120165534">Bakki 5</translation> <translation id="3634567936866541746">Þú gafst upp aðgangsorðið þitt á svindlsíðu. Chrome mælir með því að þú athugir vistuðu aðgangsorðin þín núna til að tryggja öryggi reikninganna þinna.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Staflari 6</translation> <translation id="4274173425554582601">Tölvur og raftæki</translation> <translation id="4275830172053184480">Endurræstu tækið</translation> +<translation id="4276974990916607331">Nei takk</translation> <translation id="4277028893293644418">Endurstilla aðgangsorð</translation> <translation id="4277937682389409325">Staðbundið heimilisfang</translation> <translation id="4278390842282768270">Leyft</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Staðfestingargluggi</translation> <translation id="5135404736266831032">Stjórna heimilisföngum...</translation> <translation id="5136841603454277753">Sláðu inn réttan kóða</translation> +<translation id="5137761395480718572">Þetta forrit biður um heimild til að setja upp WiFi-skilríki. Eftir uppsetningu tengist <ph name="DEVICE_TYPE" /> sjálfkrafa við skráð WiFi-net. Fjarlægðu forritið til að fjarlægja skilríkin.<ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Sýndarkort er ekki tiltækt í augnablikinu, hafðu samband við bankann</translation> <translation id="5138227688689900538">Sýna minna</translation> <translation id="5145883236150621069">Villukóði til staðar í stefnusvari</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">Vefforrit og netverkfæri</translation> <translation id="5274025349362408263">Bækur og bókmenntir</translation> <translation id="5279286380302340275">Stjórna niðurhali</translation> +<translation id="5279453600310613955">Nei takk</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Eiginleikar skjals</translation> <translation id="528468243742722775">Ljúka</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">Sjöunda rúlla</translation> <translation id="6529602333819889595">Endu&rtaka eyðingu</translation> <translation id="6535751101619004418">Gjaldmiðlar og gjaldeyrisskipti</translation> +<translation id="6536221421038631327">Ef þú fjarlægir áskrift að Aðgangspunkti úr <ph name="DEVICE_TYPE" /> verða tengd netkerfi fjarlægð. Hafðu samband við „<ph name="FRIENDLY_NAME" />“ til að breyta áskriftinni þinni. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Verðbréfasjóðir</translation> <translation id="6545864417968258051">Bluetooth-leit</translation> <translation id="6547208576736763147">Tvö göt vinstra megin</translation> @@ -3339,6 +3343,7 @@ <translation id="9219103736887031265">Myndir</translation> <translation id="922152298093051471">Sérsníða Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Leyfa forritinu <ph name="APP_NAME" /> að setja upp WiFi-net?</translation> <translation id="936602727769022409">Þú gætir glatað aðganginum að Google reikningnum þínum. Chromium mælir með því að þú skiptir um aðgangsorð núna. Þú verður beðin(n) um að skrá þig inn.</translation> <translation id="937457230470581909">Dýragarðar, sædýrasöfn og friðuð landsvæði</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Gögnin sem eru notuð:<ph name="END_BOLD" /> Umfjöllunarefni auglýsinga byggjast á nýlegum vafraferli sem er skrá yfir vefsvæði sem þú hefur opnað með Chrome í þessu tæki.</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index 4124d51..98f5dff 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -1066,7 +1066,6 @@ <translation id="3631244953324577188">Dati biometrici</translation> <translation id="3632503704576938756">Condivisione schermo riattivata</translation> <translation id="3632892046558972264">Condivisione schermo in pausa</translation> -<translation id="3633035844150606508">Salva l'indirizzo nel tuo Account Google <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Pulsante Aggiorna Chrome, premi Invio per aggiornare Chrome dalle relative impostazioni</translation> <translation id="3634530185120165534">Vassoio 5</translation> <translation id="3634567936866541746">Hai appena inserito la tua password su un sito ingannevole. Per proteggere i tuoi account, Chrome ti consiglia di controllare le password salvate.</translation> @@ -1733,6 +1732,8 @@ <translation id="5234764350956374838">Ignora</translation> <translation id="5239623327352565343">Posizione consentita</translation> <translation id="5242889659037569123">Bagagli e accessori da viaggio</translation> +<translation id="5244732203286792411">Caricamento in corso… + Questa operazione potrebbe richiedere un minuto.</translation> <translation id="5250209940322997802">"Collegati alla rete"</translation> <translation id="52517543715119994">Scopri di più sulle funzionalità di Chrome</translation> <translation id="5251803541071282808">Cloud</translation> @@ -1785,6 +1786,7 @@ <translation id="5344579389779391559">Questa pagina potrebbe tentare di addebitarti dei costi</translation> <translation id="5347645913823149105">Pulsante Personalizza caratteri in Chrome, premi Invio per personalizzare dimensioni dei caratteri e caratteri tipografici in Chrome.</translation> <translation id="5355557959165512791">Al momento non puoi visitare il sito <ph name="SITE" /> perché il relativo certificato è stato revocato. In genere gli errori di rete e gli attacchi sono temporanei, pertanto questa pagina potrebbe funzionare più tardi.</translation> +<translation id="5356345925629253198">Puoi usare gli indirizzi salvati in tutti i prodotti Google. Questo indirizzo verrà salvato nel tuo Account Google (<ph name="ACCOUNT" />).</translation> <translation id="5357848622083956825">Design e arti visive</translation> <translation id="536296301121032821">Archiviazione delle impostazioni criterio non riuscita</translation> <translation id="5363309033720083897">Porta seriale consentita dal tuo amministratore</translation> @@ -2096,6 +2098,7 @@ <translation id="6165508094623778733">Scopri di più</translation> <translation id="6167577165590485365">Ultimo tentativo di recupero:</translation> <translation id="6169916984152623906">Ora puoi navigare in privato. Le altre persone che usano questo dispositivo non vedranno le tue attività, ma i download e i preferiti verranno salvati.</translation> +<translation id="617256461084925519">Google Chrome sta provando a verificare la tua identità per poter inserire i tuoi dati di pagamento.</translation> <translation id="6177128806592000436">La tua connessione a questo sito non è sicura</translation> <translation id="6177531123306197852">Busta C2</translation> <translation id="6180316780098470077">Intervallo tra tentativi</translation> @@ -2646,6 +2649,7 @@ <translation id="7518003948725431193">Nessuna pagina web trovata per l'indirizzo web: <ph name="URL" /></translation> <translation id="7521387064766892559">JavaScript</translation> <translation id="7521825010239864438">Sezione "<ph name="SECTION" />" nascosta</translation> +<translation id="752189128961566325">Puoi utilizzarlo su tutti i prodotti Google</translation> <translation id="7523408071729642236">Produzione</translation> <translation id="7526934274050461096">La connessione a questo sito non è privata</translation> <translation id="7529884293139707752">Istruzione domiciliare</translation> @@ -2873,6 +2877,7 @@ <translation id="8057711352706143257">"<ph name="SOFTWARE_NAME" />" non è configurato correttamente. La disinstallazione di "<ph name="SOFTWARE_NAME" />" solitamente risolve il problema. <ph name="FURTHER_EXPLANATION" /></translation> <translation id="8058009102480785916">Industria alimentare</translation> <translation id="8058603697124206642">non richiesto</translation> +<translation id="8064892030280197386">verificare la tua identità per poter inserire i tuoi dati di pagamento.</translation> <translation id="8066225060526005217">Gestito dalle impostazioni dei cookie</translation> <translation id="8067872629359326442">Hai appena inserito la tua password su un sito ingannevole. Chromium può aiutarti. Per cambiare la password e informare Google che il tuo account potrebbe essere a rischio, fai clic su Proteggi account.</translation> <translation id="8070439594494267500">Icona dell'app</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb index 0756caf54..1e8de2e 100644 --- a/components/strings/components_strings_iw.xtb +++ b/components/strings/components_strings_iw.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">פרטי הכרטיס הווירטואלי</translation> <translation id="1803020234906945288">תזונה בריאה</translation> <translation id="1803351196216024260">האתר יכול לבקש הרשאה להשתמש במיקרופון</translation> +<translation id="1806174020048213474">האפליקציה הזו מבקשת הרשאה להתקין פרטי כניסה ל-Wi-Fi. לאחר ההגדרה, <ph name="DEVICE_TYPE" /> יתחבר באופן אוטומטי לרשתות ה-Wi-Fi הקיימות. כדי להסיר את פרטי הכניסה האלה, צריך להסיר את האפליקציה.</translation> <translation id="1807246157184219062">בהיר</translation> <translation id="1807528111851433570">גיליון ראשון</translation> <translation id="180991881384371158">קוד האימות (CVC) מופיע בגב הכרטיס. אלה 3 הספרות האחרונות שמופיעות בצד הימני של תיבת החתימה.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">מידע ביומטרי</translation> <translation id="3632503704576938756">שיתוף המסך נמשך</translation> <translation id="3632892046558972264">שיתוף המסך מושהה</translation> -<translation id="3633035844150606508">שמירת הכתובת בחשבון Google שלך, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">הלחצן 'עדכון Chrome', יש להקיש על Enter כדי לעדכן את דפדפן Chrome בהגדרות Chrome</translation> <translation id="3634530185120165534">מגש 5</translation> <translation id="3634567936866541746">הזנת כרגע את הסיסמה שלך באתר מטעה. כדי להגן על החשבונות שלך, ההמלצה של Chrome היא לבדוק את הסיסמאות השמורות.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">מערים 6</translation> <translation id="4274173425554582601">מחשבים ואלקטרוניקה</translation> <translation id="4275830172053184480">הפעלת המכשיר מחדש</translation> +<translation id="4276974990916607331">לא תודה</translation> <translation id="4277028893293644418">איפוס סיסמה</translation> <translation id="4277937682389409325">כתובת מקומית</translation> <translation id="4278390842282768270">מותר</translation> @@ -1700,6 +1701,7 @@ <translation id="5129534298163637277">תיבת דו-שיח לאישור</translation> <translation id="5135404736266831032">ניהול כתובות...</translation> <translation id="5136841603454277753">צריך להזין את הקוד הנכון</translation> +<translation id="5137761395480718572">האפליקציה הזו מבקשת הרשאה להתקין פרטי כניסה ל-Wi-Fi. לאחר ההגדרה, <ph name="DEVICE_TYPE" /> יתחבר באופן אוטומטי לרשתות ה-Wi-Fi הקיימות. כדי להסיר את פרטי הכניסה האלה, צריך להסיר את האפליקציה. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">הכרטיס הווירטואלי לא זמין כרגע. עליך לפנות לבנק</translation> <translation id="5138227688689900538">פחות מידע</translation> <translation id="5145883236150621069">קיים קוד שגיאה בתגובת המדיניות</translation> @@ -1756,6 +1758,7 @@ <translation id="5273881944177595304">אפליקציות אינטרנט וכלי אינטרנט</translation> <translation id="5274025349362408263">ספרים וספרות</translation> <translation id="5279286380302340275">ניהול ההורדות</translation> +<translation id="5279453600310613955">לא תודה</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">מאפייני המסמך</translation> <translation id="528468243742722775">סיום</translation> @@ -1794,6 +1797,7 @@ <translation id="5344579389779391559">ייתכן שהדף הזה ינסה לדרוש ממך תשלום</translation> <translation id="5347645913823149105">הלחצן להתאמה אישית של הגופנים ב-Chrome, מקישים על Enter כדי להתאים אישית את הגופנים וגודל הטקסט ב-Chrome</translation> <translation id="5355557959165512791">נכון לעכשיו אי אפשר לבקר באתר <ph name="SITE" /> מאחר שהאישור שלו בוטל. שגיאות רשת ומתקפות הן בדרך כלל זמניות, כך שהדף הזה יחזור כנראה לפעול מאוחר יותר.</translation> +<translation id="5356345925629253198">אפשר להשתמש בכתובות שמורות במוצרי Google. הכתובת הזו תישמר בחשבון Google שלך (<ph name="ACCOUNT" />).</translation> <translation id="5357848622083956825">אומנות חזותית ועיצוב</translation> <translation id="536296301121032821">אחסון הגדרות המדיניות נכשל</translation> <translation id="5363309033720083897">יציאה טורית שאושרה על ידי מנהל המערכת</translation> @@ -2249,6 +2253,7 @@ <translation id="6529173248185917884">הגליל השביעי</translation> <translation id="6529602333819889595">&ביצוע מחדש של מחיקה</translation> <translation id="6535751101619004418">מטבעות והמרת מטבע זר</translation> +<translation id="6536221421038631327">הסרת מינוי Passpoint ממכשיר <ph name="DEVICE_TYPE" /> תגרום להסרת הרשתות המשויכות. צריך ליצור קשר עם '<ph name="FRIENDLY_NAME" />' כדי לערוך שינויים בתוכנית המינוי שלך. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">קרנות נאמנות</translation> <translation id="6545864417968258051">סריקת Bluetooth</translation> <translation id="6547208576736763147">שני ניקובים בצד שמאל</translation> @@ -3344,6 +3349,7 @@ <translation id="9219103736887031265">תמונות</translation> <translation id="922152298093051471">התאמה אישית של Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">לאפשר לאפליקציה <ph name="APP_NAME" /> להגדיר רשתות Wi-Fi?</translation> <translation id="936602727769022409">ייתכן שמישהו אחר ישלול את הגישה שלך לחשבון Google. לגלישה בטוחה ב-Chromium, מומלץ לשנות את הסיסמה עכשיו.</translation> <translation id="937457230470581909">גני חיות, אקווריומים ושמורות טבע</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />באילו נתונים נעשה שימוש:<ph name="END_BOLD" /> נושאי המודעות מבוססים על היסטוריית הגלישה שלך מהזמן האחרון – רשימה של האתרים שבהם ביקרת באמצעות Chrome במכשיר הזה.</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index 8da0ce0..e30e3f9f 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">仮想カードの詳細</translation> <translation id="1803020234906945288">健康的な食事</translation> <translation id="1803351196216024260">マイクの使用を要求できる</translation> +<translation id="1806174020048213474">このアプリは Wi-Fi 認証情報のインストール権限をリクエストしています。セットアップが完了すると、<ph name="DEVICE_TYPE" /> は登録されている Wi-Fi ネットワークに自動的に接続します。これらの認証情報を削除するには、アプリをアンインストールします。</translation> <translation id="1807246157184219062">明</translation> <translation id="1807528111851433570">開始シート</translation> <translation id="180991881384371158">CVC コードはカードの裏面に記載されています。署名ボックスの右上にある末尾 3 桁のコードです。</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">生体認証システム</translation> <translation id="3632503704576938756">画面共有を再開しました</translation> <translation id="3632892046558972264">画面共有を一時停止しました</translation> -<translation id="3633035844150606508">Google アカウント(<ph name="ACCOUNT" />)に住所を保存します</translation> <translation id="3633738897356909127">Chrome を更新するボタンです。Enter キーを押すと Chrome の設定で Chrome を更新します</translation> <translation id="3634530185120165534">トレイ 5</translation> <translation id="3634567936866541746">偽のサイトでパスワードを入力しました。アカウントを保護するため、保存したパスワードをすぐに確認することをおすすめします。</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">スタッカー 6</translation> <translation id="4274173425554582601">コンピュータ、電化製品</translation> <translation id="4275830172053184480">デバイスの再起動</translation> +<translation id="4276974990916607331">今はしない</translation> <translation id="4277028893293644418">パスワードを再設定</translation> <translation id="4277937682389409325">ローカル アドレス</translation> <translation id="4278390842282768270">許可</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">確認ダイアログ</translation> <translation id="5135404736266831032">住所を管理...</translation> <translation id="5136841603454277753">正しいコードを入力してください</translation> +<translation id="5137761395480718572">このアプリは Wi-Fi 認証情報のインストール権限をリクエストしています。セットアップが完了すると、<ph name="DEVICE_TYPE" /> は登録されている Wi-Fi ネットワークに自動的に接続します。これらの認証情報を削除するには、アプリをアンインストールします。<ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">仮想カードは現在ご利用いただけません。銀行にお問い合わせください</translation> <translation id="5138227688689900538">一部を表示</translation> <translation id="5145883236150621069">ポリシー応答内にエラー コードがあります</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">ウェブ アプリケーション、オンライン ツール</translation> <translation id="5274025349362408263">書籍、文学</translation> <translation id="5279286380302340275">ダウンロードを管理</translation> +<translation id="5279453600310613955">今はしない</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">ドキュメント プロパティ</translation> <translation id="528468243742722775">終了</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">ロール 7</translation> <translation id="6529602333819889595">削除のやり直し(&R)</translation> <translation id="6535751101619004418">通貨、為替</translation> +<translation id="6536221421038631327"><ph name="DEVICE_TYPE" /> から Passpoint の登録を削除すると、関連付けられているネットワークが削除されます。登録プランを変更するには「<ph name="FRIENDLY_NAME" />」にお問い合わせください。<ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">投資信託</translation> <translation id="6545864417968258051">Bluetooth のスキャン</translation> <translation id="6547208576736763147">2 穴パンチ(左)</translation> @@ -3340,6 +3344,7 @@ <translation id="9219103736887031265">画像</translation> <translation id="922152298093051471">Chrome をカスタマイズ</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385"><ph name="APP_NAME" /> アプリに Wi-Fi ネットワークのセットアップを許可しますか?</translation> <translation id="936602727769022409">Google アカウントにアクセスできなくなる可能性があります。Chromium で今すぐパスワードを変更することをおすすめします。変更の際には、ログインするよう求められます。</translation> <translation id="937457230470581909">動物園、水族館、自然保護地域</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />使用されるデータ:<ph name="END_BOLD" /> 広告のトピックは、最近の閲覧履歴(このデバイスで Chrome を使用してアクセスしたサイトのリスト)に基づきます。</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb index 577f9b6..b10086b 100644 --- a/components/strings/components_strings_ka.xtb +++ b/components/strings/components_strings_ka.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">ბიომეტრიული მონაცემები</translation> <translation id="3632503704576938756">ეკრანის გაზიარება განახლდა</translation> <translation id="3632892046558972264">ეკრანის გაზიარება შეჩერდა</translation> -<translation id="3633035844150606508">შეინახეთ მისამართი თქვენს Google ანგარიშში (<ph name="ACCOUNT" />)</translation> <translation id="3633738897356909127">Chrome-ის განახლების ღილაკი, Chrome-ის პარამეტრებიდან Chrome-ის გასაახლებლად დააჭირეთ კლავიშს Enter</translation> <translation id="3634530185120165534">ლანგარი 5</translation> <translation id="3634567936866541746">თქვენ ეს-ესაა შეიყვანეთ პაროლი შეცდომაში შემყვან საიტზე. თქვენი ანგარიშების დაცვის მიზნით, Chrome გირჩევთ, შეამოწმოთ თქვენი შენახული პაროლები.</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb index a7722ae9..90fa960 100644 --- a/components/strings/components_strings_kk.xtb +++ b/components/strings/components_strings_kk.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Биометрика</translation> <translation id="3632503704576938756">Экранды көрсету жалғастырылды</translation> <translation id="3632892046558972264">Экранды көрсету кідіртілді</translation> -<translation id="3633035844150606508">Мекенжайды Google аккаунтыңызда (<ph name="ACCOUNT" />) сақтау</translation> <translation id="3633738897356909127">"Chrome-ды жаңарту" түймесі, Chrome параметрлерінен Chrome-ды жаңарту үшін Enter пернесін басыңыз.</translation> <translation id="3634530185120165534">5-науа</translation> <translation id="3634567936866541746">Жаңа ғана құпия сөзіңізді жалған сайтқа енгіздіңіз. Аккаунттарыңызды қорғау үшін Chrome сақталған құпия сөздеріңізді тексеруді ұсынады.</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb index aef34d44f..1a2da0b 100644 --- a/components/strings/components_strings_km.xtb +++ b/components/strings/components_strings_km.xtb
@@ -1073,7 +1073,6 @@ <translation id="3631244953324577188">ជីវមាត្រ</translation> <translation id="3632503704576938756">បានបន្តការបង្ហាញអេក្រង់</translation> <translation id="3632892046558972264">បានផ្អាកការបង្ហាញអេក្រង់</translation> -<translation id="3633035844150606508">រក្សាទុកអាសយដ្ឋាននៅក្នុងគណនី Google របស់អ្នក <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">ប៊ូតុង "ដំឡើងកំណែ Chrome" ចុច "Enter" ដើម្បីដំឡើងកំណែ Chrome ពីការកំណត់ Chrome របស់អ្នក</translation> <translation id="3634530185120165534">ទម្រទី 5</translation> <translation id="3634567936866541746">អ្នកទើបតែបានបញ្ចូលពាក្យសម្ងាត់របស់អ្នកនៅលើគេហទំព័របញ្ឆោត។ ដើម្បីរក្សាសុវត្ថិភាពគណនីរបស់អ្នក Chrome សូមណែនាំឱ្យពិនិត្យមើលពាក្យសម្ងាត់ដែលអ្នកបានរក្សាទុក។</translation> @@ -2111,6 +2110,7 @@ <translation id="6165508094623778733">ស្វែងយល់បន្ថែម</translation> <translation id="6167577165590485365">បានព្យាយាមទាញយកចុងក្រោយ៖</translation> <translation id="6169916984152623906">ឥឡូវនេះ អ្នកអាចធ្វើការរុករកជាលក្ខណៈឯកជនបានហើយ ដូច្នេះអ្នកផ្សេងទៀតដែលប្រើឧបករណ៍នេះនឹងមើលមិនឃើញសកម្មភាពរបស់អ្នកទេ។ ទោះជាយ៉ាងណាក្តី ឯកសារទាញយក និងចំណាំនឹងត្រូវបានរក្សាទុក។</translation> +<translation id="617256461084925519">Google Chrome កំពុងព្យាយាមផ្ទៀងផ្ទាត់ថាជាអ្នក ដូច្នេះវាអាចបំពេញព័ត៌មានអំពីការទូទាត់ប្រាក់របស់អ្នកបាន។</translation> <translation id="6177128806592000436">ការតភ្ជាប់របស់អ្នកទៅគេហទំព័រនេះមិនមានសុវត្ថិភាពទេ</translation> <translation id="6177531123306197852">ស្រោមសំបុត្រ C2</translation> <translation id="6180316780098470077">ចន្លោះពេលនៃការព្យាយាមម្ដងទៀត</translation> @@ -2662,6 +2662,7 @@ <translation id="7518003948725431193">គ្មានគេហទំព័រត្រូវបានរកឃើញសម្រាប់អាសយដ្ឋាននេះទេ៖ <ph name="URL" /></translation> <translation id="7521387064766892559">JavaScript</translation> <translation id="7521825010239864438">ផ្នែក "<ph name="SECTION" />" ត្រូវបានលាក់</translation> +<translation id="752189128961566325">អ្នកអាចប្រើប្រាស់វានៅលើផលិតផល Google</translation> <translation id="7523408071729642236">ការផលិត</translation> <translation id="7526934274050461096">ការតភ្ជាប់របស់អ្នកទៅទំព័រនេះមិនមែនជាលក្ខណៈឯកជនទេ</translation> <translation id="7529884293139707752">ការអប់រំនៅផ្ទះ</translation> @@ -2891,6 +2892,7 @@ <translation id="8057711352706143257">"<ph name="SOFTWARE_NAME" />" មិនបានកំណត់រចនាសម្ព័ន្ធត្រឹមត្រូវទេ។ ជាធម្មតាការលុប "<ph name="SOFTWARE_NAME" />" អាចដោះស្រាយបញ្ហានេះបាន។ <ph name="FURTHER_EXPLANATION" /></translation> <translation id="8058009102480785916">ផលិតកម្មអាហារ</translation> <translation id="8058603697124206642">មិនតម្រូវ</translation> +<translation id="8064892030280197386">ផ្ទៀងផ្ទាត់ថាជាអ្នក ដូច្នេះវាអាចបំពេញព័ត៌មានអំពីការទូទាត់ប្រាក់របស់អ្នកបាន។</translation> <translation id="8066225060526005217">បានគ្រប់គ្រងដោយការកំណត់ខូគី</translation> <translation id="8067872629359326442">អ្នកទើបតែបានបញ្ចូលពាក្យសម្ងាត់របស់អ្នកនៅលើគេហទំព័របញ្ឆោត។ Chromium អាចជួយបាន។ ដើម្បីប្ដូរពាក្យសម្ងាត់របស់អ្នក និងជូនដំណឹងដល់ Google ថាគណនីរបស់អ្នកអាចប្រឈមនឹងហានិភ័យ សូមចុច "ការពារគណនី"។</translation> <translation id="8070439594494267500">រូបកម្មវិធី</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb index 2887462..65caf1c 100644 --- a/components/strings/components_strings_kn.xtb +++ b/components/strings/components_strings_kn.xtb
@@ -363,6 +363,7 @@ <translation id="1801812870656502108">ವರ್ಚುವಲ್ ಕಾರ್ಡ್ ವಿವರಗಳು</translation> <translation id="1803020234906945288">ಆರೋಗ್ಯಕರ ಆಹಾರಸೇವನೆ</translation> <translation id="1803351196216024260">ನಿಮ್ಮ ಮೈಕ್ರೊಫೋನ್ ಬಳಸಲು ಕೇಳಬಹುದು</translation> +<translation id="1806174020048213474">ಈ ಆ್ಯಪ್, ವೈಫೈ ರುಜುವಾತುಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಅನುಮತಿಯನ್ನು ವಿನಂತಿಸುತ್ತಿದೆ. ಸೆಟಪ್ ಮಾಡಿದ ನಂತರ, ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಭಾಗವಹಿಸುತ್ತಿರುವ ವೈಫೈ ನೆಟ್ವರ್ಕ್ಗಳಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಆಗುತ್ತದೆ. ಈ ರುಜುವಾತುಗಳನ್ನು ತೆಗೆದುಹಾಕಲು, ಆ್ಯಪ್ ಅನ್ನು ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ.</translation> <translation id="1807246157184219062">ತಿಳಿ</translation> <translation id="1807528111851433570">ಪ್ರಾರಂಭಿಕ ಶೀಟ್</translation> <translation id="180991881384371158">ನಿಮ್ಮ CVC ನಿಮ್ಮ ಕಾರ್ಡ್ನ ಹಿಂಭಾಗದಲ್ಲಿದೆ. ಇದು ಸಹಿ ಬಾಕ್ಸ್ ಮೇಲಿನ ಬಲಭಾಗದಲ್ಲಿರುವ ಕೊನೆಯ 3 ಅಂಕಿಗಳಾಗಿವೆ.</translation> @@ -1066,7 +1067,6 @@ <translation id="3631244953324577188">ಬಯೋಮೆಟ್ರಿಕ್ಸ್</translation> <translation id="3632503704576938756">ಸ್ಕ್ರೀನ್ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಪುನರಾರಂಭಿಸಲಾಗಿದೆ</translation> <translation id="3632892046558972264">ಸ್ಕ್ರೀನ್ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ</translation> -<translation id="3633035844150606508">ವಿಳಾಸಗಳನ್ನು ನಿಮ್ಮ <ph name="ACCOUNT" /> Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಿ</translation> <translation id="3633738897356909127">Chrome ಬಟನ್ ಅಪ್ಡೇಟ್ ಮಾಡಿ, ನಿಮ್ಮ Chrome ಸೆಟ್ಟಿಂಗ್ಗಳಿಂದ Chrome ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲು Enter ಒತ್ತಿರಿ</translation> <translation id="3634530185120165534">ಟ್ರೇ 5</translation> <translation id="3634567936866541746">ನೀವು ಈಗಷ್ಟೇ ವಂಚನೆ ಮಾಡುವ ಸೈಟ್ನಲ್ಲಿ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿದ್ದೀರಿ. ನಿಮ್ಮ ಖಾತೆಗಳನ್ನು ಭದ್ರಪಡಿಸಲು, ನಿಮ್ಮ ಉಳಿಸಿದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation> @@ -1333,6 +1333,7 @@ <translation id="4270541775497538019">ಸ್ಟ್ಯಾಕರ್ 6</translation> <translation id="4274173425554582601">ಕಂಪ್ಯೂಟರ್ಗಳು ಮತ್ತು ಎಲೆಕ್ಟ್ರಾನಿಕ್ಸ್</translation> <translation id="4275830172053184480">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ</translation> +<translation id="4276974990916607331">ಬೇಡ</translation> <translation id="4277028893293644418">ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ</translation> <translation id="4277937682389409325">ಸ್ಥಳೀಯ ವಿಳಾಸ</translation> <translation id="4278390842282768270">ಅನುಮತಿಸಲಾಗಿದೆ</translation> @@ -1693,6 +1694,7 @@ <translation id="5129534298163637277">ದೃಢೀಕರಣದ ಡೈಲಾಗ್</translation> <translation id="5135404736266831032">ವಿಳಾಸಗಳನ್ನು ನಿರ್ವಹಿಸಿ...</translation> <translation id="5136841603454277753">ಸರಿಯಾದ ಕೋಡ್ ನಮೂದಿಸಿ</translation> +<translation id="5137761395480718572">ಈ ಆ್ಯಪ್, ವೈಫೈ ರುಜುವಾತುಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಅನುಮತಿಯನ್ನು ವಿನಂತಿಸುತ್ತಿದೆ. ಸೆಟಪ್ ಮಾಡಿದ ನಂತರ, ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಭಾಗವಹಿಸುತ್ತಿರುವ ವೈಫೈ ನೆಟ್ವರ್ಕ್ಗಳಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಆಗುತ್ತದೆ. ಈ ರುಜುವಾತುಗಳನ್ನು ತೆಗೆದುಹಾಕಲು, ಆ್ಯಪ್ ಅನ್ನು ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">ವರ್ಚುವಲ್ ಕಾರ್ಡ್ ಇದೀಗ ಲಭ್ಯವಿಲ್ಲ, ನಿಮ್ಮ ಬ್ಯಾಂಕ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ</translation> <translation id="5138227688689900538">ಕಡಿಮೆ ತೋರಿಸಿ</translation> <translation id="5145883236150621069">ನೀತಿ ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ ದೋಷದ ಕೋಡ್ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ</translation> @@ -1749,6 +1751,7 @@ <translation id="5273881944177595304">ವೆಬ್ ಆ್ಯಪ್ಗಳು ಮತ್ತು ಆನ್ಲೈನ್ ಟೂಲ್ಗಳು</translation> <translation id="5274025349362408263">ಪುಸ್ತಕಗಳು ಮತ್ತು ಸಾಹಿತ್ಯ</translation> <translation id="5279286380302340275">ಡೌನ್ಲೋಡ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation> +<translation id="5279453600310613955">ಬೇಡ</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">ಡಾಕ್ಯುಮೆಂಟ್ ಗುಣಲಕ್ಷಣಗಳು</translation> <translation id="528468243742722775">ಅಂತ್ಯ</translation> @@ -1787,6 +1790,7 @@ <translation id="5344579389779391559">ಈ ಪುಟವು ನಿಮಗೆ ಶುಲ್ಕ ವಿಧಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು</translation> <translation id="5347645913823149105">Chrome ಬಟನ್ನಲ್ಲಿ ಫಾಂಟ್ಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ, Chrome ನಲ್ಲಿ ಫಾಂಟ್ ಗಾತ್ರಗಳು ಮತ್ತು ಟೈಪ್ಫೇಸ್ಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಲು Enter ಒತ್ತಿ</translation> <translation id="5355557959165512791">ಸದ್ಯಕ್ಕೆ ನೀವು <ph name="SITE" /> ಗೆ ಭೇಟಿ ನೀಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಏಕೆಂದರೆ ಇದರ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಹಿಂಪಡೆದುಕೊಳ್ಳಲಾಗಿದೆ. ನೆಟ್ವರ್ಕ್ ದೋಷಗಳು ಮತ್ತು ಆಕ್ರಮಣಗಳು ತಾತ್ಕಾಲಿಕವಾಗಿರುತ್ತವೆ, ಹೀಗಾಗಿ ಈ ಪುಟವು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು.</translation> +<translation id="5356345925629253198">ಉಳಿಸಿದ ವಿಳಾಸಗಳನ್ನು ನೀವು Google ಉತ್ಪನ್ನಗಳಾದ್ಯಂತ ಬಳಸಬಹುದು. ಈ ವಿಳಾಸವನ್ನು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ (<ph name="ACCOUNT" />) ಉಳಿಸಲಾಗುತ್ತದೆ.</translation> <translation id="5357848622083956825">ದೃಶ್ಯ ಕಲೆ ಮತ್ತು ವಿನ್ಯಾಸ</translation> <translation id="536296301121032821">ನೀತಿಯ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವಲ್ಲಿ ವಿಫಲವಾಗಿದೆ</translation> <translation id="5363309033720083897">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಸೀರಿಯಲ್ ಪೋರ್ಟ್ ಅನ್ನು ಅನುಮತಿಸಿದ್ದಾರೆ</translation> @@ -2240,6 +2244,7 @@ <translation id="6529173248185917884">ಏಳನೇ ರೋಲ್</translation> <translation id="6529602333819889595">&ಅಳಿಸುವುದನ್ನು ಮತ್ತೆಮಾಡು</translation> <translation id="6535751101619004418">ಕರೆನ್ಸಿಗಳು ಮತ್ತು ವಿದೇಶಿ ವಿನಿಮಯ</translation> +<translation id="6536221421038631327">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಿಂದ Passpoint ಸಬ್ಸ್ಕ್ರಿಪ್ಶನ್ ಅನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಸಂಬಂಧಿತ ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಸಬ್ಸ್ಕ್ರಿಪ್ಶನ್ ಪ್ಲಾನ್ನಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು "<ph name="FRIENDLY_NAME" />" ಅನ್ನು ಸಂಪರ್ಕಿಸಿ. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">ಮ್ಯೂಚುಯಲ್ ಫಂಡ್ಗಳು</translation> <translation id="6545864417968258051">ಬ್ಲೂಟೂತ್ ಸ್ಕ್ಯಾನಿಂಗ್</translation> <translation id="6547208576736763147">ಎಡಭಾಗದಲ್ಲಿ ಎರಡು ತೂತುಗಳನ್ನು ಮಾಡಿ</translation> @@ -3336,6 +3341,7 @@ <translation id="9219103736887031265">Images</translation> <translation id="922152298093051471">Chrome ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">ವೈಫೈ ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ಸೆಟಪ್ ಮಾಡಲು <ph name="APP_NAME" /> ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸಬೇಕೆ?</translation> <translation id="936602727769022409">ನಿಮ್ಮ Google ಖಾತೆಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು. ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಈಗಲೇ ಬದಲಾಯಿಸುವಂತೆ Chromium ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ. ಸೈನ್ ಇನ್ ಮಾಡಲು ನಿಮ್ಮನ್ನು ಕೇಳಲಾಗುತ್ತದೆ.</translation> <translation id="937457230470581909">ಮೃಗಾಲಯಗಳು, ಅಕ್ವೇರಿಯಮ್ಗಳು ಮತ್ತು ಅಭಯಾರಣ್ಯಗಳು</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />ಯಾವ ಡೇಟಾವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ:<ph name="END_BOLD" /> ನಿಮ್ಮ ಆ್ಯಡ್ ವಿಷಯವು ನಿಮ್ಮ ಇತ್ತೀಚಿನ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸ, ಈ ಸಾಧನದಲ್ಲಿ Chrome ಬಳಸಿಕೊಂಡು ನೀವು ಭೇಟಿ ನೀಡಿದ ಸೈಟ್ಗಳ ಪಟ್ಟಿಯನ್ನು ಆಧರಿಸಿವೆ.</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb index 9882c6d..0fafe93 100644 --- a/components/strings/components_strings_ko.xtb +++ b/components/strings/components_strings_ko.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">가상 카드 세부정보</translation> <translation id="1803020234906945288">건강한 식생활</translation> <translation id="1803351196216024260">마이크 사용을 요청할 수 있음</translation> +<translation id="1806174020048213474">이 앱에서 Wi-Fi 사용자 인증 정보를 설치할 권한을 요청합니다. 설정이 완료되면 <ph name="DEVICE_TYPE" /> 기기가 제휴 Wi-Fi 네트워크에 자동으로 연결됩니다. 이러한 사용자 인증 정보를 삭제하려면 앱을 제거하세요.</translation> <translation id="1807246157184219062">밝게</translation> <translation id="1807528111851433570">시작 시트</translation> <translation id="180991881384371158">CVC는 카드 뒷면에 있습니다. 서명란 오른쪽 상단의 마지막 3자리 숫자입니다.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">생체 인식</translation> <translation id="3632503704576938756">화면 공유 재개됨</translation> <translation id="3632892046558972264">화면 공유 일시중지됨</translation> -<translation id="3633035844150606508">Google 계정(<ph name="ACCOUNT" />)에 주소를 저장합니다</translation> <translation id="3633738897356909127">Chrome 업데이트 버튼, Chrome 설정에서 Chrome을 업데이트하려면 Enter 누르기</translation> <translation id="3634530185120165534">트레이 5</translation> <translation id="3634567936866541746">사기성 사이트에 비밀번호를 입력했습니다. 계정을 안전하게 보호하려면 저장된 비밀번호를 확인해 보시기 바랍니다.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">스태커 6</translation> <translation id="4274173425554582601">컴퓨터 및 전자 제품</translation> <translation id="4275830172053184480">기기 다시 시작</translation> +<translation id="4276974990916607331">나중에</translation> <translation id="4277028893293644418">비밀번호 재설정</translation> <translation id="4277937682389409325">현지 주소</translation> <translation id="4278390842282768270">허용됨</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">확인 대화상자</translation> <translation id="5135404736266831032">주소 관리...</translation> <translation id="5136841603454277753">올바른 코드를 입력하세요.</translation> +<translation id="5137761395480718572">이 앱에서 Wi-Fi 사용자 인증 정보를 설치할 권한을 요청합니다. 설정이 완료되면 <ph name="DEVICE_TYPE" /> 기기가 제휴 Wi-Fi 네트워크에 자동으로 연결됩니다. 이러한 사용자 인증 정보를 삭제하려면 앱을 제거하세요. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">현재 가상 카드를 사용할 수 없습니다. 은행에 문의해 주세요.</translation> <translation id="5138227688689900538">간략히</translation> <translation id="5145883236150621069">정책 응답에 오류 코드가 포함되어 있음</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">웹 앱 및 온라인 도구</translation> <translation id="5274025349362408263">도서 및 문학</translation> <translation id="5279286380302340275">다운로드 관리</translation> +<translation id="5279453600310613955">나중에</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">문서 속성</translation> <translation id="528468243742722775">종료</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">7번째 롤</translation> <translation id="6529602333819889595">삭제 다시 실행(&R)</translation> <translation id="6535751101619004418">통화 및 환율</translation> +<translation id="6536221421038631327"><ph name="DEVICE_TYPE" />에서 Passpoint 구독을 삭제하면 연결된 네트워크가 삭제됩니다. 구독 요금제를 변경하려면 <ph name="FRIENDLY_NAME" />에 문의하세요. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">뮤추얼 펀드</translation> <translation id="6545864417968258051">블루투스 검색</translation> <translation id="6547208576736763147">왼쪽 2공 펀칭</translation> @@ -3338,6 +3342,7 @@ <translation id="9219103736887031265">이미지</translation> <translation id="922152298093051471">Chrome 맞춤설정</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385"><ph name="APP_NAME" /> 앱이 Wi-Fi 네트워크를 설정하도록 허용하시겠습니까?</translation> <translation id="936602727769022409">Google 계정에 액세스하지 못할 수 있습니다. 따라서 지금 비밀번호를 변경하는 것이 좋습니다. 로그인하라는 메시지가 표시됩니다.</translation> <translation id="937457230470581909">동물원, 수족관 및 보호구역</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />사용되는 데이터:<ph name="END_BOLD" /> 광고 주제는 내가 이 기기에서 Chrome을 사용하여 방문한 사이트의 목록인 최근 방문 기록을 기반으로 합니다.</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb index 978b273..cedddb6e 100644 --- a/components/strings/components_strings_ky.xtb +++ b/components/strings/components_strings_ky.xtb
@@ -1068,7 +1068,6 @@ <translation id="3631244953324577188">Биометрика</translation> <translation id="3632503704576938756">Экран бөлүшүү улантылды</translation> <translation id="3632892046558972264">Экран бөлүшүү тындырылды</translation> -<translation id="3633035844150606508">Даректи Google аккаунтуңузга (<ph name="ACCOUNT" />) сактоо</translation> <translation id="3633738897356909127">Chrome'ду жаңыртуу баскычы. Chrome параметрлериңизден Chrome'ду жаңыртуу үчүн, Enter баскычын басыңыз</translation> <translation id="3634530185120165534">5-түпкүч</translation> <translation id="3634567936866541746">Сырсөзүңүздү жаңы эле кооптуу сайтта киргиздиңиз. Аккаунттарыңызды коргоо үчүн Chrome сакталган сырсөздөрүңүздү текшерүүнү сунуштайт.</translation> @@ -1735,6 +1734,8 @@ <translation id="5234764350956374838">Этибарга албоо</translation> <translation id="5239623327352565343">Жайгашкан жери аныктоого уруксат берилди</translation> <translation id="5242889659037569123">Жүк жана туристтик аксессуарлар</translation> +<translation id="5244732203286792411">Жүктөлүүдө... + Бир аз убакыт талап кылынышы мүмкүн.</translation> <translation id="5250209940322997802">"Тармакка туташуу"</translation> <translation id="52517543715119994">Chrome'догу функциялар жөнүндө кеңири маалымат алыңыз</translation> <translation id="5251803541071282808">Булут</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb index 6f0bff8..e64876c1 100644 --- a/components/strings/components_strings_lo.xtb +++ b/components/strings/components_strings_lo.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">ຂໍ້ມູນຊີວະມິຕິ</translation> <translation id="3632503704576938756">ສືບຕໍ່ການແບ່ງປັນໜ້າຈໍແລ້ວ</translation> <translation id="3632892046558972264">ຢຸດການແບ່ງປັນໜ້າຈໍຊົ່ວຄາວແລ້ວ</translation> -<translation id="3633035844150606508">ບັນທຶກທີ່ຢູ່ໃນບັນຊີ Google ຂອງທ່ານ, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">ປຸ່ມອັບເດດ Chrome, ກົດ Enter ເພື່ອອັບເດດ Chrome ຈາກການຕັ້ງຄ່າ Chrome ຂອງທ່ານ</translation> <translation id="3634530185120165534">ຖາດ 5</translation> <translation id="3634567936866541746">ທ່ານຫາກໍປ້ອນລະຫັດຜ່ານຂອງທ່ານໃສ່ເວັບໄຊຫຼອກລວງ. ເພື່ອຮັກສາຄວາມປອດໄພບັນຊີຂອງທ່ານ, Chrome ແນະນຳໃຫ້ກວດສອບລະຫັດຜ່ານທີ່ທ່ານບັນທຶກໄວ້.</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb index 51da3d44..ea940a0 100644 --- a/components/strings/components_strings_lt.xtb +++ b/components/strings/components_strings_lt.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Virtualios kortelės išsami informacija</translation> <translation id="1803020234906945288">Sveika mityba</translation> <translation id="1803351196216024260">Gali būti prašoma naudoti mikrofoną</translation> +<translation id="1806174020048213474">Ši programa prašo leidimo įdiegti „Wi-Fi“ prisijungimo duomenis. Po sąrankos „<ph name="DEVICE_TYPE" />“ bus automatiškai prijungtas prie dalyvaujančių „Wi-Fi“ tinklų. Kad pašalintumėte šiuos prisijungimo duomenis, pašalinkite programą.</translation> <translation id="1807246157184219062">Šviesi</translation> <translation id="1807528111851433570">Pradžios lapas</translation> <translation id="180991881384371158">Jūsų kortelės saugos kodas (CVC) yra užpakalinėje kortelės pusėje. Tai yra paskutiniai trys skaitmenys parašo laukelio viršuje dešinėje.</translation> @@ -1070,7 +1071,6 @@ <translation id="3631244953324577188">Biometrinės sistemos</translation> <translation id="3632503704576938756">Ekrano bendrinimas tęsiamas</translation> <translation id="3632892046558972264">Ekrano bendrinimas pristabdytas</translation> -<translation id="3633035844150606508">Išsaugokite adresą „Google“ paskyroje, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Mygtukas „Atnaujinti „Chrome“, paspauskite „Enter“, kad „Chrome“ nustatymuose būtų atnaujinta naršyklė „Chrome“</translation> <translation id="3634530185120165534">5 dėklas</translation> <translation id="3634567936866541746">Ką tik savo slaptažodį įvedėte apgaulingoje svetainėje. Kad apsaugotumėte paskyras, „Chrome“ rekomenduoja patikrinti išsaugotus slaptažodžius.</translation> @@ -1337,6 +1337,7 @@ <translation id="4270541775497538019">6 dėtuvė</translation> <translation id="4274173425554582601">Kompiuteriai ir elektronika</translation> <translation id="4275830172053184480">Iš naujo paleisti įrenginį</translation> +<translation id="4276974990916607331">Ne, ačiū</translation> <translation id="4277028893293644418">Iš naujo nustatyti slaptažodį</translation> <translation id="4277937682389409325">Vietinis adresas</translation> <translation id="4278390842282768270">Leidžiama</translation> @@ -1697,6 +1698,7 @@ <translation id="5129534298163637277">Patvirtinimo dialogo langas</translation> <translation id="5135404736266831032">Tvarkyti adresus...</translation> <translation id="5136841603454277753">Įveskite tinkamą kodą</translation> +<translation id="5137761395480718572">Ši programa prašo leidimo įdiegti „Wi-Fi“ prisijungimo duomenis. Po sąrankos „<ph name="DEVICE_TYPE" />“ bus automatiškai prijungtas prie dalyvaujančių „Wi-Fi“ tinklų. Kad pašalintumėte šiuos prisijungimo duomenis, pašalinkite programą. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Šiuo metu virtuali kortelė nepasiekiama. Susisiekite su savo banku.</translation> <translation id="5138227688689900538">Rodyti mažiau</translation> <translation id="5145883236150621069">Politikos atsakyme yra klaidos kodas</translation> @@ -1753,6 +1755,7 @@ <translation id="5273881944177595304">Taikomosios žiniatinklio programos ir tinklo įrankiai</translation> <translation id="5274025349362408263">Knygos ir literatūra</translation> <translation id="5279286380302340275">Tvarkyti atsisiuntimus</translation> +<translation id="5279453600310613955">Ne, ačiū</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Dokumento ypatybės</translation> <translation id="528468243742722775">Baigti</translation> @@ -2245,6 +2248,7 @@ <translation id="6529173248185917884">Septintas ritinėlis</translation> <translation id="6529602333819889595">&Ištrinti dar kartą</translation> <translation id="6535751101619004418">Valiuta ir valiutos keitimas</translation> +<translation id="6536221421038631327">Pašalinus „Passpoint“ prenumeratą iš „<ph name="DEVICE_TYPE" />“ bus pašalinti susiję tinklai. Susisiekite su „<ph name="FRIENDLY_NAME" />“ ir atlikite prenumeratos plano pakeitimus. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Savitarpio pagalbos fondai</translation> <translation id="6545864417968258051">„Bluetooth“ nuskaitymas</translation> <translation id="6547208576736763147">Dvi skylės kairėje</translation> @@ -3341,6 +3345,7 @@ <translation id="9219103736887031265">Vaizdai</translation> <translation id="922152298093051471">Tinkinti „Chrome“</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Leisti programai „<ph name="APP_NAME" />“ nustatyti „Wi-Fi“ tinklus?</translation> <translation id="936602727769022409">Galite prarasti prieigą prie „Google“ paskyros. „Chromium“ rekomenduoja pakeisti slaptažodį dabar. Bus prašoma prisijungti.</translation> <translation id="937457230470581909">Zoologijos sodai, akvariumai ir draustiniai</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Kokie duomenys naudojami:<ph name="END_BOLD" /> skelbimų temos yra pagrįstos jūsų naujausia naršymo istorija, svetainių, kuriose lankėtės naudodami „Chrome“ šiame įrenginyje, sąrašu.</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb index ef9f6e38..4697209 100644 --- a/components/strings/components_strings_lv.xtb +++ b/components/strings/components_strings_lv.xtb
@@ -1068,7 +1068,6 @@ <translation id="3631244953324577188">Biometrija</translation> <translation id="3632503704576938756">Ekrāna kopīgošana atsākta</translation> <translation id="3632892046558972264">Ekrāna kopīgošana apturēta</translation> -<translation id="3633035844150606508">Saglabāt adresi jūsu Google kontā (<ph name="ACCOUNT" />)</translation> <translation id="3633738897356909127">Poga “Atjaunināt Chrome”. Lai Chrome iestatījumos atjauninātu pārlūkprogrammu Chrome, nospiediet ievadīšanas taustiņu.</translation> <translation id="3634530185120165534">5. paplāte</translation> <translation id="3634567936866541746">Jūs tikko ievadījāt savu paroli maldinošā vietnē. Chrome ieteikums jūsu kontu aizsardzībai: pārbaudiet saglabātās paroles.</translation> @@ -1735,6 +1734,8 @@ <translation id="5234764350956374838">Nerādīt</translation> <translation id="5239623327352565343">Piekļuve atrašanās vietai ir atļauta</translation> <translation id="5242889659037569123">Bagāža un ceļošanas piederumi</translation> +<translation id="5244732203286792411">Notiek ielāde… + Tā var ilgt kādu brīdi.</translation> <translation id="5250209940322997802">“Izveidojiet savienojumu ar tīklu”</translation> <translation id="52517543715119994">Uzzināt vairāk par Chrome funkcijām</translation> <translation id="5251803541071282808">Mākonis</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb index d28aa93..4d3479c 100644 --- a/components/strings/components_strings_mk.xtb +++ b/components/strings/components_strings_mk.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Биометрика</translation> <translation id="3632503704576938756">Споделувањето екран продолжи</translation> <translation id="3632892046558972264">Споделувањето екран е паузирано</translation> -<translation id="3633035844150606508">Адресата ќе се зачува во вашата сметка на Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Копче „Ажурирај го Chrome“, притиснете Enter за да го ажурирате Chrome од поставките за Chrome</translation> <translation id="3634530185120165534">Фиока 5</translation> <translation id="3634567936866541746">Тукушто ја внесовте својата лозинка на измамнички сајт. За да ги заштитите сметките, Chrome ви препорачува да ги проверите зачуваните лозинки.</translation> @@ -1736,6 +1735,8 @@ <translation id="5234764350956374838">Отфрли</translation> <translation id="5239623327352565343">Локацијата е дозволена</translation> <translation id="5242889659037569123">Додатоци за багаж и патување</translation> +<translation id="5244732203286792411">Се вчитува… + Ова може малку да потрае.</translation> <translation id="5250209940322997802">„Поврзете се на мрежата“</translation> <translation id="52517543715119994">Дознајте за функциите на Chrome</translation> <translation id="5251803541071282808">Облак</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb index 22c3123..5bb5fe05 100644 --- a/components/strings/components_strings_ml.xtb +++ b/components/strings/components_strings_ml.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">ബയോമെട്രിക്സ്</translation> <translation id="3632503704576938756">സ്ക്രീൻ പങ്കിടൽ പുനരാരംഭിച്ചു</translation> <translation id="3632892046558972264">സ്ക്രീൻ പങ്കിടൽ താൽക്കാലികമായി നിർത്തി</translation> -<translation id="3633035844150606508">നിങ്ങളുടെ <ph name="ACCOUNT" /> എന്ന Google അക്കൗണ്ടിൽ വിലാസം സംരക്ഷിക്കുക</translation> <translation id="3633738897356909127">'Chrome അപ്ഡേറ്റ് ചെയ്യുക' ബട്ടൺ, നിങ്ങളുടെ Chrome ക്രമീകരണത്തിൽ Chrome അപ്ഡേറ്റ് ചെയ്യാൻ 'Enter' അമർത്തുക</translation> <translation id="3634530185120165534">ട്രേ 5</translation> <translation id="3634567936866541746">വഞ്ചനാപരമായ സൈറ്റിൽ നിങ്ങൾ ഇപ്പോൾ പാസ്വേഡ് നൽകി. അക്കൗണ്ടുകൾ സുരക്ഷിതമാക്കാൻ, നിങ്ങളുടെ സംരക്ഷിച്ച പാസ്വേഡുകൾ ഇപ്പോൾ തന്നെ പരിശോധിക്കാൻ Chrome നിർദ്ദേശിക്കുന്നു.</translation> @@ -1793,6 +1792,7 @@ <translation id="5344579389779391559">ഈ പേജ് നിങ്ങളില് നിന്ന് പണം ഈടാക്കാനിടയുണ്ട്</translation> <translation id="5347645913823149105">'Chrome-ൽ ഫോണ്ടുകൾ ഇഷ്ടാനുസൃതമാക്കുക' ബട്ടൺ, Chrome-ൽ ഫോണ്ട് വലുപ്പങ്ങളും ടൈപ്പ്ഫേസുകളും ഇഷ്ടാനുസൃതമാക്കാൻ Enter അമർത്തുക</translation> <translation id="5355557959165512791">സർട്ടിഫിക്കറ്റ് റദ്ദാക്കിയതിനാൽ നിങ്ങൾക്കിപ്പോൾ <ph name="SITE" /> സന്ദർശിക്കാനാകില്ല. നെറ്റ്വർക്ക് പിശകുകളും ആക്രമണങ്ങളും സാധാരണ താൽക്കാലികമായിരിക്കും, അതിനാൽ ഈ പേജ് മിക്കവാറും പിന്നീട് പ്രവർത്തിക്കും.</translation> +<translation id="5356345925629253198">സംരക്ഷിച്ച വിലാസങ്ങൾ നിങ്ങൾക്ക് Google ഉൽപ്പന്നങ്ങളിലുടനീളം ഉപയോഗിക്കാം. ഈ വിലാസം നിങ്ങളുടെ Google Account-ൽ (<ph name="ACCOUNT" />) സംരക്ഷിക്കും.</translation> <translation id="5357848622083956825">ദൃശ്യ കലയും ഡിസൈനും</translation> <translation id="536296301121032821">നയ ക്രമീകരണങ്ങൾ സംഭരിക്കുന്നതിൽ പരാജയപ്പെട്ടു</translation> <translation id="5363309033720083897">നിങ്ങളുടെ അഡ്മിൻ അനുവദിച്ചിരിക്കുന്ന സീരിയൽ പോർട്ട്</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb index fb344ba..5da4b8614 100644 --- a/components/strings/components_strings_mn.xtb +++ b/components/strings/components_strings_mn.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Виртуал картын дэлгэрэнгүй</translation> <translation id="1803020234906945288">Эрүүл хооллолт</translation> <translation id="1803351196216024260">Таны микрофоныг ашиглахыг хүсэх боломжтой</translation> +<translation id="1806174020048213474">Энэ апп Wi-Fi-н мандат үнэмлэхүүдийг суулгах зөвшөөрөл хүсэж байна. Тохируулсны дараа таны <ph name="DEVICE_TYPE" /> оролцож буй Wi-Fi сүлжээнүүдэд автоматаар холбогдоно. Эдгээр мандат үнэмлэхийг хасахын тулд аппыг устгана уу.</translation> <translation id="1807246157184219062">Гэрэлтүүлэг</translation> <translation id="1807528111851433570">Эхлэлийн хүснэгт</translation> <translation id="180991881384371158">Таны Карт баталгаажуулалтын код нь картын тань ар талд байдаг. Энэ нь гарын үсгийн нүдний баруун дээд талд байх сүүлийн 3 орон юм.</translation> @@ -1070,7 +1071,6 @@ <translation id="3631244953324577188">Биометр</translation> <translation id="3632503704576938756">Дэлгэц хуваалцахыг үргэлжлүүлсэн</translation> <translation id="3632892046558972264">Дэлгэц хуваалцахыг түр зогсоосон</translation> -<translation id="3633035844150606508">Таны <ph name="ACCOUNT" /> Google Бүртгэлд хаяг хадгалах гэж байна</translation> <translation id="3633738897356909127">Chrome-г шинэчлэх товч, Chrome-н тохиргооноосоо Chrome-г шинэчлэхийн тулд Enter дарна уу</translation> <translation id="3634530185120165534">Гарах цаасны тавиур 5</translation> <translation id="3634567936866541746">Та дөнгөж сая сэжигтэй сайтад нууц үгээ орууллаа. Бүртгэлүүдээ хамгаалахын тулд Chrome хадгалсан нууц үгнүүдээ шалгахыг зөвлөж байна.</translation> @@ -1337,6 +1337,7 @@ <translation id="4270541775497538019">Гарах цаасыг зэрэгцүүлэх тавцан 6</translation> <translation id="4274173425554582601">Компьютер, цахилгаан бараа</translation> <translation id="4275830172053184480">Төхөөрөмжийг дахин эхлүүл</translation> +<translation id="4276974990916607331">Үгүй, баярлалаа</translation> <translation id="4277028893293644418">Нууц үгийг шинэчлэх</translation> <translation id="4277937682389409325">Орон нутгийн хаяг</translation> <translation id="4278390842282768270">Зөвшөөрөгдсөн</translation> @@ -1697,6 +1698,7 @@ <translation id="5129534298163637277">Баталгаажуулалтын харилцах цонх</translation> <translation id="5135404736266831032">Хаягийг удирдах...</translation> <translation id="5136841603454277753">Зөв код оруулна уу</translation> +<translation id="5137761395480718572">Энэ апп Wi-Fi-н мандат үнэмлэхүүдийг суулгах зөвшөөрөл хүсэж байна. Тохируулсны дараа таны <ph name="DEVICE_TYPE" /> оролцож буй Wi-Fi сүлжээнүүдэд автоматаар холбогдоно. Эдгээр мандат үнэмлэхийг хасахын тулд аппыг устгана уу. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Виртуал карт яг одоо боломжгүй байна. Банктайгаа холбогдоно уу</translation> <translation id="5138227688689900538">Хураангуйлж харуулах</translation> <translation id="5145883236150621069">удирдамжийн хариулт дахь алдааны код</translation> @@ -1753,6 +1755,7 @@ <translation id="5273881944177595304">Веб аппын онлайн хэрэгсэл</translation> <translation id="5274025349362408263">Ном, уран зохиол</translation> <translation id="5279286380302340275">Таталтуудыг удирдах</translation> +<translation id="5279453600310613955">Үгүй, баярлалаа</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Документын төлөв байдал</translation> <translation id="528468243742722775">Төгсгөл</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">Долоо дахь хуйлмал</translation> <translation id="6529602333819889595">& Устгах үйлдлийг дахин хийх</translation> <translation id="6535751101619004418">Мөнгөн тэмдэгт, гадаад валютын арилжаа</translation> +<translation id="6536221421038631327">Passpoint-н захиалгыг өөрийн <ph name="DEVICE_TYPE" />-с хассанаар холбоотой сүлжээнүүдийг хасна. Захиалгын багцдаа өөрчлөлт хийхийн тулд "<ph name="FRIENDLY_NAME" />"-тай холбогдоно уу. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Хамтын сан</translation> <translation id="6545864417968258051">Bluetooth скан хийх</translation> <translation id="6547208576736763147">Зүүн ирмэг дагуу хоёр нүх цоолох</translation> @@ -3339,6 +3343,7 @@ <translation id="9219103736887031265">Зураг</translation> <translation id="922152298093051471">Chrome-г өөрчлөх</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385"><ph name="APP_NAME" /> аппад Wi-Fi сүлжээнүүдийг тохируулахыг зөвшөөрөх үү?</translation> <translation id="936602727769022409">Та Google Бүртгэлийнхээ хандалтыг алдаж болзошгүй. Chromium таныг нууц үгээ одоо солихыг зөвлөж байна. Танаас нэвтрэхийг шаардана.</translation> <translation id="937457230470581909">Амьтны хүрээлэн, аквариум болон дархан цаазат газар</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Ямар өгөгдлийг ашигладаг вэ?:<ph name="END_BOLD" /> Таны зарын сэдвүүд таны саяхны хөтчийн түүх буюу энэ төхөөрөмжид Chrome-г ашиглан зочилсон сайтуудын жагсаалтад тулгуурладаг.</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index 6d807e4..40768e8 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">व्हर्च्युअल कार्डचे तपशील</translation> <translation id="1803020234906945288">सकस आहार</translation> <translation id="1803351196216024260">तुमचा मायक्रोफोन वापरण्याची विनंती करू शकते</translation> +<translation id="1806174020048213474">हे ॲप वाय-फाय क्रेडेंशियल इंस्टॉल करण्यासाठी परवानगीची विनंती करत आहे. सेट केल्यानंतर, तुमचे <ph name="DEVICE_TYPE" /> सहभागी वाय-फाय नेटवर्कशी आपोआप कनेक्ट होईल. ही क्रेडेंशियल काढून टाकण्यासाठी, अॅप अनइंस्टॉल करा.</translation> <translation id="1807246157184219062">फिकट</translation> <translation id="1807528111851433570">शीट सुरू करा</translation> <translation id="180991881384371158">तुमचा CVC हा तुमच्या कार्डच्या मागील बाजूस असतो. CVC म्हणजे स्वाक्षरीच्या बॉक्सच्या सर्वात वरती उजवीकडील शेवटचे तीन अंक.</translation> @@ -1068,7 +1069,6 @@ <translation id="3631244953324577188">बायोमेट्रिक</translation> <translation id="3632503704576938756">स्क्रीन शेअर करणे पुन्हा सुरू केले</translation> <translation id="3632892046558972264">स्क्रीन शेअर करणे थांबवले आहे</translation> -<translation id="3633035844150606508"><ph name="ACCOUNT" /> या तुमच्या Google खाते मध्ये ॲड्रेस सेव्ह करा</translation> <translation id="3633738897356909127">Chrome अपडेट करा बटण, तुमच्या Chrome सेटिंग्जमधून Chrome अपडेट करण्यासाठी एंटर प्रेस करा</translation> <translation id="3634530185120165534">ट्रे ५</translation> <translation id="3634567936866541746">तुम्ही आताच एका फसव्या साइटवर तुमचा पासवर्ड एंटर केला. तुमची खाती सुरक्षित करण्यासाठी, Chrome तुमचे सेव्ह केलेले पासवर्ड तपासण्याची शिफारस करते.</translation> @@ -1335,6 +1335,7 @@ <translation id="4270541775497538019">स्टॅकर ६</translation> <translation id="4274173425554582601">कॉंप्युटर आणि इलेक्ट्रॉनिक</translation> <translation id="4275830172053184480">तुमचा डिव्हाइस रीस्टार्ट करा</translation> +<translation id="4276974990916607331">नाही, नको</translation> <translation id="4277028893293644418">पासवर्ड रीसेट करा</translation> <translation id="4277937682389409325">स्थानिक पत्ता</translation> <translation id="4278390842282768270">अनुमत</translation> @@ -1695,6 +1696,7 @@ <translation id="5129534298163637277">कंफर्मेशन डायलॉग</translation> <translation id="5135404736266831032">पत्ते व्यवस्थापित करा...</translation> <translation id="5136841603454277753">योग्य कोड एंटर करा</translation> +<translation id="5137761395480718572">हे ॲप वाय-फाय क्रेडेंशियल इंस्टॉल करण्यासाठी परवानगीची विनंती करत आहे. सेट केल्यानंतर, तुमचे <ph name="DEVICE_TYPE" /> सहभागी वाय-फाय नेटवर्कशी आपोआप कनेक्ट होईल. ही क्रेडेंशियल काढून टाकण्यासाठी, अॅप अनइंस्टॉल करा. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">सध्या व्हर्च्युअल कार्ड उपलब्ध नाही, कृपया तुमच्या बँकशी संपर्क साधा</translation> <translation id="5138227688689900538">कमी दाखवा</translation> <translation id="5145883236150621069">धोरण प्रतिसादामध्ये एरर कोड अस्तित्वात आहे</translation> @@ -1751,6 +1753,7 @@ <translation id="5273881944177595304">वेब अॅप्स आणि ऑनलाइन टूल</translation> <translation id="5274025349362408263">पुस्तके आणि साहित्य</translation> <translation id="5279286380302340275">डाउनलोड व्यवस्थापित करा</translation> +<translation id="5279453600310613955">नाही, नको</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">दस्तऐवज गुणधर्म</translation> <translation id="528468243742722775">बंद करा</translation> @@ -1789,6 +1792,7 @@ <translation id="5344579389779391559">या पेजवर कदाचित तुमच्याकडून शुल्क आकारले जाऊ शकते</translation> <translation id="5347645913823149105">Chrome मधील फॉंट कस्टमाइझ करा बटण, Chrome मधील फॉंटचे आकार आणि टाइपफेस कस्टमाइझ करण्यासाठी एंटर प्रेस करा</translation> <translation id="5355557959165512791">तुम्ही आत्ता <ph name="SITE" /> ला भेट देऊ शकत नाही कारण तिचे सर्टिफिकेट काढून टाकले आहे. नेटवर्क एरर आणि आक्रमण शक्यतो तात्पुरती असतात, त्यामुळे हे पेज नंतर पाहता येईल.</translation> +<translation id="5356345925629253198">तुम्ही संपूर्ण Google उत्पादनांवर सेव्ह केलेले पत्ते वापरू शकता. हा पत्ता तुमच्या Google खाते मध्ये सेव्ह केला जाईल (<ph name="ACCOUNT" />).</translation> <translation id="5357848622083956825">व्हिज्युअल आर्ट आणि डिझाइन</translation> <translation id="536296301121032821">धोरण सेटिंग्ज संचयित करण्यात अयशस्वी</translation> <translation id="5363309033720083897">तुमच्या अॅडमिनिस्ट्रेटरने अनुमती दिलेला सिरीअल पोर्ट</translation> @@ -2244,6 +2248,7 @@ <translation id="6529173248185917884">सातवा रोल</translation> <translation id="6529602333819889595">&पुन्हा करा हटवा</translation> <translation id="6535751101619004418">चलने आणि परकीय विनिमय</translation> +<translation id="6536221421038631327">तुमच्या <ph name="DEVICE_TYPE" /> वरून पासपॉइंट सदस्यत्व काढून टाकल्यामुळे संबंधित नेटवर्क काढून टाकली जातील. तुमच्या सदस्यत्व प्लॅनमध्ये बदल करण्यासाठी "<ph name="FRIENDLY_NAME" />" शी संपर्क साधा. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">म्युच्युअल फंड</translation> <translation id="6545864417968258051">ब्लूटूथ स्कॅन करत आहे</translation> <translation id="6547208576736763147">ड्युअल पंच लेफ्ट</translation> @@ -3339,6 +3344,7 @@ <translation id="9219103736887031265">इमेज</translation> <translation id="922152298093051471">Chrome कस्टमाइझ करा</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385"><ph name="APP_NAME" /> अॅपला वाय-फाय नेटवर्क सेट करण्याची अनुमती द्यायची आहे का?</translation> <translation id="936602727769022409">तुम्ही तुमच्या Google खात्याचा ॲक्सेस कदाचित गमवाल. Chromium आता तुमचा पासवर्ड बदलण्याची शिफारस करते. तुम्हाला साइन इन करण्यासाठी सांगितले जाऊ शकते.</translation> <translation id="937457230470581909">प्राणिसंग्रहालये, मत्स्यालये आणि अभयारण्ये</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />कोणता डेटा वापरला जातो:<ph name="END_BOLD" /> तुमचे जाहिरातीचे विषय हे तुमचा अलीकडील ब्राउझिंग इतिहास, म्हणजेच तुम्ही या डिव्हाइसवर Chrome वापरून भेट दिलेल्या साइटच्या सूचीवर आधारित असतात.</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb index b55e29c9..5764904c 100644 --- a/components/strings/components_strings_ms.xtb +++ b/components/strings/components_strings_ms.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Butiran kad maya</translation> <translation id="1803020234906945288">Pemakanan sihat</translation> <translation id="1803351196216024260">Boleh meminta untuk menggunakan mikrofon anda</translation> +<translation id="1806174020048213474">Apl ini meminta kebenaran untuk memasang bukti kelayakan Wi-Fi. Selepas persediaan, <ph name="DEVICE_TYPE" /> anda akan disambungkan secara automatik kepada rangkaian Wi-Fi yang turut serta. Untuk mengalih keluar bukti kelayakan ini, nyahpasang apl.</translation> <translation id="1807246157184219062">Cahaya</translation> <translation id="1807528111851433570">Helaian permulaan</translation> <translation id="180991881384371158">CVC tertera pada bahagian belakang kad anda. CVC ialah 3 digit terakhir pada bahagian atas sebelah kanan kotak tandatangan.</translation> @@ -1070,7 +1071,6 @@ <translation id="3631244953324577188">Biometrik</translation> <translation id="3632503704576938756">Perkongsian skrin disambung semula</translation> <translation id="3632892046558972264">Perkongsian skrin dijeda</translation> -<translation id="3633035844150606508">Simpan alamat dalam Google Account anda, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Butang Kemas Kini Chrome, tekan Enter untuk mengemas kini Chrome daripada tetapan Chrome anda</translation> <translation id="3634530185120165534">Dulang 5</translation> <translation id="3634567936866541746">Anda baru sahaja memasukkan kata laluan pada laman yang menipu. Untuk melindungi akaun anda, Chrome mengesyorkan agar anda menyemak kata laluan anda yang disimpan.</translation> @@ -1337,6 +1337,7 @@ <translation id="4270541775497538019">Petak 6</translation> <translation id="4274173425554582601">Komputer & elektronik</translation> <translation id="4275830172053184480">Mulakan semula peranti anda</translation> +<translation id="4276974990916607331">Tidak perlu</translation> <translation id="4277028893293644418">Tetapkan semula kata laluan</translation> <translation id="4277937682389409325">Alamat tempatan</translation> <translation id="4278390842282768270">Dibenarkan</translation> @@ -1697,6 +1698,7 @@ <translation id="5129534298163637277">Dialog pengesahan</translation> <translation id="5135404736266831032">Urus alamat...</translation> <translation id="5136841603454277753">Masukkan kod yang betul</translation> +<translation id="5137761395480718572">Apl ini meminta kebenaran untuk memasang bukti kelayakan Wi-Fi. Selepas persediaan, <ph name="DEVICE_TYPE" /> anda akan disambungkan secara automatik kepada rangkaian Wi-Fi yang turut serta. Untuk mengalih keluar bukti kelayakan ini, nyahpasang apl. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Kad maya tidak tersedia sekarang, sila hubungi bank anda</translation> <translation id="5138227688689900538">Tunjukkan kurang</translation> <translation id="5145883236150621069">Terdapat kod ralat dalam balasan dasar</translation> @@ -1753,6 +1755,7 @@ <translation id="5273881944177595304">Aplikasi web & alat dalam talian</translation> <translation id="5274025349362408263">Buku & kesusasteraan</translation> <translation id="5279286380302340275">Urus muat turun</translation> +<translation id="5279453600310613955">Tidak perlu</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Sifat dokumen</translation> <translation id="528468243742722775">End</translation> @@ -1791,6 +1794,7 @@ <translation id="5344579389779391559">Halaman ini mungkin cuba mengenakan bayaran kepada anda</translation> <translation id="5347645913823149105">Butang sesuaikan fon dalam Chrome, tekan Enter untuk menyesuaikan saiz fon dan rupa huruf dalam Chrome</translation> <translation id="5355557959165512791">Anda tidak boleh melawati <ph name="SITE" /> sekarang kerana sijil tapak ini telah ditarik balik. Ralat dan serangan rangkaian biasanya bersifat sementara. Oleh sebab itu, halaman ini mungkin akan berfungsi semula kemudian.</translation> +<translation id="5356345925629253198">Anda boleh menggunakan alamat yang disimpan merentas produk Google. Alamat ini akan disimpan dalam Google Account anda (<ph name="ACCOUNT" />).</translation> <translation id="5357848622083956825">Seni visual & reka bentuk</translation> <translation id="536296301121032821">Gagal menyimpan tetapan dasar</translation> <translation id="5363309033720083897">Port bersiri yang dibenarkan oleh pentadbir anda</translation> @@ -2245,6 +2249,7 @@ <translation id="6529173248185917884">Gulungan Ketujuh</translation> <translation id="6529602333819889595">&Buat Semula Pemadaman</translation> <translation id="6535751101619004418">Mata wang & pertukaran asing</translation> +<translation id="6536221421038631327">Tindakan mengalih keluar langganan Passpoint daripada <ph name="DEVICE_TYPE" /> anda akan turut mengalih keluar rangkaian yang berkaitan. Hubungi "<ph name="FRIENDLY_NAME" />" untuk membuat perubahan pada pelan langganan anda. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Dana amanah</translation> <translation id="6545864417968258051">Pengimbasan Bluetooth</translation> <translation id="6547208576736763147">Dua tebukan kiri</translation> @@ -3341,6 +3346,7 @@ <translation id="9219103736887031265">Imej</translation> <translation id="922152298093051471">Sesuaikan Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Benarkan apl <ph name="APP_NAME" /> menyediakan rangkaian Wi-Fi?</translation> <translation id="936602727769022409">Anda mungkin akan kehilangan akses kepada Akaun Google anda. Chromium mengesyorkan supaya anda menukar kata laluan sekarang. Anda akan diminta untuk log masuk.</translation> <translation id="937457230470581909">Zoo, akuarium & rizab</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Jenis data yang digunakan:<ph name="END_BOLD" /> Topik iklan anda adalah berdasarkan sejarah penyemakan imbas anda baru-baru ini, iaitu senarai laman yang telah anda lawati menggunakan Chrome pada peranti ini.</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb index bd64172..e21577ee 100644 --- a/components/strings/components_strings_my.xtb +++ b/components/strings/components_strings_my.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">ဇီဝမက်ထရစ် အချက်အလက်များ</translation> <translation id="3632503704576938756">မျက်နှာပြင် မျှဝေခြင်းကို ဆက်လုပ်ထားသည်</translation> <translation id="3632892046558972264">မျက်နှာပြင် မျှဝေခြင်းကို ခဏရပ်ထားသည်</translation> -<translation id="3633035844150606508">လိပ်စာကို သင့် Google Account <ph name="ACCOUNT" /> တွင် သိမ်းမည်</translation> <translation id="3633738897356909127">Chrome အပ်ဒိတ်လုပ်ရန်ခလုတ်၊ သင့် Chrome ဆက်တင်များမှတစ်ဆင့် Chrome ကို အပ်ဒိတ်လုပ်ရန် Enter နှိပ်ပါ</translation> <translation id="3634530185120165534">ဗန်း ၅</translation> <translation id="3634567936866541746">လှည့်ဖြားတတ်သော ဝဘ်ဆိုက်တစ်ခုတွင် သင့်စကားဝှက်ကို သင်က ယခုလေးတွင် ထည့်လိုက်သည်။ အကောင့်များ လုံခြုံစေရန်အတွက် သင်သိမ်းထားသည့် စကားဝှက်များကို စစ်ဆေးရန် Chrome ကအကြုံပြုပါသည်။</translation> @@ -1795,6 +1794,7 @@ <translation id="5344579389779391559">ဤစာမျက်နှာသည် သင့်ထံမှ ငွေကောက်ခံနိုင်သည်</translation> <translation id="5347645913823149105">Chrome တွင် ဖောင့်များ စိတ်ကြိုက်လုပ်ရန် ခလုတ်၊ Chrome တွင် ဖောင့်အရွယ်အစားများနှင့် စာလုံးပုံစံများကို စိတ်ကြိုက်လုပ်ရန် Enter နှိပ်ပါ</translation> <translation id="5355557959165512791"><ph name="SITE" /> ၏ အသိအမှတ်ပြုလက်မှတ်ကို ရုပ်သိမ်းထားသောကြောင့် ၎င်းအား လောလောဆယ် ဖွင့်၍မရပါ။ ကွန်ရက်အမှားအယွင်းများနှင့် တိုက်ခိုက်မှုများမှာ ပုံမှန်အားဖြင့် ခဏတာသာ ဖြစ်သည့်အတွက် ဤစာမျက်နှာကို နောက်ပိုင်းတွင် ပြန်ဖွင့်၍ရနိုင်ပါသည်။</translation> +<translation id="5356345925629253198">သိမ်းထားသောလိပ်စာများကို Google ထုတ်ကုန်များအနှံ့တွင် သုံးနိုင်သည်။ ဤလိပ်စာကို သင့် Google Account (<ph name="ACCOUNT" />) တွင်သိမ်းမည်။</translation> <translation id="5357848622083956825">ကြည့်ရှုစရာ အနုပညာနှင့် ဒီဇိုင်း</translation> <translation id="536296301121032821">ပေါ်လစီ ကြိုတင်ချိန်ညှိချက်များအား သိုလှောင်ခြင်း မအောင်မြင်ပါ</translation> <translation id="5363309033720083897">သင့်စီမံခန့်ခွဲသူက ခွင့်ပြုသော အစဉ်လိုက်ပို့တ်</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb index 46c9487..05e7b7e 100644 --- a/components/strings/components_strings_ne.xtb +++ b/components/strings/components_strings_ne.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">भर्चुअल कार्डसम्बन्धी विवरणहरू</translation> <translation id="1803020234906945288">स्वस्थ खानपान</translation> <translation id="1803351196216024260">तपाईंको डिभाइसको माइक्रोफोन प्रयोग गर्ने अनुमति माग्न सक्छ</translation> +<translation id="1806174020048213474">यो एपले Wi-Fi क्रिडेन्सियलहरू इन्स्टल गर्ने अनुमति माग्दै छ। सेटअप गर्ने प्रक्रिया पूरा भएपछि तपाईंको <ph name="DEVICE_TYPE" /> उपलब्ध Wi-Fi नेटवर्कहरूमा स्वतः कनेक्ट हुने छ। यी क्रिडेन्सियलहरू हटाउन यो एप अनइन्स्टल गर्नुहोस्।</translation> <translation id="1807246157184219062">हल्का</translation> <translation id="1807528111851433570">सुरुवाती पाना</translation> <translation id="180991881384371158">तपाईंको CVC तपाईंको कार्डको पछाडिको भागमा छ। यो सिग्नेचर बक्सको सिरानको दायाँतिर रहेको पछिल्ला ३ अङ्कको कोड हो।</translation> @@ -1066,7 +1067,6 @@ <translation id="3631244953324577188">बायोमेट्रिक्स</translation> <translation id="3632503704576938756">स्क्रिन सेयर गर्ने कार्य सुचारु गरिएको छ</translation> <translation id="3632892046558972264">स्क्रिन सेयर गर्ने कार्य केही समयका लागि रोकिएको छ</translation> -<translation id="3633035844150606508">यो ठेगाना आफ्नो Google खाता (<ph name="ACCOUNT" />) मा सेभ गर्नुहोस्</translation> <translation id="3633738897356909127">'Chrome अपडेट गर्नुहोस्' नामक बटन, आफ्नो Chrome का सेटिङमा गई Chrome अपडेट गर्न Enter थिच्नुहोस्</translation> <translation id="3634530185120165534">ट्रे ५</translation> <translation id="3634567936866541746">तपाईंले भर्खरै कुनै असुरक्षित साइटमा आफ्नो पासवर्ड हाल्नुभएको छ। तपाईंका खाताहरूको सुरक्षार्थ Chrome तपाईंलाई तपाईंका सेभ गरिएका पासवर्डहरूको जाँच गर्न सिफारिस गर्छ।</translation> @@ -1333,6 +1333,7 @@ <translation id="4270541775497538019">स्ट्याकर ६</translation> <translation id="4274173425554582601">कम्प्युटर तथा इलेक्ट्रोनिक्स</translation> <translation id="4275830172053184480">आफ्नो यन्त्रलाई फेरि सुरु गर्नुहोस्</translation> +<translation id="4276974990916607331">पर्दैन, धन्यवाद</translation> <translation id="4277028893293644418">पासवर्ड रिसेट गर्नुहोस्</translation> <translation id="4277937682389409325">स्थानीय ठेगाना</translation> <translation id="4278390842282768270">अनुमति प्राप्त</translation> @@ -1693,6 +1694,7 @@ <translation id="5129534298163637277">पुष्टि गर्ने डायलग</translation> <translation id="5135404736266831032">ठेगानाहरू व्यवस्थित गर्नुहोस्...</translation> <translation id="5136841603454277753">सही कोड हाल्नुहोस्</translation> +<translation id="5137761395480718572">यो एपले Wi-Fi क्रिडेन्सियलहरू इन्स्टल गर्ने अनुमति माग्दै छ। सेटअप गर्ने प्रक्रिया पूरा भएपछि तपाईंको <ph name="DEVICE_TYPE" /> उपलब्ध Wi-Fi नेटवर्कहरूमा स्वतः कनेक्ट हुने छ। यी क्रिडेन्सियलहरू हटाउन यो एप अनइन्स्टल गर्नुहोस्। <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">भर्चुअल कार्ड हाल उपलब्ध छैन। कृपया आफ्नो बैंकमा सम्पर्क गर्नुहोस्</translation> <translation id="5138227688689900538">कम देखाउनुहोस्</translation> <translation id="5145883236150621069">नीति प्रतिक्रियामा त्रुटि कोड समावेश छ</translation> @@ -1749,6 +1751,7 @@ <translation id="5273881944177595304">वेब एप तथा अनलाइन टुलहरू</translation> <translation id="5274025349362408263">पुस्तक तथा साहित्य</translation> <translation id="5279286380302340275">डाउनलोड गरिएका सामग्री व्यवस्थापन गर्नुहोस्</translation> +<translation id="5279453600310613955">पर्दैन, धन्यवाद</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">डकुमेन्टका विशेषताहरू</translation> <translation id="528468243742722775">समाप्त</translation> @@ -1787,6 +1790,7 @@ <translation id="5344579389779391559">यो पृष्ठले तपाईंलाई पैसा तिराउने प्रयास गर्न सक्छ</translation> <translation id="5347645913823149105">"Chrome मा फन्टहरू कस्टमाइज गर्नुहोस्" नामक बटन, तपाईं Chrome मा फन्टका आकार तथा टाइपफेसहरू कस्टमाइज गर्न चाहनुहुन्छ भने इन्टर थिच्नुहोस्</translation> <translation id="5355557959165512791">यो साइटको प्रमाणपत्र खारेज गरिएको हुनाले तपाईं अहिले नै <ph name="SITE" /> मा जान सक्नुहुन्न। नेटवर्कसम्बन्धी त्रुटि र आक्रमणहरू सामान्यतया अस्थायी हुन्छन्, त्यसैले यो पृष्ठले पछि सम्भवतः काम गर्नसक्नेछ।</translation> +<translation id="5356345925629253198">तपाईं सेभ गरिएका ठेगानाहरू Google का विभिन्न उत्पादनमा प्रयोग गर्न सक्नुहुन्छ। ती ठेगाना तपाईंको Google खाता (<ph name="ACCOUNT" />) मा सेभ गरिने छन्।</translation> <translation id="5357848622083956825">भिजुअल आर्ट तथा डिजाइन</translation> <translation id="536296301121032821">नीति सेटिङहरू भण्डारण गर्न असफल भयो</translation> <translation id="5363309033720083897">तपाईंका एड्मिनले प्रयोग गर्ने अनुमति दिनुभएको सिरियल पोर्ट</translation> @@ -2241,6 +2245,7 @@ <translation id="6529173248185917884">सातौँ रोल</translation> <translation id="6529602333819889595">मेटाउने कार्य &पुन: गर्नुहोस्</translation> <translation id="6535751101619004418">मुद्रा तथा विदेशी विनिमय</translation> +<translation id="6536221421038631327">तपाईंले आफ्नो <ph name="DEVICE_TYPE" /> बाट पासपोइन्टको सदस्यता हटाउनुभयो भने सम्बन्धित नेटवर्कहरू पनि हट्ने छन्। तपाईं आफ्नो सदस्यताको योजना परिवर्तन गर्न चाहनुहुन्छ भने "<ph name="FRIENDLY_NAME" />" मा सम्पर्क गर्नुहोस्। <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">सामूहिक लगानी कोषहरू</translation> <translation id="6545864417968258051">ब्लुटुथ स्क्यान गर्दै</translation> <translation id="6547208576736763147">बायाँपट्टि दुई प्वाल</translation> @@ -3336,6 +3341,7 @@ <translation id="9219103736887031265">फोटो</translation> <translation id="922152298093051471">Chrome आफूले चाहे जस्तो बनाउनुहोस्</translation> <translation id="933712198907837967">डाइनर्स क्लब</translation> +<translation id="934634059306213385"><ph name="APP_NAME" /> एपलाई Wi-Fi नेटवर्कहरू सेटअप गर्ने अनुमति दिने हो?</translation> <translation id="936602727769022409">तपाईं आफ्नो Google खातामाथिको पहुँच गुमाउन सक्नुहुन्छ। Chromium तपाईंलाई आफ्नो पासवर्ड अहिले नै परिवर्तन गर्न सिफारिस गर्छ। तपाईंलाई साइन इन गर्न लगाइने छ।</translation> <translation id="937457230470581909">चिडियाखाना, एक्वारियम तथा आरक्षहरू</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />के कस्ता जानकारी प्रयोग गरिन्छ:<ph name="END_BOLD" /> तपाईंका विज्ञापनका विषयहरू तपाईंको हालसालैको ब्राउजिङ हिस्ट्री अर्थात् तपाईंले यो डिभाइसमा Chrome प्रयोग गरी खोलेका साइटहरूको सूचीमा आधारित हुन्छन्।</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb index f4d58d06..cf5ea0e 100644 --- a/components/strings/components_strings_nl.xtb +++ b/components/strings/components_strings_nl.xtb
@@ -1065,7 +1065,6 @@ <translation id="3631244953324577188">Biometrische systemen</translation> <translation id="3632503704576938756">Scherm delen hervat</translation> <translation id="3632892046558972264">Scherm delen onderbroken</translation> -<translation id="3633035844150606508">Adres opslaan in je Google-account, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Knop 'Chrome updaten'. Druk op Enter om Chrome te updaten via de instellingen van Chrome.</translation> <translation id="3634530185120165534">Lade 5</translation> <translation id="3634567936866541746">Je hebt zojuist je wachtwoord opgegeven op een misleidende site. Chrome raadt je aan je opgeslagen wachtwoorden te checken om je accounts te beveiligen.</translation> @@ -1789,6 +1788,7 @@ <translation id="5344579389779391559">Deze pagina brengt je mogelijk kosten in rekening</translation> <translation id="5347645913823149105">De knop Lettertypen aanpassen in Chrome, druk op Enter om lettertypen en lettergrootten aan te passen in Chrome</translation> <translation id="5355557959165512791">Je kunt <ph name="SITE" /> momenteel niet bezoeken, omdat het bijbehorende certificaat is ingetrokken. Netwerkfouten en aanvallen zijn doorgaans tijdelijk, dus deze pagina werkt later waarschijnlijk correct.</translation> +<translation id="5356345925629253198">Je kunt opgeslagen adressen gebruiken in meerdere Google-producten. Dit adres wordt opgeslagen in je Google-account (<ph name="ACCOUNT" />).</translation> <translation id="5357848622083956825">Visuele kunst en visueel ontwerp</translation> <translation id="536296301121032821">Opslaan van beleidsinstellingen is mislukt</translation> <translation id="5363309033720083897">Seriële poort toegestaan door je beheerder</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index 026d4a8..da5f2c4 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Biometri</translation> <translation id="3632503704576938756">Skjermdelingen er gjenopptatt</translation> <translation id="3632892046558972264">Skjermdelingen er satt på pause</translation> -<translation id="3633035844150606508">Lagre adressen i Google-kontoen din, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Knappen «Oppdater Chrome» – trykk på Enter for å oppdatere Chrome fra Chrome-innstillingene</translation> <translation id="3634530185120165534">Skuff 5</translation> <translation id="3634567936866541746">Du har nettopp skrevet inn passordet ditt på et villedende nettsted. Chrome anbefaler at du sikrer kontoene dine ved å sjekke de lagrede passordene dine.</translation> @@ -1794,6 +1793,7 @@ <translation id="5344579389779391559">Denne siden kan prøve å belaste deg for penger</translation> <translation id="5347645913823149105">«Tilpass skrifttyper i Chrome»-knappen – trykk på Enter for å tilpasse skriftstørrelser og -typer i Chrome</translation> <translation id="5355557959165512791">Du kan ikke gå til <ph name="SITE" /> akkurat nå, siden sertifikatet for nettstedet er trukket tilbake. Nettverksfeil- og angrep er vanligvis midlertidige, så denne siden fungerer sannsynligvis senere.</translation> +<translation id="5356345925629253198">Du kan bruke lagrede adresser i flere Google-produkter. Denne adressen lagres i Google-kontoen din (<ph name="ACCOUNT" />).</translation> <translation id="5357848622083956825">Visuell kunst og design</translation> <translation id="536296301121032821">Kunne ikke lagre angivelsen for enhetsinnstillinger</translation> <translation id="5363309033720083897">Den serielle porten tillates av administratoren din</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb index e1dcf2ba..f91a7c0 100644 --- a/components/strings/components_strings_or.xtb +++ b/components/strings/components_strings_or.xtb
@@ -1066,7 +1066,6 @@ <translation id="3631244953324577188">ବାୟୋମେଟ୍ରିକ୍ସ</translation> <translation id="3632503704576938756">ସ୍କ୍ରିନ ସେୟାରିଂ ପୁଣି ଆରମ୍ଭ କରାଯାଇଛି</translation> <translation id="3632892046558972264">ସ୍କ୍ରିନ ସେୟାରିଂ ବିରତ କରାଯାଇଛି</translation> -<translation id="3633035844150606508">ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟ, <ph name="ACCOUNT" />ରେ ଠିକଣା ସେଭ କରନ୍ତୁ</translation> <translation id="3633738897356909127">"Chrome ଅପଡେଟ୍ କରନ୍ତୁ" ବଟନ୍, ଆପଣଙ୍କ Chrome ସେଟିଂସରୁ Chrome ଅପଡେଟ୍ କରିବାକୁ Enter ଦବାନ୍ତୁ</translation> <translation id="3634530185120165534">ଟ୍ରେ 5</translation> <translation id="3634567936866541746">ଆପଣ ଏବେ ଏକ ପ୍ରତାରଣାମୂଳକ ସାଇଟରେ ଆପଣଙ୍କ ପାସୱାର୍ଡ ଲେଖିଛନ୍ତି। ଆପଣଙ୍କ ଆକାଉଣ୍ଟଗୁଡ଼ିକୁ ସୁରକ୍ଷିତ କରିବା ପାଇଁ, Chrome ଆପଣଙ୍କ ଦ୍ୱାରା ସେଭ କରାଯାଇଥିବା ପାସୱାର୍ଡଗୁଡ଼ିକର ଯାଞ୍ଚ କରିବାକୁ ସୁପାରିଶ କରେ।</translation> @@ -1734,6 +1733,8 @@ <translation id="5234764350956374838">ଖାରଜ କରନ୍ତୁ</translation> <translation id="5239623327352565343">ଲୋକେସନକୁ ଅନୁମତି ଦିଆଯାଇଛି</translation> <translation id="5242889659037569123">ଲଗେଜ ଏବଂ ଭ୍ରମଣ ଆକସେସୋରୀଗୁଡ଼ିକ</translation> +<translation id="5244732203286792411">ଲୋଡ ହେଉଛି... + ଏଥିପାଇଁ କିଛି ସମୟ ଲାଗିପାରେ।</translation> <translation id="5250209940322997802">"ନେଟ୍ୱର୍କରେ ସଂଯୋଗ କରନ୍ତୁ"</translation> <translation id="52517543715119994">Chrome ଫିଚରଗୁଡ଼ିକ ବିଷୟରେ ଜାଣନ୍ତୁ</translation> <translation id="5251803541071282808">କ୍ଲାଉଡ୍</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb index 45de3ec..be8a953 100644 --- a/components/strings/components_strings_pa.xtb +++ b/components/strings/components_strings_pa.xtb
@@ -1066,7 +1066,6 @@ <translation id="3631244953324577188">ਬਾਇਓਮੈਟ੍ਰਿਕ</translation> <translation id="3632503704576938756">ਸਕ੍ਰੀਨ ਸਾਂਝਾਕਰਨ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਗਿਆ</translation> <translation id="3632892046558972264">ਸਕ੍ਰੀਨ ਸਾਂਝਾਕਰਨ ਰੋਕਿਆ ਗਿਆ</translation> -<translation id="3633035844150606508">ਆਪਣੇ Google ਖਾਤੇ, <ph name="ACCOUNT" /> ਵਿੱਚ ਪਤਾ ਰੱਖਿਅਤ ਕਰੋ</translation> <translation id="3633738897356909127">'Chrome ਅੱਪਡੇਟ ਕਰੋ' ਬਟਨ, ਆਪਣੀਆਂ Chrome ਸੈਟਿੰਗਾਂ ਤੋਂ Chrome ਅੱਪਡੇਟ ਕਰਨ ਲਈ Enter ਦਬਾਓ</translation> <translation id="3634530185120165534">ਟ੍ਰੇਅ 5</translation> <translation id="3634567936866541746">ਤੁਸੀਂ ਹੁਣੇ-ਹੁਣੇ ਕਿਸੇ ਧੋਖੇਬਾਜ਼ ਸਾਈਟ 'ਤੇ ਆਪਣਾ ਪਾਸਵਰਡ ਦਾਖਲ ਕੀਤਾ ਹੈ। ਤੁਹਾਡੇ ਖਾਤਿਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ, Chrome ਤੁਹਾਡੇ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ ਦੀ ਹੁਣੇ ਜਾਂਚ ਕਰਨ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕਰਦਾ ਹੈ।</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb index 453aa57..2f8fdacb 100644 --- a/components/strings/components_strings_pl.xtb +++ b/components/strings/components_strings_pl.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Biometria</translation> <translation id="3632503704576938756">Wznowiono udostępnianie ekranu</translation> <translation id="3632892046558972264">Wstrzymano udostępnianie ekranu</translation> -<translation id="3633035844150606508">Zapisz adres na koncie Google <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Przycisk aktualizacji Chrome. Naciśnij Enter, by zaktualizować przeglądarkę Chrome z poziomu jej ustawień.</translation> <translation id="3634530185120165534">Taca 5</translation> <translation id="3634567936866541746">Przed chwilą wpisano hasło na stronie wprowadzającej w błąd. Dla bezpieczeństwa Twoich kont Chrome zaleca sprawdzenie zapisanych haseł.</translation> @@ -1794,6 +1793,7 @@ <translation id="5344579389779391559">Ta strona może próbować obciążyć Cię płatnością</translation> <translation id="5347645913823149105">Przycisk dostosowania czcionek w Chrome; aby dostosować rozmiary i kroje czcionek w Chrome, naciśnij Enter</translation> <translation id="5355557959165512791">Nie możesz teraz otworzyć strony <ph name="SITE" />, bo jej certyfikat został unieważniony. Błędy sieci i ataki są zazwyczaj przejściowe, więc prawdopodobnie strona będzie wkrótce działać.</translation> +<translation id="5356345925629253198">Zapisanych adresów możesz używać w różnych usługach Google. Ten adres zostanie zapisany na Twoim koncie Google <ph name="ACCOUNT" />.</translation> <translation id="5357848622083956825">Sztuki wizualne i projektowanie</translation> <translation id="536296301121032821">Zapisanie ustawień zasady nie powiodło się</translation> <translation id="5363309033720083897">Port szeregowy, na który zezwala administrator</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb index ab73a3e..cd0d56d 100644 --- a/components/strings/components_strings_pt-BR.xtb +++ b/components/strings/components_strings_pt-BR.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Biometria</translation> <translation id="3632503704576938756">O compartilhamento de tela foi retomado</translation> <translation id="3632892046558972264">O compartilhamento de tela foi pausado</translation> -<translation id="3633035844150606508">Salvar endereço na sua Conta do Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Botão "Atualizar o Chrome". Pressione "Enter" para atualizar o Chrome pelas configurações dele</translation> <translation id="3634530185120165534">Bandeja 5</translation> <translation id="3634567936866541746">Você acabou de digitar sua senha em um site suspeito. Para proteger suas contas, o Chrome recomenda conferir as senhas salvas.</translation> @@ -1794,6 +1793,7 @@ <translation id="5344579389779391559">Esta página pode tentar cobrar pagamento em dinheiro</translation> <translation id="5347645913823149105">Botão "Personalizar fontes no Chrome". Pressione Enter para personalizar tamanhos e fontes no Chrome</translation> <translation id="5355557959165512791">Não é possível acessar <ph name="SITE" /> neste momento, porque o certificado dele foi revogado. Como os ataques e erros de rede são geralmente temporários, esta página provavelmente funcionará mais tarde.</translation> +<translation id="5356345925629253198">Os endereços salvos podem ser usados em vários produtos do Google. Esse endereço será salvo na sua Conta do Google <ph name="ACCOUNT" />.</translation> <translation id="5357848622083956825">Artes visuais e design</translation> <translation id="536296301121032821">Falha ao armazenar as configurações da política</translation> <translation id="5363309033720083897">Porta serial permitida pelo administrador</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb index 9d73db3..2c6d435 100644 --- a/components/strings/components_strings_pt-PT.xtb +++ b/components/strings/components_strings_pt-PT.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Biometria</translation> <translation id="3632503704576938756">Partilha de ecrã retomada</translation> <translation id="3632892046558972264">Partilha de ecrã em pausa</translation> -<translation id="3633035844150606508">Guarde a morada na sua Conta Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Botão Atualizar Chrome; prima Enter para atualizar o Chrome nas Definições do Chrome.</translation> <translation id="3634530185120165534">Tabuleiro 5</translation> <translation id="3634567936866541746">Acabou de introduzir a sua palavra-passe num site fraudulento. Para proteger as suas contas, o Chrome recomenda verificar as palavras-passe guardadas.</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb index 4cd2746..6980bff 100644 --- a/components/strings/components_strings_ro.xtb +++ b/components/strings/components_strings_ro.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Detaliile cardului virtual</translation> <translation id="1803020234906945288">Alimentație sănătoasă</translation> <translation id="1803351196216024260">Poate solicita permisiunea de a folosi microfonul</translation> +<translation id="1806174020048213474">Aplicația solicită permisiunea de a instala date de conectare la Wi-Fi. După configurare, dispozitivul <ph name="DEVICE_TYPE" /> se va conecta automat la rețelele Wi-Fi participante. Pentru a elimina aceste date de conectare, dezinstalează aplicația.</translation> <translation id="1807246157184219062">Luminos</translation> <translation id="1807528111851433570">Foaia inițială</translation> <translation id="180991881384371158">Codul CVC se află pe spatele cardului. Constă din ultimele trei cifre din partea dreaptă sus a bandei de semnătură.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Sisteme biometrice</translation> <translation id="3632503704576938756">Permiterea accesului a fost reluată</translation> <translation id="3632892046558972264">Permiterea accesului a fost întreruptă</translation> -<translation id="3633035844150606508">Salvează adresa în Contul Google <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Butonul Actualizează Chrome, apasă pe Enter pentru a actualiza Chrome din setările Chrome</translation> <translation id="3634530185120165534">Tava 5</translation> <translation id="3634567936866541746">Ai introdus parola pe un site înșelător. Pentru a-ți proteja conturile, Chrome recomandă să verifici parolele salvate.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Receptorul de hârtie 6</translation> <translation id="4274173425554582601">Computere și electronice</translation> <translation id="4275830172053184480">Reporniți gadgetul</translation> +<translation id="4276974990916607331">Nu, mulțumesc</translation> <translation id="4277028893293644418">Resetează parola</translation> <translation id="4277937682389409325">Adresa locală</translation> <translation id="4278390842282768270">Se permite</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Dialog de confirmare</translation> <translation id="5135404736266831032">Gestionează adresele...</translation> <translation id="5136841603454277753">Introdu codul corect</translation> +<translation id="5137761395480718572">Aplicația solicită permisiunea de a instala date de conectare la Wi-Fi. După configurare, dispozitivul <ph name="DEVICE_TYPE" /> se va conecta automat la rețelele Wi-Fi participante. Pentru a elimina aceste date de conectare, dezinstalează aplicația. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Momentan, cardul virtual nu este disponibil. Contactează banca.</translation> <translation id="5138227688689900538">Afișează mai puțin</translation> <translation id="5145883236150621069">Răspunsul pentru politică include un cod de eroare</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">Aplicații web și instrumente online</translation> <translation id="5274025349362408263">Cărți și literatură</translation> <translation id="5279286380302340275">Gestionează descărcările</translation> +<translation id="5279453600310613955">Nu, mulțumesc</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Proprietățile documentului</translation> <translation id="528468243742722775">Oprește</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">A șaptea rolă</translation> <translation id="6529602333819889595">&Repetați ștergerea</translation> <translation id="6535751101619004418">Valute și schimb valutar</translation> +<translation id="6536221421038631327">Dacă elimini un abonament Passpoint din <ph name="DEVICE_TYPE" />, rețelele asociate se vor elimina. Contactează <ph name="FRIENDLY_NAME" /> pentru a modifica planul de abonament. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Fonduri mutuale</translation> <translation id="6545864417968258051">Căutare Bluetooth</translation> <translation id="6547208576736763147">Perforare dublă în stânga</translation> @@ -3340,6 +3344,7 @@ <translation id="9219103736887031265">Imagini</translation> <translation id="922152298093051471">Personalizează Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Permiți aplicației <ph name="APP_NAME" /> să configureze rețelele Wi-Fi?</translation> <translation id="936602727769022409">Este posibil să pierzi accesul la Contul Google. Chromium îți recomandă să îți schimbi parola acum. Ți se va cere să te conectezi.</translation> <translation id="937457230470581909">Grădini zoologice, acvarii și rezervații</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Ce date se folosesc:<ph name="END_BOLD" /> subiectele anunțurilor se bazează pe istoricul de navigare recent, o listă a site-urilor pe care le-ai accesat folosind Chrome pe acest dispozitiv.</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb index 2b93939..c2b65c0 100644 --- a/components/strings/components_strings_ru.xtb +++ b/components/strings/components_strings_ru.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Биометрия</translation> <translation id="3632503704576938756">Демонстрация экрана возобновлена</translation> <translation id="3632892046558972264">Демонстрация экрана приостановлена</translation> -<translation id="3633035844150606508">Сохранение адреса в аккаунте Google <ph name="ACCOUNT" />.</translation> <translation id="3633738897356909127">Кнопка "Обновить Chrome". Нажмите Ввод, чтобы обновить Chrome.</translation> <translation id="3634530185120165534">Лоток 5</translation> <translation id="3634567936866541746">Вы только что ввели пароль на поддельном сайте. Чтобы защитить свои аккаунты, проверьте сохраненные пароли в браузере Chrome.</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb index af1b43dc..9f9da800 100644 --- a/components/strings/components_strings_si.xtb +++ b/components/strings/components_strings_si.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">ජෛවමිතික</translation> <translation id="3632503704576938756">තිරය බෙදා ගැනීම නැවත පටන් ගෙන ඇත</translation> <translation id="3632892046558972264">තිරය බෙදා ගැනීම විරාම කර ඇත</translation> -<translation id="3633035844150606508">ඔබේ Google ගිණුමේ, <ph name="ACCOUNT" /> ලිපිනය සුරකින්න</translation> <translation id="3633738897356909127">Chrome යාවත්කාලීන කරන්න බොත්තම, ඔබගේ Chrome සැකසීම් වෙතින් Chrome යාවත්කාලීන කිරීමට Enter ඔබන්න</translation> <translation id="3634530185120165534">බඳුන 5</translation> <translation id="3634567936866541746">ඔබ මේ දැන් වංචනික අඩවියකට ඔබගේ මුරපදය ඇතුළු කළේය. ඔබගේ ගිණුම් ආරක්ෂා කිරීමට, Chrome ඔබගේ සුරැකි මුරපද පරීක්ෂා කිරීම නිර්දේශ කරයි.</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb index f3374ce..28d67d5 100644 --- a/components/strings/components_strings_sk.xtb +++ b/components/strings/components_strings_sk.xtb
@@ -1066,7 +1066,6 @@ <translation id="3631244953324577188">Biometria</translation> <translation id="3632503704576938756">Zdieľanie obrazovky bolo obnovené</translation> <translation id="3632892046558972264">Zdieľanie obrazovky je pozastavené</translation> -<translation id="3633035844150606508">Uloženie adresy v účte Google <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Tlačidlo Aktualizovať Chrome. Stlačením tlačidla Enter aktualizujete Chrome v jeho nastaveniach.</translation> <translation id="3634530185120165534">Priehradka č. 5</translation> <translation id="3634567936866541746">Práve ste zadali svoje heslo na podvodnom webe. Chrome odporúča skontrolovať uložené heslá, aby ste zabezpečili svoje účty.</translation> @@ -1735,6 +1734,8 @@ <translation id="5234764350956374838">Ignorovať</translation> <translation id="5239623327352565343">Poloha je povolená</translation> <translation id="5242889659037569123">Batožina a doplnky na cestovanie</translation> +<translation id="5244732203286792411">Načítava sa… + Môže to chvíľu trvať.</translation> <translation id="5250209940322997802">„Pripojte sa k sieti“</translation> <translation id="52517543715119994">Informácie o funkciách Chromu</translation> <translation id="5251803541071282808">Cloud</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index 51a690d..57c74548 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Podrobnosti o navidezni kartici</translation> <translation id="1803020234906945288">Zdrava prehrana</translation> <translation id="1803351196216024260">Lahko zahteva uporabo mikrofona.</translation> +<translation id="1806174020048213474">Ta aplikacija zahteva dovoljenje za namestitev poverilnic za Wi-Fi. Po nastavitvi se bo naprava <ph name="DEVICE_TYPE" /> samodejno povezala z vključenimi omrežji Wi-Fi. Če želite odstraniti te poverilnice, odmestite aplikacijo.</translation> <translation id="1807246157184219062">Svetlo</translation> <translation id="1807528111851433570">Začetni list</translation> <translation id="180991881384371158">CVC je na hrbtni strani kartice. To so zadnje tri številke v zgornjem desnem kotu polja s podpisom.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Biometrika</translation> <translation id="3632503704576938756">Deljenje zaslona se nadaljuje</translation> <translation id="3632892046558972264">Deljenje zaslona je začasno zaustavljeno</translation> -<translation id="3633035844150606508">Shrani naslov v račun Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Gumb za posodobitev Chroma, pritisnite Enter, če želite posodobiti Chrome v Chromovih nastavitvah</translation> <translation id="3634530185120165534">Pladenj 5</translation> <translation id="3634567936866541746">Pravkar ste vnesli geslo na zavajajočem spletnem mestu. Chrome zaradi zaščite računov priporoča, da preverite shranjena gesla.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Zlagalnik 6</translation> <translation id="4274173425554582601">Računalniki in elektronika</translation> <translation id="4275830172053184480">Znova zaženite napravo.</translation> +<translation id="4276974990916607331">Ne, hvala</translation> <translation id="4277028893293644418">Ponastavi geslo</translation> <translation id="4277937682389409325">Lokalni naslov</translation> <translation id="4278390842282768270">Dovoljeno</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Pogovorno okno za potrditev</translation> <translation id="5135404736266831032">Upravljanje naslovov ...</translation> <translation id="5136841603454277753">Vnesite ustrezno kodo.</translation> +<translation id="5137761395480718572">Ta aplikacija zahteva dovoljenje za namestitev poverilnic za Wi-Fi. Po nastavitvi se bo naprava <ph name="DEVICE_TYPE" /> samodejno povezala z vključenimi omrežji Wi-Fi. Če želite odstraniti te poverilnice, odmestite aplikacijo. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Virtualna kartica trenutno ni na voljo. Obrnite se na banko.</translation> <translation id="5138227688689900538">Pokaži manj</translation> <translation id="5145883236150621069">Koda napake v odzivu pravilnika</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">Spletni programi in orodja</translation> <translation id="5274025349362408263">Knjige in literatura</translation> <translation id="5279286380302340275">Upravljanje prenosov</translation> +<translation id="5279453600310613955">Ne, hvala</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Lastnosti dokumenta</translation> <translation id="528468243742722775">Konec</translation> @@ -1790,6 +1793,7 @@ <translation id="5344579389779391559">Ta stran vam bo morda poskusila kaj zaračunati</translation> <translation id="5347645913823149105">Gumb za prilagajanje pisav v Chromu, pritisnite Enter, če želite prilagoditi velikosti pisav in tipografije v Chromu.</translation> <translation id="5355557959165512791">Spletnega mesta <ph name="SITE" /> trenutno ni mogoče obiskati, saj je to potrdilo preklicano. Napake omrežja in napadi na omrežje so običajno začasni, zato bo ta stran verjetno delovala pozneje.</translation> +<translation id="5356345925629253198">Shranjene naslove lahko uporabite v Googlovih izdelkih. Ta naslov bo shranjen v računu Google (<ph name="ACCOUNT" />).</translation> <translation id="5357848622083956825">Vizualna umetnost in oblikovanje</translation> <translation id="536296301121032821">Nastavitev pravilnika ni bilo mogoče shraniti</translation> <translation id="5363309033720083897">Serijska vrata, ki jih dovoli skrbnik</translation> @@ -2245,6 +2249,7 @@ <translation id="6529173248185917884">Kolut 7</translation> <translation id="6529602333819889595">&Uveljavi izbris</translation> <translation id="6535751101619004418">Valute in devizno poslovanje</translation> +<translation id="6536221421038631327">Če iz naprave <ph name="DEVICE_TYPE" /> odstranite naročnino na Passpoint, boste odstranili povezana omrežja. Če želite spremeniti naročniško pogodbo, se obrnite na »<ph name="FRIENDLY_NAME" />«. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Vzajemni skladi</translation> <translation id="6545864417968258051">Iskanje naprav Bluetooth</translation> <translation id="6547208576736763147">Dvojno luknjanje na levi</translation> @@ -3340,6 +3345,7 @@ <translation id="9219103736887031265">Slike</translation> <translation id="922152298093051471">Prilagodi Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Želite aplikaciji <ph name="APP_NAME" /> dovoliti, da nastavi omrežja Wi-Fi?</translation> <translation id="936602727769022409">Izgubite lahko dostop do Google Računa. Chromium priporoča, da spremenite geslo. Pozvani boste, da se prijavite.</translation> <translation id="937457230470581909">Živalski vrti, akvariji in rezervati</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Kateri podatki se uporabljajo:<ph name="END_BOLD" /> Teme oglasov temeljijo na nedavni zgodovini brskanja, seznamu spletnih mest, ki ste jih obiskali s Chromom v tej napravi.</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb index 5758267..7d92cc14 100644 --- a/components/strings/components_strings_sq.xtb +++ b/components/strings/components_strings_sq.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Sistemet biometrike</translation> <translation id="3632503704576938756">"Ndarja e ekranit" rifilloi</translation> <translation id="3632892046558972264">"Ndarja e ekranit" është vendosur në pauzë</translation> -<translation id="3633035844150606508">Ruaje adresën në "Llogarinë tënde të Google", <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Butoni "Përditëso Chrome", shtyp "Enter" për të përditësuar Chrome nga cilësimet e Chrome</translation> <translation id="3634530185120165534">Tabakaja 5</translation> <translation id="3634567936866541746">Sapo e fute fjalëkalimin tënd në një sajt mashtrues. Për të siguruar llogaritë e tua, Chrome rekomandon të kontrollosh fjalëkalimet e ruajtura.</translation> @@ -1736,6 +1735,8 @@ <translation id="5234764350956374838">Hiq</translation> <translation id="5239623327352565343">Vendndodhja lejohet</translation> <translation id="5242889659037569123">Aksesorët për bagazhe dhe udhëtime</translation> +<translation id="5244732203286792411">Po ngarkohet... + Kjo mund të zgjasë një minutë.</translation> <translation id="5250209940322997802">"Lidhu me rrjetin"</translation> <translation id="52517543715119994">Mëso për veçoritë e Chrome</translation> <translation id="5251803541071282808">Reja kompjuterike</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb index 3111e1d8..36427dc2 100644 --- a/components/strings/components_strings_sr-Latn.xtb +++ b/components/strings/components_strings_sr-Latn.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Biometrija</translation> <translation id="3632503704576938756">Deljenje sadržaja ekrana je nastavljeno</translation> <translation id="3632892046558972264">Deljenje sadržaja ekrana je pauzirano</translation> -<translation id="3633035844150606508">Sačuvaćemo adresu na Google nalogu, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Dugme Ažuriraj Chrome, pritisnite Enter da biste ažurirali Chrome iz podešavanja Chrome-a</translation> <translation id="3634530185120165534">5. fioka</translation> <translation id="3634567936866541746">Upravo ste uneli lozinku na obmanjujućem sajtu. Da biste zaštitili naloge, Chrome preporučuje da proverite sačuvane lozinke.</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index 27b6638..d108197 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Биометрија</translation> <translation id="3632503704576938756">Дељење садржаја екрана је настављено</translation> <translation id="3632892046558972264">Дељење садржаја екрана је паузирано</translation> -<translation id="3633035844150606508">Сачуваћемо адресу на Google налогу, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Дугме Ажурирај Chrome, притисните Enter да бисте ажурирали Chrome из подешавања Chrome-а</translation> <translation id="3634530185120165534">5. фиока</translation> <translation id="3634567936866541746">Управо сте унели лозинку на обмањујућем сајту. Да бисте заштитили налоге, Chrome препоручује да проверите сачуване лозинке.</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb index b3f06453..552e797 100644 --- a/components/strings/components_strings_sv.xtb +++ b/components/strings/components_strings_sv.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Virtuella kortuppgifter</translation> <translation id="1803020234906945288">Hälsosam kost</translation> <translation id="1803351196216024260">Får begära åtkomst till mikrofonen</translation> +<translation id="1806174020048213474">Den här appen begär behörighet att installera wifi-användaruppgifter. Efter konfigureringen ansluter <ph name="DEVICE_TYPE" /> automatiskt till deltagande wifi-nätverk. Avinstallera appen om du vill ta bort dessa användaruppgifter.</translation> <translation id="1807246157184219062">Ljus</translation> <translation id="1807528111851433570">Första ark</translation> <translation id="180991881384371158">CVC-koden finns på baksidan av kortet. Det är de sista tre siffrorna uppe till höger i signaturrutan.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Biometri</translation> <translation id="3632503704576938756">Skärmdelningen återupptogs</translation> <translation id="3632892046558972264">Skärmdelningen pausades</translation> -<translation id="3633035844150606508">Spara adressen i ditt Google-konto, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Knappen Uppdatera Chrome, tryck på retur om du vill uppdatera Chrome i inställningarna för Chrome</translation> <translation id="3634530185120165534">Fack 5</translation> <translation id="3634567936866541746">Du angav just ditt lösenord på en bedräglig webbplats. Du rekommenderas att kontrollera dina sparade lösenord i Chrome nu för att skydda dina konton.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Utmatningsfack 6</translation> <translation id="4274173425554582601">Datorer och elektronik</translation> <translation id="4275830172053184480">Starta om enheten</translation> +<translation id="4276974990916607331">Nej tack</translation> <translation id="4277028893293644418">Återställ lösenord</translation> <translation id="4277937682389409325">Lokal adress</translation> <translation id="4278390842282768270">Tillåts</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Bekräftelseruta</translation> <translation id="5135404736266831032">Hantera adresser …</translation> <translation id="5136841603454277753">Ange rätt kod</translation> +<translation id="5137761395480718572">Den här appen begär behörighet att installera wifi-användaruppgifter. Efter konfigureringen ansluter <ph name="DEVICE_TYPE" /> automatiskt till deltagande wifi-nätverk. Avinstallera appen om du vill ta bort dessa användaruppgifter. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Virtuella kort är inte tillgängliga just nu. Kontakta banken</translation> <translation id="5138227688689900538">Visa färre</translation> <translation id="5145883236150621069">Felkoden ingår i policysvaret</translation> @@ -1752,6 +1754,7 @@ <translation id="5273881944177595304">Webbapplikationer och onlineverktyg</translation> <translation id="5274025349362408263">Böcker och litteratur</translation> <translation id="5279286380302340275">Hantera nedladdningar</translation> +<translation id="5279453600310613955">Nej tack</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Dokumentegenskaper</translation> <translation id="528468243742722775">Avsluta</translation> @@ -2245,6 +2248,7 @@ <translation id="6529173248185917884">Sjunde rullen</translation> <translation id="6529602333819889595">&Gör om Ta bort</translation> <translation id="6535751101619004418">Valutor och valutaväxling</translation> +<translation id="6536221421038631327">Om du tar bort en Passpoint-prenumeration från <ph name="DEVICE_TYPE" /> tas kopplade nätverk också bort. Kontakta <ph name="FRIENDLY_NAME" /> om du vill göra ändringar i prenumerationen. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Aktiefonder</translation> <translation id="6545864417968258051">Bluetooth-sökning</translation> <translation id="6547208576736763147">Två hål till vänster</translation> @@ -3341,6 +3345,7 @@ <translation id="9219103736887031265">Bilder</translation> <translation id="922152298093051471">Anpassa Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Vill du ge <ph name="APP_NAME" />-appen behörighet att konfigurera wifi-nätverk?</translation> <translation id="936602727769022409">Du kan förlora tillgången till Google-kontot. Du rekommenderas att ändra lösenordet nu. Du blir uppmanad att logga in.</translation> <translation id="937457230470581909">Djurparker, akvarier och djurreservat</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Vilken data som används:<ph name="END_BOLD" /> Dina annonsämnen baseras på din senaste webbhistorik, en lista över webbplatser du har besökt i Chrome på den här enheten.</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index 914cf79..857b00a 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Bayometriki</translation> <translation id="3632503704576938756">Mchakato wa kushiriki skrini unaendelea</translation> <translation id="3632892046558972264">Mchakato wa kushiriki skrini umesitishwa</translation> -<translation id="3633035844150606508">Hifadhi anwani katika Akaunti yako ya Google, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Kitufe cha 'Sasisha Chrome', bonyeza 'Enter' ili usasishe Chrome katika mipangilio yako ya Chrome</translation> <translation id="3634530185120165534">Trei ya tano</translation> <translation id="3634567936866541746">Umeweka nenosiri lako kwenye tovuti ya kupotosha. Ili uimarishe usalama wa akaunti zako, Chrome inapendekeza ukague manenosiri uliyoyahifadhi.</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb index 48fa7ce..c468888d 100644 --- a/components/strings/components_strings_ta.xtb +++ b/components/strings/components_strings_ta.xtb
@@ -1065,7 +1065,6 @@ <translation id="3631244953324577188">பயோமெட்ரிக்ஸ்</translation> <translation id="3632503704576938756">ஸ்கிரீன் பகிர்வு தொடங்கப்பட்டது</translation> <translation id="3632892046558972264">ஸ்கிரீன் பகிர்வு இடைநிறுத்தப்பட்டது</translation> -<translation id="3633035844150606508">உங்கள் Google கணக்கில் (<ph name="ACCOUNT" />) முகவரி சேமிக்கப்படும்</translation> <translation id="3633738897356909127">’Chromeமைப் புதுப்பி’ பட்டன், Chrome அமைப்புகளில் Chromeமைப் புதுப்பிக்க Enter விசையை அழுத்துங்கள்</translation> <translation id="3634530185120165534">தட்டு 5</translation> <translation id="3634567936866541746">ஏமாற்றக்கூடிய தளத்தில் கடவுச்சொல்லை உள்ளிட்டுள்ளீர்கள். உங்கள் கணக்குகளைப் பாதுகாக்க, நீங்கள் சேமித்துள்ள கடவுச்சொற்களைச் சரிபார்க்குமாறு Chrome பரிந்துரைக்கிறது.</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index 6ada27e9..13493c49 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -366,6 +366,7 @@ <translation id="1801812870656502108">వర్చువల్ కార్డ్ వివరాలు</translation> <translation id="1803020234906945288">ఆరోగ్యకరమైన ఆహారపు అలవాట్లు</translation> <translation id="1803351196216024260">మీ మైక్రోఫోన్ను ఉపయోగించడానికి సైట్ అనుమతి అడగవచ్చు</translation> +<translation id="1806174020048213474">ఈ యాప్ Wi-Fi ఆధారాలను ఇన్స్టాల్ చేయడానికి అనుమతిని రిక్వెస్ట్ చేస్తోంది. సెటప్ చేసిన తర్వాత, మీ <ph name="DEVICE_TYPE" /> ఆటోమేటిక్గా పాల్గొనే Wi-Fi నెట్వర్క్లకు కనెక్ట్ అవుతుంది. ఈ ఆధారాలను తీసివేయడానికి, యాప్ను అన్ఇన్స్టాల్ చేయండి.</translation> <translation id="1807246157184219062">లేత</translation> <translation id="1807528111851433570">మొదటి షీట్</translation> <translation id="180991881384371158">మీ CVC అన్నది మీ కార్డ్ వెనుక భాగాన ఉంటుంది. ఇది సంతకం పెట్టె ఎగువ కుడివైపు ఉండే చివరి 3 అంకెలు.</translation> @@ -1071,7 +1072,6 @@ <translation id="3631244953324577188">బయోమెట్రిక్స్</translation> <translation id="3632503704576938756">స్క్రీన్ షేరింగ్ కొనసాగించబడింది</translation> <translation id="3632892046558972264">స్క్రీన్ షేరింగ్ పాజ్ చేయబడింది</translation> -<translation id="3633035844150606508">మీ Google ఖాతా <ph name="ACCOUNT" />లో అడ్రస్ను సేవ్ చేయండి</translation> <translation id="3633738897356909127">'Chromeను అప్డేట్ చేయి' బటన్, మీ Chrome సెట్టింగ్ల నుండి Chromeను అప్డేట్ చేయడానికి 'Enter'ను నొక్కండి</translation> <translation id="3634530185120165534">ట్రే 5</translation> <translation id="3634567936866541746">మీరు మోసపూరితమైన సైట్లో మీ పాస్వర్డ్ను ఎంటర్ చేశారు. మీ ఖాతాలను సురక్షితంగా ఉంచడానికి, Chrome మీ సేవ్ చేసిన పాస్వర్డ్లను చెక్ చేయాలని సిఫార్సు చేస్తోంది.</translation> @@ -1338,6 +1338,7 @@ <translation id="4270541775497538019">స్టాకర్ 6</translation> <translation id="4274173425554582601">కంప్యూటర్లు & ఎలక్ట్రానిక్స్</translation> <translation id="4275830172053184480">మీ పరికరాన్ని పునఃప్రారంభించండి</translation> +<translation id="4276974990916607331">వద్దు, థ్యాంక్స్</translation> <translation id="4277028893293644418">పాస్వర్డ్ను రీసెట్ చేయి</translation> <translation id="4277937682389409325">లోకల్ అడ్రస్</translation> <translation id="4278390842282768270">అనుమతించబడింది</translation> @@ -1698,6 +1699,7 @@ <translation id="5129534298163637277">నిర్ధారణ డైలాగ్</translation> <translation id="5135404736266831032">అడ్రస్లను నిర్వహించండి...</translation> <translation id="5136841603454277753">సరైన కోడ్ను ఎంటర్ చేయండి</translation> +<translation id="5137761395480718572">ఈ యాప్ Wi-Fi ఆధారాలను ఇన్స్టాల్ చేయడానికి అనుమతిని రిక్వెస్ట్ చేస్తోంది. సెటప్ చేసిన తర్వాత, మీ <ph name="DEVICE_TYPE" /> ఆటోమేటిక్గా పాల్గొనే Wi-Fi నెట్వర్క్లకు కనెక్ట్ అవుతుంది. ఈ ఆధారాలను తీసివేయడానికి, యాప్ను అన్ఇన్స్టాల్ చేయండి. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">ప్రస్తుతానికి వర్చువల్ కార్డ్ అందుబాటులో లేదు, దయచేసి మీ బ్యాంకును సంప్రదించండి</translation> <translation id="5138227688689900538">తక్కువ చూపు</translation> <translation id="5145883236150621069">విధాన ప్రతిస్పందనలో ఎర్రర్ కోడ్ ఉంది</translation> @@ -1754,6 +1756,7 @@ <translation id="5273881944177595304">వెబ్ యాప్లు & ఆన్లైన్ టూల్స్</translation> <translation id="5274025349362408263">పుస్తకాలు & సాహిత్యం</translation> <translation id="5279286380302340275">డౌన్లోడ్లను మేనేజ్ చేయండి</translation> +<translation id="5279453600310613955">వద్దు, థ్యాంక్స్</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">డాక్యుమెంట్ ప్రాపర్టీలు</translation> <translation id="528468243742722775">ముగించు</translation> @@ -2246,6 +2249,7 @@ <translation id="6529173248185917884">సెవెంత్ రోల్</translation> <translation id="6529602333819889595">&తొలగించడాన్ని రిపీట్ చేయి</translation> <translation id="6535751101619004418">కరెన్సీలు & విదేశీ మారకం</translation> +<translation id="6536221421038631327">మీ <ph name="DEVICE_TYPE" /> నుండి Passpoint సబ్స్క్రిప్షన్ను తీసివేయడం వలన అనుబంధిత నెట్వర్క్లు తీసివేయబడతాయి. మీ సబ్స్క్రిప్షన్ ప్లాన్కు మార్పులు చేయడానికి "<ph name="FRIENDLY_NAME" />"ని కాంటాక్ట్ చేయండి. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">మ్యూచువల్ ఫండ్లు</translation> <translation id="6545864417968258051">బ్లూటూత్ స్కానింగ్</translation> <translation id="6547208576736763147">ఎడమవైపు రెండు రంధ్రాలు</translation> @@ -3341,6 +3345,7 @@ <translation id="9219103736887031265">ఇమేజ్లు</translation> <translation id="922152298093051471">Chromeను అనుకూలంగా మార్చండి</translation> <translation id="933712198907837967">డైనర్స్ క్లబ్</translation> +<translation id="934634059306213385">Wi-Fi నెట్వర్క్లను సెటప్ చేయడానికి <ph name="APP_NAME" /> యాప్ను అనుమతించాలా?</translation> <translation id="936602727769022409">మీరు మీ Google ఖాతాకు యాక్సెస్ని కోల్పోవచ్చు. మీరు ఇప్పుడే మీ పాస్వర్డ్ని మార్చాల్సిందిగా Chromium సిఫార్సు చేస్తోంది. మీరు సైన్ ఇన్ చేయాల్సి ఉంటుంది.</translation> <translation id="937457230470581909">జూలు, అక్వేరియమ్లు & సంరక్షణ కేంద్రాలు</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />ఏ డేటా ఉపయోగించబడుతుంది:<ph name="END_BOLD" /> మీ ఇటీవలి బ్రౌజింగ్ హిస్టరీ, అలాగే ఈ పరికరంలో Chromeను ఉపయోగించి మీరు తెరిచిన సైట్ల లిస్ట్ అనే అంశాలపై మీ యాడ్ టాపిక్లు ఆధారపడి ఉంటాయి.</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb index b7ab637..3658c16 100644 --- a/components/strings/components_strings_th.xtb +++ b/components/strings/components_strings_th.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">รายละเอียดบัตรเสมือน</translation> <translation id="1803020234906945288">การรับประทานอาหารเพื่อสุขภาพ</translation> <translation id="1803351196216024260">สามารถขอใช้ไมโครโฟนของคุณได้</translation> +<translation id="1806174020048213474">แอปนี้กำลังขอสิทธิ์ในการติดตั้งข้อมูลเข้าสู่ระบบ Wi-Fi หลังตั้งค่าแล้ว <ph name="DEVICE_TYPE" /> จะเชื่อมต่อกับเครือข่าย Wi-Fi ที่เข้าร่วมโดยอัตโนมัติ หากต้องการนำข้อมูลเข้าสู่ระบบเหล่านี้ออก ให้ถอนการติดตั้งแอป</translation> <translation id="1807246157184219062">สว่าง</translation> <translation id="1807528111851433570">แผ่นงานเริ่มต้น</translation> <translation id="180991881384371158">CVC จะแสดงอยู่บนด้านหลังของบัตร โดยเป็นตัวเลข 3 หลักสุดท้ายที่ด้านขวาบนของช่องลายเซ็น</translation> @@ -1068,7 +1069,6 @@ <translation id="3631244953324577188">ข้อมูลไบโอเมตริก</translation> <translation id="3632503704576938756">กลับมาแชร์หน้าจออีกครั้ง</translation> <translation id="3632892046558972264">หยุดการแชร์หน้าจอชั่วคราว</translation> -<translation id="3633035844150606508">บันทึกที่อยู่ในบัญชี Google <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">ปุ่มอัปเดต Chrome กด Enter เพื่ออัปเดต Chrome จากการตั้งค่า Chrome</translation> <translation id="3634530185120165534">ถาด 5</translation> <translation id="3634567936866541746">คุณเพิ่งใส่รหัสผ่านในเว็บไซต์ที่มีการหลอกลวง Chrome ขอแนะนำให้ตรวจสอบรหัสผ่านที่บันทึกไว้เพื่อรักษาความปลอดภัยของบัญชี</translation> @@ -1335,6 +1335,7 @@ <translation id="4270541775497538019">สแต็กเกอร์ 6</translation> <translation id="4274173425554582601">คอมพิวเตอร์และอิเล็กทรอนิกส์</translation> <translation id="4275830172053184480">รีสตาร์ทอุปกรณ์ของคุณ</translation> +<translation id="4276974990916607331">ไม่เป็นไร</translation> <translation id="4277028893293644418">รีเซ็ตรหัสผ่าน</translation> <translation id="4277937682389409325">ที่อยู่ท้องถิ่น</translation> <translation id="4278390842282768270">อนุญาตแล้ว</translation> @@ -1695,6 +1696,7 @@ <translation id="5129534298163637277">กล่องโต้ตอบการยืนยัน</translation> <translation id="5135404736266831032">จัดการที่อยู่...</translation> <translation id="5136841603454277753">ป้อนรหัสที่ถูกต้อง</translation> +<translation id="5137761395480718572">แอปนี้กำลังขอสิทธิ์ในการติดตั้งข้อมูลเข้าสู่ระบบ Wi-Fi หลังตั้งค่าแล้ว <ph name="DEVICE_TYPE" /> จะเชื่อมต่อกับเครือข่าย Wi-Fi ที่เข้าร่วมโดยอัตโนมัติ หากต้องการนำข้อมูลเข้าสู่ระบบเหล่านี้ออก ให้ถอนการติดตั้งแอป <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">บัตรเสมือนไม่พร้อมใช้งานในขณะนี้ โปรดติดต่อธนาคาร</translation> <translation id="5138227688689900538">แสดงน้อยลง</translation> <translation id="5145883236150621069">มีรหัสข้อผิดพลาดในการตอบกลับนโยบาย</translation> @@ -1751,6 +1753,7 @@ <translation id="5273881944177595304">เว็บแอปและเครื่องมือออนไลน์</translation> <translation id="5274025349362408263">หนังสือและวรรณกรรม</translation> <translation id="5279286380302340275">จัดการการดาวน์โหลด</translation> +<translation id="5279453600310613955">ไม่เป็นไร</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">คุณสมบัติของเอกสาร</translation> <translation id="528468243742722775">สิ้นสุด</translation> @@ -2244,6 +2247,7 @@ <translation id="6529173248185917884">ม้วนกระดาษ 7</translation> <translation id="6529602333819889595">&ทำซ้ำการนำออก</translation> <translation id="6535751101619004418">สกุลเงินและการแลกเปลี่ยนเงินตราต่างประเทศ</translation> +<translation id="6536221421038631327">การนำการสมัครใช้บริการ Passpoint ออกจาก <ph name="DEVICE_TYPE" /> จะเป็นการนำเครือข่ายที่เกี่ยวข้องออกด้วย โปรดติดต่อ "<ph name="FRIENDLY_NAME" />" เพื่อเปลี่ยนแปลงแพ็กเกจการสมัครใช้บริการ <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">กองทุนรวม</translation> <translation id="6545864417968258051">การสแกนหาบลูทูธ</translation> <translation id="6547208576736763147">เจาะรูด้านซ้าย 2 รู</translation> @@ -3340,6 +3344,7 @@ <translation id="9219103736887031265">ภาพ</translation> <translation id="922152298093051471">ปรับแต่ง Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">อนุญาตให้แอป <ph name="APP_NAME" /> ตั้งค่าเครือข่าย Wi-Fi ไหม</translation> <translation id="936602727769022409">คุณอาจสูญเสียสิทธิ์เข้าถึงบัญชี Google ของคุณ Chromium ขอแนะนำให้เปลี่ยนรหัสผ่านทันที ระบบจะขอให้คุณลงชื่อเข้าใช้</translation> <translation id="937457230470581909">สวนสัตว์ พิพิธภัณฑ์สัตว์น้ำ และเขตอนุรักษ์</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />ข้อมูลที่ใช้:<ph name="END_BOLD" /> หัวข้อโฆษณาจะอิงตามประวัติการท่องเว็บล่าสุด ซึ่งเป็นรายการเว็บไซต์ที่คุณเคยเข้าชมโดยใช้ Chrome ในอุปกรณ์นี้</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb index 0d1a07f..4a47393 100644 --- a/components/strings/components_strings_tr.xtb +++ b/components/strings/components_strings_tr.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">Biyometri</translation> <translation id="3632503704576938756">Ekran paylaşımı devam ettiriliyor</translation> <translation id="3632892046558972264">Ekran paylaşımı duraklatıldı</translation> -<translation id="3633035844150606508">Adresi Google Hesabınıza (<ph name="ACCOUNT" />) kaydedin</translation> <translation id="3633738897356909127">Chrome'u güncelle düğmesi, Chrome ayarlarınızdan Chrome'u güncellemek için Enter'a basın</translation> <translation id="3634530185120165534">Tepsi 5</translation> <translation id="3634567936866541746">Az önce şifrenizi yanıltıcı bir sitede girdiniz. Chrome, hesaplarınızın güvenliğini sağlamak için kayıtlı şifrelerinizi kontrol etmenizi öneriyor.</translation> @@ -2659,7 +2658,7 @@ <translation id="7535087603100972091">Değer</translation> <translation id="7537536606612762813">Zorunlu</translation> <translation id="7542995811387359312">Bu form güvenli bağlantı kullanmadığından kredi kartı bilgilerini otomatik doldurma özelliği devre dışı bırakıldı.</translation> -<translation id="7543525346216957623">Ebeveyninize sorun</translation> +<translation id="7543525346216957623">Anne veya babanıza sorun</translation> <translation id="7546409722674205727"><ph name="APP_NAME" /> başlatılıyor</translation> <translation id="7548892272833184391">Bağlantı hatalarını düzeltme</translation> <translation id="7549584377607005141">Bu Web sayfasının düzgün şekilde görüntülenmesi için, önceden girdiğiniz veriler gerekiyor. Bu verileri tekrar gönderebilirsiniz, ancak bunu yaptığınızda bu sayfanın daha önce gerçekleştirdiği işlemler de tekrar edilir.</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb index 52eb968..85892359 100644 --- a/components/strings/components_strings_uk.xtb +++ b/components/strings/components_strings_uk.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Дані віртуальної картки</translation> <translation id="1803020234906945288">Здорове харчування</translation> <translation id="1803351196216024260">Може просити доступ до мікрофона</translation> +<translation id="1806174020048213474">Цей додаток запитує дозвіл установити облікові дані Wi-Fi. Після налаштування ваш пристрій <ph name="DEVICE_TYPE" /> автоматично підключатиметься до відповідних мереж Wi-Fi. Щоб вилучити ці облікові дані, видаліть додаток.</translation> <translation id="1807246157184219062">Світла</translation> <translation id="1807528111851433570">Перший аркуш</translation> <translation id="180991881384371158">Код CVC вказується на зворотній стороні картки. Це – останні 3 цифри, розташовані вгорі праворуч поля підпису.</translation> @@ -1069,7 +1070,6 @@ <translation id="3631244953324577188">Біометрія</translation> <translation id="3632503704576938756">Показ екрана відновлено</translation> <translation id="3632892046558972264">Показ екрана призупинено</translation> -<translation id="3633035844150606508">Зберегти адресу у вашому обліковому записі Google <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Кнопка "Оновити Chrome"; натисніть Enter, щоб оновити веб-переглядач Chrome у його налаштуваннях</translation> <translation id="3634530185120165534">Лоток 5</translation> <translation id="3634567936866541746">Щойно ви ввели пароль на оманливому сайті. Щоб захистити ваші облікові записи, Chrome радить перевірити збережені паролі.</translation> @@ -1336,6 +1336,7 @@ <translation id="4270541775497538019">Накопичувач 6</translation> <translation id="4274173425554582601">Комп’ютери й електроніка</translation> <translation id="4275830172053184480">Перезапустіть пристрій</translation> +<translation id="4276974990916607331">Ні, дякую</translation> <translation id="4277028893293644418">Скинути пароль</translation> <translation id="4277937682389409325">Місцева адреса</translation> <translation id="4278390842282768270">Дозволено</translation> @@ -1696,6 +1697,7 @@ <translation id="5129534298163637277">Вікно підтвердження</translation> <translation id="5135404736266831032">Керувати адресами…</translation> <translation id="5136841603454277753">Введіть правильний код</translation> +<translation id="5137761395480718572">Цей додаток запитує дозвіл установити облікові дані Wi-Fi. Після налаштування ваш пристрій <ph name="DEVICE_TYPE" /> автоматично підключатиметься до відповідних мереж Wi-Fi. Щоб вилучити ці облікові дані, видаліть додаток. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Віртуальна картка недоступна. Зв’яжіться зі своїм банком.</translation> <translation id="5138227688689900538">Показати менше</translation> <translation id="5145883236150621069">Відповідь правила містить код помилки</translation> @@ -1736,6 +1738,8 @@ <translation id="5234764350956374838">Закрити</translation> <translation id="5239623327352565343">Доступ до геоданих дозволено</translation> <translation id="5242889659037569123">Багаж і аксесуари для подорожей</translation> +<translation id="5244732203286792411">Завантаження… + Трохи зачекайте.</translation> <translation id="5250209940322997802">"Під’єднайте пристрій до мережі"</translation> <translation id="52517543715119994">Докладніше про функції Chrome</translation> <translation id="5251803541071282808">Хмара</translation> @@ -1750,6 +1754,7 @@ <translation id="5273881944177595304">Веб-додатки й інструменти для роботи в Інтернеті</translation> <translation id="5274025349362408263">Книги й література</translation> <translation id="5279286380302340275">Керувати завантаженнями</translation> +<translation id="5279453600310613955">Ні, дякую</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Властивості документа</translation> <translation id="528468243742722775">Завершити</translation> @@ -2242,6 +2247,7 @@ <translation id="6529173248185917884">Сьомий рулон</translation> <translation id="6529602333819889595">&Повторити видалення</translation> <translation id="6535751101619004418">Курси обміну валют</translation> +<translation id="6536221421038631327">Якщо вилучити підписку Passpoint із пристрою <ph name="DEVICE_TYPE" />, буде вилучено зв’язані мережі. Зв’яжіться з компанією "<ph name="FRIENDLY_NAME" />" і внесіть зміни в план підписки. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Взаємні фонди</translation> <translation id="6545864417968258051">Пошук пристроїв Bluetooth</translation> <translation id="6547208576736763147">Пробити два отвори ліворуч</translation> @@ -3338,6 +3344,7 @@ <translation id="9219103736887031265">Зображення</translation> <translation id="922152298093051471">Налаштувати Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">Дозволити додатку <ph name="APP_NAME" /> налаштовувати мережі Wi-Fi?</translation> <translation id="936602727769022409">Ви можете втратити доступ до облікового запису Google. Chromium радить змінити пароль. Вам буде запропоновано ввійти в обліковий запис.</translation> <translation id="937457230470581909">Зоопарки, акваріуми й заповідники</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Які дані використовуються.<ph name="END_BOLD" /> Теми оголошень визначаються на основі вашої нещодавньої історії веб-перегляду (тобто переліку сайтів, які ви відвідали через Chrome на цьому пристрої).</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb index ff32e7c1..65e915f 100644 --- a/components/strings/components_strings_ur.xtb +++ b/components/strings/components_strings_ur.xtb
@@ -365,6 +365,7 @@ <translation id="1801812870656502108">ورچوئل کارڈ کی تفصیلات</translation> <translation id="1803020234906945288">صحت بخش کھانا</translation> <translation id="1803351196216024260">سائٹ آپ کا مائیکروفون استعمال کرنے کیلئے پوچھ سکتی ہے</translation> +<translation id="1806174020048213474">یہ ایپ Wi-Fi اسناد کو انسٹال کرنے کی اجازت کی درخواست کر رہی ہے۔ سیٹ اپ کے بعد، آپ کا <ph name="DEVICE_TYPE" /> خودکار طور پر شرکت کرنے والے WiFi نیٹ ورکس سے منسلک ہو جائے گا۔ ان اسناد کو ہٹانے کے لیے، ایپ کو اَن انسٹال کریں۔</translation> <translation id="1807246157184219062">روشنی</translation> <translation id="1807528111851433570">ابتدائی شیٹ</translation> <translation id="180991881384371158">آپ کا CVC آپ کے کارڈ کی پشت پر موجود ہے۔ یہ دستخظ کے باکس کے اوپر دائیں جانب آخری 3 ہندسے ہیں۔</translation> @@ -1071,7 +1072,6 @@ <translation id="3631244953324577188">بایو میٹرکس</translation> <translation id="3632503704576938756">اسکرین کا اشتراک دوبارہ شروع کیا گیا</translation> <translation id="3632892046558972264">اسکرین کا اشتراک موقوف کر دیا گیا</translation> -<translation id="3633035844150606508">اپنے Google اکاؤنٹ، <ph name="ACCOUNT" /> میں پتہ محفوظ کریں</translation> <translation id="3633738897356909127">Chrome اپ ڈیٹ کریں بٹن، اپنی Chrome کی ترتیبات سے Chrome اپ ڈیٹ کرنے کے لیے اینٹر دبائیں</translation> <translation id="3634530185120165534">ٹرے 5</translation> <translation id="3634567936866541746">آپ نے ابھی ایک پُرفریب سائٹ پر اپنا پاس ورڈ درج کیا ہے۔ اپنے اکاؤنٹس محفوظ کرنے کے لیے، Chrome آپ کے محفوظ کردہ پاس ورڈز کو چیک کرنے کی تجویز کرتا ہے۔</translation> @@ -1338,6 +1338,7 @@ <translation id="4270541775497538019">اسٹیکر 6</translation> <translation id="4274173425554582601">کمپیوٹرز اور الیکٹرانکس</translation> <translation id="4275830172053184480">اپنا آلہ دوبارہ شروع کریں</translation> +<translation id="4276974990916607331">نہیں شکریہ</translation> <translation id="4277028893293644418">پاس ورڈ ری سیٹ کریں</translation> <translation id="4277937682389409325">مقامی پتہ</translation> <translation id="4278390842282768270">اجازت یافتہ</translation> @@ -1698,6 +1699,7 @@ <translation id="5129534298163637277">تصدیقی ڈائیلاگ</translation> <translation id="5135404736266831032">پتوں کا نظم کریں...</translation> <translation id="5136841603454277753">درست کوڈ درج کریں</translation> +<translation id="5137761395480718572">یہ ایپ Wi-Fi اسناد کو انسٹال کرنے کی اجازت کی درخواست کر رہی ہے۔ سیٹ اپ کے بعد، آپ کا <ph name="DEVICE_TYPE" /> خودکار طور پر شرکت کرنے والے WiFi نیٹ ورکس سے منسلک ہو جائے گا۔ ان اسناد کو ہٹانے کے لیے، ایپ کو اَن انسٹال کریں۔ <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">ورچوئل کارڈ ابھی دستیاب نہیں ہے، براہ کرم اپنے بینک سے رابطہ کریں</translation> <translation id="5138227688689900538">کم دکھائیں</translation> <translation id="5145883236150621069">خرابی کوڈ پالیسی جواب میں موجود ہے</translation> @@ -1754,6 +1756,7 @@ <translation id="5273881944177595304">ویب ایپس اور آن لائن ٹولز</translation> <translation id="5274025349362408263">کتابیں اور ادب</translation> <translation id="5279286380302340275">ڈاؤن لوڈز کا نظم کریں</translation> +<translation id="5279453600310613955">نہیں شکریہ</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">دستاویز کی خصوصیات</translation> <translation id="528468243742722775">اختتام</translation> @@ -1792,6 +1795,7 @@ <translation id="5344579389779391559">یہ صفحہ آپ سے رقم چارج کرنے کی کوشش کر سکتا ہے</translation> <translation id="5347645913823149105">Chrome بٹن میں فونٹس کو حسب ضرورت بنائیں، Chrome میں فونٹ کے سائز کو اور ٹائپ فیسز کو حسب ضرورت بنانے کے لیے اینٹر دبائیں</translation> <translation id="5355557959165512791">آپ ابھی <ph name="SITE" /> ملاحظہ نہیں کر سکتے کیونکہ اس کے سرٹیفکیٹ کو کالعدم قرار دے دیا گیا ہے۔ نیٹ ورک کی خرابیاں اور حملے عام طور پر عارضی ہوتے ہیں، لہذا یہ صفحہ شاید بعد میں کام کرے گا۔</translation> +<translation id="5356345925629253198">آپ پورے Google پروڈکٹس میں محفوظ کردہ پتے استعمال کر سکتے ہیں۔ یہ پتہ آپ کے Google اکاؤنٹ (<ph name="ACCOUNT" />) میں محفوظ ہو جائے گا۔</translation> <translation id="5357848622083956825">ویژوئل آرٹ اور ڈیزائن</translation> <translation id="536296301121032821">پالیسی کی ترتیبات کو اسٹور کرنے میں ناکام</translation> <translation id="5363309033720083897">آپ کے منتظم کی جانب سے اجازت یافتہ سیریل پورٹ</translation> @@ -2247,6 +2251,7 @@ <translation id="6529173248185917884">ساتواں رول</translation> <translation id="6529602333819889595">&دوبارہ حذف کریں</translation> <translation id="6535751101619004418">کرنسیاں اور غیر ملکی زر مبادلہ</translation> +<translation id="6536221421038631327">آپ کے <ph name="DEVICE_TYPE" /> سے پاس پوائنٹ سبسکرپشن ہٹانے سے متعلقہ نیٹ ورکس ہٹ جائیں گے۔ اپنے سبسکرپشن پلان میں تبدیلیاں کرنے کے لیے "<ph name="FRIENDLY_NAME" />" سے رابطہ کریں۔ <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">میوچوئل فنڈز</translation> <translation id="6545864417968258051">بلوٹوتھ اسکیننگ</translation> <translation id="6547208576736763147">بائیں طرف دُہرا سوراخ</translation> @@ -3343,6 +3348,7 @@ <translation id="9219103736887031265">تصاویر</translation> <translation id="922152298093051471">Chrome کو حسب ضرورت بنائیں</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385"><ph name="APP_NAME" /> ایپ کو WiFi نیٹ ورکس سیٹ اپ کرنے کی اجازت دیں؟</translation> <translation id="936602727769022409">آپ اپنے Google اکاؤنٹ تک رسائی سے محروم ہو سکتے ہیں۔ Chromium تجویز کرتا ہے کہ آپ ابھی اپنا پاس ورڈ تبدیل کریں۔ آپ سے سائن ان کرنے کو کہا جائے گا۔</translation> <translation id="937457230470581909">چڑیا گھر، ماہی خانے اور ذخائر</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />کون سا ڈیٹا استعمال کیا جاتا ہے:<ph name="END_BOLD" /> آپ کے اشتہار کے موضوعات آپ کی حالیہ براؤزنگ کی سرگزشت، ان سائٹس کی فہرست پر مبنی ہیں جو آپ اس آلے پر Chrome کا استعمال کر کے ملاحظہ کر چکے ہیں۔</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb index f0d1a58..59e3021b 100644 --- a/components/strings/components_strings_uz.xtb +++ b/components/strings/components_strings_uz.xtb
@@ -1065,7 +1065,6 @@ <translation id="3631244953324577188">Biometrik tizimlar</translation> <translation id="3632503704576938756">Ekran namoyishi davom ettirildi</translation> <translation id="3632892046558972264">Ekran namoyishi pauzalandi</translation> -<translation id="3633035844150606508">Manzilni Google hisobingizga saqlang (<ph name="ACCOUNT" />)</translation> <translation id="3633738897356909127">Chromeni yangilash tugmasi, Chrome sozlamalari orqali Chromeni yangilash uchun Enter tugmasini bosing</translation> <translation id="3634530185120165534">Tarnov 5</translation> <translation id="3634567936866541746">Hozirgina shubhali saytda parol kiritdingiz. Hisoblar himoyasi uchun Chrome saqlangan parollaringizni tekshirishni tavsiya qiladi.</translation> @@ -1734,6 +1733,8 @@ <translation id="5234764350956374838">Yopish</translation> <translation id="5239623327352565343">Joylashuv axborotiga kirishga ruxsat berilgan</translation> <translation id="5242889659037569123">Chamadon va sayohat aksessuarlari</translation> +<translation id="5244732203286792411">Yuklanmoqda… + Bu bir daqiqa vaqt olishi mumkin.</translation> <translation id="5250209940322997802">“Tarmoqqa ulanish”</translation> <translation id="52517543715119994">Chrome funksiyalari bilan tanishuv</translation> <translation id="5251803541071282808">Bulut</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index 5fa5448..957ec507 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -667,7 +667,7 @@ <translation id="257674075312929031">Nhóm</translation> <translation id="2576880857912732701">Nút quản lý chế độ cài đặt bảo mật, nhấn phím Enter để quản lý tính năng Duyệt web an toàn và nhiều tính năng khác trong phần Cài đặt của Chrome</translation> <translation id="2586657967955657006">Bảng nhớ tạm</translation> -<translation id="2587841377698384444">ID API thư mục:</translation> +<translation id="2587841377698384444">Mã API Thư mục:</translation> <translation id="2594318783181750337">Chế độ xem nhanh trên web:</translation> <translation id="2595719060046994702">Thiết bị và tài khoản này không thuộc quyền quản lý của một công ty hoặc tổ chức khác.</translation> <translation id="2596415276201385844">Để thiết lập kết nối an toàn, bạn cần đặt thời gian đúng cho đồng hồ. Nguyên nhân là do chứng chỉ mà các trang web dùng để tự nhận dạng chỉ có hiệu lực trong khoảng thời gian cụ thể. Vì đồng hồ trên thiết bị của bạn không đúng nên Chrome không thể xác minh các chứng chỉ này.</translation> @@ -1070,7 +1070,6 @@ <translation id="3631244953324577188">Sinh trắc học</translation> <translation id="3632503704576938756">Tính năng chia sẻ màn hình đã được tiếp tục</translation> <translation id="3632892046558972264">Tính năng chia sẻ màn hình đã bị tạm dừng</translation> -<translation id="3633035844150606508">Lưu địa chỉ trong Tài khoản Google <ph name="ACCOUNT" /> của bạn</translation> <translation id="3633738897356909127">Nút Cập nhật Chrome, nhấn phím Enter để cập nhật Chrome trong phần cài đặt của Chrome</translation> <translation id="3634530185120165534">Khay 5</translation> <translation id="3634567936866541746">Bạn vừa nhập mật khẩu vào một trang web lừa đảo. Để bảo mật tài khoản của mình, bạn nên kiểm tra các mật khẩu đã lưu trên Chrome.</translation> @@ -1739,6 +1738,8 @@ <translation id="5234764350956374838">Bỏ qua</translation> <translation id="5239623327352565343">Cho phép truy cập thông tin vị trí</translation> <translation id="5242889659037569123">Hành lý và phụ kiện du lịch</translation> +<translation id="5244732203286792411">Đang tải... + Quá trình này có thể mất ít phút.</translation> <translation id="5250209940322997802">"Kết nối với mạng"</translation> <translation id="52517543715119994">Tìm hiểu các tính năng của Chrome</translation> <translation id="5251803541071282808">Đám mây</translation> @@ -1781,7 +1782,7 @@ <translation id="5323105697514565458"><ph name="FRIENDLY_MATCH_TEXT" />, <ph name="MATCH_POSITION" /> / <ph name="NUM_MATCHES" /></translation> <translation id="5329858041417644019">Trình duyệt của bạn không được quản lý</translation> <translation id="5332219387342487447">Phương thức giao hàng</translation> -<translation id="5332769172018416402">Yêu cầu qua thông báo</translation> +<translation id="5332769172018416402">Nhắn tin để hỏi</translation> <translation id="5333022057423422993">Chrome phát hiện thấy mật khẩu bạn vừa sử dụng bị lộ trong một sự cố rò rỉ dữ liệu. Để bảo mật tài khoản, bạn nên kiểm tra các mật khẩu mình đã lưu.</translation> <translation id="5334013548165032829">Nhật ký hệ thống chi tiết</translation> <translation id="5334145288572353250">Lưu địa chỉ?</translation> @@ -2836,7 +2837,7 @@ <translation id="7951415247503192394">(32 bit)</translation> <translation id="7952192831285741665">EDP châu Âu</translation> <translation id="7953569069500808819">May viền ở trên cùng</translation> -<translation id="7955105108888461311">Hỏi trực tiếp</translation> +<translation id="7955105108888461311">Gặp trực tiếp để hỏi</translation> <translation id="7956713633345437162">Dấu trang trên thiết bị di động</translation> <translation id="7961015016161918242">Không bao giờ</translation> <translation id="7962467575542381659">Thiết bị trên nền tảng</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index 660a127..d5230c8 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">虚拟卡详细信息</translation> <translation id="1803020234906945288">健康饮食</translation> <translation id="1803351196216024260">可以询问能否使用您的麦克风</translation> +<translation id="1806174020048213474">此应用请求您授权安装 Wi-Fi 凭据。设置完毕后,您的<ph name="DEVICE_TYPE" />将会自动连接到参与的 Wi-Fi 网络。如需移除这些凭据,请卸载该应用。</translation> <translation id="1807246157184219062">浅色调</translation> <translation id="1807528111851433570">起始工作表</translation> <translation id="180991881384371158">您的银行卡验证码 (CVC) 位于银行卡的背面,即签名框右上角的最后 3 位数字。</translation> @@ -1065,7 +1066,6 @@ <translation id="3631244953324577188">生物识别</translation> <translation id="3632503704576938756">屏幕共享已恢复</translation> <translation id="3632892046558972264">屏幕共享已暂停</translation> -<translation id="3633035844150606508">将地址保存到您的 Google 帐号 <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">“更新 Chrome”按钮,按 Enter 键即可前往 Chrome 设置以更新 Chrome</translation> <translation id="3634530185120165534">纸匣 5</translation> <translation id="3634567936866541746">您刚刚在一个诈骗网站中输入了密码。为保护您的帐号安全,Chrome 建议检查您已保存的密码。</translation> @@ -1332,6 +1332,7 @@ <translation id="4270541775497538019">堆叠出纸器 6</translation> <translation id="4274173425554582601">计算机与电子产品</translation> <translation id="4275830172053184480">重启您的设备</translation> +<translation id="4276974990916607331">不用了</translation> <translation id="4277028893293644418">重置密码</translation> <translation id="4277937682389409325">本地地址</translation> <translation id="4278390842282768270">允许</translation> @@ -1692,6 +1693,7 @@ <translation id="5129534298163637277">确认对话框</translation> <translation id="5135404736266831032">管理地址…</translation> <translation id="5136841603454277753">请输入正确的代码</translation> +<translation id="5137761395480718572">此应用请求您授权安装 Wi-Fi 凭据。设置完毕后,您的<ph name="DEVICE_TYPE" />将会自动连接到参与的 Wi-Fi 网络。如需移除这些凭据,请卸载该应用。<ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">暂时无法使用虚拟卡,请联系您的发卡行</translation> <translation id="5138227688689900538">收起</translation> <translation id="5145883236150621069">策略响应中存在错误代码</translation> @@ -1748,6 +1750,7 @@ <translation id="5273881944177595304">Web 应用与在线工具</translation> <translation id="5274025349362408263">图书与文学</translation> <translation id="5279286380302340275">管理下载内容</translation> +<translation id="5279453600310613955">不用了</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">文档属性</translation> <translation id="528468243742722775">结束</translation> @@ -2239,6 +2242,7 @@ <translation id="6529173248185917884">第 7 卷</translation> <translation id="6529602333819889595">恢复删除(&R)</translation> <translation id="6535751101619004418">货币与外汇兑换</translation> +<translation id="6536221421038631327">从<ph name="DEVICE_TYPE" />移除 Passpoint 订阅后,关联的网络也会一并移除。如需更改订阅方案,请与“<ph name="FRIENDLY_NAME" />”联系。<ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">共同基金</translation> <translation id="6545864417968258051">蓝牙扫描</translation> <translation id="6547208576736763147">双孔(左侧)</translation> @@ -3335,6 +3339,7 @@ <translation id="9219103736887031265">图片</translation> <translation id="922152298093051471">自定义 Chrome</translation> <translation id="933712198907837967">Diners Club</translation> +<translation id="934634059306213385">要允许“<ph name="APP_NAME" />”应用设置 Wi-Fi 网络吗?</translation> <translation id="936602727769022409">您可能会无法再访问自己的 Google 帐号。Chromium 建议您立即更改密码。系统会要求您登录。</translation> <translation id="937457230470581909">动物园、水族馆与保护区</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />会使用哪些数据<ph name="END_BOLD" />:为确定您的广告主题,系统会使用您近期的浏览记录,即您在此设备上使用 Chrome 访问过的网站的列表。</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb index e542f891..7159f1b 100644 --- a/components/strings/components_strings_zh-HK.xtb +++ b/components/strings/components_strings_zh-HK.xtb
@@ -364,7 +364,7 @@ <translation id="1801812870656502108">虛擬卡詳情</translation> <translation id="1803020234906945288">健康飲食</translation> <translation id="1803351196216024260">可要求使用麥克風</translation> -<translation id="1806174020048213474">這個應用程式要求你授權安裝 Wi-Fi 憑證。設定完成後,<ph name="DEVICE_TYPE" /> 將自動連線到設定好的 Wi-Fi 網路。如要移除這些憑證,請解除安裝應用程式。</translation> +<translation id="1806174020048213474">此應用程式現要求您授權安裝 Wi-Fi 憑證。設定完成後,您的 <ph name="DEVICE_TYPE" /> 將會自動連線至參與的 Wi-Fi 網絡。如要移除這些憑證,請解除安裝該應用程式。</translation> <translation id="1807246157184219062">淺色</translation> <translation id="1807528111851433570">起始工作表</translation> <translation id="180991881384371158">CVC 喺信用卡嘅背面,即係簽名欄右上方嘅最後 3 位數字。</translation> @@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">生物識別</translation> <translation id="3632503704576938756">已繼續分享螢幕畫面</translation> <translation id="3632892046558972264">已暫停分享螢幕畫面</translation> -<translation id="3633035844150606508">將地址儲存在 Google 帳戶 (<ph name="ACCOUNT" />) 中</translation> <translation id="3633738897356909127">更新 Chrome 按鈕,㩒一下 Enter 鍵就可以透過 Chrome 設定更新 Chrome</translation> <translation id="3634530185120165534">紙匣 5</translation> <translation id="3634567936866541746">您剛才在欺詐網站上輸入了密碼。為確保帳戶安全,Chrome 建議您檢查已儲存的密碼。</translation> @@ -1697,7 +1696,7 @@ <translation id="5129534298163637277">確認對話框</translation> <translation id="5135404736266831032">管理地址…</translation> <translation id="5136841603454277753">請輸入正確的驗證碼</translation> -<translation id="5137761395480718572">這個應用程式要求你授權安裝 Wi-Fi 憑證。設定完成後,<ph name="DEVICE_TYPE" /> 將自動連線到設定好的 Wi-Fi 網路。如要移除這些憑證,請解除安裝應用程式。<ph name="LEARN_MORE" /></translation> +<translation id="5137761395480718572">此應用程式現要求您授權安裝 Wi-Fi 憑證。設定完成後,您的 <ph name="DEVICE_TYPE" /> 將會自動連線至參與的 Wi-Fi 網絡。如要移除這些憑證,請解除安裝該應用程式。<ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">目前無法使用虛擬卡,請聯絡您的銀行</translation> <translation id="5138227688689900538">顯示較少</translation> <translation id="5145883236150621069">政策回應中存在錯誤代碼</translation> @@ -1793,6 +1792,7 @@ <translation id="5344579389779391559">此網頁可能會向您收取費用</translation> <translation id="5347645913823149105">自訂 Chrome 字型按鈕,㩒一下 Enter 鍵就可以自訂 Chrome 嘅字型大小同字體</translation> <translation id="5355557959165512791">您目前無法瀏覽 <ph name="SITE" />,因為此網站的憑證已被撤銷。網絡錯誤和攻擊行為通常是暫時性問題,所以此網頁可能稍後就能正常使用。</translation> +<translation id="5356345925629253198">您可在不同的 Google 產品中使用已儲存的地址。此地址將會儲存在您的 Google 帳戶 (<ph name="ACCOUNT" />) 中。</translation> <translation id="5357848622083956825">視覺藝術及設計</translation> <translation id="536296301121032821">無法儲存政策設定</translation> <translation id="5363309033720083897">管理員允許的序列連接埠</translation> @@ -2247,7 +2247,7 @@ <translation id="6529173248185917884">第七卷</translation> <translation id="6529602333819889595">重做刪除(&R)</translation> <translation id="6535751101619004418">貨幣和外幣兌換</translation> -<translation id="6536221421038631327">從 <ph name="DEVICE_TYPE" /> 移除 Passpoint 訂閱後,相關聯的網路也會一併移除。如要變更訂閱方案,請聯絡「<ph name="FRIENDLY_NAME" />」。<ph name="LEARN_MORE" /></translation> +<translation id="6536221421038631327">從 <ph name="DEVICE_TYPE" /> 移除 Passpoint 訂閱後,系統將一併移除相關網絡。如要變更訂閱計劃,請聯絡「<ph name="FRIENDLY_NAME" />」。<ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">互惠基金</translation> <translation id="6545864417968258051">藍牙掃瞄</translation> <translation id="6547208576736763147">雙孔 (左側)</translation> @@ -3343,7 +3343,7 @@ <translation id="9219103736887031265">圖片</translation> <translation id="922152298093051471">自訂 Chrome</translation> <translation id="933712198907837967">Diners Club</translation> -<translation id="934634059306213385">要允許「<ph name="APP_NAME" />」應用程式設定 Wi-Fi 網路嗎?</translation> +<translation id="934634059306213385">要允許「<ph name="APP_NAME" />」應用程式設定 Wi-Fi 網絡嗎?</translation> <translation id="936602727769022409">您可能會失去 Google 帳戶存取權。Chromium 建議您立即變更密碼。系統會要求您登入。</translation> <translation id="937457230470581909">動物園、水族館和保護區</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />系統會使用什麼資料:<ph name="END_BOLD" />系統會根據您最近的瀏覽記錄 (即在此裝置上使用 Chrome 瀏覽的網站清單) 顯示廣告主題。</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb index 1e1e3a1..9c70658f 100644 --- a/components/strings/components_strings_zh-TW.xtb +++ b/components/strings/components_strings_zh-TW.xtb
@@ -1069,7 +1069,6 @@ <translation id="3631244953324577188">生物特徵辨識</translation> <translation id="3632503704576938756">已繼續分享螢幕畫面</translation> <translation id="3632892046558972264">已暫停分享螢幕畫面</translation> -<translation id="3633035844150606508">將地址儲存到 Google 帳戶 (<ph name="ACCOUNT" />) 中</translation> <translation id="3633738897356909127">「更新 Chrome」按鈕,按下 Enter 鍵即可透過 Chrome 設定來更新 Chrome</translation> <translation id="3634530185120165534">紙匣 5</translation> <translation id="3634567936866541746">你剛才在詐騙網站上輸入了密碼。為確保帳戶安全,Chrome 建議你檢查已儲存的密碼。</translation> @@ -1793,6 +1792,7 @@ <translation id="5344579389779391559">進入接下來的頁面後,系統可能會向您收費</translation> <translation id="5347645913823149105">「自訂 Chrome 中的字型」按鈕;按下 Enter 鍵即可自訂 Chrome 中的字型大小和字體</translation> <translation id="5355557959165512791">目前無法造訪 <ph name="SITE" />,因為這個網站的憑證已遭撤銷。網路錯誤和攻擊行為通常是暫時性的,因此這個網頁可能稍後就會恢復正常狀態。</translation> +<translation id="5356345925629253198">你可以在各項 Google 產品中使用已儲存的地址。這個地址將儲存至你的 Google 帳戶 (<ph name="ACCOUNT" />) 中。</translation> <translation id="5357848622083956825">視覺藝術與設計</translation> <translation id="536296301121032821">無法儲存政策設定</translation> <translation id="5363309033720083897">管理員允許使用的序列埠</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb index 2003991..6d6fe55 100644 --- a/components/strings/components_strings_zu.xtb +++ b/components/strings/components_strings_zu.xtb
@@ -364,6 +364,7 @@ <translation id="1801812870656502108">Imininingwane yekhadi le-virtual</translation> <translation id="1803020234906945288">Ukudla okunempilo</translation> <translation id="1803351196216024260">Ingase icele ukusebenzisa imakrofoni yakho</translation> +<translation id="1806174020048213474">Le app icela imvume yokufaka izimfanelo ze-Wi-Fi. Ngemuva kokusetha, i-<ph name="DEVICE_TYPE" /> yakho izoxhuma ngokuzenzakalelayo ukubamba iqhaza kumanethiwekhi we-WiFi. Ukuze ususe lezi zimfanelo, khipha i-app.</translation> <translation id="1807246157184219062">Okukhanyayo</translation> <translation id="1807528111851433570">Ishidi lokuqalisa</translation> <translation id="180991881384371158">I-CVC yakho ingemuva kwekhadi lakho. Izinombolo ezi-3 zokugcina phezulu kwesokudla sebhokisi lesiginesha.</translation> @@ -1066,7 +1067,6 @@ <translation id="3631244953324577188">I-biometrics</translation> <translation id="3632503704576938756">Ukwabelana kwesikrini kuyaqhubeka</translation> <translation id="3632892046558972264">Ukwabelana kwesikrini kumisiwe</translation> -<translation id="3633035844150606508">Londoloza ikheli ku-Google Account yakho, <ph name="ACCOUNT" /></translation> <translation id="3633738897356909127">Inkinoho yokubuyekekeza ye-Chrome, cindezela u-Enter ukuze ubuyekeze i-Chrome kusuka kumasethingi akho e-Chrome</translation> <translation id="3634530185120165534">Ithileyi elingu-5</translation> <translation id="3634567936866541746">Usanda kufaka iphasiwedi yakho kusayithi elikhohlisayo. Ukuze uvikele ama-akhawunti akho, i-Chrome incoma ukuthi uhlole amaphasiwedi akho alondoloziwe.</translation> @@ -1333,6 +1333,7 @@ <translation id="4270541775497538019">Isitaki esingu-6</translation> <translation id="4274173425554582601">Amakhompyutha nezinto zikagesi</translation> <translation id="4275830172053184480">Qalisa kabusha idivayisi yakho</translation> +<translation id="4276974990916607331">Cha ngiyabonga</translation> <translation id="4277028893293644418">Setha kabusha iphasiwedi</translation> <translation id="4277937682389409325">Ikheli lendawo</translation> <translation id="4278390842282768270">Kuvunyelwe</translation> @@ -1693,6 +1694,7 @@ <translation id="5129534298163637277">Ibhokisi lokuqinisekisa</translation> <translation id="5135404736266831032">Phatha amakheli...</translation> <translation id="5136841603454277753">Faka ikhodi efanele</translation> +<translation id="5137761395480718572">Le app icela imvume yokufaka izimfanelo ze-Wi-Fi. Ngemuva kokusetha, i-<ph name="DEVICE_TYPE" /> yakho izoxhuma ngokuzenzakalelayo ukubamba iqhaza kumanethiwekhi we-WiFi. Ukuze ususe lezi zimfanelo, khipha i-app. <ph name="LEARN_MORE" /></translation> <translation id="5138014172396933048">Ikhadi le-virtual alitholakali okwamanje, sicela uxhumane nebhange lakho</translation> <translation id="5138227688689900538">Bonisa okuncane</translation> <translation id="5145883236150621069">Ikhodi yephutha ekhona kumpendulo yenqubomgomo</translation> @@ -1749,6 +1751,7 @@ <translation id="5273881944177595304">Amathuluzi wezinhlelo zokusebenza zewebhu ne-intanethi</translation> <translation id="5274025349362408263">Izincwadi nokokufunda</translation> <translation id="5279286380302340275">Phatha okudawunilodwayo</translation> +<translation id="5279453600310613955">Cha ngiyabonga</translation> <translation id="5283044957620376778">B1</translation> <translation id="5284295735376057059">Izakhiwo zedokhumenti</translation> <translation id="528468243742722775">Qeda</translation> @@ -2241,6 +2244,7 @@ <translation id="6529173248185917884">Umqulu Wesikhombisa</translation> <translation id="6529602333819889595">&Yenza futhi ukususa</translation> <translation id="6535751101619004418">Kwezimali nokushintsha izimali zakwamanye amazwe</translation> +<translation id="6536221421038631327">Ukususa okubhaliselwe kwe-Passpoint ku-<ph name="DEVICE_TYPE" /> yakho kuzosusa amanethiwekhi ahlobene. Xhumana ne-"<ph name="FRIENDLY_NAME" />" ukuze wenze izinguquko ohlelweni lwakho lokubhalisa. <ph name="LEARN_MORE" /></translation> <translation id="6540534463546766581">Izimali ezilinganayo</translation> <translation id="6545864417968258051">Ukuskena kwe-Bluetooth</translation> <translation id="6547208576736763147">Ukushay okubili kwesokunxele</translation> @@ -3336,6 +3340,7 @@ <translation id="9219103736887031265">Izithombe</translation> <translation id="922152298093051471">Yenza i-Chrome ngokwezifiso</translation> <translation id="933712198907837967">I-Diners Club</translation> +<translation id="934634059306213385">Vumela i-app ye-<ph name="APP_NAME" /> ukuze usethe amanethiwekhi we-Wi-Fi?</translation> <translation id="936602727769022409">Ungalahlekelwa wukufinyelela ku-akhawunti yakho ye-Google. I-Chromium incoma ukuthi ushintshe iphasiwedi yakho manje. Uzocelwa ukuthi ungene ngemvume.</translation> <translation id="937457230470581909">Ama-zoo, ama-aquarium nezigcini</translation> <translation id="937804173274050966"><ph name="BEGIN_BOLD" />Ngeyiphi idatha esetshenziswayo:<ph name="END_BOLD" /> Izihloko zesikhangiso sakho zisekelwe kumlando wakho wakamuva wokuphequlula, uhlu lwamasayithi owavakashele usebenzisa i-Chrome kule divayisi.</translation>
diff --git a/components/supervised_user/core/browser/supervised_user_error_page.cc b/components/supervised_user/core/browser/supervised_user_error_page.cc index 0c9ab54..dda1987 100644 --- a/components/supervised_user/core/browser/supervised_user_error_page.cc +++ b/components/supervised_user/core/browser/supervised_user_error_page.cc
@@ -29,8 +29,7 @@ static const int kAvatarSize2x = 72; bool ReasonIsAutomatic(FilteringBehaviorReason reason) { - return reason == FilteringBehaviorReason::ASYNC_CHECKER || - reason == FilteringBehaviorReason::DENYLIST; + return reason == FilteringBehaviorReason::ASYNC_CHECKER; } std::string BuildAvatarImageUrl(const std::string& url, int size) { @@ -50,7 +49,6 @@ case FilteringBehaviorReason::DEFAULT: return single_parent ? IDS_CHILD_BLOCK_MESSAGE_DEFAULT_SINGLE_PARENT : IDS_CHILD_BLOCK_MESSAGE_DEFAULT_MULTI_PARENT; - case FilteringBehaviorReason::DENYLIST: case FilteringBehaviorReason::ASYNC_CHECKER: return IDS_SUPERVISED_USER_BLOCK_MESSAGE_SAFE_SITES; case FilteringBehaviorReason::ALLOWLIST:
diff --git a/components/supervised_user/core/browser/supervised_user_error_page_unittest.cc b/components/supervised_user/core/browser/supervised_user_error_page_unittest.cc index fe9da06d..b6443abc 100644 --- a/components/supervised_user/core/browser/supervised_user_error_page_unittest.cc +++ b/components/supervised_user/core/browser/supervised_user_error_page_unittest.cc
@@ -103,8 +103,7 @@ EXPECT_THAT(result, testing::HasSubstr(param.second_custodian)); EXPECT_THAT(result, testing::HasSubstr(param.second_custodian_email)); } - if (param.reason == FilteringBehaviorReason::ASYNC_CHECKER || - param.reason == FilteringBehaviorReason::DENYLIST) { + if (param.reason == FilteringBehaviorReason::ASYNC_CHECKER) { EXPECT_THAT(result, testing::HasSubstr("\"showFeedbackLink\":true")); } else { EXPECT_THAT(result, testing::HasSubstr("\"showFeedbackLink\":false"));
diff --git a/components/supervised_user/core/browser/supervised_user_url_filter.cc b/components/supervised_user/core/browser/supervised_user_url_filter.cc index 1615d01..0cb2c7d 100644 --- a/components/supervised_user/core/browser/supervised_user_url_filter.cc +++ b/components/supervised_user/core/browser/supervised_user_url_filter.cc
@@ -18,7 +18,6 @@ #include "components/supervised_user/core/browser/kids_chrome_management_client.h" #include "components/supervised_user/core/browser/kids_management_url_checker_client.h" #include "components/supervised_user/core/common/supervised_user_constants.h" -#include "components/supervised_user/core/common/supervised_user_denylist.h" #include "components/url_matcher/url_util.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" #include "url/gurl.h" @@ -152,7 +151,6 @@ std::unique_ptr<Delegate> service_delegate) : default_behavior_(ALLOW), service_delegate_(std::move(service_delegate)), - denylist_(nullptr), blocking_task_runner_(base::ThreadPool::CreateTaskRunner( {base::MayBlock(), base::TaskPriority::BEST_EFFORT, base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})), @@ -279,7 +277,7 @@ SupervisedUserURLFilter::FilteringBehavior SupervisedUserURLFilter::GetFilteringBehaviorForURL(const GURL& url) { supervised_user::FilteringBehaviorReason reason; - return GetFilteringBehaviorForURL(url, false, &reason); + return GetFilteringBehaviorForURL(url, &reason); } bool SupervisedUserURLFilter::IsExemptedFromGuardianApproval( @@ -296,14 +294,13 @@ const GURL& url, FilteringBehavior* behavior) { supervised_user::FilteringBehaviorReason reason; - *behavior = GetFilteringBehaviorForURL(url, true, &reason); + *behavior = GetFilteringBehaviorForURL(url, &reason); return reason == supervised_user::FilteringBehaviorReason::MANUAL; } SupervisedUserURLFilter::FilteringBehavior SupervisedUserURLFilter::GetFilteringBehaviorForURL( const GURL& url, - bool manual_only, supervised_user::FilteringBehaviorReason* reason) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -325,13 +322,6 @@ return manual_result; } - // Check the static denylist, unless the default is to block anyway. - if (!manual_only && default_behavior_ != BLOCK && denylist_ && - denylist_->HasURL(effective_url)) { - *reason = supervised_user::FilteringBehaviorReason::DENYLIST; - return BLOCK; - } - // Fall back to the default behavior. *reason = supervised_user::FilteringBehaviorReason::DEFAULT; return default_behavior_; @@ -384,7 +374,7 @@ bool skip_manual_parent_filter) { supervised_user::FilteringBehaviorReason reason = supervised_user::FilteringBehaviorReason::DEFAULT; - FilteringBehavior behavior = GetFilteringBehaviorForURL(url, false, &reason); + FilteringBehavior behavior = GetFilteringBehaviorForURL(url, &reason); if (behavior == ALLOW && reason != supervised_user::FilteringBehaviorReason::DEFAULT) { @@ -418,7 +408,7 @@ FilteringBehaviorCallback callback) { supervised_user::FilteringBehaviorReason reason = supervised_user::FilteringBehaviorReason::DEFAULT; - FilteringBehavior behavior = GetFilteringBehaviorForURL(url, false, &reason); + FilteringBehavior behavior = GetFilteringBehaviorForURL(url, &reason); // If the reason is not default, then it is manually allowed or blocked. if (reason != supervised_user::FilteringBehaviorReason::DEFAULT) { @@ -456,15 +446,6 @@ return default_behavior_; } -void SupervisedUserURLFilter::SetDenylist( - const supervised_user::SupervisedUserDenylist* denylist) { - denylist_ = denylist; -} - -bool SupervisedUserURLFilter::HasDenylist() const { - return !!denylist_; -} - void SupervisedUserURLFilter::SetManualHosts( std::map<std::string, bool> host_map) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -500,7 +481,6 @@ default_behavior_ = ALLOW; url_map_.clear(); host_map_.clear(); - denylist_ = nullptr; async_url_checker_.reset(); } @@ -525,7 +505,7 @@ return WebFilterType::kCertainSites; } - bool safe_sites_enabled = HasAsyncURLChecker() || HasDenylist(); + bool safe_sites_enabled = HasAsyncURLChecker(); return safe_sites_enabled ? WebFilterType::kTryToBlockMatureSites : WebFilterType::kAllowAllSites; }
diff --git a/components/supervised_user/core/browser/supervised_user_url_filter.h b/components/supervised_user/core/browser/supervised_user_url_filter.h index 78e134d..c70d5612 100644 --- a/components/supervised_user/core/browser/supervised_user_url_filter.h +++ b/components/supervised_user/core/browser/supervised_user_url_filter.h
@@ -12,13 +12,11 @@ #include "base/functional/callback.h" #include "base/functional/callback_forward.h" -#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "base/sequence_checker.h" #include "build/chromeos_buildflags.h" #include "components/safe_search_api/url_checker.h" #include "components/supervised_user/core/browser/supervised_user_error_page.h" -#include "components/supervised_user/core/common/supervised_user_denylist.h" class GURL; @@ -33,8 +31,6 @@ namespace supervised_user { -class SupervisedUserDenylist; - // This class manages the filtering behavior for URLs, i.e. it tells callers // if a URL should be allowed or blocked. It uses information // from multiple sources: @@ -204,11 +200,6 @@ FilteringBehavior GetDefaultFilteringBehavior() const; - // Sets the static denylist of blocked hosts. - void SetDenylist(const supervised_user::SupervisedUserDenylist* denylist); - // Returns whether the static denylist is set up. - bool HasDenylist() const; - // Set the list of matched patterns to the passed in list, for testing. void SetFromPatternsForTesting(const std::vector<std::string>& patterns); @@ -228,8 +219,8 @@ // Returns whether the asynchronous checker is set up. bool HasAsyncURLChecker() const; - // Removes all filter entries, clears the denylist and async checker if - // present, and resets the default behavior to "allow". + // Removes all filter entries, clears the async checker if present, and resets + // the default behavior to "allow". void Clear(); void AddObserver(Observer* observer); @@ -262,7 +253,6 @@ FilteringBehavior GetFilteringBehaviorForURL( const GURL& url, - bool manual_only, supervised_user::FilteringBehaviorReason* reason); FilteringBehavior GetManualFilteringBehaviorForURL(const GURL& url); @@ -285,9 +275,6 @@ std::unique_ptr<Delegate> service_delegate_; - // Not owned. - raw_ptr<const supervised_user::SupervisedUserDenylist> denylist_; - std::unique_ptr<safe_search_api::URLChecker> async_url_checker_; scoped_refptr<base::TaskRunner> blocking_task_runner_;
diff --git a/components/supervised_user/core/browser/web_content_handler.h b/components/supervised_user/core/browser/web_content_handler.h index 2cea723..c014f4c 100644 --- a/components/supervised_user/core/browser/web_content_handler.h +++ b/components/supervised_user/core/browser/web_content_handler.h
@@ -15,8 +15,10 @@ class SupervisedUserSettingsService; -// This class contains all the Web Approval Intersitial functionality that +// This base class contains all the Web Approval Intersitial functionality that // requires access to the current web content. +// It contains implementation of the common methods that can be shared accross +// platforms and can live in components. class WebContentHandler { public: using ApprovalRequestInitiatedCallback = base::OnceCallback<void(bool)>; @@ -45,24 +47,22 @@ const GURL& url, const std::u16string& child_display_name, ApprovalRequestInitiatedCallback callback) = 0; - // Returns true if the given frame is the primary main frame for the active - // page. - // TODO(b/273692421): Once all content-based methods are moved from the - // interstitial, frame_id will be moved from into WebContentHandler. - // WebContentHandler. - virtual bool IsMainFrame(int frame_id) = 0; - // Shows the feedback page to the user. - // TODO(b/276428131): Remove when local we approvals if fully launched. - virtual void ShowFeedback(GURL url, std::u16string reason) = 0; - // Removes all the infobars which are attached to web_contents_ - // and for which ShouldExpire() returns true, if the navigation frame_id - // is the main frame. - // TODO(b/273692421): frame_id will be moved from the interstitial into - // WebContentHandler. // TODO(b/273692421): Add unit (or browser test) coverage for the moved // methods that currently have no test coverage. - virtual void CleanUpInfoBarOnMainFrame(int frame_id) = 0; + + // Returns true if the given frame is the primary main frame for the active + // page. + virtual bool IsMainFrame() const = 0; + + // Removes all the infobars which are attached to web contents + // and for which ShouldExpire() returns true, if the navigation frame id + // is the main frame. + virtual void CleanUpInfoBarOnMainFrame() = 0; + + // Shows the feedback page to the user. + // TODO(b/276428131): Remove when local approvals is fully launched. + virtual void ShowFeedback(GURL url, std::u16string reason) = 0; static const char* GetLocalApprovalDurationMillisecondsHistogram(); static const char* GetLocalApprovalResultHistogram();
diff --git a/components/supervised_user/core/common/BUILD.gn b/components/supervised_user/core/common/BUILD.gn index 5504194..ccd637d0 100644 --- a/components/supervised_user/core/common/BUILD.gn +++ b/components/supervised_user/core/common/BUILD.gn
@@ -18,8 +18,6 @@ "pref_names.h", "supervised_user_constants.cc", "supervised_user_constants.h", - "supervised_user_denylist.cc", - "supervised_user_denylist.h", "supervised_user_utils.cc", "supervised_user_utils.h", "supervised_users.h", @@ -36,10 +34,7 @@ source_set("unit_tests") { testonly = true - sources = [ - "features_unittest.cc", - "supervised_user_denylist_unittest.cc", - ] + sources = [ "features_unittest.cc" ] deps = [ ":common", "//base",
diff --git a/components/supervised_user/core/common/supervised_user_constants.cc b/components/supervised_user/core/common/supervised_user_constants.cc index 30fdbb8..a930af72 100644 --- a/components/supervised_user/core/common/supervised_user_constants.cc +++ b/components/supervised_user/core/common/supervised_user_constants.cc
@@ -55,9 +55,6 @@ const base::FilePath::CharType kSupervisedUserSettingsFilename[] = FILE_PATH_LITERAL("Managed Mode Settings"); -const base::FilePath::CharType kDenylistFilename[] = - FILE_PATH_LITERAL("su-denylist.bin"); - const char kSyncGoogleDashboardURL[] = "https://www.google.com/settings/chrome/sync";
diff --git a/components/supervised_user/core/common/supervised_user_constants.h b/components/supervised_user/core/common/supervised_user_constants.h index a82e4a4..97f11cb 100644 --- a/components/supervised_user/core/common/supervised_user_constants.h +++ b/components/supervised_user/core/common/supervised_user_constants.h
@@ -38,9 +38,6 @@ // Filenames. extern const base::FilePath::CharType kSupervisedUserSettingsFilename[]; -// Filename for denylist. -extern const base::FilePath::CharType kDenylistFilename[]; - extern const char kSyncGoogleDashboardURL[]; // URLs for RPCs in the KidsManagement service.
diff --git a/components/supervised_user/core/common/supervised_user_denylist.cc b/components/supervised_user/core/common/supervised_user_denylist.cc deleted file mode 100644 index 10b1756..0000000 --- a/components/supervised_user/core/common/supervised_user_denylist.cc +++ /dev/null
@@ -1,98 +0,0 @@ -// Copyright 2014 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "components/supervised_user/core/common/supervised_user_denylist.h" - -#include <algorithm> -#include <cstring> -#include <fstream> - -#include "base/files/file_path.h" -#include "base/files/memory_mapped_file.h" -#include "base/functional/bind.h" -#include "base/logging.h" -#include "base/task/thread_pool.h" -#include "url/gurl.h" - -namespace supervised_user { - -namespace { - -std::unique_ptr<std::vector<SupervisedUserDenylist::Hash>> -ReadFromBinaryFileOnFileThread(const base::FilePath& path) { - std::unique_ptr<std::vector<SupervisedUserDenylist::Hash>> host_hashes( - new std::vector<SupervisedUserDenylist::Hash>); - - base::MemoryMappedFile file; - if (!file.Initialize(path)) { - return host_hashes; - } - - size_t size = file.length(); - if (size <= 0 || size % base::kSHA1Length != 0) { - return host_hashes; - } - - size_t hash_count = size / base::kSHA1Length; - host_hashes->resize(hash_count); - - for (size_t i = 0; i < hash_count; i++) { - memcpy((*host_hashes.get())[i].data, file.data() + i * base::kSHA1Length, - base::kSHA1Length); - } - - std::sort(host_hashes->begin(), host_hashes->end()); - - return host_hashes; -} - -} // namespace - -SupervisedUserDenylist::Hash::Hash(const std::string& host) { - const unsigned char* host_bytes = - reinterpret_cast<const unsigned char*>(host.c_str()); - base::SHA1HashBytes(host_bytes, host.length(), data); -} - -bool SupervisedUserDenylist::Hash::operator<(const Hash& rhs) const { - return memcmp(data, rhs.data, base::kSHA1Length) < 0; -} - -SupervisedUserDenylist::SupervisedUserDenylist() {} - -SupervisedUserDenylist::~SupervisedUserDenylist() {} - -bool SupervisedUserDenylist::HasURL(const GURL& url) const { - Hash hash(url.host()); - return std::binary_search(host_hashes_.begin(), host_hashes_.end(), hash); -} - -size_t SupervisedUserDenylist::GetEntryCount() const { - return host_hashes_.size(); -} - -void SupervisedUserDenylist::ReadFromFile( - const base::FilePath& path, - const base::RepeatingClosure& done_callback) { - base::ThreadPool::PostTaskAndReplyWithResult( - FROM_HERE, - {base::MayBlock(), base::TaskPriority::BEST_EFFORT, - base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}, - base::BindOnce(&ReadFromBinaryFileOnFileThread, path), - base::BindOnce(&SupervisedUserDenylist::OnReadFromFileCompleted, - weak_ptr_factory_.GetWeakPtr(), done_callback)); -} - -void SupervisedUserDenylist::OnReadFromFileCompleted( - const base::RepeatingClosure& done_callback, - std::unique_ptr<std::vector<Hash>> host_hashes) { - host_hashes_.swap(*host_hashes); - LOG_IF(WARNING, host_hashes_.empty()) << "Got empty denylist"; - - if (!done_callback.is_null()) { - done_callback.Run(); - } -} - -} // namespace supervised_user
diff --git a/components/supervised_user/core/common/supervised_user_denylist.h b/components/supervised_user/core/common/supervised_user_denylist.h deleted file mode 100644 index 8365e51d..0000000 --- a/components/supervised_user/core/common/supervised_user_denylist.h +++ /dev/null
@@ -1,66 +0,0 @@ -// Copyright 2014 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef COMPONENTS_SUPERVISED_USER_CORE_COMMON_SUPERVISED_USER_DENYLIST_H_ -#define COMPONENTS_SUPERVISED_USER_CORE_COMMON_SUPERVISED_USER_DENYLIST_H_ - -#include <stddef.h> - -#include <memory> -#include <string> -#include <vector> - -#include "base/functional/callback_forward.h" -#include "base/hash/sha1.h" -#include "base/memory/weak_ptr.h" - -namespace base { -class FilePath; -} - -class GURL; - -namespace supervised_user { - -// Compact list of (SHA1 hashes of) blocked hosts. -// Checking for URLs is thread-safe, loading is not. -class SupervisedUserDenylist { - public: - struct Hash { - Hash() {} - explicit Hash(const std::string& host); - bool operator<(const Hash& rhs) const; - - unsigned char data[base::kSHA1Length]; - }; - - SupervisedUserDenylist(); - - SupervisedUserDenylist(const SupervisedUserDenylist&) = delete; - SupervisedUserDenylist& operator=(const SupervisedUserDenylist&) = delete; - - ~SupervisedUserDenylist(); - - // Asynchronously read a denylist from the given file, replacing any previous - // entries. |done_callback| will be run after reading finishes (successfully - // or not), but not if the SupervisedUserDenylist is destroyed before that. - void ReadFromFile(const base::FilePath& path, - const base::RepeatingClosure& done_callback); - - bool HasURL(const GURL& url) const; - - size_t GetEntryCount() const; - - private: - void OnReadFromFileCompleted(const base::RepeatingClosure& done_callback, - std::unique_ptr<std::vector<Hash>> host_hashes); - - std::vector<Hash> host_hashes_; - - base::WeakPtrFactory<SupervisedUserDenylist> weak_ptr_factory_{this}; -}; - -} // namespace supervised_user - -#endif // COMPONENTS_SUPERVISED_USER_CORE_COMMON_SUPERVISED_USER_DENYLIST_H_
diff --git a/components/supervised_user/core/common/supervised_user_denylist_unittest.cc b/components/supervised_user/core/common/supervised_user_denylist_unittest.cc deleted file mode 100644 index a954a162..0000000 --- a/components/supervised_user/core/common/supervised_user_denylist_unittest.cc +++ /dev/null
@@ -1,113 +0,0 @@ -// Copyright 2023 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "components/supervised_user/core/common/supervised_user_denylist.h" -#include "base/files/file_path.h" -#include "base/files/file_util.h" -#include "base/files/scoped_temp_dir.h" -#include "base/path_service.h" -#include "base/test/scoped_path_override.h" -#include "base/test/task_environment.h" -#include "components/supervised_user/core/common/supervised_user_constants.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace supervised_user { - -TEST(SupervisedUserDenylistTest, URINotEncrypted) { - // URI's that are not hashed will not be read by the file reader. - GURL test_url("http://www.example.com/"); - base::ScopedTempDir user_data_dir_override_; - base::test::TaskEnvironment task_environment; - ASSERT_TRUE(user_data_dir_override_.CreateUniqueTempDir()); - SupervisedUserDenylist denylist_; - - // Set up test directory and denylist file. - base::ScopedPathOverride path_override(base::DIR_TEST_DATA, - user_data_dir_override_.GetPath()); - base::FilePath denylist_dir; - base::PathService::Get(base::DIR_TEST_DATA, &denylist_dir); - base::FilePath denylist_path = - denylist_dir.Append(supervised_user::kDenylistFilename); - - EXPECT_TRUE(base::WriteFile(denylist_path, test_url.possibly_invalid_spec())); - base::RunLoop run_loop; - denylist_.ReadFromFile( - denylist_path, - base::BindRepeating([](base::RunLoop* run_loop) { run_loop->Quit(); }, - base::Unretained(&run_loop))); - run_loop.Run(); - - EXPECT_FALSE(denylist_.HasURL(test_url)); - EXPECT_EQ(denylist_.GetEntryCount(), (unsigned)0); -} - -TEST(SupervisedUserDenylistTest, AppendUnencryptedURI) { - // If any URI that is not encrypted is written to the denylist, it will not be - // decrypted correctly. Therefore, no URIs will be in the denylist. - GURL test_url("http://www.example.com/"); - GURL test_url1("http://www.example1.com/"); - base::ScopedTempDir user_data_dir_override_; - base::test::TaskEnvironment task_environment; - ASSERT_TRUE(user_data_dir_override_.CreateUniqueTempDir()); - SupervisedUserDenylist denylist_; - - // Set up test directory and denylist file. - base::ScopedPathOverride path_override(base::DIR_TEST_DATA, - user_data_dir_override_.GetPath()); - base::FilePath denylist_dir; - base::PathService::Get(base::DIR_TEST_DATA, &denylist_dir); - base::FilePath denylist_path = - denylist_dir.Append(supervised_user::kDenylistFilename); - - SupervisedUserDenylist::Hash hash_test_url(test_url.host()); - EXPECT_TRUE(base::WriteFile(denylist_path, hash_test_url.data)); - EXPECT_TRUE(base::AppendToFile(denylist_path, test_url1.host())); - - base::RunLoop run_loop; - denylist_.ReadFromFile( - denylist_path, - base::BindRepeating([](base::RunLoop* run_loop) { run_loop->Quit(); }, - base::Unretained(&run_loop))); - run_loop.Run(); - - EXPECT_FALSE(denylist_.HasURL(test_url)); - EXPECT_FALSE(denylist_.HasURL(test_url1)); - EXPECT_EQ(denylist_.GetEntryCount(), (unsigned)0); -} - -TEST(SupervisedUserDenylistTest, AppendEncryptedURI) { - // Hashed URIs that are append to file will be contained in denylist_. - GURL test_url("http://www.example.com/"); - GURL test_url1("http://www.example1.com/"); - base::ScopedTempDir user_data_dir_override_; - base::test::TaskEnvironment task_environment; - ASSERT_TRUE(user_data_dir_override_.CreateUniqueTempDir()); - SupervisedUserDenylist denylist_; - - // Set up test directory and denylist file. - base::ScopedPathOverride path_override(base::DIR_TEST_DATA, - user_data_dir_override_.GetPath()); - base::FilePath denylist_dir; - base::PathService::Get(base::DIR_TEST_DATA, &denylist_dir); - base::FilePath denylist_path = - denylist_dir.Append(supervised_user::kDenylistFilename); - - SupervisedUserDenylist::Hash hash_test_url(test_url.host()); - EXPECT_TRUE(base::WriteFile(denylist_path, hash_test_url.data)); - SupervisedUserDenylist::Hash hash_test_url1(test_url1.host()); - EXPECT_TRUE(base::AppendToFile(denylist_path, hash_test_url1.data)); - - base::RunLoop run_loop; - denylist_.ReadFromFile( - denylist_path, - base::BindRepeating([](base::RunLoop* run_loop) { run_loop->Quit(); }, - base::Unretained(&run_loop))); - run_loop.Run(); - - EXPECT_TRUE(denylist_.HasURL(test_url)); - EXPECT_TRUE(denylist_.HasURL(test_url1)); - EXPECT_EQ(denylist_.GetEntryCount(), (unsigned)2); -} - -} // namespace supervised_user
diff --git a/components/supervised_user/core/common/supervised_user_utils.cc b/components/supervised_user/core/common/supervised_user_utils.cc index 054313a..0b04f3c2 100644 --- a/components/supervised_user/core/common/supervised_user_utils.cc +++ b/components/supervised_user/core/common/supervised_user_utils.cc
@@ -16,8 +16,6 @@ return "Default"; case FilteringBehaviorReason::ASYNC_CHECKER: return "AsyncChecker"; - case FilteringBehaviorReason::DENYLIST: - return "Denylist"; case FilteringBehaviorReason::MANUAL: return "Manual"; case FilteringBehaviorReason::ALLOWLIST:
diff --git a/components/supervised_user/core/common/supervised_user_utils.h b/components/supervised_user/core/common/supervised_user_utils.h index 33eea9b..b6ba839 100644 --- a/components/supervised_user/core/common/supervised_user_utils.h +++ b/components/supervised_user/core/common/supervised_user_utils.h
@@ -15,7 +15,7 @@ enum class FilteringBehaviorReason { DEFAULT = 0, ASYNC_CHECKER = 1, - DENYLIST = 2, + // Deprecated, DENYLIST = 2, MANUAL = 3, ALLOWLIST = 4, NOT_SIGNED_IN = 5,
diff --git a/components/sync/driver/sync_service_impl.cc b/components/sync/driver/sync_service_impl.cc index ec7c7fe..7f8fbab 100644 --- a/components/sync/driver/sync_service_impl.cc +++ b/components/sync/driver/sync_service_impl.cc
@@ -1232,18 +1232,6 @@ return data_type_manager_->GetTypesWithPendingDownloadForInitialSync(); } -void SyncServiceImpl::SetSyncRequestedAndIgnoreNotification(bool is_requested) { - // For a no-op, OnSyncRequestedPrefChange() wouldn't be called and - // |is_setting_sync_requested_| wouldn't get reset, so check. - if (is_requested != user_settings_->IsSyncRequested()) { - DCHECK(!is_setting_sync_requested_); - is_setting_sync_requested_ = true; - user_settings_->SetSyncRequested(is_requested); - // OnSyncRequestedPrefChange() should have cleared the flag. - DCHECK(!is_setting_sync_requested_); - } -} - void SyncServiceImpl::ConfigureDataTypeManager(ConfigureReason reason) { DCHECK(engine_); DCHECK(engine_->IsInitialized()); @@ -1802,7 +1790,20 @@ // For explicit passphrase users, clear the encryption key, such that they // will need to reenter it if sync gets re-enabled. sync_prefs_.ClearEncryptionBootstrapToken(); - SetSyncRequestedAndIgnoreNotification(false); + + // Clear the sync-requested bit, but avoid side effects in + // OnSyncRequestedPrefChange() by leveraging |is_setting_sync_requested_|. + // + // For a no-op, OnSyncRequestedPrefChange() wouldn't be called and + // |is_setting_sync_requested_| wouldn't get reset, so check. + if (user_settings_->IsSyncRequested()) { + CHECK(!is_setting_sync_requested_); + is_setting_sync_requested_ = true; + user_settings_->ClearSyncRequested(); + // OnSyncRequestedPrefChange() should have cleared the flag. + CHECK(!is_setting_sync_requested_); + } + // Also let observers know that Sync-the-feature is now fully disabled // (before it possibly starts up again in transport-only mode). NotifyObservers();
diff --git a/components/sync/driver/sync_service_impl.h b/components/sync/driver/sync_service_impl.h index da0634d..9abdd19 100644 --- a/components/sync/driver/sync_service_impl.h +++ b/components/sync/driver/sync_service_impl.h
@@ -263,11 +263,6 @@ void AccountStateChanged(); void CredentialsChanged(); - // A wrapper around SyncUserSettings::SetSyncRequested(), such that the - // notification which is synchronously triggered will be ignored in the - // implementation of OnSyncRequestedPrefChange(). - void SetSyncRequestedAndIgnoreNotification(bool is_requested); - bool IsEngineAllowedToRun() const; // Reconfigures the data type manager with the latest enabled types.
diff --git a/components/sync/driver/sync_service_impl_startup_unittest.cc b/components/sync/driver/sync_service_impl_startup_unittest.cc index 9dc7726..0222985 100644 --- a/components/sync/driver/sync_service_impl_startup_unittest.cc +++ b/components/sync/driver/sync_service_impl_startup_unittest.cc
@@ -184,7 +184,7 @@ // This tells the SyncServiceImpl that setup is now in progress, which // causes it to try starting up the engine. We're not signed in yet though, so // that won't work. - sync_service()->GetUserSettings()->SetSyncRequested(true); + sync_service()->GetUserSettings()->SetSyncRequested(); std::unique_ptr<SyncSetupInProgressHandle> sync_blocker = sync_service()->GetSetupInProgressHandle(); EXPECT_FALSE(sync_service()->IsEngineInitialized()); @@ -445,9 +445,9 @@ ASSERT_EQ(SyncService::TransportState::ACTIVE, sync_service()->GetTransportState()); - // On SetSyncRequested(false), the sync service will immediately start up + // On ClearSyncRequested(), the sync service will immediately start up // again in transport mode. - sync_service()->GetUserSettings()->SetSyncRequested(false); + sync_service()->GetUserSettings()->ClearSyncRequested(); base::RunLoop().RunUntilIdle(); // Sync-the-feature is still considered off. @@ -671,7 +671,7 @@ // Initiate Sync (the feature) setup before the engine initializes itself in // transport mode. - sync_service()->GetUserSettings()->SetSyncRequested(true); + sync_service()->GetUserSettings()->SetSyncRequested(); std::unique_ptr<SyncSetupInProgressHandle> setup_in_progress_handle = sync_service()->GetSetupInProgressHandle();
diff --git a/components/sync/driver/sync_service_impl_unittest.cc b/components/sync/driver/sync_service_impl_unittest.cc index 487aae5..ee18288 100644 --- a/components/sync/driver/sync_service_impl_unittest.cc +++ b/components/sync/driver/sync_service_impl_unittest.cc
@@ -309,7 +309,7 @@ InitializeForNthSync(); // Disable sync-the-feature. - service()->GetUserSettings()->SetSyncRequested(false); + service()->GetUserSettings()->ClearSyncRequested(); ASSERT_FALSE(service()->IsSyncFeatureActive()); ASSERT_FALSE(service()->IsSyncFeatureEnabled()); @@ -385,7 +385,7 @@ // Once we mark first setup complete again (it was cleared by the policy) and // set SyncRequested to true, sync starts up. - service()->GetUserSettings()->SetSyncRequested(true); + service()->GetUserSettings()->SetSyncRequested(); service()->GetUserSettings()->SetFirstSetupComplete( syncer::SyncFirstSetupCompleteSource::BASIC_FLOW); base::RunLoop().RunUntilIdle(); @@ -431,7 +431,7 @@ ShutdownAndDeleteService(); } -// Test SetSyncRequested(false) before we've initialized the backend. +// Test ClearSyncRequested() before we've initialized the backend. TEST_F(SyncServiceImplTest, EarlyRequestStop) { SignIn(); CreateService(SyncServiceImpl::MANUAL_START); @@ -445,7 +445,7 @@ // Request stop. This should immediately restart the service in standalone // transport mode. component_factory()->AllowFakeEngineInitCompletion(true); - service()->GetUserSettings()->SetSyncRequested(false); + service()->GetUserSettings()->ClearSyncRequested(); EXPECT_EQ( SyncService::DisableReasonSet(SyncService::DISABLE_REASON_USER_CHOICE), service()->GetDisableReasons()); @@ -456,7 +456,7 @@ EXPECT_FALSE(service()->IsSyncFeatureEnabled()); // Request start. Now Sync-the-feature should start again. - service()->GetUserSettings()->SetSyncRequested(true); + service()->GetUserSettings()->SetSyncRequested(); EXPECT_EQ(SyncService::DisableReasonSet(), service()->GetDisableReasons()); base::RunLoop().RunUntilIdle(); EXPECT_EQ(SyncService::TransportState::ACTIVE, @@ -465,7 +465,7 @@ EXPECT_TRUE(service()->IsSyncFeatureEnabled()); } -// Test SetSyncRequested(false) after we've initialized the backend. +// Test ClearSyncRequested() after we've initialized the backend. TEST_F(SyncServiceImplTest, DisableAndEnableSyncTemporarily) { SignIn(); CreateService(SyncServiceImpl::MANUAL_START); @@ -480,7 +480,7 @@ ASSERT_TRUE(service()->IsSyncFeatureActive()); ASSERT_TRUE(service()->IsSyncFeatureEnabled()); - service()->GetUserSettings()->SetSyncRequested(false); + service()->GetUserSettings()->ClearSyncRequested(); EXPECT_FALSE(sync_prefs.IsSyncRequested()); EXPECT_EQ( SyncService::DisableReasonSet(SyncService::DISABLE_REASON_USER_CHOICE), @@ -491,7 +491,7 @@ EXPECT_FALSE(service()->IsSyncFeatureActive()); EXPECT_FALSE(service()->IsSyncFeatureEnabled()); - service()->GetUserSettings()->SetSyncRequested(true); + service()->GetUserSettings()->SetSyncRequested(); EXPECT_TRUE(sync_prefs.IsSyncRequested()); EXPECT_EQ(SyncService::DisableReasonSet(), service()->GetDisableReasons()); base::RunLoop().RunUntilIdle(); @@ -1077,7 +1077,7 @@ // call below will trigger it. prefs()->SetManagedPref(prefs::kSyncManaged, base::Value(false)); - service()->GetUserSettings()->SetSyncRequested(true); + service()->GetUserSettings()->SetSyncRequested(); EXPECT_EQ(SyncService::DisableReasonSet(), service()->GetDisableReasons()); EXPECT_EQ(SyncService::TransportState::ACTIVE, service()->GetTransportState());
diff --git a/components/sync/driver/sync_user_settings.h b/components/sync/driver/sync_user_settings.h index a5e3285..1a798f7 100644 --- a/components/sync/driver/sync_user_settings.h +++ b/components/sync/driver/sync_user_settings.h
@@ -43,7 +43,11 @@ // by the Sync feature toggle in settings, or when Sync gets reset from the // dashboard. This maps to DISABLE_REASON_USER_CHOICE. virtual bool IsSyncRequested() const = 0; - virtual void SetSyncRequested(bool requested) = 0; + virtual void SetSyncRequested() = 0; + // TODO(crbug.com/1219990): Remove this function (or make it private to + // SyncUserSettingsImpl) and migrate calling sites (primarily tests) to + // more appropriate APIs. + virtual void ClearSyncRequested() = 0; // Whether the initial Sync setup has been completed, meaning the user has // consented to Sync.
diff --git a/components/sync/driver/sync_user_settings_impl.cc b/components/sync/driver/sync_user_settings_impl.cc index 911950f..2dc9e40 100644 --- a/components/sync/driver/sync_user_settings_impl.cc +++ b/components/sync/driver/sync_user_settings_impl.cc
@@ -74,8 +74,12 @@ return prefs_->IsSyncRequested(); } -void SyncUserSettingsImpl::SetSyncRequested(bool requested) { - prefs_->SetSyncRequested(requested); +void SyncUserSettingsImpl::SetSyncRequested() { + prefs_->SetSyncRequested(true); +} + +void SyncUserSettingsImpl::ClearSyncRequested() { + prefs_->SetSyncRequested(false); } bool SyncUserSettingsImpl::IsFirstSetupComplete() const {
diff --git a/components/sync/driver/sync_user_settings_impl.h b/components/sync/driver/sync_user_settings_impl.h index 339f867f..54b41dd 100644 --- a/components/sync/driver/sync_user_settings_impl.h +++ b/components/sync/driver/sync_user_settings_impl.h
@@ -33,7 +33,8 @@ ~SyncUserSettingsImpl() override; bool IsSyncRequested() const override; - void SetSyncRequested(bool requested) override; + void SetSyncRequested() override; + void ClearSyncRequested() override; bool IsFirstSetupComplete() const override; void SetFirstSetupComplete(SyncFirstSetupCompleteSource source) override;
diff --git a/components/sync/test/sync_user_settings_mock.h b/components/sync/test/sync_user_settings_mock.h index fd35e6a1..745157d 100644 --- a/components/sync/test/sync_user_settings_mock.h +++ b/components/sync/test/sync_user_settings_mock.h
@@ -20,7 +20,8 @@ SyncUserSettingsMock(); ~SyncUserSettingsMock() override; MOCK_METHOD(bool, IsSyncRequested, (), (const override)); - MOCK_METHOD(void, SetSyncRequested, (bool), (override)); + MOCK_METHOD(void, SetSyncRequested, (), (override)); + MOCK_METHOD(void, ClearSyncRequested, (), (override)); MOCK_METHOD(bool, IsFirstSetupComplete, (), (const override)); MOCK_METHOD(void, SetFirstSetupComplete,
diff --git a/components/sync/test/test_sync_user_settings.cc b/components/sync/test/test_sync_user_settings.cc index 3644537..bf55b67 100644 --- a/components/sync/test/test_sync_user_settings.cc +++ b/components/sync/test/test_sync_user_settings.cc
@@ -49,13 +49,15 @@ return !service_->HasDisableReason(SyncService::DISABLE_REASON_USER_CHOICE); } -void TestSyncUserSettings::SetSyncRequested(bool requested) { +void TestSyncUserSettings::SetSyncRequested() { SyncService::DisableReasonSet disable_reasons = service_->GetDisableReasons(); - if (requested) { - disable_reasons.Remove(SyncService::DISABLE_REASON_USER_CHOICE); - } else { - disable_reasons.Put(SyncService::DISABLE_REASON_USER_CHOICE); - } + disable_reasons.Remove(SyncService::DISABLE_REASON_USER_CHOICE); + service_->SetDisableReasons(disable_reasons); +} + +void TestSyncUserSettings::ClearSyncRequested() { + SyncService::DisableReasonSet disable_reasons = service_->GetDisableReasons(); + disable_reasons.Put(SyncService::DISABLE_REASON_USER_CHOICE); service_->SetDisableReasons(disable_reasons); }
diff --git a/components/sync/test/test_sync_user_settings.h b/components/sync/test/test_sync_user_settings.h index c3c9c113..f6477be 100644 --- a/components/sync/test/test_sync_user_settings.h +++ b/components/sync/test/test_sync_user_settings.h
@@ -26,7 +26,8 @@ ~TestSyncUserSettings() override; bool IsSyncRequested() const override; - void SetSyncRequested(bool requested) override; + void SetSyncRequested() override; + void ClearSyncRequested() override; bool IsFirstSetupComplete() const override; void SetFirstSetupComplete(SyncFirstSetupCompleteSource source) override;
diff --git a/components/visitedlink/browser/visitedlink_writer.cc b/components/visitedlink/browser/visitedlink_writer.cc index 4ed5cbf..c11f7a94 100644 --- a/components/visitedlink/browser/visitedlink_writer.cc +++ b/components/visitedlink/browser/visitedlink_writer.cc
@@ -204,7 +204,7 @@ void OnCompleteMainThread(); // Owner of this object. MAY ONLY BE ACCESSED ON THE MAIN THREAD! - raw_ptr<VisitedLinkWriter> writer_; + raw_ptr<VisitedLinkWriter, DanglingUntriaged> writer_; // Indicates whether the operation has failed or not. bool success_;
diff --git a/content/browser/attribution_reporting/attribution_features.cc b/content/browser/attribution_reporting/attribution_features.cc index 1084629..d19184c 100644 --- a/content/browser/attribution_reporting/attribution_features.cc +++ b/content/browser/attribution_reporting/attribution_features.cc
@@ -12,8 +12,4 @@ "AttributionVerboseDebugReporting", base::FEATURE_ENABLED_BY_DEFAULT); -BASE_FEATURE(kAttributionFencedFrameReportingBeacon, - "AttributionFencedFrameReportingBeacon", - base::FEATURE_DISABLED_BY_DEFAULT); - } // namespace content
diff --git a/content/browser/attribution_reporting/attribution_features.h b/content/browser/attribution_reporting/attribution_features.h index 568411a..0a2395e 100644 --- a/content/browser/attribution_reporting/attribution_features.h +++ b/content/browser/attribution_reporting/attribution_features.h
@@ -12,8 +12,6 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kAttributionVerboseDebugReporting); -CONTENT_EXPORT BASE_DECLARE_FEATURE(kAttributionFencedFrameReportingBeacon); - } // namespace content #endif // CONTENT_BROWSER_ATTRIBUTION_REPORTING_ATTRIBUTION_FEATURES_H_
diff --git a/content/browser/attribution_reporting/attribution_host.cc b/content/browser/attribution_reporting/attribution_host.cc index 1fb81968..4bea667 100644 --- a/content/browser/attribution_reporting/attribution_host.cc +++ b/content/browser/attribution_reporting/attribution_host.cc
@@ -20,7 +20,6 @@ #include "components/attribution_reporting/suitable_origin.h" #include "content/browser/attribution_reporting/attribution_beacon_id.h" #include "content/browser/attribution_reporting/attribution_data_host_manager.h" -#include "content/browser/attribution_reporting/attribution_features.h" #include "content/browser/attribution_reporting/attribution_input_event.h" #include "content/browser/attribution_reporting/attribution_manager.h" #include "content/browser/renderer_host/frame_tree.h" @@ -33,6 +32,7 @@ #include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents.h" #include "content/public/common/content_client.h" +#include "content/public/common/content_features.h" #include "mojo/public/cpp/bindings/message.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/abseil-cpp/absl/types/variant.h" @@ -360,7 +360,8 @@ BeaconId beacon_id, absl::optional<int64_t> navigation_id, RenderFrameHostImpl* initiator_frame_host) { - if (!base::FeatureList::IsEnabled(kAttributionFencedFrameReportingBeacon)) { + if (!base::FeatureList::IsEnabled( + features::kAttributionFencedFrameReportingBeacon)) { return; }
diff --git a/content/browser/attribution_reporting/attribution_host_unittest.cc b/content/browser/attribution_reporting/attribution_host_unittest.cc index a6fce3a..213c000 100644 --- a/content/browser/attribution_reporting/attribution_host_unittest.cc +++ b/content/browser/attribution_reporting/attribution_host_unittest.cc
@@ -16,7 +16,6 @@ #include "components/attribution_reporting/suitable_origin.h" #include "content/browser/attribution_reporting/attribution_beacon_id.h" #include "content/browser/attribution_reporting/attribution_data_host_manager.h" -#include "content/browser/attribution_reporting/attribution_features.h" #include "content/browser/attribution_reporting/attribution_input_event.h" #include "content/browser/attribution_reporting/attribution_manager.h" #include "content/browser/attribution_reporting/attribution_test_utils.h" @@ -26,6 +25,7 @@ #include "content/browser/web_contents/web_contents_impl.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/global_routing_id.h" +#include "content/public/common/content_features.h" #include "content/public/test/test_renderer_host.h" #include "content/public/test/test_utils.h" #include "content/test/navigation_simulator_impl.h" @@ -502,7 +502,7 @@ TEST_F(AttributionHostTest, NotifyFencedFrameReportingBeaconStarted) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndEnableFeature( - kAttributionFencedFrameReportingBeacon); + features::kAttributionFencedFrameReportingBeacon); const struct { const char* source_origin; @@ -546,7 +546,7 @@ TEST_F(AttributionHostTest, FencedFrameReportingBeacon_FeaturePolicyChecked) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndEnableFeature( - kAttributionFencedFrameReportingBeacon); + features::kAttributionFencedFrameReportingBeacon); contents()->NavigateAndCommit(GURL("https://secure.com"));
diff --git a/content/browser/attribution_reporting/attributions_browsertest.cc b/content/browser/attribution_reporting/attributions_browsertest.cc index 44d3110..fbf1572 100644 --- a/content/browser/attribution_reporting/attributions_browsertest.cc +++ b/content/browser/attribution_reporting/attributions_browsertest.cc
@@ -23,7 +23,6 @@ #include "build/buildflag.h" #include "components/attribution_reporting/os_support.mojom.h" #include "content/browser/attribution_reporting/attribution_constants.h" -#include "content/browser/attribution_reporting/attribution_features.h" #include "content/browser/attribution_reporting/attribution_manager.h" #include "content/browser/attribution_reporting/attribution_manager_impl.h" #include "content/browser/attribution_reporting/attribution_test_utils.h" @@ -1205,7 +1204,8 @@ scoped_feature_list_.InitWithFeaturesAndParameters( /*enabled_features=*/{{blink::features::kFencedFrames, {}}, {features::kPrivacySandboxAdsAPIsOverride, {}}, - {kAttributionFencedFrameReportingBeacon, {}}, + {features::kAttributionFencedFrameReportingBeacon, + {}}, {blink::features::kFencedFramesAPIChanges, {}}}, /*disabled_features=*/{}); }
diff --git a/content/browser/devtools/devtools_agent_host_impl_unittest.cc b/content/browser/devtools/devtools_agent_host_impl_unittest.cc index 11d71e21..450ea1c 100644 --- a/content/browser/devtools/devtools_agent_host_impl_unittest.cc +++ b/content/browser/devtools/devtools_agent_host_impl_unittest.cc
@@ -12,6 +12,7 @@ #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" +#include "content/browser/devtools/devtools_manager.h" #include "content/browser/devtools/shared_worker_devtools_manager.h" #include "content/common/content_constants_internal.h" #include "content/public/browser/browser_context.h" @@ -113,9 +114,11 @@ browser_content_client_ = std::make_unique<BrowserClient>(); original_client_ = SetBrowserClientForTesting(browser_content_client_.get()); + DevToolsManager::ShutdownForTests(); } void TearDown() override { SetBrowserClientForTesting(original_client_); + DevToolsManager::ShutdownForTests(); RenderViewHostImplTestHarness::TearDown(); }
diff --git a/content/browser/devtools/devtools_http_handler_unittest.cc b/content/browser/devtools/devtools_http_handler_unittest.cc index 3eda11f..dd3d08b 100644 --- a/content/browser/devtools/devtools_http_handler_unittest.cc +++ b/content/browser/devtools/devtools_http_handler_unittest.cc
@@ -25,6 +25,7 @@ #include "base/test/task_environment.h" #include "base/values.h" #include "content/browser/devtools/devtools_agent_host_impl.h" +#include "content/browser/devtools/devtools_manager.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/content_browser_client.h" @@ -179,12 +180,20 @@ void SetUp() override { content_client_ = std::make_unique<ContentClient>(); browser_content_client_ = std::make_unique<BrowserClient>(); - SetBrowserClientForTesting(browser_content_client_.get()); + original_client_ = + SetBrowserClientForTesting(browser_content_client_.get()); + DevToolsManager::ShutdownForTests(); + } + + void TearDown() override { + SetBrowserClientForTesting(original_client_); + DevToolsManager::ShutdownForTests(); } private: std::unique_ptr<ContentClient> content_client_; std::unique_ptr<ContentBrowserClient> browser_content_client_; + raw_ptr<ContentBrowserClient> original_client_ = nullptr; content::BrowserTaskEnvironment task_environment_; };
diff --git a/content/browser/devtools/devtools_manager.cc b/content/browser/devtools/devtools_manager.cc index 3af9bc9..e2c7d383 100644 --- a/content/browser/devtools/devtools_manager.cc +++ b/content/browser/devtools/devtools_manager.cc
@@ -18,6 +18,10 @@ : delegate_( GetContentClient()->browser()->CreateDevToolsManagerDelegate()) {} +void DevToolsManager::ShutdownForTests() { + base::Singleton<DevToolsManager>::OnExit(nullptr); +} + DevToolsManager::~DevToolsManager() = default; } // namespace content
diff --git a/content/browser/devtools/devtools_manager.h b/content/browser/devtools/devtools_manager.h index 8cb0fa5d..27869bb3 100644 --- a/content/browser/devtools/devtools_manager.h +++ b/content/browser/devtools/devtools_manager.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/memory/singleton.h" +#include "content/common/content_export.h" #include "content/public/browser/devtools_manager_delegate.h" namespace content { @@ -30,6 +31,10 @@ DevToolsManagerDelegate* delegate() const { return delegate_.get(); } + // It is necessary to recreate the delegate when the ContentBrowserClient gets + // swapped out. + static void CONTENT_EXPORT ShutdownForTests(); + private: friend struct base::DefaultSingletonTraits<DevToolsManager>;
diff --git a/content/browser/fenced_frame/fenced_frame_browsertest.cc b/content/browser/fenced_frame/fenced_frame_browsertest.cc index 7e51fef..0a077efc 100644 --- a/content/browser/fenced_frame/fenced_frame_browsertest.cc +++ b/content/browser/fenced_frame/fenced_frame_browsertest.cc
@@ -16,7 +16,6 @@ #include "base/time/time.h" #include "components/network_session_configurator/common/network_switches.h" #include "components/ukm/test_ukm_recorder.h" -#include "content/browser/attribution_reporting/attribution_features.h" #include "content/browser/attribution_reporting/attribution_manager.h" #include "content/browser/back_forward_cache_browsertest.h" #include "content/browser/fenced_frame/fenced_frame.h" @@ -4597,7 +4596,7 @@ FencedFrameReportEventBrowserTest() { scoped_feature_list_.InitWithFeaturesAndParameters( {{blink::features::kAllowURNsInIframes, {}}, - {kAttributionFencedFrameReportingBeacon, {}}}, + {features::kAttributionFencedFrameReportingBeacon, {}}}, {/* disabled_features */}); } @@ -6131,7 +6130,7 @@ FencedFrameAutomaticBeaconBrowserTest() { scoped_feature_list_.InitWithFeatures( /*enabled_features=*/{blink::features::kAllowURNsInIframes, - kAttributionFencedFrameReportingBeacon}, + features::kAttributionFencedFrameReportingBeacon}, /*disabled_features=*/{}); }
diff --git a/content/browser/media/capture/desktop_capture_device_mac.cc b/content/browser/media/capture/desktop_capture_device_mac.cc index f1a6617..3a942b7 100644 --- a/content/browser/media/capture/desktop_capture_device_mac.cc +++ b/content/browser/media/capture/desktop_capture_device_mac.cc
@@ -6,6 +6,7 @@ #include <CoreGraphics/CoreGraphics.h> +#include "base/mac/wrap_cg_display.h" #include "base/task/single_thread_task_runner.h" #include "content/browser/media/capture/io_surface_capture_device_base_mac.h" #include "third_party/webrtc/modules/desktop_capture/desktop_capture_types.h" @@ -73,9 +74,11 @@ const size_t kNumKeys = 5; const void* keys[kNumKeys] = { - kCGDisplayStreamShowCursor, kCGDisplayStreamPreserveAspectRatio, - kCGDisplayStreamMinimumFrameTime, kCGDisplayStreamColorSpace, - kCGDisplayStreamDestinationRect, + wrapkCGDisplayStreamShowCursor(), + wrapkCGDisplayStreamPreserveAspectRatio(), + wrapkCGDisplayStreamMinimumFrameTime(), + wrapkCGDisplayStreamColorSpace(), + wrapkCGDisplayStreamDestinationRect(), }; const void* values[kNumKeys] = { kCFBooleanTrue, @@ -89,7 +92,7 @@ &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)); } - display_stream_.reset(CGDisplayStreamCreate( + display_stream_.reset(wrapCGDisplayStreamCreate( display_id_, requested_format_.frame_size.width(), requested_format_.frame_size.height(), kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, properties, handler)); @@ -99,7 +102,7 @@ FROM_HERE, "CGDisplayStreamCreate failed"); return; } - CGError error = CGDisplayStreamStart(display_stream_); + CGError error = wrapCGDisplayStreamStart(display_stream_); if (error != kCGErrorSuccess) { client()->OnError( media::VideoCaptureError::kDesktopCaptureDeviceMacFailedStreamStart, @@ -111,17 +114,18 @@ // worker thread where the CFRunLoop does not get serviced. // https://crbug.com/1185388 CFRunLoopAddSource(CFRunLoopGetMain(), - CGDisplayStreamGetRunLoopSource(display_stream_), + wrapCGDisplayStreamGetRunLoopSource(display_stream_), kCFRunLoopCommonModes); client()->OnStarted(); } void OnStop() override { weak_factory_.InvalidateWeakPtrs(); if (display_stream_) { - CFRunLoopRemoveSource(CFRunLoopGetMain(), - CGDisplayStreamGetRunLoopSource(display_stream_), - kCFRunLoopCommonModes); - CGDisplayStreamStop(display_stream_); + CFRunLoopRemoveSource( + CFRunLoopGetMain(), + wrapCGDisplayStreamGetRunLoopSource(display_stream_), + kCFRunLoopCommonModes); + wrapCGDisplayStreamStop(display_stream_); } display_stream_.reset(); }
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue.cc b/content/browser/renderer_host/input/passthrough_touch_event_queue.cc index 7e626cf7..7079e8b 100644 --- a/content/browser/renderer_host/input/passthrough_touch_event_queue.cc +++ b/content/browser/renderer_host/input/passthrough_touch_event_queue.cc
@@ -287,6 +287,8 @@ if (timeout_handler_) timeout_handler_->StartIfNecessary(*touch); + touch->event.GetModifiableEventLatencyMetadata().dispatched_to_renderer = + base::TimeTicks::Now(); if (wait_for_ack) outstanding_touches_.insert(*touch); client_->SendTouchEventImmediately(*touch);
diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc b/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc index e706e1e5..f1aa2eb4 100644 --- a/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc +++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc
@@ -94,7 +94,8 @@ void RenderWidgetHostLatencyTracker::OnInputEvent( const blink::WebInputEvent& event, - LatencyInfo* latency) { + LatencyInfo* latency, + ui::EventLatencyMetadata* event_latency_metadata) { DCHECK(latency); DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -135,9 +136,12 @@ ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, timestamp_original); } + base::TimeTicks begin_rwh_timestamp = base::TimeTicks::Now(); latency->AddLatencyNumberWithTraceName( ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, - GetTraceNameFromType(event.GetType())); + GetTraceNameFromType(event.GetType()), begin_rwh_timestamp); + event_latency_metadata->arrived_in_browser_main_timestamp = + begin_rwh_timestamp; if (event.GetType() == blink::WebInputEvent::Type::kGestureScrollBegin) { has_seen_first_gesture_scroll_update_ = false;
diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker.h b/content/browser/renderer_host/input/render_widget_host_latency_tracker.h index a6acd1f..c1cca70 100644 --- a/content/browser/renderer_host/input/render_widget_host_latency_tracker.h +++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker.h
@@ -35,7 +35,8 @@ // Called when an event is received by the RenderWidgetHost, prior to // that event being forwarded to the renderer (via the InputRouter). void OnInputEvent(const blink::WebInputEvent& event, - ui::LatencyInfo* latency); + ui::LatencyInfo* latency, + ui::EventLatencyMetadata* event_latency_metadata); // Populates the LatencyInfo with relevant entries for latency tracking, also // terminating latency tracking for events that did not trigger rendering and
diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc index 38c9e17..39b431f 100644 --- a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc +++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
@@ -222,16 +222,22 @@ blink::WebMouseWheelEvent::kPhaseChanged); base::TimeTicks now = base::TimeTicks::Now(); wheel.SetTimeStamp(now); + ui::EventLatencyMetadata event_latency_metadata; ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); wheel_latency.AddLatencyNumberWithTimestamp( ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, now); AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now); AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now); - tracker()->OnInputEvent(wheel, &wheel_latency); + tracker()->OnInputEvent(wheel, &wheel_latency, &event_latency_metadata); + base::TimeTicks begin_rwh_timestamp; EXPECT_TRUE(wheel_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_TRUE(wheel_latency.FindLatency( ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, nullptr)); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); tracker()->OnInputEventAck( wheel, &wheel_latency, blink::mojom::InputEventResultState::kNotConsumed); @@ -287,16 +293,22 @@ blink::WebMouseWheelEvent::kPhaseChanged); base::TimeTicks now = base::TimeTicks::Now(); wheel.SetTimeStamp(now); + ui::EventLatencyMetadata event_latency_metadata; ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); wheel_latency.AddLatencyNumberWithTimestamp( ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, now); AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now); AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now); - tracker()->OnInputEvent(wheel, &wheel_latency); + tracker()->OnInputEvent(wheel, &wheel_latency, &event_latency_metadata); + base::TimeTicks begin_rwh_timestamp; EXPECT_TRUE(wheel_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_TRUE(wheel_latency.FindLatency( ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, nullptr)); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); tracker()->OnInputEventAck( wheel, &wheel_latency, blink::mojom::InputEventResultState::kNotConsumed); @@ -350,13 +362,19 @@ base::TimeTicks now = base::TimeTicks::Now(); scroll.SetTimeStamp(now); ui::LatencyInfo scroll_latency(ui::SourceEventType::INERTIAL); + ui::EventLatencyMetadata event_latency_metadata; AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); - tracker()->OnInputEvent(scroll, &scroll_latency); + tracker()->OnInputEvent(scroll, &scroll_latency, &event_latency_metadata); + base::TimeTicks begin_rwh_timestamp; EXPECT_TRUE(scroll_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_TRUE(scroll_latency.FindLatency( ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, nullptr)); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); tracker()->OnInputEventAck( scroll, &scroll_latency, blink::mojom::InputEventResultState::kNotConsumed); @@ -396,13 +414,19 @@ base::TimeTicks now = base::TimeTicks::Now(); scroll.SetTimeStamp(now); ui::LatencyInfo scroll_latency; + ui::EventLatencyMetadata event_latency_metadata; AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); - tracker()->OnInputEvent(scroll, &scroll_latency); + tracker()->OnInputEvent(scroll, &scroll_latency, &event_latency_metadata); + base::TimeTicks begin_rwh_timestamp; EXPECT_TRUE(scroll_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_TRUE(scroll_latency.FindLatency( ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, nullptr)); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); tracker()->OnInputEventAck( scroll, &scroll_latency, blink::mojom::InputEventResultState::kNotConsumed); @@ -412,17 +436,23 @@ blink::SyntheticWebTouchEvent touch; touch.PressPoint(0, 0); touch.PressPoint(1, 1); + ui::EventLatencyMetadata event_latency_metadata; ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH); base::TimeTicks now = base::TimeTicks::Now(); touch_latency.AddLatencyNumberWithTimestamp( ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, now); AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now); AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now); - tracker()->OnInputEvent(touch, &touch_latency); + tracker()->OnInputEvent(touch, &touch_latency, &event_latency_metadata); + base::TimeTicks begin_rwh_timestamp; EXPECT_TRUE(touch_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_TRUE(touch_latency.FindLatency( ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, nullptr)); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); tracker()->OnInputEventAck( touch, &touch_latency, blink::mojom::InputEventResultState::kNotConsumed); @@ -476,9 +506,10 @@ base::TimeTicks now = base::TimeTicks::Now(); scroll.SetTimeStamp(now); ui::LatencyInfo scroll_latency; + ui::EventLatencyMetadata event_latency_metadata; AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); - tracker()->OnInputEvent(scroll, &scroll_latency); + tracker()->OnInputEvent(scroll, &scroll_latency, &event_latency_metadata); EXPECT_TRUE(scroll_latency.FindLatency( ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); EXPECT_TRUE(scroll_latency.FindLatency( @@ -493,16 +524,22 @@ touch.PressPoint(0, 0); touch.PressPoint(1, 1); ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH); + ui::EventLatencyMetadata event_latency_metadata; base::TimeTicks now = base::TimeTicks::Now(); touch_latency.AddLatencyNumberWithTimestamp( ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, now); AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now); AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now); - tracker()->OnInputEvent(touch, &touch_latency); + tracker()->OnInputEvent(touch, &touch_latency, &event_latency_metadata); + base::TimeTicks begin_rwh_timestamp; EXPECT_TRUE(touch_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_TRUE(touch_latency.FindLatency( ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, nullptr)); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); tracker()->OnInputEventAck( touch, &touch_latency, blink::mojom::InputEventResultState::kNotConsumed); @@ -558,14 +595,21 @@ const bool on_main[] = {true, false}; for (bool on_main_thread : on_main) { ui::LatencyInfo scrollbar_latency(ui::SourceEventType::SCROLLBAR); + ui::EventLatencyMetadata event_latency_metadata; AddFakeComponentsWithTimeStamp(*tracker(), &scrollbar_latency, now); scrollbar_latency.AddLatencyNumberWithTimestamp(component, now); AddRenderingScheduledComponent(&scrollbar_latency, on_main_thread, now); - tracker()->OnInputEvent(mouse_move, &scrollbar_latency); + tracker()->OnInputEvent(mouse_move, &scrollbar_latency, + &event_latency_metadata); + base::TimeTicks begin_rwh_timestamp; EXPECT_TRUE(scrollbar_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_TRUE(scrollbar_latency.FindLatency( ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, nullptr)); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); tracker()->OnInputEventAck( mouse_move, &scrollbar_latency, blink::mojom::InputEventResultState::kNotConsumed); @@ -594,13 +638,14 @@ base::TimeTicks now = base::TimeTicks::Now(); scroll.SetTimeStamp(now); ui::LatencyInfo scroll_latency; + ui::EventLatencyMetadata event_latency_metadata; scroll_latency.set_source_event_type( source_device == blink::WebGestureDevice::kTouchscreen ? ui::SourceEventType::TOUCH : ui::SourceEventType::WHEEL); AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); - tracker()->OnInputEvent(scroll, &scroll_latency); + tracker()->OnInputEvent(scroll, &scroll_latency, &event_latency_metadata); tracker()->OnInputEventAck( scroll, &scroll_latency, blink::mojom::InputEventResultState::kNoConsumerExists); @@ -613,11 +658,18 @@ auto scroll_begin = blink::SyntheticWebGestureEventBuilder::BuildScrollBegin( 5, -5, blink::WebGestureDevice::kTouchscreen); ui::LatencyInfo scroll_latency; + ui::EventLatencyMetadata event_latency_metadata; scroll_latency.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT); - tracker()->OnInputEvent(scroll_begin, &scroll_latency); + tracker()->OnInputEvent(scroll_begin, &scroll_latency, + &event_latency_metadata); + base::TimeTicks begin_rwh_timestamp; EXPECT_TRUE(scroll_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_EQ(2U, scroll_latency.latency_components().size()); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); // The first GestureScrollUpdate should be provided with // INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT. @@ -625,15 +677,22 @@ blink::SyntheticWebGestureEventBuilder::BuildScrollUpdate( 5.f, -5.f, 0, blink::WebGestureDevice::kTouchscreen); scroll_latency = ui::LatencyInfo(); + event_latency_metadata = ui::EventLatencyMetadata(); scroll_latency.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT); - tracker()->OnInputEvent(first_scroll_update, &scroll_latency); + tracker()->OnInputEvent(first_scroll_update, &scroll_latency, + &event_latency_metadata); + begin_rwh_timestamp = base::TimeTicks(); EXPECT_TRUE(scroll_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_TRUE(scroll_latency.FindLatency( ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, nullptr)); EXPECT_FALSE(scroll_latency.FindLatency( ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, nullptr)); EXPECT_EQ(3U, scroll_latency.latency_components().size()); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); // Subsequent GestureScrollUpdates should be provided with // INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT. @@ -641,15 +700,22 @@ blink::SyntheticWebGestureEventBuilder::BuildScrollUpdate( -5.f, 5.f, 0, blink::WebGestureDevice::kTouchscreen); scroll_latency = ui::LatencyInfo(); + event_latency_metadata = ui::EventLatencyMetadata(); scroll_latency.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT); - tracker()->OnInputEvent(scroll_update, &scroll_latency); + tracker()->OnInputEvent(scroll_update, &scroll_latency, + &event_latency_metadata); + begin_rwh_timestamp = base::TimeTicks(); EXPECT_TRUE(scroll_latency.FindLatency( - ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, nullptr)); + ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, &begin_rwh_timestamp)); EXPECT_FALSE(scroll_latency.FindLatency( ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, nullptr)); EXPECT_TRUE(scroll_latency.FindLatency( ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, nullptr)); EXPECT_EQ(3U, scroll_latency.latency_components().size()); + EXPECT_FALSE( + event_latency_metadata.arrived_in_browser_main_timestamp.is_null()); + EXPECT_EQ(event_latency_metadata.arrived_in_browser_main_timestamp, + begin_rwh_timestamp); } TEST_F(RenderWidgetHostLatencyTrackerTest, KeyEndToEndLatency) {
diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host.h b/content/browser/renderer_host/media/media_stream_dispatcher_host.h index 03466aa..bc6a044 100644 --- a/content/browser/renderer_host/media/media_stream_dispatcher_host.h +++ b/content/browser/renderer_host/media/media_stream_dispatcher_host.h
@@ -8,6 +8,7 @@ #include <string> #include <utility> +#include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" @@ -62,6 +63,13 @@ private: friend class MediaStreamDispatcherHostTest; friend class MockMediaStreamDispatcherHost; + FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherHostMultiCaptureTest, + NoRenderFrameHostMultiCaptureNotAllowed); + FRIEND_TEST_ALL_PREFIXES( + MediaStreamDispatcherHostMultiCaptureTest, + RenderFrameHostExistsButNoPolicySetMultiCaptureNotAllowed); + FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherHostMultiCaptureTest, + PolicySetMultiCaptureAllowed); struct GenerateStreamsUIThreadCheckResult { bool request_allowed = false;
diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc index d8020e82d..07a63a6 100644 --- a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc +++ b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc
@@ -33,11 +33,15 @@ #include "content/browser/renderer_host/media/media_stream_ui_proxy.h" #include "content/browser/renderer_host/media/mock_video_capture_provider.h" #include "content/browser/renderer_host/media/video_capture_manager.h" +#include "content/browser/renderer_host/render_frame_host_impl.h" +#include "content/public/browser/content_browser_client.h" +#include "content/public/browser/global_routing_id.h" #include "content/public/browser/media_device_id.h" #include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" #include "content/public/test/browser_task_environment.h" #include "content/public/test/test_browser_context.h" +#include "content/public/test/test_renderer_host.h" #include "media/audio/audio_device_description.h" #include "media/audio/audio_system_impl.h" #include "media/audio/mock_audio_manager.h" @@ -62,6 +66,7 @@ using ::testing::InSequence; using ::testing::Invoke; using ::testing::InvokeWithoutArgs; +using ::testing::Return; namespace content { @@ -1410,4 +1415,66 @@ static_cast<int>(blink::mojom::MediaStreamType::NO_SERVICE), static_cast<int>(blink::mojom::MediaStreamType::NUM_MEDIA_TYPES)))); +class MockContentBrowserClient : public ContentBrowserClient { + public: + MOCK_METHOD(bool, + IsGetDisplayMediaSetSelectAllScreensAllowed, + (content::BrowserContext * context, const url::Origin& origin), + (override)); +}; + +class MediaStreamDispatcherHostMultiCaptureTest + : public RenderViewHostTestHarness { + public: + MediaStreamDispatcherHostMultiCaptureTest() { + SetBrowserClientForTesting(&content_browser_client_); + } + + void SetUp() override { + RenderViewHostTestHarness::SetUp(); + RenderFrameHostTester::For(main_rfh())->InitializeRenderFrameIfNeeded(); + } + + protected: + GlobalRenderFrameHostId global_rfh_id() { + return static_cast<RenderFrameHostImpl*>(main_rfh())->GetGlobalId(); + } + + MockContentBrowserClient content_browser_client_; +}; + +TEST_F(MediaStreamDispatcherHostMultiCaptureTest, + NoRenderFrameHostMultiCaptureNotAllowed) { + GlobalRenderFrameHostId main_rfh_global_id = global_rfh_id(); + // Use a wrong id + int main_render_process_id = main_rfh_global_id.child_id - 1; + int render_frame_id = main_rfh_global_id.frame_routing_id - 1; + + EXPECT_FALSE(MediaStreamDispatcherHost::CheckRequestAllScreensAllowed( + main_render_process_id, render_frame_id)); +} + +TEST_F(MediaStreamDispatcherHostMultiCaptureTest, + RenderFrameHostExistsButNoPolicySetMultiCaptureNotAllowed) { + GlobalRenderFrameHostId main_rfh_global_id = global_rfh_id(); + int main_render_process_id = main_rfh_global_id.child_id; + int render_frame_id = main_rfh_global_id.frame_routing_id; + + EXPECT_FALSE(MediaStreamDispatcherHost::CheckRequestAllScreensAllowed( + main_render_process_id, render_frame_id)); +} + +TEST_F(MediaStreamDispatcherHostMultiCaptureTest, + PolicySetMultiCaptureAllowed) { + GlobalRenderFrameHostId main_rfh_global_id = global_rfh_id(); + int main_render_process_id = main_rfh_global_id.child_id; + int render_frame_id = main_rfh_global_id.frame_routing_id; + EXPECT_CALL(content_browser_client_, + IsGetDisplayMediaSetSelectAllScreensAllowed(_, _)) + .WillOnce(Return(true)); + + EXPECT_TRUE(MediaStreamDispatcherHost::CheckRequestAllScreensAllowed( + main_render_process_id, render_frame_id)); +} + } // namespace content
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index f6c7102..5e8403e 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -1497,7 +1497,9 @@ } MouseEventWithLatencyInfo mouse_with_latency(mouse_event, latency); - DispatchInputEventWithLatencyInfo(mouse_event, &mouse_with_latency.latency); + DispatchInputEventWithLatencyInfo( + mouse_with_latency.event, &mouse_with_latency.latency, + &mouse_with_latency.event.GetModifiableEventLatencyMetadata()); input_router_->SendMouseEvent( mouse_with_latency, base::BindOnce(&RenderWidgetHostImpl::OnMouseEventAck, weak_factory_.GetWeakPtr())); @@ -1523,7 +1525,9 @@ return; MouseWheelEventWithLatencyInfo wheel_with_latency(wheel_event, latency); - DispatchInputEventWithLatencyInfo(wheel_event, &wheel_with_latency.latency); + DispatchInputEventWithLatencyInfo( + wheel_with_latency.event, &wheel_with_latency.latency, + &wheel_with_latency.event.GetModifiableEventLatencyMetadata()); input_router_->SendWheelEvent(wheel_with_latency); } @@ -1643,8 +1647,9 @@ return; GestureEventWithLatencyInfo gesture_with_latency(gesture_event, latency); - DispatchInputEventWithLatencyInfo(gesture_event, - &gesture_with_latency.latency); + DispatchInputEventWithLatencyInfo( + gesture_with_latency.event, &gesture_with_latency.latency, + &gesture_with_latency.event.GetModifiableEventLatencyMetadata()); input_router_->SendGestureEvent(gesture_with_latency); } @@ -1662,7 +1667,9 @@ // ignored if appropriate in FilterInputEvent(). TouchEventWithLatencyInfo touch_with_latency(touch_event, latency); - DispatchInputEventWithLatencyInfo(touch_event, &touch_with_latency.latency); + DispatchInputEventWithLatencyInfo( + touch_with_latency.event, &touch_with_latency.latency, + &touch_with_latency.event.GetModifiableEventLatencyMetadata()); input_router_->SendTouchEvent(touch_with_latency); } @@ -1771,7 +1778,9 @@ NativeWebKeyboardEventWithLatencyInfo key_event_with_latency(key_event, latency); key_event_with_latency.event.is_browser_shortcut = is_shortcut; - DispatchInputEventWithLatencyInfo(key_event, &key_event_with_latency.latency); + DispatchInputEventWithLatencyInfo( + key_event_with_latency.event, &key_event_with_latency.latency, + &key_event_with_latency.event.GetModifiableEventLatencyMetadata()); // TODO(foolip): |InputRouter::SendKeyboardEvent()| may filter events, in // which the commands will be treated as belonging to the next key event. // WidgetInputHandler::SetEditCommandsForNextKeyEvent should only be sent if @@ -3245,8 +3254,9 @@ void RenderWidgetHostImpl::DispatchInputEventWithLatencyInfo( const blink::WebInputEvent& event, - ui::LatencyInfo* latency) { - latency_tracker_.OnInputEvent(event, latency); + ui::LatencyInfo* latency, + ui::EventLatencyMetadata* event_latency_metadata) { + latency_tracker_.OnInputEvent(event, latency, event_latency_metadata); AddPendingUserActivation(event); for (auto& observer : input_event_observers_) observer.OnInputEvent(event);
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h index f4775dd..4338bc5 100644 --- a/content/browser/renderer_host/render_widget_host_impl.h +++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -1079,8 +1079,10 @@ void OnInvalidInputEventSource() override; // Dispatch input events with latency information - void DispatchInputEventWithLatencyInfo(const blink::WebInputEvent& event, - ui::LatencyInfo* latency); + void DispatchInputEventWithLatencyInfo( + const blink::WebInputEvent& event, + ui::LatencyInfo* latency, + ui::EventLatencyMetadata* event_latency_metadata); void WindowSnapshotReachedScreen(int snapshot_id); @@ -1193,7 +1195,7 @@ // Our delegate, which wants to know mainly about keyboard events. // It will remain non-null until DetachDelegate() is called. - raw_ptr<RenderWidgetHostDelegate> delegate_; + raw_ptr<RenderWidgetHostDelegate, DanglingUntriaged> delegate_; // The delegate of the owner of this object. // This member is non-null if and only if this RenderWidgetHost is associated
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc index 68d74a9..539a8b0 100644 --- a/content/browser/renderer_host/render_widget_host_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_unittest.cc
@@ -2351,8 +2351,10 @@ NativeWebKeyboardEvent native_event(WebInputEvent::Type::kChar, 0, GetNextSimulatedEventTime()); ui::LatencyInfo latency_info = ui::LatencyInfo(); + ui::EventLatencyMetadata event_latency_metadata; EXPECT_CALL(observer, OnInputEvent(_)).Times(1); - host_->DispatchInputEventWithLatencyInfo(native_event, &latency_info); + host_->DispatchInputEventWithLatencyInfo(native_event, &latency_info, + &event_latency_metadata); // Remove InputEventObserver. host_->RemoveInputEventObserver(&observer); @@ -2360,7 +2362,9 @@ // Confirm InputEventObserver is removed. EXPECT_CALL(observer, OnInputEvent(_)).Times(0); latency_info = ui::LatencyInfo(); - host_->DispatchInputEventWithLatencyInfo(native_event, &latency_info); + event_latency_metadata = ui::EventLatencyMetadata(); + host_->DispatchInputEventWithLatencyInfo(native_event, &latency_info, + &event_latency_metadata); } #if BUILDFLAG(IS_ANDROID)
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc index 178efd7..5adf34a 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -2112,9 +2112,20 @@ blink::mojom::InputEventResultState ack_result) { const bool event_consumed = ack_result == blink::mojom::InputEventResultState::kConsumed; + // |is_source_touch_event_set_non_blocking| defines a blocking behaviour of + // the future inputs. + const bool is_source_touch_event_set_non_blocking = + InputEventResultStateIsSetNonBlocking(ack_result); + // |was_touch_blocked| indicates whether the current event was dispatched + // blocking to the Renderer. + const bool was_touch_blocked = + ui::WebInputEventTraits::ShouldBlockEventStream(touch.event); gesture_provider_.OnTouchEventAck( touch.event.unique_touch_event_id, event_consumed, - InputEventResultStateIsSetNonBlocking(ack_result)); + is_source_touch_event_set_non_blocking, + was_touch_blocked + ? absl::make_optional(touch.event.GetEventLatencyMetadata()) + : absl::nullopt); if (touch.event.touch_start_or_first_touch_move && event_consumed && host()->delegate() && host()->delegate()->GetInputEventRouter()) { host()
diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn index a92d133..a164080 100644 --- a/content/common/BUILD.gn +++ b/content/common/BUILD.gn
@@ -628,6 +628,7 @@ "//ui/color:mojom", "//ui/display/mojom", "//ui/events/mojom", + "//ui/events/mojom:event_latency_metadata_mojom", "//ui/gfx/geometry/mojom", "//ui/gfx/image/mojom", "//ui/gfx/mojom",
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index d3438f8..04abb26 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -29,6 +29,11 @@ "AndroidDownloadableFontsMatching", base::FEATURE_ENABLED_BY_DEFAULT); +// Enables FLEDGE and Attribution Reporting API integration. +BASE_FEATURE(kAttributionFencedFrameReportingBeacon, + "AttributionFencedFrameReportingBeacon", + base::FEATURE_DISABLED_BY_DEFAULT); + // Launches the audio service on the browser startup. BASE_FEATURE(kAudioServiceLaunchOnStartup, "AudioServiceLaunchOnStartup",
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h index 82881fb..486d947 100644 --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h
@@ -21,6 +21,7 @@ // alongside the definition of their values in the .cc file. CONTENT_EXPORT BASE_DECLARE_FEATURE(kAllowContentInitiatedDataUrlNavigations); CONTENT_EXPORT BASE_DECLARE_FEATURE(kAndroidDownloadableFontsMatching); +CONTENT_EXPORT BASE_DECLARE_FEATURE(kAttributionFencedFrameReportingBeacon); CONTENT_EXPORT BASE_DECLARE_FEATURE(kAudioServiceLaunchOnStartup); CONTENT_EXPORT BASE_DECLARE_FEATURE(kAudioServiceOutOfProcess); CONTENT_EXPORT BASE_DECLARE_FEATURE(kAudioServiceSandbox);
diff --git a/content/public/common/content_switch_dependent_feature_overrides.cc b/content/public/common/content_switch_dependent_feature_overrides.cc index e3b0e06..7171156 100644 --- a/content/public/common/content_switch_dependent_feature_overrides.cc +++ b/content/public/common/content_switch_dependent_feature_overrides.cc
@@ -187,6 +187,9 @@ std::cref(blink::features:: kPrivateAggregationApiFledgeExtensionsLocalTestingOverride), base::FeatureList::OVERRIDE_ENABLE_FEATURE}, + {switches::kEnablePrivacySandboxAdsApis, + std::cref(features::kAttributionFencedFrameReportingBeacon), + base::FeatureList::OVERRIDE_ENABLE_FEATURE}, }; std::vector<base::FeatureList::FeatureOverrideInfo> overrides;
diff --git a/content/public/test/test_file_error_injector.h b/content/public/test/test_file_error_injector.h index 6932384..cc1722e 100644 --- a/content/public/test/test_file_error_injector.h +++ b/content/public/test/test_file_error_injector.h
@@ -132,7 +132,7 @@ raw_ptr<DownloadFileWithErrorFactory> created_factory_ = nullptr; // The download manager we set the factory on. - raw_ptr<DownloadManagerImpl> download_manager_ = nullptr; + raw_ptr<DownloadManagerImpl, DanglingUntriaged> download_manager_ = nullptr; }; } // namespace content
diff --git a/content/renderer/render_thread_impl_discardable_memory_browsertest.cc b/content/renderer/render_thread_impl_discardable_memory_browsertest.cc index c5ad5e8..8b75a67ca 100644 --- a/content/renderer/render_thread_impl_discardable_memory_browsertest.cc +++ b/content/renderer/render_thread_impl_discardable_memory_browsertest.cc
@@ -149,7 +149,7 @@ #endif IN_PROC_BROWSER_TEST_F(RenderThreadImplDiscardableMemoryBrowserTest, - ReleaseFreeDiscardableMemory) { + ReleaseFreeDiscardableMemory_Explicitly) { const size_t kSize = 1024 * 1024; // 1MiB. base::DiscardableMemoryBacking impl = base::GetDiscardableMemoryBacking(); @@ -159,11 +159,14 @@ EXPECT_TRUE(memory); EXPECT_GE(discardable_memory_allocator()->GetBytesAllocated(), kSize); - memory.reset(); + memory.reset(); EXPECT_EQ(discardable_memory_allocator()->GetBytesAllocated(), 0U); - if (impl != base::DiscardableMemoryBacking::kSharedMemory) + + if (impl != base::DiscardableMemoryBacking::kSharedMemory) { + LOG(INFO) << "Not using shared-memory backing. Skipping test."; return; + } EXPECT_GE(discardable_memory::DiscardableSharedMemoryManager::Get() ->GetBytesAllocated(), @@ -185,27 +188,40 @@ EXPECT_LT(base::TimeTicks::Now(), end); } -// TODO(crbug.com/974850): Flaky on all platforms. IN_PROC_BROWSER_TEST_F(RenderThreadImplDiscardableMemoryBrowserTest, - DISABLED_ReleaseFreeMemory) { + ReleaseFreeDiscardableMemory_ByCriticalPressure) { const size_t kSize = 1024 * 1024; // 1MiB. + base::DiscardableMemoryBacking impl = base::GetDiscardableMemoryBacking(); + std::unique_ptr<base::DiscardableMemory> memory = AllocateLockedDiscardableMemory(kSize); EXPECT_TRUE(memory); - memory.reset(); - EXPECT_GE(discardable_memory_allocator()->GetBytesAllocated(), kSize); + memory.reset(); + EXPECT_EQ(discardable_memory_allocator()->GetBytesAllocated(), 0U); + + if (impl != base::DiscardableMemoryBacking::kSharedMemory) { + LOG(INFO) << "Not using shared-memory backing. Skipping test."; + return; + } + + EXPECT_GE(discardable_memory::DiscardableSharedMemoryManager::Get() + ->GetBytesAllocated(), + kSize); + // Call RenderThreadImpl::ReleaseFreeMemory through a fake memory pressure - // notification. + // notification. The pressure notification will be handled on the test + // main thread, so it is sufficient to RunAllTasksUntilIdle(), after which + // the manager should report that the memory has been freed. base::MemoryPressureListener::SimulatePressureNotification( base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); - base::RunLoop().RunUntilIdle(); - RunAllTasksUntilIdle(); - EXPECT_EQ(0U, discardable_memory_allocator()->GetBytesAllocated()); + RunAllTasksUntilIdle(); + EXPECT_EQ(0u, discardable_memory::DiscardableSharedMemoryManager::Get() + ->GetBytesAllocated()); } IN_PROC_BROWSER_TEST_F(RenderThreadImplDiscardableMemoryBrowserTest,
diff --git a/content/shell/browser/shell_devtools_bindings.h b/content/shell/browser/shell_devtools_bindings.h index 976a56f..33474e6 100644 --- a/content/shell/browser/shell_devtools_bindings.h +++ b/content/shell/browser/shell_devtools_bindings.h
@@ -77,8 +77,8 @@ void SendMessageAck(int request_id, const base::Value::Dict arg); void AttachInternal(); - raw_ptr<WebContents> inspected_contents_; - raw_ptr<ShellDevToolsDelegate> delegate_; + raw_ptr<WebContents, DanglingUntriaged> inspected_contents_; + raw_ptr<ShellDevToolsDelegate, DanglingUntriaged> delegate_; scoped_refptr<DevToolsAgentHost> agent_host_; int inspect_element_at_x_; int inspect_element_at_y_;
diff --git a/device/bluetooth/strings/bluetooth_strings_zh-HK.xtb b/device/bluetooth/strings/bluetooth_strings_zh-HK.xtb index 19e42f99..05d4b0768 100644 --- a/device/bluetooth/strings/bluetooth_strings_zh-HK.xtb +++ b/device/bluetooth/strings/bluetooth_strings_zh-HK.xtb
@@ -5,7 +5,7 @@ <translation id="2616803374438260326">鍵盤/滑鼠 (<ph name="ADDRESS" />)</translation> <translation id="3273951168350045122">鍵盤 (<ph name="ADDRESS" />)</translation> <translation id="4287283380557401002">汽車音響 (<ph name="ADDRESS" />)</translation> -<translation id="430326050669417502">操控桿 (<ph name="ADDRESS" />)</translation> +<translation id="430326050669417502">搖桿 (<ph name="ADDRESS" />)</translation> <translation id="5271696982761495740">平板電腦 (<ph name="ADDRESS" />)</translation> <translation id="5376363957846771741">不明或不支援的裝置 (<ph name="ADDRESS" />)</translation> <translation id="654594702871184195">音訊 (<ph name="ADDRESS" />)</translation>
diff --git a/extensions/browser/api/file_handlers/directory_util.h b/extensions/browser/api/file_handlers/directory_util.h index 58893f7..9efcb05 100644 --- a/extensions/browser/api/file_handlers/directory_util.h +++ b/extensions/browser/api/file_handlers/directory_util.h
@@ -45,7 +45,7 @@ private: void OnIsDirectoryCollected(size_t index, bool directory); - raw_ptr<content::BrowserContext> context_; + raw_ptr<content::BrowserContext, DanglingUntriaged> context_; std::vector<base::FilePath> paths_; std::unique_ptr<std::set<base::FilePath>> result_; size_t left_;
diff --git a/extensions/browser/api/guest_view/web_view/web_view_internal_api.h b/extensions/browser/api/guest_view/web_view/web_view_internal_api.h index 3f26efc..df9d658 100644 --- a/extensions/browser/api/guest_view/web_view/web_view_internal_api.h +++ b/extensions/browser/api/guest_view/web_view/web_view_internal_api.h
@@ -35,7 +35,7 @@ ~WebViewInternalExtensionFunction() override {} bool PreRunValidation(std::string* error) override; - raw_ptr<WebViewGuest> guest_ = nullptr; + raw_ptr<WebViewGuest, DanglingUntriaged> guest_ = nullptr; }; class WebViewInternalCaptureVisibleRegionFunction
diff --git a/extensions/browser/background_script_executor.h b/extensions/browser/background_script_executor.h index f226b10..83e4bbfc 100644 --- a/extensions/browser/background_script_executor.h +++ b/extensions/browser/background_script_executor.h
@@ -137,7 +137,7 @@ std::unique_ptr<ScriptResultQueue> script_result_queue_; // The associated Extension. - raw_ptr<const Extension> extension_ = nullptr; + raw_ptr<const Extension, DanglingUntriaged> extension_ = nullptr; // The script to inject; cached mostly for logging purposes. std::string script_;
diff --git a/extensions/browser/policy_check.h b/extensions/browser/policy_check.h index 1f46c1a4..5557f99 100644 --- a/extensions/browser/policy_check.h +++ b/extensions/browser/policy_check.h
@@ -35,7 +35,7 @@ std::u16string GetErrorMessage() const override; private: - raw_ptr<content::BrowserContext> context_; + raw_ptr<content::BrowserContext, DanglingUntriaged> context_; std::u16string error_; };
diff --git a/ios/chrome/app/strings/resources/ios_strings_af.xtb b/ios/chrome/app/strings/resources/ios_strings_af.xtb index eb6c7b4..aa4eaa5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_af.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_af.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Zoem uit</translation> <translation id="2230173723195178503">Webblad is gelaai</translation> <translation id="2239626343334228536">Vee blaaierdata uit …</translation> +<translation id="2242467532204595597">Gebruik Chrome enige tyd wanneer jy op skakels in boodskappe, dokumente en ander apps tik.</translation> <translation id="22508856139286506">Toegemaakte waarskuwings (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Kieslys → Geskiedenis</translation> <translation id="2256933947031277845">Jou organisasie laat jou toe om net met sekere rekeninge aan te meld.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} gestoorde adres is bo jou sleutelbord beskikbaar.}other{{count} gestoorde adresse is bo jou sleutelbord beskikbaar.}}</translation> <translation id="2421004566762153674">Blokkeer tans derdeparty-webkoekies</translation> <translation id="2421044535038393232">Hou wysiging</translation> +<translation id="2423077901494354337">Jy sal Chrome nou ten beste op jou toestel benut.</translation> <translation id="2434405374328098816">Jy het reeds 'n wagwoord vir "<ph name="USERNAME" />" op <ph name="WEBSITE" /> gestoor</translation> <translation id="2435457462613246316">Wys wagwoord</translation> <translation id="2451654228769116489">Speld oortjie vas</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Kennisgewings</translation> <translation id="2496626742194544812">Gaan na eerste oortjie</translation> <translation id="2500374554657206846">Opsies om wagwoord te stoor</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> hergebruikte wagwoorde</translation> <translation id="2523363575747517183">Hierdie webwerf probeer herhaaldelik 'n ander program oopmaak.</translation> <translation id="2529021024822217800">Maak almal oop</translation> <translation id="2547458583188611426">Sinkronisering werk nie tans nie. Voer jou wagfrase in om sinkronisering te begin.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Aanbieding om bladsye in ander tale te vertaal</translation> <translation id="3588820906588687999">Maak prent in nuwe oortjie oop</translation> <translation id="3595252146048399851">Jy kan altyd in <ph name="BEGIN_LINK" />instellings<ph name="END_LINK" /> kies wat om te sinkroniseer. Google kan Search en ander dienste op grond van jou geskiedenis personaliseer.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} swak wagwoord}other{{COUNT} swak wagwoorde}}</translation> <translation id="3603009562372709545">Kopieer skakel se URL</translation> <translation id="3607167657931203000">Outovuldata</translation> <translation id="3608008480985212611">Meld aan om jou voorkeure te bestuur</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Kombineer my data</translation> <translation id="3929457972718048006">Adresse</translation> <translation id="3943492037546055397">Wagwoorde</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} swak wagwoord}other{{count} swak wagwoorde}}</translation> <translation id="3959736869653157332">Kieslys → Nuwe Incognito-oortjie</translation> <translation id="3967822245660637423">Aflaai is voltooi</translation> <translation id="3968505803272650567">Bestuur belangstellings</translation> @@ -611,6 +610,7 @@ <translation id="5118764316110575523">Af</translation> <translation id="5119391094379141756">Kies Chrome</translation> <translation id="5121618895923301719">Jy spoor reeds hierdie produk na. Hierdie bladsy is in <ph name="BEGIN_LINK" />Mobielboekmerke<ph name="END_LINK" /> gestoor.</translation> +<translation id="5126465625664020024">Meld aan en sinkroniseer</translation> <translation id="5132942445612118989">Sinkroniseer jou wagwoorde, geskiedenis en meer op alle toestelle</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} swak wagwoord}other{{COUNT} swak wagwoorde}}</translation> <translation id="5149188072385105201">Voeg wagwoord by …</translation> @@ -771,7 +771,6 @@ <translation id="6184086493125982861">Wys oortjies</translation> <translation id="6187302354554850004">Laas gesinkroniseer: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Nie gelees nie</translation> -<translation id="6193424046394092997">{count,plural, =1{Geboekmerk in {title}}other{Geboekmerk in {title}}}</translation> <translation id="6196207969502475924">Stemsoektog</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Maak {COUNT} oortjie toe}other{Maak {COUNT} oortjies toe}}</translation> <translation id="6210079381482819663">Oortjies wat <ph name="THRESHOLD" /> dae of langer nie gebruik is nie, word hierheen geskuif. Jy kan dit enige tyd in <ph name="BEGIN_LINK" />instellings<ph name="END_LINK" /> verander.</translation> @@ -801,6 +800,7 @@ <translation id="6346549652287021269">Begin nuwe aflaai?</translation> <translation id="6347953390226388422">{count,plural, =1{HIerdie adres sal in jou Google-rekening (<ph name="USER_EMAIL" />) en op hierdie toestel uitgevee word.}other{HIerdie adresse sal in jou Google-rekening (<ph name="USER_EMAIL" />) en op hierdie toestel uitgevee word.}}</translation> <translation id="634878792104344809">Sinkroniseer jou wagwoorde, geskiedenis en meer op al jou toestelle</translation> +<translation id="6348855835728304880">Kry van ander apps op hierdie toestel af toegang tot jou Chrome-wagwoorde en meer.</translation> <translation id="6355820205320395730">Swak wagwoorde is maklik om te raai. Maak seker jy skep sterk wagwoorde. <ph name="BEGIN_LINK" />Sien nog sekuriteitswenke.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Volg <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Geen incognito-oortjies nie</translation> @@ -820,7 +820,6 @@ Jou data is op <ph name="TIME" /> met jou sinkroniseringwagfrase geënkripteer.</translation> <translation id="6418346271604475326">Berei PDF voor</translation> -<translation id="6421095165635308">{count,plural, =1{Boekmerk in {title} in jou rekening {email} gestoor}other{Boekmerke in {title} in jou rekening {email} gestoor}}</translation> <translation id="6429213933892582367">Maak Wagwoordopsies oop</translation> <translation id="6434591244308415567">Iets is fout. Probeer later weer.</translation> <translation id="6435236283694032571">Voeg by Leeslys</translation> @@ -953,6 +952,7 @@ <translation id="7221173315674413369">Verken nuwe kenmerke en wenke in Wat's nuut</translation> <translation id="7223102419539744003">Maak oortjie toe</translation> <translation id="722454870747268814">Nuwe Incognito-oortjie</translation> +<translation id="723787869754590019">Gebruik Chrome vir outovul</translation> <translation id="7265758999917665941">Nooit vir hierdie werf nie</translation> <translation id="7272437679830969316">Kan nie jou identiteit verifieer nie. Wagwoord is nie gekopieer nie.</translation> <translation id="7291368939935408496">Maak tans wagwoorde gereed …</translation> @@ -1154,12 +1154,14 @@ <translation id="8663764600409216912">Jy gebruik wagwoorde wat moeilik lyk om te raai</translation> <translation id="8668210798914567634">Hierdie bladsy is na jou Leeslys gestoor.</translation> <translation id="8680787084697685621">Rekening se aanmeldbesonderhede is verouderd.</translation> +<translation id="868773710103052534">Jy is gereed</translation> <translation id="8693663554456874301">{count,plural, =1{Maak oortjie toe}other{Maak oortjies toe}}</translation> <translation id="8703536910991780768">Jou wagwoorde lyk sterk</translation> <translation id="8706588385081740091">Wagwoorde</translation> <translation id="8717864919010420084">Kopieer skakel</translation> <translation id="8721297211384281569">Nutsgoedkieslys</translation> <translation id="8725066075913043281">Probeer weer</translation> +<translation id="8727043961453758442">Benut Chrome ten beste</translation> <translation id="8730621377337864115">Gedoen</translation> <translation id="8731388423028622182">Jy is as deel van jou iPhone-terugstelling uit jou rekening <ph name="USER_NAME" /> afgemeld. Tik hieronder op gaan voort om aan te meld.</translation> <translation id="87371078663613140">Verken die opsies op die kieslysbalk</translation> @@ -1206,9 +1208,9 @@ <translation id="8974714402877957201">1. Maak iPad Settings oop</translation> <translation id="8976382372951310360">Hulp</translation> <translation id="8976414606286374109">Kaarte wat in jou Google-rekening gestoor is.</translation> -<translation id="8978059030508051916">{count,plural, =0{Geen gekompromitteerde wagwoorde nie}=1{{count} gekompromitteerde wagwoord}other{{count} gekompromitteerde wagwoorde}}</translation> <translation id="8981454092730389528">Google-aktiwiteitkontroles</translation> <translation id="8985320356172329008">By Google aangemeld as</translation> +<translation id="8986567980592931173">Meld met jou Google-rekening aan om jou wagwoorde, geskiedenis en meer te sinkroniseer.</translation> <translation id="8998289560386111590">Nie op jou toestel beskikbaar nie</translation> <translation id="9000089900434778519">Jou soekenjin is <ph name="DSE_NAME" />. Sien hulle instruksies om jou soekgeskiedenis uit te vee, indien nodig.</translation> <translation id="9008201768610948239">Ignoreer</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb index 4a0db12..ca6299a0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">አሳንስ</translation> <translation id="2230173723195178503">ድረ-ገጽ ተጭኗል</translation> <translation id="2239626343334228536">የአሰሳ ውሂብን በማጽዳት ላይ...</translation> +<translation id="2242467532204595597">በመልዕክቶች፣ ሰነዶች እና ሌሎች መተግበሪያዎች ውስጥ አገናኞች ላይ መታ በሚያደርጉበት በማንኛውም ጊዜ Chromeን ይጠቀሙ።</translation> <translation id="22508856139286506">የተሰናበቱ ማስጠንቀቂያዎች (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">ምናሌ → ታሪክ</translation> <translation id="2256933947031277845">በተወሰኑ መለያዎች አማካኝነት ብቻ እንዲገቡ ድርጅትዎ ይፈቅድልዎታል።</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} የተቀመጠ አድራሻ ከቁልፍ ሰሌዳዎ በላይ ይገኛል።}one{{count} የተቀመጠ አድራሻ ከቁልፍ ሰሌዳዎ በላይ ይገኛል።}other{{count} የተቀመጡ አድራሻዎች ከቁልፍ ሰሌዳዎ በላይ ይገኛሉ።}}</translation> <translation id="2421004566762153674">የሶስተኛ ወገን ኩኪዎችን ማገድ</translation> <translation id="2421044535038393232">አርትዖቱን ቀጥል</translation> +<translation id="2423077901494354337">አሁን በመሣሪያዎ ላይ ከChrome ምርጡን ያገኛሉ።</translation> <translation id="2434405374328098816"><ph name="WEBSITE" /> ላይ ለ«<ph name="USERNAME" />» የይለፍ ቃል አስቀድመው አስቀምጠዋል</translation> <translation id="2435457462613246316">የይለፍ ቃል አሳይ</translation> <translation id="2451654228769116489">ትርን ሰካ</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">ማስታወቂያዎች</translation> <translation id="2496626742194544812">ወደ መጀመሪያ ትር ሂድ</translation> <translation id="2500374554657206846">የይለፍ ቃል የሚቀመጡባቸው አማራጮች</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> ዳግም ጥቅም ላይ የዋሉ የይለፍ ቃላት</translation> <translation id="2523363575747517183">ይህ ድር ጣቢያ በተደጋጋሚነት ሌላ መተግበሪያ ለመክፈት እየሞከረ ነው።</translation> <translation id="2529021024822217800">ሁሉንም ክፈት</translation> <translation id="2547458583188611426">ማስመር እየሰራ አይደለም። ማስመር ለመጀመር የይለፍ ሐረግዎን ያስገቡ።</translation> @@ -227,6 +228,7 @@ <translation id="2576499762020411840">በGoogle መለያዎ ውስጥ የይለፍ ቃላትን ይጠቀሙ እና ያስቀምጡ</translation> <translation id="2578571896248130439">ድረ-ገጽ ይላኩ</translation> <translation id="2584132361465095047">መለያ አክል…</translation> +<translation id="2595587704210555261">{COUNT,plural, =1{ለአንድ ቀን ወይም ከዚያ በላይ ጥቅም ላይ ያልዋሉ ክፍት ትሮች እርስዎ በቀላሉ በጣም የሚጠቀሟቸው ትሮች ላይ እንዲያተኩሩ ወደ ገቢር ያልሆኑ ትሮች ይንቀሳቀሳሉ። ይህን በማንኛውም ጊዜ በቅንብሮች ውስጥ መለወጥ ይችላሉ።}one{ለ{COUNT} ቀን ወይም ከዚያ በላይ ጥቅም ላይ ያልዋሉ ክፍት ትሮች እርስዎ በቀላሉ በጣም የሚጠቀሟቸው ትሮች ላይ እንዲያተኩሩ ወደ ገቢር ያልሆኑ ትሮች ይንቀሳቀሳሉ። ይህን በማንኛውም ጊዜ በቅንብሮች ውስጥ መለወጥ ይችላሉ።}other{ለ{COUNT} ቀናት ወይም ከዚያ በላይ ጥቅም ላይ ያልዋሉ ክፍት ትሮች እርስዎ በቀላሉ በጣም የሚጠቀሟቸው ትሮች ላይ እንዲያተኩሩ ወደ ገቢር ያልሆኑ ትሮች ይንቀሳቀሳሉ። ይህን በማንኛውም ጊዜ በቅንብሮች ውስጥ መለወጥ ይችላሉ።}}</translation> <translation id="2600682495497606169">የጣቢያ ኩኪዎችን ያጽዱ</translation> <translation id="2609008503159898744">ሁሉም ትሮች ይዘጉ?</translation> <translation id="2625189173221582860">የይለፍ ቃል ተቀድቷል።</translation> @@ -388,7 +390,6 @@ <translation id="3581564640715911333">በሌሎች ቋንቋዎች ለመተርጎም ሐሳብ አቅርብ</translation> <translation id="3588820906588687999">ምስሉን በአዲስ ትር ውስጥ ክፈት</translation> <translation id="3595252146048399851"><ph name="BEGIN_LINK" />ቅንብሮች<ph name="END_LINK" /> ውስጥ በማንኛውም ጊዜ ምን እንደሚያሰምሩ መምረጥ ይችላሉ። Google በእርስዎ ታሪክ ላይ በመመስረት ፍለጋን እና ሌሎች አገልግሎቶችን ግላዊነት ሊያላብስ ይችላል።</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} ደካማ የይለፍ ቃል}one{{COUNT} ደካማ የይለፍ ቃል}other{{COUNT} ደካማ የይለፍ ቃላት}}</translation> <translation id="3603009562372709545">የአገናኝ ዩአርኤል ገልብጥ</translation> <translation id="3607167657931203000">የራስ-ሙላ ውሂብ</translation> <translation id="3608008480985212611">አማራጮችዎን ለማስተዳደር በመለያ ይግቡ።</translation> @@ -434,7 +435,6 @@ <translation id="3928666092801078803">የእኔን ውሂብ አጣምር</translation> <translation id="3929457972718048006">አድራሻዎች</translation> <translation id="3943492037546055397">የይለፍ ቃላት</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} ደካማ የይለፍ ቃል}one{{count} ደካማ የይለፍ ቃል}other{{count} ደካማ የይለፍ ቃላት}}</translation> <translation id="3959736869653157332">ምናሌ → አዲስ ማንነት የማያሳውቅ ትር</translation> <translation id="3967822245660637423">ማውረድ ተጠናቅቋል</translation> <translation id="3968505803272650567">ፍላጎቶችን አቀናብር</translation> @@ -575,6 +575,7 @@ <translation id="4844899002472726590">የሚፈልጓቸውን ርዕሶች ይመልከቱ እና ያርትዑ</translation> <translation id="4848999860252535517">የ<ph name="WEBSITE" /> የይለፍ ቃል ይሰረዝ?</translation> <translation id="4854345657858711387">የይለፍ ኮድ ያዘጋጁ</translation> +<translation id="4856498338299082007">በእርስዎ የGoogle መለያ ውስጥ</translation> <translation id="4858786880085262208">ሲቻል ወደ ኤችቲቲፒኤስ ያሳድጉ። ደህንነታቸው የተጠበቁ ጣቢያዎች ደህንነቱ ያልተጠበቀ ይዘትን ሊያካትቱ ይችላሉ።</translation> <translation id="4860895144060829044">ደውል</translation> <translation id="4872323082491632254">የይለፍ ቃላትዎን ይፈትሹ</translation> @@ -609,6 +610,7 @@ <translation id="5118764316110575523">ጠፍቷል</translation> <translation id="5119391094379141756">Chromeን ይምረጡ</translation> <translation id="5121618895923301719">ይህን ምርት አስቀድመው እየተከታተሉት ነው። ይህ ገጽ በ<ph name="BEGIN_LINK" />ተንቀሳቃሽ እልባቶች<ph name="END_LINK" /> ውስጥ ተቀምጧል።</translation> +<translation id="5126465625664020024">በመለያ ይግቡ እና ያስምሩ</translation> <translation id="5132942445612118989">የእርስዎን የይለፍ ቃላት፣ ታሪክ እና ተጨማሪ ነገሮች በሁሉም መሣሪያዎች ላይ ያስምሩ</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} ደካማ የይለፍ ቃል}one{{COUNT} ደካማ የይለፍ ቃል}other{{COUNT} ደካማ የይለፍ ቃላት}}</translation> <translation id="5149188072385105201">የይለፍ ቃል አክል…</translation> @@ -769,7 +771,6 @@ <translation id="6184086493125982861">ትሮችን አሳይ</translation> <translation id="6187302354554850004">ለመጨረሻ ጊዜ የተመሳሰለው፦ <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">ያልተነበበ</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} ላይ ዕልባት ተደርጓል}one{{title} ላይ ዕልባት ተደርጓል}other{{title} ላይ ዕልባት ተደርጓል}}</translation> <translation id="6196207969502475924">የድምጽ ፍለጋ</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ትር ዝጋ}one{{COUNT} ትሮችን ዝጋ}other{{COUNT} ትሮችን ዝጋ}}</translation> <translation id="6210079381482819663">ለ<ph name="THRESHOLD" /> ቀናት ወይም ከዚያ በላይ ጥቅም ላይ ያልዋሉ ትሮች እዚህ ተንቀሳቅሰዋል። ይህን በማንኛውም ጊዜ በ<ph name="BEGIN_LINK" />ቅንብሮች<ph name="END_LINK" /> ውስጥ መለወጥ ይችላሉ።</translation> @@ -799,6 +800,7 @@ <translation id="6346549652287021269">አዲስ ውርድ ይጀመር?</translation> <translation id="6347953390226388422">{count,plural, =1{ይህ አድራሻ ከGoogle መለያዎ (<ph name="USER_EMAIL" />) እና ከዚህ መሣሪያ ይሰረዛል።}one{ይህ አድራሻ ከGoogle መለያዎ (<ph name="USER_EMAIL" />) እና ከዚህ መሣሪያ ይሰረዛል።}other{እነዚህ አድራሻዎች ከGoogle መለያዎ (<ph name="USER_EMAIL" />) እና ከዚህ መሣሪያ ይሰረዛሉ።}}</translation> <translation id="634878792104344809">የእርስዎን የይለፍ ቃላት፣ ታሪክ እና ተጨማሪ ነገሮች በሁሉም መሣሪያዎችዎ ላይ ያስምሩ</translation> +<translation id="6348855835728304880">የእርስዎን የChrome የይለፍ ቃላት እና ሌሎችም በዚህ መሣሪያ ላይ ባሉ ሌሎች መተግበሪያዎች ላይ ይድረሱ።</translation> <translation id="6355820205320395730">ደካማ የይለፍ ቃላት ለመገመት ቀላል ናቸው። ጠንካራ የይለፍ ቃላትን እየፈጠሩ መሆንዎን ያረጋግጡ። <ph name="BEGIN_LINK" />ተጨማሪ ጠቃሚ የደህንነት ምክሮችን ይመልከቱ።<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" />ን ይከተሉ</translation> <translation id="6362362396625799311">ምንም ማንነት የማያሳውቁ ትሮች የሉም</translation> @@ -818,7 +820,6 @@ የእርስዎ ውሂብ <ph name="TIME" /> ላይ በእርስዎ የስምረት የይለፍ ቃል ተመስጥሯል። ስምረትን ለመጀመር ያስገቡት።</translation> <translation id="6418346271604475326">ፒዲኤፍ በመዘጋጀት ላይ</translation> -<translation id="6421095165635308">{count,plural, =1{በመለያዎ ውስጥ ዕልባት ወደ {title} ተቀምጧል፣ {email}}one{በመለያዎ ውስጥ ዕልባት ወደ {title} ተቀምጧል፣ {email}}other{በመለያዎ ውስጥ ዕልባቶች ወደ {title} ተቀምጠዋል፣ {email}}}</translation> <translation id="6429213933892582367">የይለፍ ቃል አማራጮችን ይክፈቱ</translation> <translation id="6434591244308415567">አንድ ስህተት አጋጥሟል። ቆይተው እንደገና ይሞክሩ።</translation> <translation id="6435236283694032571">ወደ የንባብ ዝርዝር አክል</translation> @@ -951,6 +952,7 @@ <translation id="7221173315674413369">ምን አዲስ ነገር አለ ውስጥ አዳዲስ ባህሪያት እና ጠቃሚ ምክሮችን ያስሱ</translation> <translation id="7223102419539744003">ትር ዝጋ</translation> <translation id="722454870747268814">አዲስ ማንነት የማያሳውቅ ትር</translation> +<translation id="723787869754590019">ለራስ-ሙላ Chromeን ይጠቀሙ</translation> <translation id="7265758999917665941">ለዚህ ጣቢያ በጭራሽ</translation> <translation id="7272437679830969316">የእርስዎን ማንነት ማረጋገጥ አልተቻለም። የይለፍ ቃል አልተቀዳም።</translation> <translation id="7291368939935408496">የይለፍ ቃላትን በማዘጋጀት ላይ...</translation> @@ -1022,6 +1024,7 @@ <translation id="7781011649027948662">ገጽ ይተርጎም?</translation> <translation id="7781069478569868053">የአዲስ ትር ገጽ</translation> <translation id="7781829728241885113">ትናንት</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{ከ1 ቀን በኋላ}one{ከ{COUNT} ቀን በኋላ}other{ከ{COUNT} ቀናት በኋላ}}</translation> <translation id="778855399387580014">በአዲስ የChrome ትር ውስጥ ፍለጋ ጀምር።</translation> <translation id="7791543448312431591">ያክሉ</translation> <translation id="7807060072011926525">በGoogle የቀረበ</translation> @@ -1086,6 +1089,7 @@ <translation id="8136856065410661948">ይህ ከChrome እና Google ሌንስ በእርስዎ Apple ቀን መቁጠሪያ ውስጥ ክስተቶችን ለመፍጠር ሥራ ላይ ይውላል።</translation> <translation id="8156478151976189188">የይለፍ ቃል ስምረት እየሠራ አይደለም</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> መለያዎች</translation> +<translation id="8159358225423560600">ልክ አሁን</translation> <translation id="8179976553408161302">አስገባ</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />የእርስዎ መሣሪያዎች<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">ገጽን ተርጉም</translation> @@ -1094,6 +1098,7 @@ <translation id="821809831108207540">የእርስዎን የምርምር ምግብ እና Chrome ግላዊነት ለማላበስ በመለያ ይግቡ እና አስምርን ያብሩ።</translation> <translation id="8225985093977202398">የተሸጎጡ ምስሎች እና ፋይሎች</translation> <translation id="8237382152611443140">የይለፍ ቃላትን በራስ-ሙላ ቅንብሮችን ይክፈቱ</translation> +<translation id="8248969482078657578">ገቢር ያልሆኑ ትሮች ትኩረት እንዲያደርጉ ያግዙዎታል</translation> <translation id="8261506727792406068">ሰርዝ</translation> <translation id="8264966119170358612">ከእርስዎ የተቀመጡ የይለፍ ቃላት መካከል አንዳንዶቹ የGoogle ባልሆነ የውሂብ ጥሰት ተጋልጠው ነበረ። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation> <translation id="8265018477030547118">በዚህ መሣሪያ ላይ ብቻ</translation> @@ -1115,6 +1120,7 @@ <translation id="8393889347136007944">ትሮች ለ<ph name="THRESHOLD" /> ቀናት ጥቅም ላይ አልዋሉም</translation> <translation id="8407669440184693619">ለዚህ ጣቢያ ምንም የይለፍ ቃላት አልተገኙም</translation> <translation id="842017693807136194">በሚከተለው በመለያ ተገብቷል፦</translation> +<translation id="8423121072346537366">ልክ አሁን</translation> <translation id="8425693829365242963">የእርስዎ የይለፍ ቃላት ልዩ ናቸው</translation> <translation id="8428045167754449968">ከተማ / መለስተኛ ከተማ</translation> <translation id="8428213095426709021">ቅንብሮች</translation> @@ -1148,12 +1154,14 @@ <translation id="8663764600409216912">ሲታዩ ለመገመት ከባድ የሚመስሉ የይለፍ ቃላትን እየተጠቀሙ ነው</translation> <translation id="8668210798914567634">ይህ ገጽ ወደ የእርስዎ ንባብ ዝርዝር ተቀምጧል።</translation> <translation id="8680787084697685621">የመለያ መግቢያ ዝርዝሮች ጊዜ ያለፈባቸው ናቸው።</translation> +<translation id="868773710103052534">ጨርሰዋል</translation> <translation id="8693663554456874301">{count,plural, =1{ትርን ዝጋ}one{ትሮችን ዝጋ}other{ትሮችን ዝጋ}}</translation> <translation id="8703536910991780768">ሲታዩ የእርስዎ የይለፍ ቃላት ጠንካራ ይመስላሉ</translation> <translation id="8706588385081740091">የይለፍ ቃላት</translation> <translation id="8717864919010420084">አገናኝ ቅዳ</translation> <translation id="8721297211384281569">የመሣሪያዎች ምናሌ</translation> <translation id="8725066075913043281">እንደገና ይሞክሩ</translation> +<translation id="8727043961453758442">ከChrome ምርጡን ያግኙ</translation> <translation id="8730621377337864115">ተከናውኗል</translation> <translation id="8731388423028622182">እንደ የእርስዎ iPhone ዳግም ማስጀምር አንድ አካል ከመለያዎ <ph name="USER_NAME" /> ዘግተው ወጥተዋል። በመለያ ለመግባት ከታች ያለውን ቀጥልን መታ ያድርጉ።</translation> <translation id="87371078663613140">በምናሌ አሞሌው ውስጥ ያሉትን አማራጮች ያስሱ</translation> @@ -1200,9 +1208,9 @@ <translation id="8974714402877957201">1. የiPad ቅንብሮችን ይክፈቱ</translation> <translation id="8976382372951310360">እገዛ</translation> <translation id="8976414606286374109">ካርዶች ወደ የእርስዎ Google መለያ ተቀምጠዋል።</translation> -<translation id="8978059030508051916">{count,plural, =0{ምንም የተጠለፈ የይለፍ ቃል የለም}=1{{count} የተጠለፈ የይለፍ ቃል}one{{count} የተጠለፈ የይለፍ ቃል}other{{count} የተጠለፉ የይለፍ ቃላት}}</translation> <translation id="8981454092730389528">የGoogle እንቅስቃሴ መቆጣጠሪያዎች</translation> <translation id="8985320356172329008">እንደሚከተለው ሆነው ወደ Google በመለያ ገብተዋል፦</translation> +<translation id="8986567980592931173">የእርስዎን የይለፍ ቃላት፣ ታሪክ እና ሌሎችንም ለማመሳሰል በGoogle መለያዎ ይግቡ።</translation> <translation id="8998289560386111590">መሣሪያዎ ላይ አይገኝም</translation> <translation id="9000089900434778519">የእርስዎ የፍለጋ ፕሮግራም <ph name="DSE_NAME" /> ነው። መተግበር የሚችል ከሆነ የፍለጋ ታሪክዎን ለመሰረዝ መመሪያዎቻቸውን ይመልከቱ።</translation> <translation id="9008201768610948239">ችላ በል</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb index 097b54e..fe7e72a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">الإشعارات</translation> <translation id="2496626742194544812">الانتقال إلى علامة التبويب الأولى</translation> <translation id="2500374554657206846">خيارات حفظ كلمة المرور</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> كلمة مرور مستخدَمة لحساب آخر</translation> <translation id="2523363575747517183">يحاول الموقع الإلكتروني هذا فتح تطبيق آخر بشكلٍ متكرر.</translation> <translation id="2529021024822217800">فتح الكل</translation> <translation id="2547458583188611426">المزامنة غير مفعَّلة. يجب إدخال عبارة المرور لبدء المزامنة.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">اقتراح ترجمة الصفحات المكتوبة بلغات أخرى</translation> <translation id="3588820906588687999">فتح صورة في علامة تبويب جديدة</translation> <translation id="3595252146048399851">يمكنك متى شئت اختيار البيانات التي تريد مزامنتها، وذلك من خلال <ph name="BEGIN_LINK" />الإعدادات<ph name="END_LINK" />. وقد تستخدم Google السجلّ لتخصيص "بحث Google" والخدمات الأخرى.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{كلمة مرور واحدة ({COUNT}) ضعيفة}zero{{COUNT} كلمة مرور ضعيفة}two{كلمتا مرور ({COUNT}) ضعيفتان}few{{COUNT} كلمات مرور ضعيفة}many{{COUNT} كلمة مرور ضعيفة}other{{COUNT} كلمة مرور ضعيفة}}</translation> <translation id="3603009562372709545">نسخ عنوان URL للرابط</translation> <translation id="3607167657931203000">ملء البيانات تلقائيًا</translation> <translation id="3608008480985212611">يُرجى تسجيل الدخول لإدارة إعداداتك المفضّلة.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">جمع البيانات التابعة لي</translation> <translation id="3929457972718048006">العناوين</translation> <translation id="3943492037546055397">كلمات المرور</translation> -<translation id="3951717558054674026">{count,plural, =1{هناك كلمة مرور واحدة ضعيفة ({count})}zero{هناك {count} كلمة مرور ضعيفة}two{هناك كلِمتَا مرور ({count}) ضعيفتان}few{هناك {count} كلمات مرور ضعيفة}many{هناك {count} كلمة مرور ضعيفة}other{هناك {count} كلمة مرور ضعيفة}}</translation> <translation id="3959736869653157332">القائمة ← علامة تبويب جديدة في وضع التصفّح المتخفي</translation> <translation id="3967822245660637423">اكتمل التنزيل</translation> <translation id="3968505803272650567">إدارة الاهتمامات</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">إظهار علامات التبويب</translation> <translation id="6187302354554850004">تاريخ آخر مزامنة: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">غير مقروءة</translation> -<translation id="6193424046394092997">{count,plural, =1{تمت إضافة الإشارة المرجعية إلى مجلد "{title}".}zero{تمت إضافة الإشارات المرجعية إلى مجلد "{title}".}two{تمت إضافة الإشارتين المرجعيتين إلى مجلد "{title}".}few{تمت إضافة الإشارات المرجعية إلى مجلد "{title}".}many{تمت إضافة الإشارات المرجعية إلى مجلد "{title}".}other{تمت إضافة الإشارات المرجعية إلى مجلد "{title}".}}</translation> <translation id="6196207969502475924">البحث الصوتي</translation> <translation id="6202364442240589072">{COUNT,plural, =1{إغلاق علامة تبويب واحدة ({COUNT})}zero{إغلاق {COUNT} علامة تبويب}two{إغلاق علامتَي تبويب ({COUNT})}few{إغلاق {COUNT} علامات تبويب}many{إغلاق {COUNT} علامة تبويب}other{إغلاق {COUNT} علامة تبويب}}</translation> <translation id="6210079381482819663">يتم هنا نقل علامات التبويب غير المستخدَمة لمدة <ph name="THRESHOLD" /> يوم أو أكثر. يمكنك تعديل هذا الإعداد في أي وقت من خلال <ph name="BEGIN_LINK" />الإعدادات<ph name="END_LINK" />.</translation> @@ -823,7 +819,6 @@ تم ترميز بياناتك باستخدام عبارة مرور المزامنة في <ph name="TIME" />. أدخلها لبدء المزامنة.</translation> <translation id="6418346271604475326">جارٍ إعداد PDF</translation> -<translation id="6421095165635308">{count,plural, =1{تم حفظ الإشارة المرجعية في مجلّد "{title}" في حسابك، {email}.}zero{تم حفظ الإشارات المرجعية في مجلّد "{title}" في حسابك، {email}.}two{تم حفظ الإشارتَين المرجعيتَين في مجلّد "{title}" في حسابك، {email}.}few{تم حفظ الإشارات المرجعية في مجلّد "{title}" في حسابك، {email}.}many{تم حفظ الإشارات المرجعية في مجلّد "{title}" في حسابك، {email}.}other{تم حفظ الإشارات المرجعية في مجلّد "{title}" في حسابك، {email}.}}</translation> <translation id="6429213933892582367">افتح Password Options (خيارات كلمات المرور).</translation> <translation id="6434591244308415567">حدث خطأ. يُرجى إعادة المحاولة لاحقًا.</translation> <translation id="6435236283694032571">الإضافة إلى "قائمة القراءة"</translation> @@ -1027,6 +1022,7 @@ <translation id="7781011649027948662">هل تريد ترجمة الصفحة؟</translation> <translation id="7781069478569868053">صفحة "علامة تبويب جديدة"</translation> <translation id="7781829728241885113">أمس</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{بعد يوم واحد}zero{بعد {COUNT} يوم}two{بعد يومين ({COUNT})}few{بعد {COUNT} أيام}many{بعد {COUNT} يومًا}other{بعد {COUNT} يوم}}</translation> <translation id="778855399387580014">يمكنك بدء البحث في علامة تبويب Chrome جديدة.</translation> <translation id="7791543448312431591">إضافة</translation> <translation id="7807060072011926525">خلاصة مقدَّمة من Google</translation> @@ -1208,7 +1204,6 @@ <translation id="8974714402877957201">1- فتح iPad Settings (إعدادات iPad)</translation> <translation id="8976382372951310360">مساعدة</translation> <translation id="8976414606286374109">يتم حفظ بطاقات الائتمان في حسابك على Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{ما مِن كلمات مرور محتمَل تعرّضها للاختراق}=1{هناك كلمة مرور واحدة ({count}) محتمَل تعرّضها للاختراق}two{هناك كلِمتَا مرور ({count}) محتمَل تعرّضهما للاختراق}few{هناك {count} كلمات مرور محتمَل تعرّضها للاختراق}many{هناك {count} كلمة مرور محتمَل تعرّضها للاختراق}other{هناك {count} كلمة مرور محتمَل تعرّضها للاختراق}}</translation> <translation id="8981454092730389528">عناصر التحكم في النشاط على Google</translation> <translation id="8985320356172329008">أنت مسجّل الدخول إلى Google باستخدام</translation> <translation id="8998289560386111590">الوضع غير متاح على جهازك.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb index e3e9195..628868a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">জুম আউট কৰক</translation> <translation id="2230173723195178503">ৱেবপৃষ্ঠা ল’ড হ’ল</translation> <translation id="2239626343334228536">ব্ৰাউজিঙৰ ডেটা মচি থকা হৈছে...</translation> +<translation id="2242467532204595597">আপুনি বাৰ্তা, নথি আৰু অন্য এপ্সমূহত থকা কোনো লিংকত টিপি যিকোনো সময়তে Chrome ব্যৱহাৰ কৰক।</translation> <translation id="22508856139286506">অগ্ৰাহ্য কৰা সকীয়নি (<ph name="COUNT" /> টা)</translation> <translation id="2251686759395008410">মেনু → ইতিহাস</translation> <translation id="2256933947031277845">আপোনাৰ প্ৰতিষ্ঠানে আপোনাক কেৱল কিছুমান নিৰ্দিষ্ট একাউণ্টৰ জৰিয়তেহে ছাইন ইন কৰিবলৈ দিয়ে।</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{আপোনাৰ কীব’ৰ্ডৰ ওপৰত {count} টা ছেভ কৰি থোৱা ঠিকনা উপলব্ধ।}one{আপোনাৰ কীব’ৰ্ডৰ ওপৰত {count} টা ছেভ কৰি থোৱা ঠিকনা উপলব্ধ।}other{আপোনাৰ কীব’ৰ্ডৰ ওপৰত {count} টা ছেভ কৰি থোৱা ঠিকনা উপলব্ধ।}}</translation> <translation id="2421004566762153674">তৃতীয় পক্ষৰ কুকিসমূহ অৱৰোধ কৰা</translation> <translation id="2421044535038393232">সম্পাদনা কৰি থাকক</translation> +<translation id="2423077901494354337">আপুনি এতিয়া আপোনাৰ ডিভাইচত Chromeৰ পৰা পাৰ্যমানে উপকৃত হ’ব।</translation> <translation id="2434405374328098816">আপুনি ইতিমধ্যে "<ph name="USERNAME" />"ৰ বাবে <ph name="WEBSITE" />ত এটা পাছৱৰ্ড ছেভ কৰিছে</translation> <translation id="2435457462613246316">পাছৱৰ্ড দেখুৱাওক</translation> <translation id="2451654228769116489">টেবটো পিন কৰক</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">জাননী</translation> <translation id="2496626742194544812">প্ৰথম টেবলৈ যাওক</translation> <translation id="2500374554657206846">পাছৱৰ্ড ছেভ কৰাৰ বিকল্পসমূহ</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> টা পুনৰ্ব্যৱহৃত পাছৱৰ্ড</translation> <translation id="2523363575747517183">এই ৱেবছাইটটোৱে বাৰে বাৰে অন্য এটা এপ্লিকেশ্বন খুলিবলৈ চেষ্টা কৰি আছে।</translation> <translation id="2529021024822217800">সকলো খোলক</translation> <translation id="2547458583188611426">ছিংক কৰাৰ সুবিধাটোৱে কাম কৰা নাই। ছিংক আৰম্ভ কৰিবলৈ আপোনাৰ পাছফ্ৰে’জ দিয়ক।</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">অন্য ভাষাত পৃষ্ঠাসমূহ অনুবাদ কৰাৰ সুবিধা দিয়ক</translation> <translation id="3588820906588687999">প্ৰতিচ্ছবি নতুন টেবত খোলক</translation> <translation id="3595252146048399851">আপুনি কি ছিংক কৰিব লাগে সেয়া <ph name="BEGIN_LINK" />ছেটিঙ<ph name="END_LINK" />লৈ গৈ যেতিয়াই মন যায় তেতিয়াই বাছনি কৰিব পাৰে। Googleএ আপোনাৰ ইতিহাসৰ ওপৰত ভিত্তি কৰি Search আৰু অন্য সেৱা ব্যক্তিগতকৰণ কৰিব পাৰে।</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} টা অবিশ্বস্ত পাছৱৰ্ড}one{{COUNT} টা অবিশ্বস্ত পাছৱৰ্ড}other{{COUNT} টা অবিশ্বস্ত পাছৱৰ্ড}}</translation> <translation id="3603009562372709545">লিংক URL প্ৰতিলিপি কৰক</translation> <translation id="3607167657931203000">স্বয়ংক্রিয়ভাৱে ডেটা ভৰাওক</translation> <translation id="3608008480985212611">আপোনাৰ অগ্ৰাধিকাৰসমূহ পৰিচালনা কৰিবলৈ ছাইন ইন কৰক।</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">মোৰ ডেটা সংযুক্ত কৰক</translation> <translation id="3929457972718048006">ঠিকনা</translation> <translation id="3943492037546055397">পাছৱৰ্ড</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} টা অবিশ্বস্ত পাছৱৰ্ড}one{{count} টা অবিশ্বস্ত পাছৱৰ্ড}other{{count} টা অবিশ্বস্ত পাছৱৰ্ড}}</translation> <translation id="3959736869653157332">মেনু → নতুন ইনক’গনিট’ টেব</translation> <translation id="3967822245660637423">ডাউনল’ড সম্পূৰ্ণ হ’ল</translation> <translation id="3968505803272650567">আগ্ৰহসমূহ পৰিচালনা কৰক</translation> @@ -611,6 +610,7 @@ <translation id="5118764316110575523">অফ আছে</translation> <translation id="5119391094379141756">Chrome বাছনি কৰক</translation> <translation id="5121618895923301719">আপুনি ইতিমধ্যে এই প্ৰ’ডাক্টটো ট্ৰেক কৰি আছে। এই পৃষ্ঠাখন <ph name="BEGIN_LINK" />ম’বাইল বুকমাৰ্ক<ph name="END_LINK" />ত ছেভ কৰা হৈছে।</translation> +<translation id="5126465625664020024">ছাইন ইন আৰু ছিংক কৰক</translation> <translation id="5132942445612118989">আপোনাৰ পাছৱর্ড, ইতিহাস আৰু অধিক সকলো ডিভাইচতে ছিংক কৰক</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} টা অবিশ্বস্ত পাছৱৰ্ড}one{{COUNT} টা অবিশ্বস্ত পাছৱৰ্ড}other{{COUNT} টা অবিশ্বস্ত পাছৱৰ্ড}}</translation> <translation id="5149188072385105201">পাছৱৰ্ড যোগ দিয়ক...</translation> @@ -771,7 +771,6 @@ <translation id="6184086493125982861">টেব দেখুওৱাক</translation> <translation id="6187302354554850004">অন্তিমবাৰ ছিংক কৰাৰ সময় <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">নপঢ়া</translation> -<translation id="6193424046394092997">{count,plural, =1{{title}ত বুকমাৰ্ক কৰা হৈছে}one{{title}ত বুকমাৰ্ক কৰা হৈছে}other{{title}ত বুকমাৰ্ক কৰা হৈছে}}</translation> <translation id="6196207969502475924">কণ্ঠধ্বনিৰদ্বাৰা সন্ধান</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} টা টেব বন্ধ কৰক}one{{COUNT} টা টেব বন্ধ কৰক}other{{COUNT} টা টেব বন্ধ কৰক}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> অথবা ততোধিক দিন ব্যৱহাৰ নকৰা টেবসমূহ ইয়ালৈ স্থানান্তৰ কৰা হয়। আপুনি যিকোনো সময়তে <ph name="BEGIN_LINK" />ছেটিঙ<ph name="END_LINK" />ত এইটো সলনি কৰিব পাৰে।</translation> @@ -801,6 +800,7 @@ <translation id="6346549652287021269">নতুন ডাউনল’ড আৰম্ভ কৰিবনে?</translation> <translation id="6347953390226388422">{count,plural, =1{এই ঠিকনাটো আপোনাৰ Google একাউণ্ট(<ph name="USER_EMAIL" />) আৰু এই ডিভাইচটোৰ পৰা মচি পেলোৱা হ’ব।}one{এই ঠিকনাসমূহ আপোনাৰ Google একাউণ্ট(<ph name="USER_EMAIL" />) আৰু এই ডিভাইচটোৰ পৰা মচি পেলোৱা হ’ব।}other{এই ঠিকনাসমূহ আপোনাৰ Google একাউণ্ট(<ph name="USER_EMAIL" />) আৰু এই ডিভাইচটোৰ পৰা মচি পেলোৱা হ’ব।}}</translation> <translation id="634878792104344809">আপোনাৰ আটাইবোৰ ডিভাইচত নিজৰ পাছৱর্ড, ইতিহাস আৰু অধিক ছিংক কৰক</translation> +<translation id="6348855835728304880">এই ডিভাইচটোত অন্য এপ্সমূহত আপোনাৰ Chrome পাছৱৰ্ডসমূহ আৰু অধিক এক্সেছ কৰক।</translation> <translation id="6355820205320395730">দুৰ্বল পাছৱৰ্ডসমূহ অনুমান কৰিবলৈ সহজ। আপুনি শক্তিশালী পাছৱৰ্ড সৃষ্টি কৰাটো নিশ্চিত কৰক। <ph name="BEGIN_LINK" />সুৰক্ষা সম্পৰ্কীয় অধিক কিটিপ চাওক।<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> ফ’ল’ কৰক</translation> <translation id="6362362396625799311">কোনো ইনকগনিট’ টেব নাই</translation> @@ -820,7 +820,6 @@ আপোনাৰ ছিংক পাছফ্ৰেজৰ সৈতে নিজৰ ডেটা <ph name="TIME" />ত এনক্ৰিপ্ট কৰা হৈছিল। ছিংক আৰম্ভ কৰিবলৈ এইটো দিয়ক।</translation> <translation id="6418346271604475326">PDF সাজু কৰি থকা হৈছে</translation> -<translation id="6421095165635308">{count,plural, =1{আপোনাৰ একাউণ্ট {email}ত থকা {title}ত বুকমাৰ্ক ছেভ কৰা হৈছে}one{আপোনাৰ একাউণ্ট {email}ত থকা {title}ত বুকমাৰ্কসমূহ ছেভ কৰা হৈছে}other{আপোনাৰ একাউণ্ট {email}ত থকা {title}ত বুকমাৰ্কসমূহ ছেভ কৰা হৈছে}}</translation> <translation id="6429213933892582367">পাছৱৰ্ডৰ বিকল্পসমূহ খোলক</translation> <translation id="6434591244308415567">আসোঁৱাহ হৈছে। পাছত আকৌ চেষ্টা কৰক।</translation> <translation id="6435236283694032571">পঢ়াৰ সূচীত যোগ দিয়ক</translation> @@ -953,6 +952,7 @@ <translation id="7221173315674413369">নতুন কি আছেত নতুন সুবিধা আৰু পৰামৰ্শসমূহ অন্বেষণ কৰক</translation> <translation id="7223102419539744003">টেব বন্ধ কৰক</translation> <translation id="722454870747268814">নতুন ইনক’গ্নিট’ টেব</translation> +<translation id="723787869754590019">স্বয়ংক্ৰিয়ভাৱে পূৰ হোৱাৰ সুবিধাৰ বাবে Chrome ব্যৱহাৰ কৰক</translation> <translation id="7265758999917665941">এই ছাইটটোৰ বাবে কেতিয়াও নহয়</translation> <translation id="7272437679830969316">আপোনাৰ পৰিচয় সত্যাপন কৰিব পৰা নগ’ল। পাছৱৰ্ড প্ৰতিলিপি কৰা নহ’ল।</translation> <translation id="7291368939935408496">পাছৱর্ড সাজু কৰি থকা হৈছে...</translation> @@ -1154,12 +1154,14 @@ <translation id="8663764600409216912">আপুনি অনুমান কৰিবলৈ টান পাছৱৰ্ড ব্যৱহাৰ কৰি আছে</translation> <translation id="8668210798914567634">আপোনাৰ পঢ়াসূচীত এই পৃষ্ঠাটো ছেভ কৰা হৈছে।</translation> <translation id="8680787084697685621">একাউণ্টৰ ছাইন ইনৰ সবিশেষৰ ম্যাদ উকলিল।</translation> +<translation id="868773710103052534">আপুনি সম্পূৰ্ণ সাজু</translation> <translation id="8693663554456874301">{count,plural, =1{টেব বন্ধ কৰক}one{টেববোৰ বন্ধ কৰক}other{টেববোৰ বন্ধ কৰক}}</translation> <translation id="8703536910991780768">আপোনাৰ পাছৱৰ্ডসমূহ শক্তিশালী যেন লাগিছে</translation> <translation id="8706588385081740091">পাছৱৰ্ডসমূহ</translation> <translation id="8717864919010420084">লিংকটো প্ৰতিলিপি কৰক</translation> <translation id="8721297211384281569">সঁজুলিৰ মেনু</translation> <translation id="8725066075913043281">আকৌ চেষ্টা কৰক</translation> +<translation id="8727043961453758442">Chromeৰ পৰা পাৰ্যমানে উপকৃত হওক</translation> <translation id="8730621377337864115">হ’ল</translation> <translation id="8731388423028622182">আপোনাৰ iPhone ৰিছেট কৰাৰ অংশ হিচাপে আপোনাক আপোনাৰ একাউণ্ট <ph name="USER_NAME" />ৰ পৰা ছাইন আউট কৰা হৈছে। ছাইন ইন কৰিবলৈ তলত অব্যাহত ৰাখকত টিপক।</translation> <translation id="87371078663613140">মেনু বাৰত বিকল্প অন্বেষণ কৰক</translation> @@ -1206,9 +1208,9 @@ <translation id="8974714402877957201">১) iPadৰ ছেটিং খোলক</translation> <translation id="8976382372951310360">সহায়</translation> <translation id="8976414606286374109">আপোনাৰ Google একাউণ্টত কাৰ্ডসমূহ ছেভ কৰা হৈছে।</translation> -<translation id="8978059030508051916">{count,plural, =0{কোনো পাছৱৰ্ড হেক কৰা নাই}=1{{count} টা হেক কৰা পাছৱৰ্ড}one{{count} টা হেক কৰা পাছৱৰ্ড}other{{count} টা হেক কৰা পাছৱৰ্ড}}</translation> <translation id="8981454092730389528">Googleৰ কাৰ্যকলাপৰ নিয়ন্ত্ৰণ</translation> <translation id="8985320356172329008">এই হিচাপে Googleত ছাইন ইন কৰক</translation> +<translation id="8986567980592931173">আপোনাৰ পাছৱৰ্ড, ইতিহাস, আৰু অধিক ছিংক কৰিবলৈ আপোনাৰ Google একাউণ্টৰ জৰিয়তে ছাইন ইন কৰক।</translation> <translation id="8998289560386111590">আপোনাৰ ডিভাইচত উপলব্ধ নহয়</translation> <translation id="9000089900434778519">আপোনাৰ সন্ধানৰ ইঞ্জিনটো হৈছে <ph name="DSE_NAME" />। যদি প্ৰযোজ্য হয়, আপোনাৰ সন্ধানৰ ইতিহাস মচিবলৈ আপোনাৰ সন্ধানৰ ইঞ্জিনৰ নিৰ্দেশাৱলী চাওক।</translation> <translation id="9008201768610948239">উপেক্ষা কৰক</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb index a0a4485..35b42da 100644 --- a/ios/chrome/app/strings/resources/ios_strings_az.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Kiçildin</translation> <translation id="2230173723195178503">Veb səhifə yükləndi</translation> <translation id="2239626343334228536">Brauzinq datası silinir...</translation> +<translation id="2242467532204595597">Mesaj, sənəd və digər tətbiqlərdə keçidlərə toxunduqda Chrome istifadə edin.</translation> <translation id="22508856139286506">İmtina edilmiş xəbərdarlıqlar (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Menyu → Tarixçə</translation> <translation id="2256933947031277845">Təşkilatınız yalnız müəyyən hesablarla daxil olmağa icazə verir.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} yaddaşda saxlanılmış ünvan klaviaturanızın yuxarısında əlçatandır.}other{{count} yaddaşda saxlanılmış ünvan klaviaturanızın yuxarısında əlçatandır.}}</translation> <translation id="2421004566762153674">Üçüncü tərəf kukilərinin bloklanması</translation> <translation id="2421044535038393232">Redaktəyə Davam Edin</translation> +<translation id="2423077901494354337">Artıq cihazda Chrome-dan maksimum yararlanacaqsınız.</translation> <translation id="2434405374328098816">Artıq <ph name="WEBSITE" /> saytında "<ph name="USERNAME" />" üçün parolu yadda saxlamısınız</translation> <translation id="2435457462613246316">Parol görünsün</translation> <translation id="2451654228769116489">Tabı sancın</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Bildirişlər</translation> <translation id="2496626742194544812">İlk Taba keçin</translation> <translation id="2500374554657206846">Parolu Yadda Saxlamaq üçün Seçimlər</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> təkrar işlənən parol</translation> <translation id="2523363575747517183">Bu veb sayt davamlı olaraq digər tətbiqi açmağa çalışır.</translation> <translation id="2529021024822217800">Hamısını açın</translation> <translation id="2547458583188611426">Sinxronlaşdırma işləmir. Sinxronlaşdırmanı başlatmaq üçün parol ifadəsini daxil edin.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Səhifələrin digər dillərdə tərcümə edilməsini təklif edin</translation> <translation id="3588820906588687999">Şəkli Yeni Paneldə Açın</translation> <translation id="3595252146048399851">Sinxronizasiya seçimlərini <ph name="BEGIN_LINK" />ayarlarda<ph name="END_LINK" /> edə bilərsiniz. Google tarixçənizə əsasən Axtarış və digər xidmətləri fərdiləşdirə bilər.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} zəif parol}other{{COUNT} zəif parol}}</translation> <translation id="3603009562372709545">Link URL kopyalayın</translation> <translation id="3607167657931203000">Datanı avtomatik doldurun</translation> <translation id="3608008480985212611">Tərcihləri idarə etmək üçün daxil olun.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Datamı birləşdirin</translation> <translation id="3929457972718048006">Ünvanlar</translation> <translation id="3943492037546055397">Parollar</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} zəif parol}other{{count} zəif parol}}</translation> <translation id="3959736869653157332">Menyu → Yeni Anonim Tab</translation> <translation id="3967822245660637423">Endirmə tamamdır</translation> <translation id="3968505803272650567">Maraqları idarə edin</translation> @@ -611,6 +610,7 @@ <translation id="5118764316110575523">Deaktiv</translation> <translation id="5119391094379141756">Chrome seçin</translation> <translation id="5121618895923301719">Artıq bu məhsulu izləyirsiniz. Bu səhifə <ph name="BEGIN_LINK" />Mobil Əlfəcinlərdə<ph name="END_LINK" /> yadda saxlandı.</translation> +<translation id="5126465625664020024">Daxil olun və sinxronlaşdırın</translation> <translation id="5132942445612118989">Bütün cihazlarda parol, tarixçə və s. sinxronizasiya edin</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} zəif parol}other{{COUNT} zəif parol}}</translation> <translation id="5149188072385105201">Parol Əlavə edin...</translation> @@ -771,7 +771,6 @@ <translation id="6184086493125982861">Panelləri Göstərin</translation> <translation id="6187302354554850004">Son sinxronizasiya: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Oxunmamış</translation> -<translation id="6193424046394092997">{count,plural, =1{Buraya əlfəcinlənib: {title}}other{Buraya əlfəcinlənib: {title}}}</translation> <translation id="6196207969502475924">Səsli Axtarış</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} Tabı bağlayın}other{{COUNT} Tabı bağlayın}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> gün və ya daha uzun müddət istifadə edilməyən tablar bura köçürülür. <ph name="BEGIN_LINK" />Ayarlarda<ph name="END_LINK" /> dəyişə bilərsiniz.</translation> @@ -801,6 +800,7 @@ <translation id="6346549652287021269">Yeni Endirmə Başlasın?</translation> <translation id="6347953390226388422">{count,plural, =1{Bu ünvan Google Hesabı (<ph name="USER_EMAIL" />) və bu cihazdan silinəcək.}other{Bu ünvanlar Google Hesabı (<ph name="USER_EMAIL" />) və bu cihazdan silinəcək.}}</translation> <translation id="634878792104344809">Bütün cihazlardakı parol, tarixçə və daha çoxunu sinxronizasiya edin</translation> +<translation id="6348855835728304880">Bu cihazdakı digər tətbiqlərdə Chrome parollarına və s. məlumatlara giriş.</translation> <translation id="6355820205320395730">Zəif parolları tapmaq asandır. Güclü parol yaratdığınızdan əmin olun. <ph name="BEGIN_LINK" />Daha çox təhlükəsizlik məsləhətinə baxın.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> izləyin</translation> <translation id="6362362396625799311">Gizli Panel yoxdur</translation> @@ -820,7 +820,6 @@ Datanız <ph name="TIME" /> tarixində sinxronizasiya parol sözü ilə şifrələndi. Sinxronizasiyanı başlamaq üçün onu daxil edin.</translation> <translation id="6418346271604475326">PDF hazırlanır</translation> -<translation id="6421095165635308">{count,plural, =1{Əlfəcin hesabda ({email}) {title} bölməsində saxlandı}other{Əlfəcinlər hesabda ({email}) {title} bölməsində saxlandı}}</translation> <translation id="6429213933892582367">Parol Seçimlərini açın</translation> <translation id="6434591244308415567">Xəta baş verdi. Yenidən cəhd edin.</translation> <translation id="6435236283694032571">Oxu Siyahısına əlavə edin</translation> @@ -953,6 +952,7 @@ <translation id="7221173315674413369">Yeniliklər bölməsində yeni funksiyaları və məsləhətləri araşdırın</translation> <translation id="7223102419539744003">Tabı bağlayın</translation> <translation id="722454870747268814">Yeni Incognito tabı</translation> +<translation id="723787869754590019">Avto doldurma üçün Chrome istifadə edin</translation> <translation id="7265758999917665941">Bu sayt üçün heç vaxt yadda saxlamayın</translation> <translation id="7272437679830969316">Kimliyinizi doğrulamaq mümkün deyil. Parol kopyalanmayıb.</translation> <translation id="7291368939935408496">Parollar Hazırlanır...</translation> @@ -1154,12 +1154,14 @@ <translation id="8663764600409216912">Asan təxmin edilməyən parollar istifadə edirsiniz</translation> <translation id="8668210798914567634">Bu səhifə Oxu Siyahısında yadda saxlanılmışdır.</translation> <translation id="8680787084697685621">Hesaba avtomatik giriş detallarının vaxtı keçib.</translation> +<translation id="868773710103052534">Hər şey hazırdır</translation> <translation id="8693663554456874301">{count,plural, =1{Tabı bağlayın}other{Tabları bağlayın}}</translation> <translation id="8703536910991780768">Parollar güclü görünür</translation> <translation id="8706588385081740091">Parollar</translation> <translation id="8717864919010420084">Linki Kopyalayın</translation> <translation id="8721297211384281569">Alətlər Menyusu</translation> <translation id="8725066075913043281">Yenidən cəhd edin</translation> +<translation id="8727043961453758442">Chrome-dan maksimum yararlanın</translation> <translation id="8730621377337864115">Tamamdır</translation> <translation id="8731388423028622182">iPhone sıfırlamasının bir hissəsi olaraq <ph name="USER_NAME" /> hesabınızdan çıxdınız. Daxil olmaq üçün aşağıda "davam edin" seçiminə toxunun.</translation> <translation id="87371078663613140">Menyu panelində seçimləri araşdırın</translation> @@ -1206,9 +1208,9 @@ <translation id="8974714402877957201">1. iPad Ayarlarını açın</translation> <translation id="8976382372951310360">Yardım</translation> <translation id="8976414606286374109">Kartlar Google Hesabınızda saxlanılır.</translation> -<translation id="8978059030508051916">{count,plural, =0{Oğurlanmış parol yoxdur}=1{{count} oğurlanmış parol}other{{count} oğurlanmış parol}}</translation> <translation id="8981454092730389528">Google Fəaliyyət Nəzarəti</translation> <translation id="8985320356172329008">Google'a bu cür daxil olunub</translation> +<translation id="8986567980592931173">Parol, tarixçə və s. sinxronlaşdırmaq üçün Google Hesabı ilə daxil olun.</translation> <translation id="8998289560386111590">Cihazınızda əlçatan deyil</translation> <translation id="9000089900434778519">Axtarış sisteminiz: <ph name="DSE_NAME" />. Axtarış tarixçənizi silmək üçün onun təlimatlarına (təmin edilibsə) baxın.</translation> <translation id="9008201768610948239">İqnor</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_be.xtb b/ios/chrome/app/strings/resources/ios_strings_be.xtb index fccb5bc..86489fad 100644 --- a/ios/chrome/app/strings/resources/ios_strings_be.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_be.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Паменшыць</translation> <translation id="2230173723195178503">Вэб-старонка загружана</translation> <translation id="2239626343334228536">Ідзе ачыстка даных прагляду...</translation> +<translation id="2242467532204595597">Выкарыстоўвайце Chrome кожны раз, калі націскаеце на спасылкі ў паведамленнях, дакументах або іншых праграмах.</translation> <translation id="22508856139286506">Адхіленыя папярэджанні (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Меню → Гісторыя</translation> <translation id="2256933947031277845">Палітыка вашай арганізацыі дазваляе ўваходзіць у сістэмы, выкарыстоўваючы толькі пэўныя ўліковыя запісы.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} захаваны адрас паказваецца над клавіятурай.}one{{count} захаваны адрас паказваецца над клавіятурай.}few{{count} захаваныя адрасы паказваюцца над клавіятурай.}many{{count} захаваных адрасоў паказваюцца над клавіятурай.}other{{count} захаванага адраса паказваюцца над клавіятурай.}}</translation> <translation id="2421004566762153674">Блакіроўка старонніх файлаў cookie</translation> <translation id="2421044535038393232">Працягнуць рэдагаванне</translation> +<translation id="2423077901494354337">Цяпер вы зможаце карыстацца ўсімі магчымасцямі Chrome на сваёй прыладзе.</translation> <translation id="2434405374328098816">Вы ўжо захавалі пароль для карыстальніка <ph name="USERNAME" /> на вэб-сайце <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Паказаць пароль</translation> <translation id="2451654228769116489">Замацаваць укладку</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Апавяшчэнні</translation> <translation id="2496626742194544812">Перайсці на першую ўкладку</translation> <translation id="2500374554657206846">Варыянты захавання пароля</translation> -<translation id="2502415369140591438">Ужытых раней пароляў: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Гэты сайт сістэматычна спрабуе адкрыць іншую праграму.</translation> <translation id="2529021024822217800">Адкрыць усе</translation> <translation id="2547458583188611426">Сінхранізацыя не працуе. Каб запусціць сінхранізацыю, увядзіце фразу-пароль.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Прапаноўваць перакладаць старонкі на іншых мовах</translation> <translation id="3588820906588687999">Адкрыць відарыс у новай укладцы</translation> <translation id="3595252146048399851">Вы заўсёды можаце выбраць, якія даныя трэба сінхранізаваць, у <ph name="BEGIN_LINK" />наладах<ph name="END_LINK" />. Google можа персаналізаваць Пошук і іншыя сэрвісы на аснове гісторыі прагляду вамі сайтаў.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} ненадзейны пароль}one{{COUNT} ненадзейны пароль}few{{COUNT} ненадзейныя паролі}many{{COUNT} ненадзейных пароляў}other{{COUNT} ненадзейнага пароля}}</translation> <translation id="3603009562372709545">Скапіраваць URL-адрас спасылкі</translation> <translation id="3607167657931203000">Аўтазапаўненне даных</translation> <translation id="3608008480985212611">Каб задаваць налады, увайдзіце ва ўліковы запіс.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Аб'яднаць мае даныя</translation> <translation id="3929457972718048006">Адрасы</translation> <translation id="3943492037546055397">Паролі</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} ненадзейны пароль}one{{count} ненадзейны пароль}few{{count} ненадзейныя паролі}many{{count} ненадзейных пароляў}other{{count} ненадзейнага пароля}}</translation> <translation id="3959736869653157332">Меню → Новая ўкладка ў рэжыме інкогніта</translation> <translation id="3967822245660637423">Спампоўка завершана</translation> <translation id="3968505803272650567">Кіраваць інтарэсамі</translation> @@ -611,6 +610,7 @@ <translation id="5118764316110575523">Выключана</translation> <translation id="5119391094379141756">Выберыце Chrome.</translation> <translation id="5121618895923301719">Вы ўжо сочыце за гэтым таварам. Гэта старонка захавана ў <ph name="BEGIN_LINK" />мабільных закладках<ph name="END_LINK" />.</translation> +<translation id="5126465625664020024">Уваход і сінхранізацыя</translation> <translation id="5132942445612118989">Сінхранізуйце паролі, гісторыю і іншыя даныя на ўсіх прыладах</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} ненадзейны пароль}one{{COUNT} ненадзейны пароль}few{{COUNT} ненадзейныя паролі}many{{COUNT} ненадзейных пароляў}other{{COUNT} ненадзейнага пароля}}</translation> <translation id="5149188072385105201">Дадаць пароль...</translation> @@ -771,7 +771,6 @@ <translation id="6184086493125982861">Паказваць укладкі</translation> <translation id="6187302354554850004">Апошняя сінхранізацыя: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Непрачытанае</translation> -<translation id="6193424046394092997">{count,plural, =1{Закладка дададзена ў папку "{title}"}one{Закладкі дададзены ў папку "{title}"}few{Закладкі дададзены ў папку "{title}"}many{Закладкі дададзены ў папку "{title}"}other{Закладкі дададзены ў папку "{title}"}}</translation> <translation id="6196207969502475924">Галасавы пошук</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Закрыць {COUNT} укладку}one{Закрыць {COUNT} укладку}few{Закрыць {COUNT} укладкі}many{Закрыць {COUNT} укладак}other{Закрыць {COUNT} укладкі}}</translation> <translation id="6210079381482819663">Укладкі, якія не выкарыстоўваліся на працягу <ph name="THRESHOLD" /> сут, перамяшчаюцца сюды. Гэты параметр можна змяніць у любы час у <ph name="BEGIN_LINK" />наладах<ph name="END_LINK" />.</translation> @@ -801,6 +800,7 @@ <translation id="6346549652287021269">Пачаць новае спампоўванне?</translation> <translation id="6347953390226388422">{count,plural, =1{Гэты адрас будзе выдалены з вашага Уліковага запісу Google (<ph name="USER_EMAIL" />) і з дадзенай прылады.}one{Гэтыя адрасы будуць выдалены з вашага Уліковага запісу Google (<ph name="USER_EMAIL" />) і з дадзенай прылады.}few{Гэтыя адрасы будуць выдалены з вашага Уліковага запісу Google (<ph name="USER_EMAIL" />) і з дадзенай прылады.}many{Гэтыя адрасы будуць выдалены з вашага Уліковага запісу Google (<ph name="USER_EMAIL" />) і з дадзенай прылады.}other{Гэтыя адрасы будуць выдалены з вашага Уліковага запісу Google (<ph name="USER_EMAIL" />) і з дадзенай прылады.}}</translation> <translation id="634878792104344809">Сінхранізацыя пароляў, гісторыі і іншых даных на ўсіх вашых прыладах</translation> +<translation id="6348855835728304880">Доступ да пароляў і іншых даных Chrome у праграмах на гэтай прыладзе.</translation> <translation id="6355820205320395730">Ненадзейныя паролі лёгка падабраць. Выкарыстоўвайце толькі надзейныя паролі. <ph name="BEGIN_LINK" />Праглядзець іншыя парады па бяспецы<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Падпісацца на <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Няма ўкладак інкогніта</translation> @@ -820,7 +820,6 @@ Вашы даныя былі зашыфраваны з дапамогай фразы-пароля <ph name="TIME" />. Увядзіце яе, каб пачаць сінхранізацыю.</translation> <translation id="6418346271604475326">PDF рыхтуецца</translation> -<translation id="6421095165635308">{count,plural, =1{Закладка захавана ва ўліковым запісе ({email}) у папцы "{title}"}one{Закладкі захаваны ва ўліковым запісе ({email}) у папцы "{title}"}few{Закладкі захаваны ва ўліковым запісе ({email}) у папцы "{title}"}many{Закладкі захаваны ва ўліковым запісе ({email}) у папцы "{title}"}other{Закладкі захаваны ва ўліковым запісе ({email}) у папцы "{title}"}}</translation> <translation id="6429213933892582367">Адкрыйце раздзел Password Options ("Налады пароляў").</translation> <translation id="6434591244308415567">Адбылася памылка. Паўтарыце спробу пазней.</translation> <translation id="6435236283694032571">Дадаць у Спіс на прагляд</translation> @@ -953,6 +952,7 @@ <translation id="7221173315674413369">Знаёмцеся з новымі функцыямі і атрымлівайце парады ў раздзеле "Што новага"</translation> <translation id="7223102419539744003">Закрыць укладку</translation> <translation id="722454870747268814">Новая ўкладка ў рэжыме інкогніта</translation> +<translation id="723787869754590019">Выкарыстоўвайце Chrome для аўтазапаўнення</translation> <translation id="7265758999917665941">Ніколі для гэтага сайта</translation> <translation id="7272437679830969316">Не ўдалося спраўдзіць вашу асобу. Пароль не скапіраваны.</translation> <translation id="7291368939935408496">Ідзе падрыхтоўка пароляў...</translation> @@ -1024,6 +1024,7 @@ <translation id="7781011649027948662">Перакласці старонку?</translation> <translation id="7781069478569868053">Старонка новай укладкі</translation> <translation id="7781829728241885113">Учора</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Праз 1 дзень}one{Праз {COUNT} дзень}few{Праз {COUNT} дні}many{Праз {COUNT} дзён}other{Праз {COUNT} дня}}</translation> <translation id="778855399387580014">Пачаць пошук у новай укладцы Chrome.</translation> <translation id="7791543448312431591">Дадаць</translation> <translation id="7807060072011926525">Ад кампаніі Google</translation> @@ -1088,6 +1089,7 @@ <translation id="8136856065410661948">Гэта інфармацыя будзе выкарыстоўвацца для стварэння падзей у Apple Calendar непасрэдна з Chrome і Google Аб'ектыва.</translation> <translation id="8156478151976189188">Сінхранізацыя пароляў не працуе</translation> <translation id="8157532349231307196">Уліковых запісаў: <ph name="NUMBER_OF_ACCOUNTS" /></translation> +<translation id="8159358225423560600">толькі што</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Вашы прылады<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Перакласці старонку</translation> @@ -1118,6 +1120,7 @@ <translation id="8393889347136007944">Укладкі, якія не выкарыстоўваліся на працягу <ph name="THRESHOLD" /> сут</translation> <translation id="8407669440184693619">Паролі для гэтага сайта не знойдзены</translation> <translation id="842017693807136194">Вы ўвайшлі праз</translation> +<translation id="8423121072346537366">Толькі што</translation> <translation id="8425693829365242963">Вашы паролі ўнікальныя</translation> <translation id="8428045167754449968">Горад або населены пункт</translation> <translation id="8428213095426709021">Налады</translation> @@ -1151,12 +1154,14 @@ <translation id="8663764600409216912">Вы выкарыстоўваеце паролі, якія цяжка падабраць</translation> <translation id="8668210798914567634">Гэта старонка была захавана ў спіс чытання.</translation> <translation id="8680787084697685621">Даныя ўліковага запісу для ўваходу састарэлі.</translation> +<translation id="868773710103052534">Усё гатова</translation> <translation id="8693663554456874301">{count,plural, =1{Закрыць укладку}one{Закрыць укладкі}few{Закрыць укладкі}many{Закрыць укладкі}other{Закрыць укладкі}}</translation> <translation id="8703536910991780768">Вы выкарыстоўваеце надзейныя паролі</translation> <translation id="8706588385081740091">Паролі</translation> <translation id="8717864919010420084">Скапіраваць спасылку</translation> <translation id="8721297211384281569">Меню "Інструменты"</translation> <translation id="8725066075913043281">Паўтарыць спробу</translation> +<translation id="8727043961453758442">Карыстайцеся ўсімі магчымасцямі Chrome</translation> <translation id="8730621377337864115">Гатова</translation> <translation id="8731388423028622182">У выніку скіду налад iPhone адбыўся выхад з уліковага запісу <ph name="USER_NAME" />. Каб увайсці ў яго, націсніце Continue ("Працягнуць") ніжэй.</translation> <translation id="87371078663613140">Азнаёмцеся з даступнымі варыянтамі ў панэлі меню</translation> @@ -1203,9 +1208,9 @@ <translation id="8974714402877957201">1. Адкрыйце налады iPad.</translation> <translation id="8976382372951310360">Даведка</translation> <translation id="8976414606286374109">Карткі захоўваюцца ў ваш Уліковы запіс Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Раскрытых пароляў няма}=1{{count} раскрыты пароль}one{{count} раскрыты пароль}few{{count} раскрытыя паролі}many{{count} раскрытых пароляў}other{{count} раскрытага пароля}}</translation> <translation id="8981454092730389528">Параметры дзейнасці для Уліковых запісаў Google</translation> <translation id="8985320356172329008">Уваход у Google выкананы праз уліковы запіс</translation> +<translation id="8986567980592931173">Увайдзіце ва Уліковы запіс Google, каб сінхранізаваць паролі, гісторыю і не толькі.</translation> <translation id="8998289560386111590">Недаступна на вашай прыладзе</translation> <translation id="9000089900434778519">Ваша пошукавая сістэма – <ph name="DSE_NAME" />. Каб выдаліць гісторыю пошуку, выканайце інструкцыі гэтай сістэмы (калі яны даступныя).</translation> <translation id="9008201768610948239">Ігнараваць</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb index 471c8a69..bc100e1 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Отдалечаване</translation> <translation id="2230173723195178503">Уеб страницата се зареди</translation> <translation id="2239626343334228536">Данните за сърфирането се изчистват...</translation> +<translation id="2242467532204595597">Използвайте Chrome всеки път, когато докоснете връзки в съобщения, документи и други приложения.</translation> <translation id="22508856139286506">Отхвърлени предупреждения (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">„Меню → История“</translation> <translation id="2256933947031277845">Организацията ви разрешава да влизате само с определени профили.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} запазен адрес е налице над клавиатурата ви.}other{{count} запазени адреса са налице над клавиатурата ви.}}</translation> <translation id="2421004566762153674">„Бисквитките“ на трети страни се блокират</translation> <translation id="2421044535038393232">Продължаване на редактирането</translation> +<translation id="2423077901494354337">Вече ще се възползвате максимално от Chrome на устройството си.</translation> <translation id="2434405374328098816">Вече запазихте парола за <ph name="USERNAME" /> за <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Показване на паролата</translation> <translation id="2451654228769116489">Фиксиране на раздела</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Известия</translation> <translation id="2496626742194544812">Към първия раздел</translation> <translation id="2500374554657206846">Опции за запазване на паролата</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> повторно използвани пароли</translation> <translation id="2523363575747517183">Този уебсайт многократно се опитва да отвори друго приложение.</translation> <translation id="2529021024822217800">Отваряне на всички</translation> <translation id="2547458583188611426">Синхронизирането не работи. За да стартирате синхронизирането, въведете пропуска си.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Извеждане на предложения за превод на страниците, написани на други езици</translation> <translation id="3588820906588687999">Отваряне на изображението в нов раздел</translation> <translation id="3595252146048399851">Винаги можете да изберете какво да се синхронизира от <ph name="BEGIN_LINK" />настройките<ph name="END_LINK" />. Google може да персонализира Търсене и други услуги въз основа на историята ви.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} ненадеждна парола}other{{COUNT} ненадеждни пароли}}</translation> <translation id="3603009562372709545">Копиране на URL адреса на връзката</translation> <translation id="3607167657931203000">Автоматично попълване на данни</translation> <translation id="3608008480985212611">Влезте в профила си, за да управлявате предпочитанията си.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Комбиниране на данните ми</translation> <translation id="3929457972718048006">Адреси</translation> <translation id="3943492037546055397">Пароли</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} ненадеждна парола}other{{count} ненадеждни пароли}}</translation> <translation id="3959736869653157332">„Меню → Нов раздел в режим „инкогнито“</translation> <translation id="3967822245660637423">Изтеглянето завърши</translation> <translation id="3968505803272650567">Управление на интересите</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Показване на разделите</translation> <translation id="6187302354554850004">Последно синхр.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Непрочетени</translation> -<translation id="6193424046394092997">{count,plural, =1{Отметката бе запазена в(ъв) „{title}“}other{Отметките бяха запазени в(ъв) „{title}“}}</translation> <translation id="6196207969502475924">Гласово търсене</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Затваряне на {COUNT} раздел}other{Затваряне на {COUNT} раздела}}</translation> <translation id="6210079381482819663">Разделите, които не сте използвали от <ph name="THRESHOLD" /> или повече дни, ще бъдат премествани тук. Можете да промените това по всяко време от <ph name="BEGIN_LINK" />настройките<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Да се стартира ли ново изтегляне?</translation> <translation id="6347953390226388422">{count,plural, =1{Този адрес ще бъде изтрит от профила ви в Google (<ph name="USER_EMAIL" />) и от това устройство.}other{Тези адреси ще бъдат изтрити от профила ви в Google (<ph name="USER_EMAIL" />) и от това устройство.}}</translation> <translation id="634878792104344809">Синхронизиране на вашите пароли, история и др. на всичките ви устройства</translation> +<translation id="6348855835728304880">Осъществявайте достъп до паролите и другите си данни в Chrome от други приложения на това устройство.</translation> <translation id="6355820205320395730">Ненадеждните пароли са лесни за отгатване. Уверете се, че създаваните от вас са надеждни. <ph name="BEGIN_LINK" />Вижте още съвети за сигурност<ph name="END_LINK" />.</translation> <translation id="6361848730467328243">Следване на <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Няма раздели в режим „инкогнито“</translation> @@ -821,7 +820,6 @@ На <ph name="TIME" /> данните ви бяха шифровани с пропуска ви за синхронизиране. Въведете го, за да стартирате синхронизирането.</translation> <translation id="6418346271604475326">PDF файлът се подготвя</translation> -<translation id="6421095165635308">{count,plural, =1{Отметката е запазена в папката „{title}“ в профила ви {email}}other{Отметките са запазени в папката „{title}“ в профила ви {email}}}</translation> <translation id="6429213933892582367">Отворете „Опции за паролите“.</translation> <translation id="6434591244308415567">Възникна грешка. Опитайте отново по-късно.</translation> <translation id="6435236283694032571">Добавяне към списъка за четене</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Разгледайте новите функции и съвети в „Новите неща“</translation> <translation id="7223102419539744003">Затваряне на раздела</translation> <translation id="722454870747268814">Нов раздел в режим „инкогнито“</translation> +<translation id="723787869754590019">Използване на Chrome за автоматично попълване</translation> <translation id="7265758999917665941">Никога за този сайт</translation> <translation id="7272437679830969316">Паролата не бе копирана поради неуспешно удостоверяване.</translation> <translation id="7291368939935408496">Паролите се подготвят...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">Използвате пароли, които изглеждат трудни за отгатване</translation> <translation id="8668210798914567634">Тази страница е запазена в списъка ви за четене.</translation> <translation id="8680787084697685621">Данните за вход в профила ви не са актуални.</translation> +<translation id="868773710103052534">Готово</translation> <translation id="8693663554456874301">{count,plural, =1{Затваряне на раздела}other{Затваряне на разделите}}</translation> <translation id="8703536910991780768">Паролите ви изглеждат надеждни</translation> <translation id="8706588385081740091">Пароли</translation> <translation id="8717864919010420084">Копиране на връзката</translation> <translation id="8721297211384281569">Меню „Инструменти“</translation> <translation id="8725066075913043281">Опитайте отново</translation> +<translation id="8727043961453758442">Възползвайте се максимално от Chrome</translation> <translation id="8730621377337864115">Готово</translation> <translation id="8731388423028622182">Излязохте от профила си <ph name="USER_NAME" /> при нулирането на своя iPhone. Докоснете бутона за продължаване по-долу, за да влезете отново.</translation> <translation id="87371078663613140">Разгледайте опциите в лентата с менюта.</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. Отворете настройките на iPad.</translation> <translation id="8976382372951310360">Помощ</translation> <translation id="8976414606286374109">Данните за картите се запазват в профила ви в Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Няма компрометирани пароли}=1{{count} компрометирана парола}other{{count} компрометирани пароли}}</translation> <translation id="8981454092730389528">Контроли за активността в Google</translation> <translation id="8985320356172329008">Влезли сте в Google като</translation> +<translation id="8986567980592931173">Влезте с профила си в Google, за да синхронизирате своите пароли, история и др.</translation> <translation id="8998289560386111590">Не е налице на устройството ви</translation> <translation id="9000089900434778519">Търсещата ви машина е <ph name="DSE_NAME" />. Вижте инструкциите на търсещата си машина относно изтриването на историята на търсенията ви (ако е приложимо).</translation> <translation id="9008201768610948239">Пренебрегване</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb index 911c125..73b80b7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">বিজ্ঞপ্তিগুলি</translation> <translation id="2496626742194544812">প্রথমে ট্যাবে যান</translation> <translation id="2500374554657206846">পাসওয়ার্ড সেভ করার বিকল্প</translation> -<translation id="2502415369140591438"><ph name="COUNT" />টি একই পাসওয়ার্ড যা আবার ব্যবহার করা হয়েছে</translation> <translation id="2523363575747517183">এই ওয়েবসাইটটি ক্রমাগত অন্য অ্যাপ্লিকেশন খোলার চেষ্টা করছে।</translation> <translation id="2529021024822217800">সবকটি খুলুন</translation> <translation id="2547458583188611426">সিঙ্ক বিকল্প কাজ করছে না। সিঙ্ক শুরু করতে, আপনার পাসফ্রেজ লিখুন।</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">অন্য ভাষাতে পৃষ্ঠা অনুবাদ করার প্রস্তাব দিন</translation> <translation id="3588820906588687999">নতুন ট্যাবে ছবি খুলুন</translation> <translation id="3595252146048399851"><ph name="BEGIN_LINK" />সেটিংসে<ph name="END_LINK" /> কোন ধরনের ডেটা সিঙ্ক করা হবে তা আপনি সবসময় বেছে নিতে পারবেন। আপনার ইতিহাসের উপরে ভিত্তি করে, সার্চ ও অন্যান্য পরিষেবা পছন্দমতো করে তুলতে Google এই ডেটা ব্যবহার করতে পারে।</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT}টি দুর্বল পাসওয়ার্ড}one{{COUNT}টি দুর্বল পাসওয়ার্ড}other{{COUNT}টি দুর্বল পাসওয়ার্ড}}</translation> <translation id="3603009562372709545">লিঙ্ক ইউআরএল কপি করুন</translation> <translation id="3607167657931203000">ডেটা স্বতঃপূর্ণ করুন</translation> <translation id="3608008480985212611">আপনার পছন্দ ম্যানেজ করতে সাইন-ইন করুন।</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">আমার ডেটা একত্রিত করুন</translation> <translation id="3929457972718048006">ঠিকানা</translation> <translation id="3943492037546055397">পাসওয়ার্ড</translation> -<translation id="3951717558054674026">{count,plural, =1{{count}টি দুর্বল পাসওয়ার্ড}one{{count}টি দুর্বল পাসওয়ার্ড}other{{count}টি দুর্বল পাসওয়ার্ড}}</translation> <translation id="3959736869653157332">মেনু → নতুন ছদ্মবেশী ট্যাব</translation> <translation id="3967822245660637423">ডাউনলোড সম্পূর্ণ</translation> <translation id="3968505803272650567">আপনার পছন্দ ম্যানেজ করুন</translation> @@ -773,7 +770,6 @@ <translation id="6184086493125982861">ট্যাব দেখান</translation> <translation id="6187302354554850004">শেষে সিঙ্ক হয়েছে: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">অপঠিত</translation> -<translation id="6193424046394092997">{count,plural, =1{{title}-এ বুকমার্ক করা হয়েছে}one{{title}-এ বুকমার্ক করা হয়েছে}other{{title}-এ বুকমার্ক করা হয়েছে}}</translation> <translation id="6196207969502475924">ভয়েস সার্চ</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT}টি ট্যাব বন্ধ করুন}one{{COUNT}টি ট্যাব বন্ধ করুন}other{{COUNT}টি ট্যাব বন্ধ করুন}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> দিন বা তার বেশি সময় ধরে ব্যবহার করা হয়নি এমন ট্যাবগুলি এখানে সরানো হয়েছে। আপনি <ph name="BEGIN_LINK" />সেটিংস<ph name="END_LINK" /> থেকে এটি যেকোনও সময় করতে পারেন।</translation> @@ -822,7 +818,6 @@ আপনার সিঙ্ক পাসফ্রেজের মাধ্যমে আপনার ডেটা <ph name="TIME" /> এ এনক্রিপটেড হয়েছে। সিঙ্ক শুরু করতে এটি লিখুন।</translation> <translation id="6418346271604475326">পিডিএফ প্রস্তুত হচ্ছে</translation> -<translation id="6421095165635308">{count,plural, =1{আপনার অ্যাকাউন্টে {title}-এ বুকমার্ক সেভ করা হয়েছে, {email}}one{আপনার অ্যাকাউন্টে {title}-এ বুকমার্ক সেভ করা হয়েছে, {email}}other{আপনার অ্যাকাউন্টে {title}-এ বুকমার্ক সেভ করা হয়েছে, {email}}}</translation> <translation id="6429213933892582367">পাসওয়ার্ড বিকল্প খুলুন</translation> <translation id="6434591244308415567">কোনও সমস্যা হয়েছে। পরে আবার চেষ্টা করুন।</translation> <translation id="6435236283694032571">পড়ার তালিকায় যোগ করুন</translation> @@ -1026,6 +1021,7 @@ <translation id="7781011649027948662">পৃষ্ঠাটি অনুবাদ করতে চান?</translation> <translation id="7781069478569868053">নতুন ট্যাব পৃষ্ঠা</translation> <translation id="7781829728241885113">গতকাল</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{১ দিন পরে}one{{COUNT} দিন পরে}other{{COUNT} দিন পরে}}</translation> <translation id="778855399387580014">নতুন Chrome ট্যাবে সার্চ করা শুরু করুন।</translation> <translation id="7791543448312431591">জুড়ুন</translation> <translation id="7807060072011926525">Google-এর প্রদান করা ফিড</translation> @@ -1207,7 +1203,6 @@ <translation id="8974714402877957201">১. iPad সেটিংস খুলুন</translation> <translation id="8976382372951310360">সহায়তা</translation> <translation id="8976414606286374109">কার্ড আপনার Google অ্যাকাউন্টে সেভ করা হয়।</translation> -<translation id="8978059030508051916">{count,plural, =0{কোনও পাসওয়ার্ড চুরি হয়নি}=1{চুরি হয়ে যাওয়া {count}টি পাসওয়ার্ড}one{চুরি হয়ে যাওয়া {count}টি পাসওয়ার্ড}other{চুরি হয়ে যাওয়া {count}টি পাসওয়ার্ড}}</translation> <translation id="8981454092730389528">Google অ্যাক্টিভিটির নিয়ন্ত্রণগুলি</translation> <translation id="8985320356172329008">এই হিসেবে Google-এ সাইন-ইন করেছেন</translation> <translation id="8998289560386111590">আপনার ডিভাইসে উপলভ্য নয়</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb index afe85ad..87589cd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Obavještenja</translation> <translation id="2496626742194544812">Odlazak na prvu karticu</translation> <translation id="2500374554657206846">Opcije čuvanja lozinki</translation> -<translation id="2502415369140591438">Već korištene lozinke: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Ova web lokacija neprestano pokušava otvoriti drugu aplikaciju.</translation> <translation id="2529021024822217800">Otvori sve</translation> <translation id="2547458583188611426">Sinhronizacija ne funkcionira. Da pokrenete sinhronizaciju, unesite pristupni izraz.</translation> @@ -354,6 +353,7 @@ <translation id="3324193307694657476">2. red za adresu</translation> <translation id="3328459813621383194">Premještanje neaktivnih kartica</translation> <translation id="3328801116991980348">Informacije o web lokaciji</translation> +<translation id="3344485292736684439">{count,plural, =1{Oznaka je spremljena u "{title}" na vašem računu, {email}}one{Oznake spremljene na "{title}" na vašem računu, {email}}few{Oznake spremljene na "{title}" na vašem računu, {email}}other{Oznake spremljene na "{title}" na vašem računu, {email}}}</translation> <translation id="3371831930909698441">Dostupan je Prevodilac. Opcije su dostupne pri dnu ekrana.</translation> <translation id="3377063233124932127">Vaše sačuvane oznake, lozinke i drugo su sada na vrhu prikaza.</translation> <translation id="3393920035788932672">Skočni prozori su dozvoljeni</translation> @@ -391,7 +391,6 @@ <translation id="3581564640715911333">Ponudi prevođenje stranica na drugim jezicima</translation> <translation id="3588820906588687999">Otvori sliku na novoj kartici</translation> <translation id="3595252146048399851">U <ph name="BEGIN_LINK" />postavkama<ph name="END_LINK" /> uvijek možete odabrati šta želite sinhronizirati. Google može personalizirati Pretraživanje i druge usluge na osnovu vaše historije.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} slaba lozinka}one{{COUNT} slaba lozinka}few{{COUNT} slabe lozinke}other{{COUNT} slabih lozinki}}</translation> <translation id="3603009562372709545">Kopiraj URL linka</translation> <translation id="3607167657931203000">Podaci automatskog popunjavanja</translation> <translation id="3608008480985212611">Prijavite se da upravljate postavkama.</translation> @@ -437,7 +436,6 @@ <translation id="3928666092801078803">Kombiniraj moje podatke</translation> <translation id="3929457972718048006">Adrese</translation> <translation id="3943492037546055397">Lozinke</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} slaba lozinka}one{{count} slaba lozinka}few{{count} slabe lozinke}other{{count} slabih lozinki}}</translation> <translation id="3959736869653157332">Meni → Nova anonimna kartica</translation> <translation id="3967822245660637423">Preuzimanje je završeno</translation> <translation id="3968505803272650567">Upravljajte interesovanjima</translation> @@ -774,7 +772,6 @@ <translation id="6184086493125982861">Prikaz kartica</translation> <translation id="6187302354554850004">Posljednji put sinhronizirano: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Nepročitano</translation> -<translation id="6193424046394092997">{count,plural, =1{Oznaka je pohranjena u folderu {title}}one{Oznake su pohranjene u folderu {title}}few{Oznake su pohranjene u folderu {title}}other{Oznake su pohranjene u folderu {title}}}</translation> <translation id="6196207969502475924">Glasovno pretraživanje</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Zatvori {COUNT} karticu}one{Zatvori {COUNT} karticu}few{Zatvori {COUNT} kartice}other{Zatvori {COUNT} kartica}}</translation> <translation id="6210079381482819663">Kartice koje se ne koriste <ph name="THRESHOLD" /> ili više dana se premještaju ovdje. Ovo možete promijeniti bilo kada u <ph name="BEGIN_LINK" />postavkama<ph name="END_LINK" />.</translation> @@ -824,7 +821,6 @@ Vaši podaci su šifrirani sinhroniziranim pristupnim izrazom <ph name="TIME" />. Unesite izraz da započnete sinhronizaciju.</translation> <translation id="6418346271604475326">Pripremanje PDF-a</translation> -<translation id="6421095165635308">{count,plural, =1{Oznaka je sačuvana u folder {title} na računu {email}}one{Oznake su sačuvane u folder {title} na računu {email}}few{Oznake su sačuvane u folder {title} na računu {email}}other{Oznake su sačuvane u folder {title} na računu {email}}}</translation> <translation id="6429213933892582367">Otvorite Opcije lozinke</translation> <translation id="6434591244308415567">Došlo je do greške. Pokušajte ponovo kasnije.</translation> <translation id="6435236283694032571">Dodavanje na Listu za čitanje</translation> @@ -1037,6 +1033,7 @@ <translation id="7840771868269352570">Stavke koje ste odabrali će biti uklonjene.</translation> <translation id="7845466610722898">Prikaz Liste za čitanje</translation> <translation id="784551991304901159">Da prikažete sadržaj, u meniju odaberite Uključi</translation> +<translation id="7846158885638438868">{count,plural, =1{Označeno u "{title}"}one{Označeno u "{title}"}few{Označeno u "{title}"}other{Označeno u "{title}"}}</translation> <translation id="7853202427316060426">Aktivnost</translation> <translation id="7856733331829174190">Preuzimanje nije uspjelo</translation> <translation id="785938070103630874">Otvorite lozinke, načine plaćanja ili adresu i još mnogo toga</translation> @@ -1213,7 +1210,6 @@ <translation id="8974714402877957201">1. Otvorite postavke iPada</translation> <translation id="8976382372951310360">Pomoć</translation> <translation id="8976414606286374109">Kartice se pohranjuju na vaš Google račun.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nema ugroženih lozinki}=1{{count} ugrožena lozinka}one{{count} ugrožena lozinka}few{{count} ugrožene lozinke}other{{count} ugroženih lozinki}}</translation> <translation id="8981454092730389528">Kontrole aktivnosti na Googleu</translation> <translation id="8985320356172329008">Prijavljeni ste na Google kao</translation> <translation id="8986567980592931173">Prijavite se s Google računom da sinhronizirate lozinke, historiju i drugo.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb index 7dbda05..75e2824 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Notificacions</translation> <translation id="2496626742194544812">Ves a la primera pestanya</translation> <translation id="2500374554657206846">Opcions per desar la contrasenya</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> contrasenyes reutilitzades</translation> <translation id="2523363575747517183">Aquest lloc web està provant d'obrir una altra aplicació repetidament.</translation> <translation id="2529021024822217800">Obre-les totes</translation> <translation id="2547458583188611426">La sincronització no funciona. Per iniciar la sincronització, introdueix la frase de contrasenya.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Proposa traduir les pàgines en altres idiomes</translation> <translation id="3588820906588687999">Obre la imatge en una pestanya nova</translation> <translation id="3595252146048399851">Pots anar a la <ph name="BEGIN_LINK" />configuració<ph name="END_LINK" /> en qualsevol moment per decidir què vols sincronitzar. És possible que Google personalitzi la Cerca i altres serveis en funció del teu historial.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} contrasenya poc segura}other{{COUNT} contrasenyes poc segures}}</translation> <translation id="3603009562372709545">Copia l'URL de l'enllaç</translation> <translation id="3607167657931203000">Dades d'Emplenament automàtic</translation> <translation id="3608008480985212611">Inicia la sessió per gestionar les teves preferències.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Combina les meves dades</translation> <translation id="3929457972718048006">Adreces</translation> <translation id="3943492037546055397">Contrasenyes</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} contrasenya poc segura}other{{count} contrasenyes poc segures}}</translation> <translation id="3959736869653157332">Menú → Nova pestanya d'incògnit</translation> <translation id="3967822245660637423">S'ha completat la baixada</translation> <translation id="3968505803272650567">Gestiona els interessos</translation> @@ -772,7 +769,6 @@ <translation id="6184086493125982861">Mostra les pestanyes</translation> <translation id="6187302354554850004">Última sincronització: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">No llegits</translation> -<translation id="6193424046394092997">{count,plural, =1{Adreça d'interès afegida a {title}}other{Adreces d'interès afegides a {title}}}</translation> <translation id="6196207969502475924">Cerca per veu</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Tanca {COUNT} pestanya}other{Tanca {COUNT} pestanyes}}</translation> <translation id="6210079381482819663">Les pestanyes que no s'utilitzen durant <ph name="THRESHOLD" /> dies o més es mouen aquí. Pots canviar aquesta opció en qualsevol moment a la <ph name="BEGIN_LINK" />configuració<ph name="END_LINK" />.</translation> @@ -821,7 +817,6 @@ Les teves dades es van encriptar el dia <ph name="TIME" /> amb la teva frase de contrasenya de sincronització. Introduei-la per començar la sincronització.</translation> <translation id="6418346271604475326">Preparant el PDF</translation> -<translation id="6421095165635308">{count,plural, =1{S'ha desat l'adreça d'interès a {title} al teu compte, {email}}other{S'han desat les adreces d'interès a {title} al teu compte, {email}}}</translation> <translation id="6429213933892582367">Obre Opcions de contrasenya</translation> <translation id="6434591244308415567">S'ha produït un error. Torna-ho a provar més tard.</translation> <translation id="6435236283694032571">Afegeix a la llista de lectura</translation> @@ -1090,6 +1085,7 @@ <translation id="8136856065410661948">S'utilitzarà per crear esdeveniments al teu Calendari d'Apple des de Chrome i Google Lens.</translation> <translation id="8156478151976189188">La sincronització de contrasenyes no funciona</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> comptes</translation> +<translation id="8159358225423560600">ara mateix</translation> <translation id="8179976553408161302">Retorn</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Els teus dispositius<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Tradueix la pàgina</translation> @@ -1120,6 +1116,7 @@ <translation id="8393889347136007944">Pestanyes que no s'han utilitzat durant <ph name="THRESHOLD" /> dies</translation> <translation id="8407669440184693619">No s'ha trobat cap contrasenya per a aquest lloc web</translation> <translation id="842017693807136194">S'ha iniciat la sessió amb</translation> +<translation id="8423121072346537366">Ara mateix</translation> <translation id="8425693829365242963">Les teves contrasenyes són úniques</translation> <translation id="8428045167754449968">Ciutat/població</translation> <translation id="8428213095426709021">Configuració</translation> @@ -1205,7 +1202,6 @@ <translation id="8974714402877957201">1. Obre la configuració de l'iPad.</translation> <translation id="8976382372951310360">Ajuda</translation> <translation id="8976414606286374109">Les targetes es desen al teu Compte de Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Cap contrasenya en perill}=1{{count} contrasenya en perill}other{{count} contrasenyes en perill}}</translation> <translation id="8981454092730389528">Controls d'activitat de Google</translation> <translation id="8985320356172329008">Has iniciat la sessió a Google com a</translation> <translation id="8998289560386111590">No disponible al teu dispositiu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb index 2db9341..e0fb9438 100644 --- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Oznámení</translation> <translation id="2496626742194544812">Přejít na první kartu</translation> <translation id="2500374554657206846">Možnosti uložení hesla</translation> -<translation id="2502415369140591438">Opakovaně použitá hesla: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Tento web se opakovaně pokouší otevřít jinou aplikaci.</translation> <translation id="2529021024822217800">Otevřít vše</translation> <translation id="2547458583188611426">Synchronizace nefunguje. Zadejte heslovou frázi.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Nabízet překlad stránek v jiných jazycích</translation> <translation id="3588820906588687999">Otevřít obrázek na nové kartě</translation> <translation id="3595252146048399851">Synchronizované položky můžete kdykoliv vybrat v <ph name="BEGIN_LINK" />nastavení<ph name="END_LINK" />. Google může personalizovat Vyhledávání a další služby na základě vaší historie.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} slabé heslo}few{{COUNT} slabá hesla}many{{COUNT} slabého hesla}other{{COUNT} slabých hesel}}</translation> <translation id="3603009562372709545">Kopírovat adresu URL odkazu</translation> <translation id="3607167657931203000">Data automatického vyplňování</translation> <translation id="3608008480985212611">Pokud chcete spravovat své preference, přihlaste se.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Sloučit má data</translation> <translation id="3929457972718048006">Adresy</translation> <translation id="3943492037546055397">Hesla</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} slabé heslo}few{{count} slabá hesla}many{{count} slabého hesla}other{{count} slabých hesel}}</translation> <translation id="3959736869653157332">Nabídka → Nová anonymní karta</translation> <translation id="3967822245660637423">Stahování bylo dokončeno</translation> <translation id="3968505803272650567">Spravovat zájmy</translation> @@ -772,7 +769,6 @@ <translation id="6184086493125982861">Zobrazit karty</translation> <translation id="6187302354554850004">Synchronizace: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Nepřečtené</translation> -<translation id="6193424046394092997">{count,plural, =1{Záložka přidána do složky {title}}few{Záložka přidána do složky {title}}many{Záložka přidána do složky {title}}other{Záložka přidána do složky {title}}}</translation> <translation id="6196207969502475924">Hlasové vyhledávání</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Zavřít {COUNT} kartu}few{Zavřít {COUNT} karty}many{Zavřít {COUNT} karty}other{Zavřít {COUNT} karet}}</translation> <translation id="6210079381482819663">Sem se přesouvají karty, které <ph name="THRESHOLD" /> nebo déle nebyly použity. Možnosti této funkce můžete v <ph name="BEGIN_LINK" />nastavení<ph name="END_LINK" /> kdykoli změnit.</translation> @@ -821,7 +817,6 @@ Vaše data byla <ph name="TIME" /> zašifrována pomocí heslové fráze pro synchronizaci. Chcete-li zahájit synchronizaci, zadejte ji.</translation> <translation id="6418346271604475326">Příprava souboru PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Záložka byla uložena do složky {title} ve vašem účtu {email}}few{Záložky byly uloženy do složky {title} ve vašem účtu {email}}many{Záložky byly uloženy do složky {title} ve vašem účtu {email}}other{Záložky byly uloženy do složky {title} ve vašem účtu {email}}}</translation> <translation id="6429213933892582367">Otevřete sekci Volby hesel.</translation> <translation id="6434591244308415567">Došlo k chybě, zkuste to později.</translation> <translation id="6435236283694032571">Přidat do seznamu četby</translation> @@ -1025,6 +1020,7 @@ <translation id="7781011649027948662">Přeložit stránku?</translation> <translation id="7781069478569868053">Stránka Nová karta</translation> <translation id="7781829728241885113">Včera</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Po 1 dni}few{Po {COUNT} dnech}many{Po {COUNT} dne}other{Po {COUNT} dnech}}</translation> <translation id="778855399387580014">Spustit vyhledávání na nové kartě Chromu.</translation> <translation id="7791543448312431591">Přidat</translation> <translation id="7807060072011926525">Poskytuje Google</translation> @@ -1089,6 +1085,7 @@ <translation id="8136856065410661948">Tyto údaje poslouží k vytváření událostí v Kalendáři Apple z Chromu a Google Lens.</translation> <translation id="8156478151976189188">Synchronizace hesel nefunguje</translation> <translation id="8157532349231307196">Účty: <ph name="NUMBER_OF_ACCOUNTS" /></translation> +<translation id="8159358225423560600">právě teď</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Vaše zařízení<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Přeložit stránku</translation> @@ -1119,6 +1116,7 @@ <translation id="8393889347136007944">Karty nebyly používány <ph name="THRESHOLD" /> d</translation> <translation id="8407669440184693619">Pro tento web nebyla nalezena žádná hesla</translation> <translation id="842017693807136194">Poskytovatel přihlášení</translation> +<translation id="8423121072346537366">Právě teď</translation> <translation id="8425693829365242963">Vaše hesla jsou unikátní</translation> <translation id="8428045167754449968">Město nebo obec</translation> <translation id="8428213095426709021">Nastavení</translation> @@ -1204,7 +1202,6 @@ <translation id="8974714402877957201">1. Otevřete nastavení iPadu.</translation> <translation id="8976382372951310360">Nápověda</translation> <translation id="8976414606286374109">Karty se ukládají do vašeho účtu Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nebyla nalezena žádná prolomená hesla}=1{{count} prolomené heslo}few{{count} prolomená hesla}many{{count} prolomeného hesla}other{{count} prolomených hesel}}</translation> <translation id="8981454092730389528">Ovládací prvky aktivity Google</translation> <translation id="8985320356172329008">Jste přihlášeni do Googlu jako</translation> <translation id="8998289560386111590">Na vašem zařízení není k dispozici</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_strings_cy.xtb index a7fdf06f0..a685983 100644 --- a/ios/chrome/app/strings/resources/ios_strings_cy.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Pellhau</translation> <translation id="2230173723195178503">Mae tudalen we wedi'i llwytho</translation> <translation id="2239626343334228536">Wrthi'n clirio data pori...</translation> +<translation id="2242467532204595597">Defnyddiwch Chrome unrhyw bryd y byddwch yn tapio dolenni mewn negeseuon, dogfennau ac apiau eraill.</translation> <translation id="22508856139286506">Rhybuddion a Ddiystyrwyd (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Dewislen → Hanes</translation> <translation id="2256933947031277845">Mae eich sefydliad yn caniatáu i chi fewngofnodi gyda rhai cyfrifon yn unig.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{Mae {count} cyfeiriad sydd wedi'i gadw ar gael uwchben eich bysellfwrdd.}zero{Mae {count} cyfeiriad sydd wedi'u cadw ar gael uwchben eich bysellfwrdd.}two{Mae {count} gyfeiriad sydd wedi'u cadw ar gael uwchben eich bysellfwrdd.}few{Mae {count} chyfeiriad sydd wedi'u cadw ar gael uwchben eich bysellfwrdd.}many{Mae {count} chyfeiriad sydd wedi'u cadw ar gael uwchben eich bysellfwrdd.}other{Mae {count} cyfeiriad sydd wedi'u cadw ar gael uwchben eich bysellfwrdd.}}</translation> <translation id="2421004566762153674">Rhwystro cwcis trydydd parti</translation> <translation id="2421044535038393232">Parhau i olygu</translation> +<translation id="2423077901494354337">Byddwch nawr yn manteisio i'r eithaf ar Chrome ar eich dyfais.</translation> <translation id="2434405374328098816">Rydych eisoes wedi cadw cyfrinair ar gyfer "<ph name="USERNAME" />" yn <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Dangos y cyfrinair</translation> <translation id="2451654228769116489">Pinio Tab</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Hysbysiadau</translation> <translation id="2496626742194544812">Mynd i'r Tab Cyntaf</translation> <translation id="2500374554657206846">Dewisiadau ar gyfer Cadw Cyfrinair</translation> -<translation id="2502415369140591438">Mae <ph name="COUNT" /> o Gyfrineiriau wedi'u hailddefnyddio</translation> <translation id="2523363575747517183">Mae'r wefan hon yn ceisio agor rhaglen arall tro ar ôl tro.</translation> <translation id="2529021024822217800">Agor y Cyfan</translation> <translation id="2547458583188611426">Nid yw cysoni yn gweithio. I ddechrau cysoni, rhowch eich cyfrinymadrodd.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Cynnig cyfieithu tudalennau mewn ieithoedd eraill</translation> <translation id="3588820906588687999">Agor y Llun Mewn Tab Newydd</translation> <translation id="3595252146048399851">Gallwch bob amser ddewis beth i'w gysoni yn y <ph name="BEGIN_LINK" />gosodiadau<ph name="END_LINK" />. Gall Google bersonoleiddio Search a gwasanaethau eraill yn seiliedig ar eich hanes.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} Cyfrinair Gwan}zero{{COUNT} Cyfrinair Gwan}two{{COUNT} Gyfrinair Gwan}few{{COUNT} Cyfrinair Gwan}many{{COUNT} Cyfrinair Gwan}other{{COUNT} Cyfrinair Gwan}}</translation> <translation id="3603009562372709545">Copïo Dolen URL</translation> <translation id="3607167657931203000">Data Awtolenwi</translation> <translation id="3608008480985212611">Mewngofnodwch i reoli eich dewisiadau.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Cyfunwch fy nata</translation> <translation id="3929457972718048006">Cyfeiriadau</translation> <translation id="3943492037546055397">Cyfrineiriau</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} Cyfrinair Gwan}zero{{count} Cyfrinair Gwan}two{{count} Gyfrinair Gwan}few{{count} Chyfrinair Gwan}many{{count} Chyfrinair Gwan}other{{count} Cyfrinair Gwan}}</translation> <translation id="3959736869653157332">Dewislen → Tab Anhysbys Newydd</translation> <translation id="3967822245660637423">Lawrlwytho wedi'i gwblhau</translation> <translation id="3968505803272650567">Rheoli Diddordebau</translation> @@ -611,6 +610,7 @@ <translation id="5118764316110575523">Diffodd</translation> <translation id="5119391094379141756">Dewiswch Chrome</translation> <translation id="5121618895923301719">Rydych yn olrhain y cynnyrch hwn yn barod. Mae'r dudalen hon wedi'i chadw yn <ph name="BEGIN_LINK" />Nodau Tudalen Dyfais Symudol<ph name="END_LINK" />.</translation> +<translation id="5126465625664020024">Mewngofnodi a Chysoni</translation> <translation id="5132942445612118989">Cysonwch eich cyfrineiriau, hanes a mwy ar bob dyfais</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} Cyfrinair Gwan}zero{{COUNT} Cyfrinair Gwan}two{{COUNT} Gyfrinair Gwan}few{{COUNT} Cyfrinair Gwan}many{{COUNT} Cyfrinair Gwan}other{{COUNT} Cyfrinair Gwan}}</translation> <translation id="5149188072385105201">Ychwanegu Cyfrinair...</translation> @@ -771,7 +771,6 @@ <translation id="6184086493125982861">Dangos Tabiau</translation> <translation id="6187302354554850004">Cysonwyd ddiwethaf: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Heb eu darllen</translation> -<translation id="6193424046394092997">{count,plural, =1{Wedi creu nod tudalen yn {title}}zero{Wedi creu nodau tudalen yn {title}}two{Wedi creu nodau tudalen yn {title}}few{Wedi creu nodau tudalen yn {title}}many{Wedi creu nodau tudalen yn {title}}other{Wedi creu nodau tudalen yn {title}}}</translation> <translation id="6196207969502475924">Chwilio â Llais</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Cau {COUNT} Tab}zero{Cau {COUNT} Tab}two{Cau {COUNT} Dab}few{Cau {COUNT} Thab}many{Cau {COUNT} Thab}other{Cau {COUNT} Tab}}</translation> <translation id="6210079381482819663">Mae tabiau sydd heb eu defnyddio am <ph name="THRESHOLD" /> o ddiwrnodau neu fwy yn cael eu symud yma. Gallwch newid hyn unrhyw bryd yn y <ph name="BEGIN_LINK" />gosodiadau<ph name="END_LINK" />.</translation> @@ -801,6 +800,7 @@ <translation id="6346549652287021269">Dechrau Lawrlwythiad Newydd?</translation> <translation id="6347953390226388422">{count,plural, =1{Bydd y cyfeiriad hwn yn cael ei ddileu o'ch Cyfrif Google (<ph name="USER_EMAIL" />) ac o'r ddyfais hon.}zero{Bydd y cyfeiriadau hyn yn cael eu dileu o'ch Cyfrif Google (<ph name="USER_EMAIL" />) ac o'r ddyfais hon.}two{Bydd y cyfeiriadau hyn yn cael eu dileu o'ch Cyfrif Google (<ph name="USER_EMAIL" />) ac o'r ddyfais hon.}few{Bydd y cyfeiriadau hyn yn cael eu dileu o'ch Cyfrif Google (<ph name="USER_EMAIL" />) ac o'r ddyfais hon.}many{Bydd y cyfeiriadau hyn yn cael eu dileu o'ch Cyfrif Google (<ph name="USER_EMAIL" />) ac o'r ddyfais hon.}other{Bydd y cyfeiriadau hyn yn cael eu dileu o'ch Cyfrif Google (<ph name="USER_EMAIL" />) ac o'r ddyfais hon.}}</translation> <translation id="634878792104344809">Cysoni eich cyfrineiriau, eich hanes, a rhagor ar eich holl ddyfeisiau</translation> +<translation id="6348855835728304880">Gallwch gael mynediad at eich cyfrineiriau Chrome a rhagor ar draws apiau eraill ar y ddyfais hon.</translation> <translation id="6355820205320395730">Mae'n hawdd dyfalu cyfrineiriau gwan. Gwnewch yn siŵr eich bod yn creu cyfrineiriau cryf. <ph name="BEGIN_LINK" />Gweld rhagor o awgrymiadau diogelwch.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Dilyn <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Nid oes unrhyw dabiau anhysbys</translation> @@ -820,7 +820,6 @@ Amgryptiwyd eich data â'ch cyfrinair cysoni <ph name="TIME" />. Rhowch eich cyfrinymadrodd i ddechrau cysoni.</translation> <translation id="6418346271604475326">Wrthi'n paratoi PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Wedi cadw'r nod tudalen i {title} yn eich cyfrif, {email}}zero{Wedi cadw'r nodau tudalen i {title} yn eich cyfrif, {email}}two{Wedi cadw'r nodau tudalen i {title} yn eich cyfrif, {email}}few{Wedi cadw'r nodau tudalen i {title} yn eich cyfrif, {email}}many{Wedi cadw'r nodau tudalen i {title} yn eich cyfrif, {email}}other{Wedi cadw'r nodau tudalen i {title} yn eich cyfrif, {email}}}</translation> <translation id="6429213933892582367">Agorwch Opsiynau Cyfrinair</translation> <translation id="6434591244308415567">Bu gwall. Rhowch gynnig arall arni'n nes ymlaen.</translation> <translation id="6435236283694032571">Ychwanegu at y Rhestr Ddarllen</translation> @@ -953,6 +952,7 @@ <translation id="7221173315674413369">Archwiliwch nodweddion ac awgrymiadau newydd yn Beth sy'n Newydd</translation> <translation id="7223102419539744003">Cau'r Tab</translation> <translation id="722454870747268814">Tab Anhysbys Newydd</translation> +<translation id="723787869754590019">Defnyddiwch Chrome ar gyfer Awtolenwi</translation> <translation id="7265758999917665941">Byth ar gyfer y Wefan hon</translation> <translation id="7272437679830969316">Methu â chadarnhau'ch hunaniaeth. Ni chopïwyd y cyfrinair.</translation> <translation id="7291368939935408496">Wrthi'n Paratoi Cyfrineiriau...</translation> @@ -1154,12 +1154,14 @@ <translation id="8663764600409216912">Rydych yn defnyddio cyfrineiriau sy'n edrych yn anodd eu dyfalu</translation> <translation id="8668210798914567634">Mae'r dudalen hon wedi'i chadw ar eich Rhestr Ddarllen.</translation> <translation id="8680787084697685621">Mae manylion mewngofnodi'r cyfrif yn hen.</translation> +<translation id="868773710103052534">Rydych yn Barod i Fynd</translation> <translation id="8693663554456874301">{count,plural, =1{Cau'r Tab}zero{Cau'r Tabiau}two{Cau'r Tabiau}few{Cau'r Tabiau}many{Cau'r Tabiau}other{Cau'r Tabiau}}</translation> <translation id="8703536910991780768">Mae'ch Cyfrineiriau'n edrych yn Gryf</translation> <translation id="8706588385081740091">Cyfrineiriau</translation> <translation id="8717864919010420084">Copïo'r Ddolen</translation> <translation id="8721297211384281569">Dewislen Offer</translation> <translation id="8725066075913043281">Rhoi cynnig arall arni</translation> +<translation id="8727043961453758442">Manteisio i'r eithaf ar Chrome</translation> <translation id="8730621377337864115">Wedi gorffen</translation> <translation id="8731388423028622182">Cawsoch eich allgofnodi o'ch cyfrif <ph name="USER_NAME" /> fel rhan o'ch ailosodiad iPhone. Tapiwch parhau isod i fewngofnodi.</translation> <translation id="87371078663613140">Archwiliwch yr opsiynau yn y bar dewislen</translation> @@ -1206,9 +1208,9 @@ <translation id="8974714402877957201">1. Agorwch y Gosodiadau iPad</translation> <translation id="8976382372951310360">Cymorth</translation> <translation id="8976414606286374109">Mae cardiau yn cael eu cadw i'ch Cyfrif Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nid oes unrhyw gyfrineiriau sydd wedi'u darganfod}=1{{count} Cyfrinair sydd wedi'i Ddarganfod}two{{count} Gyfrinair sydd wedi'u Darganfod}few{{count} Chyfrinair sydd wedi'u Darganfod}many{{count} Chyfrinair sydd wedi'u Darganfod}other{{count} Cyfrinair sydd wedi'u Darganfod}}</translation> <translation id="8981454092730389528">Rheolaethau Gweithgarwch Google</translation> <translation id="8985320356172329008">Wedi mewngofnodi i Google fel</translation> +<translation id="8986567980592931173">Mewngofnodwch gyda'ch Cyfrif Google i gysoni'ch cyfrineiriau, eich hanes a rhagor.</translation> <translation id="8998289560386111590">Dim ar gael ar eich dyfais</translation> <translation id="9000089900434778519"><ph name="DSE_NAME" /> yw eich peiriant chwilio. Gweler ei gyfarwyddiadau ar gyfer dileu eich hanes chwilio, os yw'n berthnasol.</translation> <translation id="9008201768610948239">Anwybyddu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb index 52762e2..c9f0320 100644 --- a/ios/chrome/app/strings/resources/ios_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Zoom ud</translation> <translation id="2230173723195178503">Websiden er indlæst</translation> <translation id="2239626343334228536">Browserdata ryddes...</translation> +<translation id="2242467532204595597">Brug Chrome, hver gang du trykker på links i meddelelser, dokumenter og andre apps.</translation> <translation id="22508856139286506">Afviste advarsler (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Menu → Historik</translation> <translation id="2256933947031277845">Din organisation tillader kun login med bestemte konti.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} gemt adresse er tilgængelig over dit tastatur.}one{{count} gemt adresse er tilgængelig over dit tastatur.}other{{count} gemte adresser er tilgængelige over dit tastatur.}}</translation> <translation id="2421004566762153674">Blokering af cookies fra tredjeparter</translation> <translation id="2421044535038393232">Rediger videre</translation> +<translation id="2423077901494354337">Nu får du mest muligt ud af Chrome på din enhed.</translation> <translation id="2434405374328098816">Du har allerede gemt en adgangskode for "<ph name="USERNAME" />" på <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Vis adgangskode</translation> <translation id="2451654228769116489">Fastgør fane</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Notifikationer</translation> <translation id="2496626742194544812">Gå til første fane</translation> <translation id="2500374554657206846">Valgmuligheder for at gemme adgangskode</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> genbrugte adgangskoder</translation> <translation id="2523363575747517183">Dette website forsøger hele tiden at åbne en anden app.</translation> <translation id="2529021024822217800">Åbn alle</translation> <translation id="2547458583188611426">Synkronisering fungerer ikke. Angiv din adgangssætning for at starte synkroniseringen.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Tilbyd at oversætte sider på andre sprog</translation> <translation id="3588820906588687999">Åbn billede på ny fane</translation> <translation id="3595252146048399851">Du kan altid vælge, hvad der skal synkroniseres, i <ph name="BEGIN_LINK" />indstillingerne<ph name="END_LINK" />. Google kan tilpasse Søgning og andre tjenester baseret på din historik.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} svag adgangskode}one{{COUNT} svag adgangskode}other{{COUNT} svage adgangskoder}}</translation> <translation id="3603009562372709545">Kopiér linkets webadresse</translation> <translation id="3607167657931203000">AutoFyld-data</translation> <translation id="3608008480985212611">Log ind for at administrere dine præferencer.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Kombiner mine data</translation> <translation id="3929457972718048006">Adresser</translation> <translation id="3943492037546055397">Adgangskoder</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} svag adgangskode}one{{count} svag adgangskode}other{{count} svage adgangskoder}}</translation> <translation id="3959736869653157332">Menu → Ny inkognitofane</translation> <translation id="3967822245660637423">Download fuldført</translation> <translation id="3968505803272650567">Administrer interesser</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Vis faner</translation> <translation id="6187302354554850004">Sidst synkroniseret: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Ulæst</translation> -<translation id="6193424046394092997">{count,plural, =1{Gemt som bogmærke i {title}}one{Bookmarked to {title}}other{Gemt som bogmærker i {title}}}</translation> <translation id="6196207969502475924">Talesøgning</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Luk {COUNT} fane}one{Luk {COUNT} fane}other{Luk {COUNT} faner}}</translation> <translation id="6210079381482819663">Faner, der ikke bruges i <ph name="THRESHOLD" /> dage eller mere, flyttes hertil. Du kan til enhver tid ændre dette i <ph name="BEGIN_LINK" />indstillingerne<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Vil du starte en ny download?</translation> <translation id="6347953390226388422">{count,plural, =1{Adressen slettes fra din Google-konto (<ph name="USER_EMAIL" />) og fra denne enhed.}one{Adressen slettes fra din Google-konto (<ph name="USER_EMAIL" />) og fra denne enhed.}other{Adresserne slettes fra din Google-konto (<ph name="USER_EMAIL" />) og fra denne enhed.}}</translation> <translation id="634878792104344809">Synkroniser dine adgangskoder, din historik og meget mere på alle dine enheder</translation> +<translation id="6348855835728304880">Få adgang til dine Chrome-adgangskoder m.m. i andre apps på denne enhed.</translation> <translation id="6355820205320395730">Svage adgangskoder er nemme at gætte. Sørg for, at du opretter stærke adgangskoder. <ph name="BEGIN_LINK" />Se flere sikkerhedstips<ph name="END_LINK" />.</translation> <translation id="6361848730467328243">Følg <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Ingen inkognitofaner</translation> @@ -821,7 +820,6 @@ Dine data blev krypteret med din adgangssætning til synkronisering d. <ph name="TIME" />. Angiv adgangssætningen for at starte synkroniseringen.</translation> <translation id="6418346271604475326">Forbereder PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Bogmærket er gemt i {title} på din konto, {email}}one{Bogmærket er gemt i {title} på din konto, {email}}other{Bogmærkerne er gemt i {title} på din konto, {email}}}</translation> <translation id="6429213933892582367">Åbn Valgmuligheder for adgangskoder</translation> <translation id="6434591244308415567">Der opstod en fejl. Prøv igen senere.</translation> <translation id="6435236283694032571">Føj til læselisten</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Se nye funktioner og tips i Nyheder</translation> <translation id="7223102419539744003">Luk fane</translation> <translation id="722454870747268814">Ny inkognitofane</translation> +<translation id="723787869754590019">Brug Chrome til Autofyld</translation> <translation id="7265758999917665941">Aldrig for dette website</translation> <translation id="7272437679830969316">Din identitet kunne ikke verificeres. Adgangskoden blev ikke kopieret.</translation> <translation id="7291368939935408496">Forbereder adgangskoder...</translation> @@ -1025,6 +1024,7 @@ <translation id="7781011649027948662">Vil du oversætte siden?</translation> <translation id="7781069478569868053">Siden Ny fane</translation> <translation id="7781829728241885113">I går</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Efter 1 dag}one{Efter {COUNT} dag}other{Efter {COUNT} dage}}</translation> <translation id="778855399387580014">Start en søgning i en ny Chrome-fane.</translation> <translation id="7791543448312431591">Tilføj</translation> <translation id="7807060072011926525">Leveret af Google</translation> @@ -1089,6 +1089,7 @@ <translation id="8136856065410661948">Dette bruges til at oprette begivenheder i din Apple Kalender via Chrome og Google Lens.</translation> <translation id="8156478151976189188">Password Sync fungerer ikke</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> konti</translation> +<translation id="8159358225423560600">lige nu</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Dine enheder<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Oversæt side</translation> @@ -1119,6 +1120,7 @@ <translation id="8393889347136007944">Faner, der ikke er blevet brugt i <ph name="THRESHOLD" /> dage</translation> <translation id="8407669440184693619">Der blev ikke fundet nogen adgangskoder til dette website</translation> <translation id="842017693807136194">Logget ind med</translation> +<translation id="8423121072346537366">Lige nu</translation> <translation id="8425693829365242963">Dine adgangskoder er unikke</translation> <translation id="8428045167754449968">By</translation> <translation id="8428213095426709021">Indstillinger</translation> @@ -1152,12 +1154,14 @@ <translation id="8663764600409216912">Du bruger adgangskoder, der er svære at gætte</translation> <translation id="8668210798914567634">Denne side er gemt på din læseliste.</translation> <translation id="8680787084697685621">Oplysningerne om kontologin er forældede.</translation> +<translation id="868773710103052534">Så er det klaret</translation> <translation id="8693663554456874301">{count,plural, =1{Luk fane}one{Luk fane}other{Luk faner}}</translation> <translation id="8703536910991780768">Dine adgangskoder ser stærke ud</translation> <translation id="8706588385081740091">Adgangskoder</translation> <translation id="8717864919010420084">Kopiér link</translation> <translation id="8721297211384281569">Menuen Værktøjer</translation> <translation id="8725066075913043281">Forsøg igen</translation> +<translation id="8727043961453758442">Få mest muligt ud af Chrome</translation> <translation id="8730621377337864115">Udfør</translation> <translation id="8731388423028622182">Du blev logget ud af din konto <ph name="USER_NAME" /> som en del af nulstillingen af din iPhone. Tryk på Fortsæt nedenfor for at logge ind.</translation> <translation id="87371078663613140">Se valgmulighederne i menulinjen</translation> @@ -1204,9 +1208,9 @@ <translation id="8974714402877957201">1. Åbn iPad-indstillingerne</translation> <translation id="8976382372951310360">Hjælp</translation> <translation id="8976414606286374109">Kort gemmes på din Google-konto.</translation> -<translation id="8978059030508051916">{count,plural, =0{Ingen kompromitterede adgangskoder}=1{{count} kompromitteret adgangskode}one{{count} kompromitteret adgangskode}other{{count} kompromitterede adgangskoder}}</translation> <translation id="8981454092730389528">Aktivitetsadministration på Google</translation> <translation id="8985320356172329008">Du er logget ind på Google som</translation> +<translation id="8986567980592931173">Log ind med din Google-konto for at synkronisere dine adgangskoder, din historik m.m.</translation> <translation id="8998289560386111590">Ikke tilgængelig på din enhed</translation> <translation id="9000089900434778519">Dine standardsøgemaskine er <ph name="DSE_NAME" />. Se din søgemaskines vejledning i, hvordan du sletter din søgehistorik, hvis det er relevant.</translation> <translation id="9008201768610948239">Ignorer</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb index 71fd7ce..2cd3127 100644 --- a/ios/chrome/app/strings/resources/ios_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Herauszoomen</translation> <translation id="2230173723195178503">Webseite geladen</translation> <translation id="2239626343334228536">Browserdaten werden gelöscht…</translation> +<translation id="2242467532204595597">Du kannst Chrome jederzeit nutzen, wenn du in Nachrichten, Dokumenten und anderen Apps auf Links tippst.</translation> <translation id="22508856139286506">Geschlossene Warnungen (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Menü → Verlauf</translation> <translation id="2256933947031277845">Deine Organisation lässt die Anmeldung nur mit bestimmten Konten zu.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} gespeicherte Adresse oben auf der Tastatur verfügbar.}other{{count} gespeicherte Adressen oben auf der Tastatur verfügbar.}}</translation> <translation id="2421004566762153674">Drittanbieter-Cookies werden blockiert</translation> <translation id="2421044535038393232">Weiter bearbeiten</translation> +<translation id="2423077901494354337">Jetzt kannst du Chrome auf deinem Gerät optimal nutzen.</translation> <translation id="2434405374328098816">Du hast für „<ph name="USERNAME" />“ schon ein Passwort bei <ph name="WEBSITE" /> gespeichert</translation> <translation id="2435457462613246316">Passwort anzeigen</translation> <translation id="2451654228769116489">Tab anpinnen</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Benachrichtigungen</translation> <translation id="2496626742194544812">Zum ersten Tab</translation> <translation id="2500374554657206846">Optionen zum Speichern von Passwörtern</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> wiederverwendete Passwörter</translation> <translation id="2523363575747517183">Diese Website versucht wiederholt, eine andere App zu öffnen.</translation> <translation id="2529021024822217800">Alle öffnen</translation> <translation id="2547458583188611426">Synchronisierung funktioniert nicht. Gib deine Passphrase ein, um die Synchronisierung zu starten.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Übersetzung für Seiten in andere Sprachen anbieten</translation> <translation id="3588820906588687999">Bild in neuem Tab öffnen</translation> <translation id="3595252146048399851">In den <ph name="BEGIN_LINK" />Einstellungen<ph name="END_LINK" /> kannst du auswählen, was synchronisiert werden soll. Google kann die Google Suche und andere Dienste auf der Grundlage deines Verlaufs personalisieren.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} schwaches Passwort}other{{COUNT} schwache Passwörter}}</translation> <translation id="3603009562372709545">Link-URL kopieren</translation> <translation id="3607167657931203000">Autofill-Daten</translation> <translation id="3608008480985212611">Anmelden, um Einstellungen zu verwalten.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Daten zusammenführen</translation> <translation id="3929457972718048006">Adressen</translation> <translation id="3943492037546055397">Passwörter</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} schwaches Passwort}other{{count} schwache Passwörter}}</translation> <translation id="3959736869653157332">Menü → Neuer Inkognitotab</translation> <translation id="3967822245660637423">Download abgeschlossen</translation> <translation id="3968505803272650567">Interessen verwalten</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Tabs anzeigen</translation> <translation id="6187302354554850004">Letzte Synchr.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Ungelesen</translation> -<translation id="6193424046394092997">{count,plural, =1{Lesezeichen in „{title}“ gespeichert}other{Lesezeichen in „{title}“ gespeichert}}</translation> <translation id="6196207969502475924">Sprachsuche</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} Tab schließen}other{{COUNT} Tabs schließen}}</translation> <translation id="6210079381482819663">Tabs, die <ph name="THRESHOLD" /> Tage oder länger nicht verwendet wurden, werden hierhin verschoben. Du kannst dies jederzeit <ph name="BEGIN_LINK" />in den Einstellungen<ph name="END_LINK" /> ändern.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Neuen Download starten?</translation> <translation id="6347953390226388422">{count,plural, =1{Diese Adresse wird aus deinem Google-Konto (<ph name="USER_EMAIL" />) und von diesem Gerät gelöscht.}other{Diese Adressen werden aus deinem Google-Konto (<ph name="USER_EMAIL" />) und von diesem Gerät gelöscht.}}</translation> <translation id="634878792104344809">Passwörter, Verlauf und mehr auf allen Geräten synchronisieren</translation> +<translation id="6348855835728304880">Du kannst in anderen Apps auf diesem Gerät auf deine Chrome-Passwörter und mehr zugreifen.</translation> <translation id="6355820205320395730">Schwache Passwörter sind einfach zu erraten. Erstelle deshalb am besten starke Passwörter. <ph name="BEGIN_LINK" />Weitere Sicherheitstipps ansehen.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> folgen</translation> <translation id="6362362396625799311">Keine Inkognito-Tabs</translation> @@ -821,7 +820,6 @@ Deine Daten wurden am <ph name="TIME" /> mit deiner Synchronisierungspassphrase verschlüsselt. Gib diese ein, um die Synchronisierung zu starten.</translation> <translation id="6418346271604475326">PDF wird vorbereitet</translation> -<translation id="6421095165635308">{count,plural, =1{Lesezeichen unter „{title}“ in deinem Konto ({email}) gespeichert}other{Lesezeichen unter „{title}“ in deinem Konto ({email}) gespeichert}}</translation> <translation id="6429213933892582367">Öffne „Passwortoptionen“</translation> <translation id="6434591244308415567">Ein Fehler ist aufgetreten. Bitte versuche es später noch einmal.</translation> <translation id="6435236283694032571">Zur Leseliste hinzufügen</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Entdecke unter „Neue Funktionen“ Tipps und neue Funktionen</translation> <translation id="7223102419539744003">Tab schließen</translation> <translation id="722454870747268814">Neuer Inkognitotab</translation> +<translation id="723787869754590019">Chrome für Autofill verwenden</translation> <translation id="7265758999917665941">Für diese Website niemals</translation> <translation id="7272437679830969316">Deine Identität konnte nicht bestätigt werden. Das Passwort wurde nicht kopiert.</translation> <translation id="7291368939935408496">Passwörter werden zum Exportieren vorbereitet…</translation> @@ -1025,6 +1024,7 @@ <translation id="7781011649027948662">Seite übersetzen?</translation> <translation id="7781069478569868053">"Neuer Tab"-Seite</translation> <translation id="7781829728241885113">Gestern</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Nach 1 Tag}other{Nach {COUNT} Tagen}}</translation> <translation id="778855399387580014">Eine Suche in einem neuen Chrome-Tab starten.</translation> <translation id="7791543448312431591">Hinzufügen</translation> <translation id="7807060072011926525">Von Google bereitgestellt</translation> @@ -1154,12 +1154,14 @@ <translation id="8663764600409216912">Du verwendest Passwörter, die nicht einfach zu erraten sein dürften</translation> <translation id="8668210798914567634">Diese Seite wurde in deiner Leseliste gespeichert.</translation> <translation id="8680787084697685621">Die Anmeldeinformationen für dieses Konto sind veraltet.</translation> +<translation id="868773710103052534">Fertig</translation> <translation id="8693663554456874301">{count,plural, =1{Tab schließen}other{Tabs schließen}}</translation> <translation id="8703536910991780768">Deine Passwörter sind stark</translation> <translation id="8706588385081740091">Passwörter</translation> <translation id="8717864919010420084">Link kopieren</translation> <translation id="8721297211384281569">Menü "Tools"</translation> <translation id="8725066075913043281">Erneut versuchen</translation> +<translation id="8727043961453758442">Chrome optimal nutzen</translation> <translation id="8730621377337864115">Fertig</translation> <translation id="8731388423028622182">Du wurdest beim Zurücksetzen deines iPhones von deinem Konto <ph name="USER_NAME" /> abgemeldet. Tippe unten auf „Weiter“, um dich anzumelden.</translation> <translation id="87371078663613140">Optionen in der Menüleiste ansehen</translation> @@ -1206,9 +1208,9 @@ <translation id="8974714402877957201">1. Öffne die iPad-Einstellungen</translation> <translation id="8976382372951310360">Hilfe</translation> <translation id="8976414606286374109">Karten werden in deinem Google-Konto gespeichert.</translation> -<translation id="8978059030508051916">{count,plural, =0{Keine gehackten Passwörter}=1{{count} gehacktes Passwort}other{{count} gehackte Passwörter}}</translation> <translation id="8981454092730389528">Google-Aktivitätseinstellungen</translation> <translation id="8985320356172329008">In Google angemeldet als</translation> +<translation id="8986567980592931173">Melde dich mit deinem Google-Konto an, um deine Passwörter, deinen Verlauf und mehr zu synchronisieren.</translation> <translation id="8998289560386111590">Auf deinem Gerät nicht verfügbar</translation> <translation id="9000089900434778519">Du hast <ph name="DSE_NAME" /> als Suchmaschine festgelegt. Informationen zum Löschen deines Suchverlaufs findest du in der zugehörigen Anleitung.</translation> <translation id="9008201768610948239">Ignorieren</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb index a6368456..ef265a39 100644 --- a/ios/chrome/app/strings/resources/ios_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Ειδοποιήσεις</translation> <translation id="2496626742194544812">Μετάβαση στην πρώτη καρτέλα</translation> <translation id="2500374554657206846">Επιλογές για την αποθήκευση κωδικού πρόσβασης</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> επαναχρησιμοποιημένοι κωδικοί πρόσβασης</translation> <translation id="2523363575747517183">Αυτός ο ιστότοπος προσπαθεί επανειλημμένως να ανοίξει κάποια άλλη εφαρμογή.</translation> <translation id="2529021024822217800">Άνοιγμα όλων</translation> <translation id="2547458583188611426">Ο συγχρονισμός δεν λειτουργεί. Για να ξεκινήσετε τον συγχρονισμό, εισαγάγετε τη φράση πρόσβασης.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Προσφορά για μετάφραση σελίδων σε άλλες γλώσσες</translation> <translation id="3588820906588687999">Άνοιγμα εικόνας σε νέα καρτέλα</translation> <translation id="3595252146048399851">Μπορείτε πάντα να επιλέξετε τα στοιχεία που θέλετε να συγχρονίσετε στις <ph name="BEGIN_LINK" />ρυθμίσεις<ph name="END_LINK" />. Η Google μπορεί να εξατομικεύει την Αναζήτηση και άλλες υπηρεσίες με βάση το ιστορικό σας.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} ασθενής κωδικός πρόσβασης}other{{COUNT} ασθενείς κωδικοί πρόσβασης}}</translation> <translation id="3603009562372709545">Αντιγραφή διεύθυνσης URL συνδέσμου</translation> <translation id="3607167657931203000">Δεδομένα Αυτόματης συμπλήρωσης</translation> <translation id="3608008480985212611">Συνδεθείτε για να διαχειριστείτε τις προτιμήσεις σας.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Συνδυασμός των δεδομένων μου</translation> <translation id="3929457972718048006">Διευθύνσεις</translation> <translation id="3943492037546055397">Κωδικοί πρόσβασης</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} ασθενής κωδικός πρόσβασης}other{{count} ασθενείς κωδικοί πρόσβασης}}</translation> <translation id="3959736869653157332">Μενού → Νέα καρτέλα ανώνυμης περιήγησης</translation> <translation id="3967822245660637423">Ολοκλήρωση λήψης</translation> <translation id="3968505803272650567">Διαχείριση Ενδιαφερόντων</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Εμφάνιση καρτελών</translation> <translation id="6187302354554850004">Τελευτ. συγχρ.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Μη αναγνωσμένα</translation> -<translation id="6193424046394092997">{count,plural, =1{Προστέθηκε στους σελιδοδείκτες στον φάκελο {title}}other{Προστέθηκαν στους σελιδοδείκτες στον φάκελο {title}}}</translation> <translation id="6196207969502475924">Φωνητική αναζήτηση</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Κλείσιμο {COUNT} καρτέλας}other{Κλείσιμο {COUNT} καρτελών}}</translation> <translation id="6210079381482819663">Οι καρτέλες που δεν χρησιμοποιούνται για <ph name="THRESHOLD" /> ή περισσότερες ημέρες μετακινούνται εδώ. Μπορείτε να αλλάξετε αυτήν τη ρύθμιση ανά πάσα στιγμή από τις <ph name="BEGIN_LINK" />ρυθμίσεις<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Τα δεδομένα σας κρυπτογραφήθηκαν με τη δική σας φράση πρόσβασης συγχρονισμού στις <ph name="TIME" />. Πληκτρολογήστε την για να ξεκινήσει ο συγχρονισμός.</translation> <translation id="6418346271604475326">Προετοιμασία PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Ο σελιδοδείκτης αποθηκεύτηκε στο {title} στον λογαριασμό σας, {email}}other{Οι σελιδοδείκτες αποθηκεύτηκαν στο {title} στον λογαριασμό σας, {email}}}</translation> <translation id="6429213933892582367">Ανοίξτε τις Επιλογές κωδικών πρόσβασης</translation> <translation id="6434591244308415567">Παρουσιάστηκε ένα σφάλμα. Δοκιμάστε ξανά αργότερα.</translation> <translation id="6435236283694032571">Προσθήκη στη λίστα ανάγνωσης</translation> @@ -1214,7 +1209,6 @@ <translation id="8974714402877957201">1. Ανοίξτε τις Ρυθμίσεις του iPad</translation> <translation id="8976382372951310360">Βοήθεια</translation> <translation id="8976414606286374109">Οι κάρτες αποθηκεύονται στον Λογαριασμό σας Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Δεν υπάρχουν παραβιασμένοι κωδικοί πρόσβασης}=1{{count} παραβιασμένος κωδικός πρόσβασης}other{{count} παραβιασμένοι κωδικοί πρόσβασης}}</translation> <translation id="8981454092730389528">Στοιχεία ελέγχου δραστηριότητας Google</translation> <translation id="8985320356172329008">Έχετε συνδεθεί στο Google ως</translation> <translation id="8986567980592931173">Συνδεθείτε με τον Λογαριασμό σας Google για να συγχρονίσετε τους κωδικούς πρόσβασης, το ιστορικό σας και άλλα.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb index 5d5730c..e12876f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Notifications</translation> <translation id="2496626742194544812">Go to first tab</translation> <translation id="2500374554657206846">Options to save password</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> reused passwords</translation> <translation id="2523363575747517183">This website is repeatedly trying to open another application.</translation> <translation id="2529021024822217800">Open All</translation> <translation id="2547458583188611426">Sync is not working. To start sync, enter your passphrase.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Offer to translate pages in other languages</translation> <translation id="3588820906588687999">Open Image in New Tab</translation> <translation id="3595252146048399851">You can always choose what to sync in <ph name="BEGIN_LINK" />settings<ph name="END_LINK" />. Google may personalise Search and other services based on your history.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} weak password}other{{COUNT} weak passwords}}</translation> <translation id="3603009562372709545">Copy link URL</translation> <translation id="3607167657931203000">Auto-fill Data</translation> <translation id="3608008480985212611">Sign in to manage your preferences</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Combine my data</translation> <translation id="3929457972718048006">Addresses</translation> <translation id="3943492037546055397">Passwords</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} weak password}other{{count} weak passwords}}</translation> <translation id="3959736869653157332">Menu → New incognito tab</translation> <translation id="3967822245660637423">Download complete</translation> <translation id="3968505803272650567">Manage interests</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Show Tabs</translation> <translation id="6187302354554850004">Last synced: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Unread</translation> -<translation id="6193424046394092997">{count,plural, =1{Bookmarked to {title}}other{Bookmarked to {title}}}</translation> <translation id="6196207969502475924">Voice Search</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Close {COUNT} tab}other{Close {COUNT} tabs}}</translation> <translation id="6210079381482819663">Tabs not used for <ph name="THRESHOLD" /> days or more are moved here. You can change this at any time in <ph name="BEGIN_LINK" />settings<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Your data was encrypted with your sync passphrase on <ph name="TIME" />. Enter it to start sync.</translation> <translation id="6418346271604475326">Preparing PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Bookmark saved to {title} in your account, {email}}other{Bookmarks saved to {title} in your account, {email}}}</translation> <translation id="6429213933892582367">Open password options</translation> <translation id="6434591244308415567">An error occurred. Try again later.</translation> <translation id="6435236283694032571">Add to reading list</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. Open iPad settings</translation> <translation id="8976382372951310360">Help</translation> <translation id="8976414606286374109">Cards are saved to your Google Account.</translation> -<translation id="8978059030508051916">{count,plural, =0{No compromised passwords}=1{{count} compromised password}other{{count} compromised passwords}}</translation> <translation id="8981454092730389528">Google Activity Controls</translation> <translation id="8985320356172329008">Signed In to Google as</translation> <translation id="8986567980592931173">Sign in with your Google Account to sync your passwords, history and more.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb index 3c34198..1d3a24c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Notificaciones</translation> <translation id="2496626742194544812">Ir a la primera pestaña</translation> <translation id="2500374554657206846">Opciones para guardar contraseñas</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> contraseñas reutilizadas</translation> <translation id="2523363575747517183">Este sitio web está intentando abrir otra app de forma reiterada.</translation> <translation id="2529021024822217800">Abrir todo</translation> <translation id="2547458583188611426">La sincronización no funciona. Para iniciarla, ingresa tu frase de contraseña.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Ofrecer la traducción de páginas en otros idiomas</translation> <translation id="3588820906588687999">Abrir imagen en nueva pestaña</translation> <translation id="3595252146048399851">En la <ph name="BEGIN_LINK" />configuración<ph name="END_LINK" />, puedes elegir los datos para sincronizar en cualquier momento. Es posible que Google personalice la Búsqueda y otros servicios en función de tu Historial.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} contraseña poco segura}other{{COUNT} contraseñas poco seguras}}</translation> <translation id="3603009562372709545">Copiar URL del vínculo</translation> <translation id="3607167657931203000">Autocompletar datos</translation> <translation id="3608008480985212611">Accede para administrar tus preferencias.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Combinar mis datos</translation> <translation id="3929457972718048006">Direcciones</translation> <translation id="3943492037546055397">Contraseñas</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} con. p. segura}other{{count} con. p. seguras}}</translation> <translation id="3959736869653157332">Menú → Nueva pestaña de incógnito</translation> <translation id="3967822245660637423">Descarga completa</translation> <translation id="3968505803272650567">Administrar intereses</translation> @@ -772,7 +769,6 @@ <translation id="6184086493125982861">Mostrar las pestañas</translation> <translation id="6187302354554850004">Última sincronización: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">No leídas</translation> -<translation id="6193424046394092997">{count,plural, =1{Se agregó a favoritos en {title}}other{Se agregaron a favoritos en {title}}}</translation> <translation id="6196207969502475924">Búsqueda por voz</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Cerrar {COUNT} pestaña}other{Cerrar {COUNT} pestañas}}</translation> <translation id="6210079381482819663">Las pestañas que no se usaron durante <ph name="THRESHOLD" /> días o más se mueven aquí. Puedes cambiar este parámetro cuando lo desees en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation> @@ -821,7 +817,6 @@ Tus datos se encriptaron con tu frase de contraseña para sincronización el <ph name="TIME" />. Debes ingresarla para iniciar la sincronización.</translation> <translation id="6418346271604475326">Preparando PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Se guardó el favorito en {title} en tu cuenta, {email}}other{Se guardaron los favoritos en {title} en tu cuenta, {email}}}</translation> <translation id="6429213933892582367">Abre Opciones de contraseña</translation> <translation id="6434591244308415567">Se produjo un error. Vuelve a intentarlo más tarde.</translation> <translation id="6435236283694032571">Agregar a la Lista de lectura</translation> @@ -1025,6 +1020,7 @@ <translation id="7781011649027948662">¿Quieres traducir la página?</translation> <translation id="7781069478569868053">Página Nueva pestaña</translation> <translation id="7781829728241885113">Ayer</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Después de 1 día}other{Después de {COUNT} días}}</translation> <translation id="778855399387580014">Realiza una búsqueda en una nueva pestaña de Chrome.</translation> <translation id="7791543448312431591">Agregar</translation> <translation id="7807060072011926525">Proporcionado por Google</translation> @@ -1089,6 +1085,7 @@ <translation id="8136856065410661948">Se usará para crear eventos en el Calendario de Apple desde Chrome y Google Lens.</translation> <translation id="8156478151976189188">No funciona la Sincronización de contraseñas.</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> cuentas</translation> +<translation id="8159358225423560600">recién</translation> <translation id="8179976553408161302">Intro</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Tus dispositivos<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Traducir página</translation> @@ -1119,6 +1116,7 @@ <translation id="8393889347136007944">Pestañas que no se usaron durante <ph name="THRESHOLD" /> días</translation> <translation id="8407669440184693619">No se encontraron contraseñas para este sitio</translation> <translation id="842017693807136194">Accediste con</translation> +<translation id="8423121072346537366">recién</translation> <translation id="8425693829365242963">Tus cont. son únicas</translation> <translation id="8428045167754449968">Ciudad/pueblo</translation> <translation id="8428213095426709021">Configuración</translation> @@ -1204,7 +1202,6 @@ <translation id="8974714402877957201">1. Abre Configuración en el iPad.</translation> <translation id="8976382372951310360">Ayuda</translation> <translation id="8976414606286374109">Las tarjetas se guardan en tu Cuenta de Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Sin con. hackeadas}=1{{count} contraseña hackeada}other{{count} contraseñas hackeadas}}</translation> <translation id="8981454092730389528">Controles de actividad de Google</translation> <translation id="8985320356172329008">Accediste a Google como</translation> <translation id="8998289560386111590">No está disponible en tu dispositivo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb index e07ba2bd..a0e4122 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Notificaciones</translation> <translation id="2496626742194544812">Ir a la primera pestaña</translation> <translation id="2500374554657206846">Opciones para guardar las contraseñas</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> contraseñas reutilizadas</translation> <translation id="2523363575747517183">Este sitio web está intentando abrir otra aplicación reiteradamente.</translation> <translation id="2529021024822217800">Abrir todos</translation> <translation id="2547458583188611426">La sincronización no funciona. Para iniciar la sincronización, introduce tu frase de contraseña.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Ofrecer la traducción de páginas que estén en otros idiomas</translation> <translation id="3588820906588687999">Abrir imagen en una pestaña nueva</translation> <translation id="3595252146048399851">Siempre puedes seleccionar qué contenido quieres sincronizar en los <ph name="BEGIN_LINK" />ajustes<ph name="END_LINK" />. Google puede personalizar la Búsqueda y otros servicios en función de tu historial.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} contraseña poco segura}other{{COUNT} contraseñas poco seguras}}</translation> <translation id="3603009562372709545">Copiar URL de enlace</translation> <translation id="3607167657931203000">Datos de la función Autocompletar</translation> <translation id="3608008480985212611">Inicia sesión para gestionar tus preferencias.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Combinar mis datos</translation> <translation id="3929457972718048006">Direcciones</translation> <translation id="3943492037546055397">Contraseñas</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} contraseña poco segura}other{{count} contraseñas poco seguras}}</translation> <translation id="3959736869653157332">Menú → Nueva pestaña de Incógnito</translation> <translation id="3967822245660637423">Descarga completa</translation> <translation id="3968505803272650567">Gestionar intereses</translation> @@ -772,7 +769,6 @@ <translation id="6184086493125982861">Mostrar pestañas</translation> <translation id="6187302354554850004">Última sincronización: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">No leídas</translation> -<translation id="6193424046394092997">{count,plural, =1{Marcador añadido a {title}}other{Marcadores añadidos a {title}}}</translation> <translation id="6196207969502475924">Búsqueda por voz</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Cerrar {COUNT} pestaña}other{Cerrar {COUNT} pestañas}}</translation> <translation id="6210079381482819663">Las pestañas que no se usen durante <ph name="THRESHOLD" /> días o más se moverán aquí. Puedes cambiar esta opción en cualquier momento desde la <ph name="BEGIN_LINK" />configuración<ph name="END_LINK" />.</translation> @@ -821,7 +817,6 @@ Tus datos se cifraron con tu frase de contraseña de sincronización el <ph name="TIME" />. Introdúcela para iniciar la sincronización.</translation> <translation id="6418346271604475326">Preparando PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Marcador guardado en {title} en tu cuenta ({email})}other{Marcadores guardados en {title} en tu cuenta ({email})}}</translation> <translation id="6429213933892582367">Abre Opciones de las contraseñas</translation> <translation id="6434591244308415567">Se ha producido un error. Vuelve a intentarlo más tarde.</translation> <translation id="6435236283694032571">Añadir a lista de lectura</translation> @@ -1207,7 +1202,6 @@ <translation id="8974714402877957201">1. Abre los ajustes del iPad</translation> <translation id="8976382372951310360">Ayuda</translation> <translation id="8976414606286374109">Las tarjetas se guardan en tu cuenta de Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{No hay contraseñas vulneradas}=1{{count} contraseña vulnerada}other{{count} contraseñas vulneradas}}</translation> <translation id="8981454092730389528">Gestión de tu actividad en Google</translation> <translation id="8985320356172329008">Has iniciado sesión en Google como</translation> <translation id="8998289560386111590">No disponible en tu dispositivo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb index e50e886d..f0afa30 100644 --- a/ios/chrome/app/strings/resources/ios_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Suumi välja</translation> <translation id="2230173723195178503">Veebileht laaditi</translation> <translation id="2239626343334228536">Sirvimisandmete kustutamine …</translation> +<translation id="2242467532204595597">Saate Chrome'i kasutada igal ajal, kui puudutate sõnumites, dokumentides ja muudes rakendustes linke.</translation> <translation id="22508856139286506">Hoiatustest loobuti (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Menüü → Ajalugu</translation> <translation id="2256933947031277845">Teie organisatsioon lubab sisse logida vaid teatud kontodega.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} salvestatud aadress on klaviatuuri kohal saadaval.}other{{count} salvestatud aadressi on klaviatuuri kohal saadaval.}}</translation> <translation id="2421004566762153674">Kolmanda osapoole küpsisefailide blokeerimine</translation> <translation id="2421044535038393232">Jätka töötlemist</translation> +<translation id="2423077901494354337">Nüüd saate Chrome'i kasutada oma seadmes parimal viisil.</translation> <translation id="2434405374328098816">Olete kasutaja „<ph name="USERNAME" />“ jaoks parooli saidil <ph name="WEBSITE" /> juba salvestanud.</translation> <translation id="2435457462613246316">Kuva parool</translation> <translation id="2451654228769116489">Kinnita vaheleht</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Märguanded</translation> <translation id="2496626742194544812">Esimesele vahelehele liikumine</translation> <translation id="2500374554657206846">Valikud parooli salvestamiseks</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> korduvalt kasutatud parooli</translation> <translation id="2523363575747517183">See veebisait üritab korduvalt avada teist rakendust.</translation> <translation id="2529021024822217800">Ava kõik</translation> <translation id="2547458583188611426">Sünkroonimine ei tööta. Sünkroonimise alustamiseks sisestage oma parool.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Paku muudes keeltes olevate lehtede tõlkimist</translation> <translation id="3588820906588687999">Ava kujutis uuel vahelehel</translation> <translation id="3595252146048399851">Jaotises <ph name="BEGIN_LINK" />Seaded<ph name="END_LINK" /> saate igal ajal valida, mida sünkroonida. Google võib Otsingut ja muid teenuseid teie ajaloo alusel isikupärastada.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} nõrk parool}other{{COUNT} nõrka parooli}}</translation> <translation id="3603009562372709545">Kopeeri lingi URL</translation> <translation id="3607167657931203000">Automaattäite andmed</translation> <translation id="3608008480985212611">Eelistuste haldamiseks logige sisse.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Minu andmete kombineerimine</translation> <translation id="3929457972718048006">Aadressid</translation> <translation id="3943492037546055397">Paroolid</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} nõrk parool}other{{count} nõrka parooli}}</translation> <translation id="3959736869653157332">Menüü → Uus inkognito vaheleht</translation> <translation id="3967822245660637423">Allalaadimine on lõpule viidud</translation> <translation id="3968505803272650567">Huvide haldamine</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Kuva vahelehed</translation> <translation id="6187302354554850004">Viimati sünkr.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Lugemata</translation> -<translation id="6193424046394092997">{count,plural, =1{Lisatud järjehoidjana kausta {title}}other{Lisatud järjehoidjana kausta {title}}}</translation> <translation id="6196207969502475924">Häälotsing</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Sule {COUNT} vaheleht}other{Sule {COUNT} vahelehte}}</translation> <translation id="6210079381482819663">Vahelehed, mida vähemalt <ph name="THRESHOLD" /> päeva ei kasutata, teisaldatakse siia. Saate seda <ph name="BEGIN_LINK" />seadetes<ph name="END_LINK" /> alati muuta.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Kas alustada uut allalaadimist?</translation> <translation id="6347953390226388422">{count,plural, =1{See aadress kustutatakse teie Google’i kontolt (<ph name="USER_EMAIL" />) ja sellest seadmest.}other{Need aadressid kustutatakse teie Google’i kontolt (<ph name="USER_EMAIL" />) ja sellest seadmest.}}</translation> <translation id="634878792104344809">Paroolide, ajaloo ja muu sünkroonimine kõigis teie seadmetes</translation> +<translation id="6348855835728304880">Pääsete selles seadmes juurde oma Chrome'i paroolidele ja muule teabele.</translation> <translation id="6355820205320395730">Nõrku paroole on lihtne ära arvata. Veenduge, et looksite tugevad paroolid. <ph name="BEGIN_LINK" />Vaadake rohkem turvanõuandeid.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Jälgi domeeni <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Inkognito vahelehti ei ole</translation> @@ -821,7 +820,6 @@ Teie andmed krüpteeriti <ph name="TIME" /> teie sünkroonimisparooliga. Sisestage see sünkroonimise alustamiseks.</translation> <translation id="6418346271604475326">PDF-i ettevalm.</translation> -<translation id="6421095165635308">{count,plural, =1{Järjehoidja on salvestatud kausta {title} teie kontol, {email}}other{Järjehoidjad on salvestatud kausta {title} teie kontol, {email}}}</translation> <translation id="6429213933892582367">Avage jaotis Paroolivalikud.</translation> <translation id="6434591244308415567">Ilmnes viga. Proovige hiljem uuesti.</translation> <translation id="6435236283694032571">Lugemisloendisse lisamine</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Jaotises „Mis on uut?“ näete uusi funktsioone ja nõuandeid</translation> <translation id="7223102419539744003">Vahelehe sulgemine</translation> <translation id="722454870747268814">Uus inkognito vaheleht</translation> +<translation id="723787869754590019">Chrome'i automaattäitefunktsiooni kasutamine</translation> <translation id="7265758999917665941">Selle saidi puhul mitte kunagi</translation> <translation id="7272437679830969316">Teie isikut ei õnnestu tuvastada. Parooli ei kopeeritud.</translation> <translation id="7291368939935408496">Paroolide ettevalmistamine …</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">Kasutate paroole, mida on raske ära arvata</translation> <translation id="8668210798914567634">See leht on jäädvustatud teie lugemisloendisse.</translation> <translation id="8680787084697685621">Konto sisselogimisüksikasjad on aegunud.</translation> +<translation id="868773710103052534">Ongi valmis!</translation> <translation id="8693663554456874301">{count,plural, =1{Sule vaheleht}other{Sule vahelehed}}</translation> <translation id="8703536910991780768">Teie paroolid on tugevad</translation> <translation id="8706588385081740091">Paroolid</translation> <translation id="8717864919010420084">Kopeeri link</translation> <translation id="8721297211384281569">Menüü Tööriistad</translation> <translation id="8725066075913043281">Proovi uuesti</translation> +<translation id="8727043961453758442">Kasutage Chrome'i parimal moel</translation> <translation id="8730621377337864115">Valmis</translation> <translation id="8731388423028622182">Teid logiti iPhone'i lähtestamise raames teie kontolt <ph name="USER_NAME" /> välja. Sisselogimiseks puudutage allpool käsku Jätka.</translation> <translation id="87371078663613140">Menüüribal olevate valikute avastamine</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. Avage iPadi rakendus Settings</translation> <translation id="8976382372951310360">Abi</translation> <translation id="8976414606286374109">Kaardid salvestatakse teie Google'i kontole.</translation> -<translation id="8978059030508051916">{count,plural, =0{Ükski parool ei ole ohus}=1{{count} ohustatud parool}other{{count} ohustatud parooli}}</translation> <translation id="8981454092730389528">Google'i kontotegevuste haldus</translation> <translation id="8985320356172329008">Google'isse sisse logitud kasutajana</translation> +<translation id="8986567980592931173">Paroolide, ajaloo ja muu sisu sünkroonimiseks logige sisse oma Google'i kontoga.</translation> <translation id="8998289560386111590">Pole teie seadmes saadaval</translation> <translation id="9000089900434778519">Teie otsingumootor on <ph name="DSE_NAME" />. Vaadake selle juhiseid otsinguajaloo kustutamise kohta, kui see on asjakohane.</translation> <translation id="9008201768610948239">Eira</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_strings_eu.xtb index cca58a5..6c5adc39 100644 --- a/ios/chrome/app/strings/resources/ios_strings_eu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
@@ -431,7 +431,6 @@ <translation id="3928666092801078803">Bateratu nire datuak</translation> <translation id="3929457972718048006">Helbideak</translation> <translation id="3943492037546055397">Pasahitzak</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} pasahitz ez da segurua}other{{count} pasahitz ez dira seguruak}}</translation> <translation id="3959736869653157332">Menu → Ireki ezkutuko moduko fitxa bat</translation> <translation id="3967822245660637423">Deskargatzen amaitu da</translation> <translation id="3968505803272650567">Kudeatu interesak</translation> @@ -764,7 +763,6 @@ <translation id="6184086493125982861">Erakutsi fitxak</translation> <translation id="6187302354554850004">Azken sinkronizazioa: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Irakurri gabe</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} karpetan gehitu da laster-marka}other{{title} karpetan gehitu da laster-marka}}</translation> <translation id="6196207969502475924">Ahozko bilaketa</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Itxi {COUNT} fitxa}other{Itxi {COUNT} fitxa}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> egunez edo gehiagoz erabili ez diren fitxak hona ekartzen dira. Hori aldatzeko, joan <ph name="BEGIN_LINK" />Ezarpenak<ph name="END_LINK" /> atalera.</translation> @@ -813,7 +811,6 @@ Sinkronizatzeko pasaesaldiaren bidez enkriptatu dira datuak (<ph name="TIME" />). Idatz ezazu sinkronizatzen hasteko.</translation> <translation id="6418346271604475326">Prestatzen</translation> -<translation id="6421095165635308">{count,plural, =1{Gorde da laster-marka zure kontuaren ({email}) {title} karpetan}other{Gorde dira laster-markak zure kontuaren ({email}) {title} karpetan}}</translation> <translation id="6429213933892582367">Ireki Password Options (pasahitzen aukerak).</translation> <translation id="6434591244308415567">Errore bat gertatu da. Saiatu berriro geroago.</translation> <translation id="6435236283694032571">Gehitu irakurketa-zerrendan</translation> @@ -1017,6 +1014,7 @@ <translation id="7781011649027948662">Orria itzuli nahi duzu?</translation> <translation id="7781069478569868053">Fitxa berriaren orria</translation> <translation id="7781829728241885113">Atzo</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{1 egun igaro ondoren}other{{COUNT} egun igaro ondoren}}</translation> <translation id="778855399387580014">Hasi bilaketa Chrome-ren fitxa berri batean.</translation> <translation id="7791543448312431591">Gehitu</translation> <translation id="7807060072011926525">Google-k eman du</translation> @@ -1081,6 +1079,7 @@ <translation id="8136856065410661948">Chrome-ren eta Google Lens-en bidez Apple Calendar-en gertaerak sortzeko erabiliko da hau.</translation> <translation id="8156478151976189188">Pasahitzen sinkronizazioa ez dabil</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> kontu</translation> +<translation id="8159358225423560600">oraintxe</translation> <translation id="8179976553408161302">Sartu</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Zure gailuak<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Itzuli orria</translation> @@ -1110,6 +1109,7 @@ <translation id="8393889347136007944"><ph name="THRESHOLD" /> egunetan erabili ez diren fitxak</translation> <translation id="8407669440184693619">Ez da aurkitu webgune honen pasahitzik</translation> <translation id="842017693807136194">Honekin hasi da saioa:</translation> +<translation id="8423121072346537366">Oraintxe</translation> <translation id="8425693829365242963">Pasahitz guztiak esklusiboak dira</translation> <translation id="8428045167754449968">Hiria/Udalerria</translation> <translation id="8428213095426709021">Ezarpenak</translation> @@ -1195,7 +1195,6 @@ <translation id="8974714402877957201">1. Ireki iPad-aren Settings (ezarpenak) atala.</translation> <translation id="8976382372951310360">Laguntza</translation> <translation id="8976414606286374109">Google-ko kontuan gordetzen dira txartelak.</translation> -<translation id="8978059030508051916">{count,plural, =0{Ez dago pasahitzik arriskuan}=1{{count} pasahitz dago arriskuan}other{{count} pasahitz daude arriskuan}}</translation> <translation id="8981454092730389528">Google-ko jarduerak kontrolatzeko aukerak</translation> <translation id="8985320356172329008">Kontu honekin hasi duzu saioa Google-n:</translation> <translation id="8998289560386111590">Ez dago erabilgarri zure gailuan</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb index a225667..f8b59a4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">کوچک کردن</translation> <translation id="2230173723195178503">صفحه وب بار شد</translation> <translation id="2239626343334228536">درحال پاک کردن دادههای محصول مرور…</translation> +<translation id="2242467532204595597">با ضربه زدن روی پیوندهای موجود در پیامها، اسناد و دیگر برنامهها، از Chrome استفاده کنید.</translation> <translation id="22508856139286506">هشدارهای ردشده (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">منو ← سابقه</translation> <translation id="2256933947031277845">سازمانتان فقط ورود به سیستم با حسابهای خاصی را مجاز کرده است.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} نشانی ذخیرهشده در بالای صفحهکلید موجود است.}one{{count} نشانی ذخیرهشده در بالای صفحهکلید موجود است.}other{{count} نشانی ذخیرهشده در بالای صفحهکلید موجود است.}}</translation> <translation id="2421004566762153674">کوکیهای شخص ثالث را مسدود میکند</translation> <translation id="2421044535038393232">ادامه ویرایش</translation> +<translation id="2423077901494354337">اکنون بیشترین بهره را از Chrome در دستگاهتان میبرید.</translation> <translation id="2434405374328098816">قبلاً گذرواژهای برای «<ph name="USERNAME" />» در <ph name="WEBSITE" /> ذخیره کردهاید</translation> <translation id="2435457462613246316">نمایش گذرواژه</translation> <translation id="2451654228769116489">سنجاق کردن برگه</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">اعلانها</translation> <translation id="2496626742194544812">رفتن به اولین برگه</translation> <translation id="2500374554657206846">گزینههایی برای ذخیره گذرواژه</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> گذرواژه دوبارهاستفادهشده</translation> <translation id="2523363575747517183">این وبسایت بهطور مکرر تلاش میکند برنامه دیگری را باز کند.</translation> <translation id="2529021024822217800">باز کردن همه</translation> <translation id="2547458583188611426">همگامسازی کار نمیکند. برای شروع همگامسازی، گذرعبارت را وارد کنید.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">پیشنهاد ترجمه صفحات نوشتهشده به زبانهای دیگر</translation> <translation id="3588820906588687999">باز کردن تصویر در برگه جدید</translation> <translation id="3595252146048399851">همواره میتوانید در <ph name="BEGIN_LINK" />تنظیمات<ph name="END_LINK" /> انتخاب کنید چه مواردی همگامسازی شود. Google ممکن است براساس سابقهتان «جستجو» و سرویسهای دیگر را شخصی کند.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} گذرواژه ضعیف}one{{COUNT} گذرواژه ضعیف}other{{COUNT} گذرواژه ضعیف}}</translation> <translation id="3603009562372709545">کپی URL پیوند</translation> <translation id="3607167657931203000">دادههای تکمیل خودکار</translation> <translation id="3608008480985212611">برای مدیریت اولویتهایتان، به سیستم وارد شوید.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">ادغام کردن دادههای من</translation> <translation id="3929457972718048006">نشانیها</translation> <translation id="3943492037546055397">گذرواژهها</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} گذرواژه ضعیف}one{{count} گذرواژه ضعیف}other{{count} گذرواژه ضعیف}}</translation> <translation id="3959736869653157332">منو ← برگه ناشناس جدید</translation> <translation id="3967822245660637423">بارگیری کامل شد</translation> <translation id="3968505803272650567">مدیریت علایق</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">نمایش برگهها</translation> <translation id="6187302354554850004">آخرین همگامسازی: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">خواندهنشده</translation> -<translation id="6193424046394092997">{count,plural, =1{نشانکگذاریشده در {title}}one{نشانکگذاریشده در {title}}other{نشانکگذاریشده در {title}}}</translation> <translation id="6196207969502475924">جستجوی گفتاری</translation> <translation id="6202364442240589072">{COUNT,plural, =1{بستن {COUNT} برگه}one{بستن {COUNT} برگه}other{بستن {COUNT} برگه}}</translation> <translation id="6210079381482819663">برگههایی که <ph name="THRESHOLD" /> روز یا بیشتر استفاده نشدهاند به اینجا منتقل میشوند. هرزمان بخواهید میتوانید آن را در <ph name="BEGIN_LINK" />تنظیمات<ph name="END_LINK" /> تغییر دهید.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">بارگیری جدید شروع شود؟</translation> <translation id="6347953390226388422">{count,plural, =1{این نشانی از «حساب Google» شما (<ph name="USER_EMAIL" />) و از این دستگاه حذف خواهد شد.}one{این نشانی از «حساب Google» شما (<ph name="USER_EMAIL" />) و از این دستگاه حذف خواهد شد.}other{این نشانیها از «حساب Google» شما (<ph name="USER_EMAIL" />) و از این دستگاه حذف خواهند شد.}}</translation> <translation id="634878792104344809">همگامسازی گذرواژهها، سابقه، و موارد دیگر در همه دستگاههایتان</translation> +<translation id="6348855835728304880">در دیگر برنامههای این دستگاه به گذرواژههای Chrome و موارد دیگر دسترسی داشته باشید.</translation> <translation id="6355820205320395730">گذرواژههای ضعیف را میتوان بهراحتی حدس زد. مطمئن شوید گذرواژههای قوی ایجاد میکنید. <ph name="BEGIN_LINK" />نکتههای امنیتی بیشتری ببینید<ph name="END_LINK" />.</translation> <translation id="6361848730467328243">دنبال کردن <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">برگه ناشناسی موجود نیست</translation> @@ -821,7 +820,6 @@ دادههای شما در تاریخ <ph name="TIME" /> با گذرعبارت همگامسازیتان رمزگذاری شد. برای شروع همگامسازی آن را وارد کنید.</translation> <translation id="6418346271604475326">آمادهسازی PDF</translation> -<translation id="6421095165635308">{count,plural, =1{نشانک در {title} در حساب شما ({email}) ذخیره شد}one{نشانک در {title} در حساب شما ({email}) ذخیره شد}other{نشانکها در {title} در حساب شما ({email}) ذخیره شد}}</translation> <translation id="6429213933892582367">گزینههای «گذرواژه » را باز کنید</translation> <translation id="6434591244308415567">خطایی روی داد. بعداً دوباره امتحان کنید.</translation> <translation id="6435236283694032571">افزودن به فهرست خواندن</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">ویژگیها و نکات جدید را در «تازهها» کاوش کنید</translation> <translation id="7223102419539744003">بستن برگه</translation> <translation id="722454870747268814">برگه ناشناس جدید</translation> +<translation id="723787869754590019">استفاده از Chrome برای «تکمیل خودکار»</translation> <translation id="7265758999917665941">هرگز برای این سایت</translation> <translation id="7272437679830969316">نمیتوانیم هویتتان را به تأیید برسانیم. گذرواژه کپی نشد.</translation> <translation id="7291368939935408496">درحال آمادهسازی گذرواژهها…</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">از گذرواژههایی استفاده میکنید که حدس زدنشان سخت بهنظر میرسد</translation> <translation id="8668210798914567634">این صفحه در «فهرست خواندن» شما ذخیره شده است.</translation> <translation id="8680787084697685621">جزئیات ورود به سیستم حساب قدیمی است.</translation> +<translation id="868773710103052534">کاملاً آمادهاید</translation> <translation id="8693663554456874301">{count,plural, =1{بستن برگه}one{بستن برگه}other{بستن برگهها}}</translation> <translation id="8703536910991780768">گذرواژههایتان قوی بهنظر میرسد</translation> <translation id="8706588385081740091">گذرواژهها</translation> <translation id="8717864919010420084">کپی پیوند</translation> <translation id="8721297211384281569">منوی ابزارها</translation> <translation id="8725066075913043281">سعی مجدد</translation> +<translation id="8727043961453758442">بیشترین بهره را از Chrome ببرید</translation> <translation id="8730621377337864115">تمام</translation> <translation id="8731388423028622182">بهعنوان بخشی از بازنشانی iPhone، از سیستم حساب <ph name="USER_NAME" /> خارج شدهاید. برای ورود به سیستم، روی Continue (ادامه) در زیر ضربه بزنید.</translation> <translation id="87371078663613140">گزینهها را در نوار منو کاوش کنید</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">۱. iPad Settings (تنظیمات iPad) را باز کنید</translation> <translation id="8976382372951310360">راهنما</translation> <translation id="8976414606286374109">کارتها در «حساب Google» شما ذخیره میشوند.</translation> -<translation id="8978059030508051916">{count,plural, =0{گذرواژه لورفتهای ندارید}=1{{count} گذرواژه لورفته}one{{count} گذرواژه لورفته}other{{count} گذرواژه لورفته}}</translation> <translation id="8981454092730389528">کنترلهای فعالیت Google</translation> <translation id="8985320356172329008">ورود به سیستم Google بهعنوان</translation> +<translation id="8986567980592931173">به سیستم «حساب Google» وارد شوید تا گذرواژهها، سابقه، و اطلاعات دیگر همگامسازی شود.</translation> <translation id="8998289560386111590">در دستگاهتان دردسترس نیست</translation> <translation id="9000089900434778519">موتور جستجوی شما <ph name="DSE_NAME" /> است. برای اینکه سابقه جستجویتان را درصورت امکان حذف کنید، به دستورالعملهای موتور جستجو مراجعه کنید.</translation> <translation id="9008201768610948239">نادیده گرفتن</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb index dafc9e80..c7c50ac 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Loitonna</translation> <translation id="2230173723195178503">Verkkosivu ladattiin.</translation> <translation id="2239626343334228536">Selaustietoja poistetaan…</translation> +<translation id="2242467532204595597">Käytä Chromea, kun napautat linkkejä viesteissä, dokumenteissa ja muissa sovelluksissa.</translation> <translation id="22508856139286506">Ohitetut varoitukset (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Valikko → Historia</translation> <translation id="2256933947031277845">Organisaatiosi sallii sinun kirjautua sisään vain tietyillä tileillä.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{Näppäimistön yläpuolella on saatavilla {count} tallennettu osoite.}other{Näppäimistön yläpuolella on saatavilla {count} tallennettua osoitetta.}}</translation> <translation id="2421004566762153674">Kolmannen osapuolen evästeet estetään</translation> <translation id="2421044535038393232">Jatka muokkausta</translation> +<translation id="2423077901494354337">Saat nyt enemmän irti Chromesta laitteellasi.</translation> <translation id="2434405374328098816">Olet jo tallentanut salasanan (käyttäjätunnus: <ph name="USERNAME" />) täällä: <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Näytä salasana</translation> <translation id="2451654228769116489">Kiinnitä välilehti</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Ilmoitukset</translation> <translation id="2496626742194544812">Siirry ensimmäiselle välilehdelle</translation> <translation id="2500374554657206846">Salasanan tallentamisen vaihtoehdot</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> uudelleenkäytettyä salasanaa</translation> <translation id="2523363575747517183">Tämä sivusto yrittää toistuvasti avata toisen sovelluksen.</translation> <translation id="2529021024822217800">Avaa kaikki</translation> <translation id="2547458583188611426">Synkronointi ei toimi. Aloita synkronointi lisäämällä tunnuslause.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Tarjoudu kääntämään vierailla kielillä kirjoitettuja sivuja</translation> <translation id="3588820906588687999">Avaa kuva uudessa välilehdessä</translation> <translation id="3595252146048399851">Voit valita synkronoitavan sisällön <ph name="BEGIN_LINK" />asetuksista<ph name="END_LINK" />. Google voi personoida Hakua ja muita palveluita historiasi perusteella.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} heikko salasana}other{{COUNT} heikkoa salasanaa}}</translation> <translation id="3603009562372709545">Kopioi linkin URL-osoite</translation> <translation id="3607167657931203000">Automaattisen täytön tiedot</translation> <translation id="3608008480985212611">Kirjaudu sisään, niin voit muuttaa asetuksia.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Yhdistä tiedot</translation> <translation id="3929457972718048006">Osoitteet</translation> <translation id="3943492037546055397">Salasanat</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} heikko salasana}other{{count} heikkoa salasanaa}}</translation> <translation id="3959736869653157332">Valikko → Uusi incognito-välilehti</translation> <translation id="3967822245660637423">Lataus on valmis</translation> <translation id="3968505803272650567">Ylläpidä kiinnostuksen kohteita</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Näytä välilehdet</translation> <translation id="6187302354554850004">Viim. synkronoitu: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Lukematon</translation> -<translation id="6193424046394092997">{count,plural, =1{Lisätty kirjanmerkiksi tänne: {title}}other{Lisätty kirjanmerkiksi tänne: {title}}}</translation> <translation id="6196207969502475924">Puhehaku</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Sulje {COUNT} välilehti}other{Sulje {COUNT} välilehteä}}</translation> <translation id="6210079381482819663">Välilehdet, joita ei ole käytetty vähintään <ph name="THRESHOLD" /> päivään, siirretään tänne. Voit muuttaa tätä milloin tahansa <ph name="BEGIN_LINK" />asetuksista<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Aloitetaanko uusi lataus?</translation> <translation id="6347953390226388422">{count,plural, =1{Osoite poistetaan Google-tililtäsi (<ph name="USER_EMAIL" />) ja tältä laitteelta.}other{Nämä osoitteet poistetaan Google-tililtäsi (<ph name="USER_EMAIL" />) ja tältä laitteelta.}}</translation> <translation id="634878792104344809">Synkronoi esim. salasanat ja historia kaikilla laitteillasi</translation> +<translation id="6348855835728304880">Käytä esimerkiksi Chromen salasanoja tällä laitteella muissa sovelluksissa.</translation> <translation id="6355820205320395730">Heikko salasana on helppo arvata. Muista käyttää vahvoja salasanoja. <ph name="BEGIN_LINK" />Katso muita tietoturvavinkkejä<ph name="END_LINK" />.</translation> <translation id="6361848730467328243">Lisää <ph name="DOMAIN_NAME" /> seurattaviin</translation> <translation id="6362362396625799311">Ei incognito-välilehtiä</translation> @@ -821,7 +820,6 @@ Tietosi salattiin tunnuslauseesi avulla <ph name="TIME" />. Aloita synkronointi antamalla tunnuslause.</translation> <translation id="6418346271604475326">Valmistellaan</translation> -<translation id="6421095165635308">{count,plural, =1{Kirjanmerkki tallennettu tilillesi: {title}, {email}}other{Kirjanmerkit tallennettu tilillesi: {title}, {email}}}</translation> <translation id="6429213933892582367">Avaa Salasana-asetukset</translation> <translation id="6434591244308415567">Tapahtui virhe, yritä myöhemmin uudelleen.</translation> <translation id="6435236283694032571">Lisää lukulistalle</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Tutustu uusiin ominaisuuksiin ja vinkkeihin Uutta-ominaisuudessa</translation> <translation id="7223102419539744003">Sulje välilehti</translation> <translation id="722454870747268814">Uusi incognito-välilehti</translation> +<translation id="723787869754590019">Käytä Chromea automaattisessa täytössä</translation> <translation id="7265758999917665941">Ei koskaan tälle sivustolle</translation> <translation id="7272437679830969316">Henkilöllisyytesi vahvistaminen ei onnistunut. Salasanaa ei kopioitu.</translation> <translation id="7291368939935408496">Valmistellaan salasanoja…</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">Käyttämäsi salasanat näyttävät vaikeasti arvattavilta</translation> <translation id="8668210798914567634">Sivu on tallennettu lukulistallesi.</translation> <translation id="8680787084697685621">Tilin kirjautumistiedot ovat vanhentuneet.</translation> +<translation id="868773710103052534">Valmista tuli</translation> <translation id="8693663554456874301">{count,plural, =1{Sulje välilehti}other{Sulje välilehdet}}</translation> <translation id="8703536910991780768">Salasanasi näyttävät vahvoilta</translation> <translation id="8706588385081740091">Salasanat</translation> <translation id="8717864919010420084">Kopioi linkki</translation> <translation id="8721297211384281569">Työkalut-valikko</translation> <translation id="8725066075913043281">Yritä uudelleen</translation> +<translation id="8727043961453758442">Näin saat kaiken irti Chromesta</translation> <translation id="8730621377337864115">Valmis</translation> <translation id="8731388423028622182">Sinut kirjattiin ulos tililtä <ph name="USER_NAME" />, kun iPhone nollattiin. Kirjaudu sisään valitsemalla alta "Jatka".</translation> <translation id="87371078663613140">Tutustu valikkopalkkiin</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. Avaa iPadin asetukset</translation> <translation id="8976382372951310360">Ohje</translation> <translation id="8976414606286374109">Kortit tallennetaan Google-tilillesi.</translation> -<translation id="8978059030508051916">{count,plural, =0{Ei vaarantuneita salasanoja}=1{{count} vaarantunut salasana}other{{count} vaarantunutta salasanaa}}</translation> <translation id="8981454092730389528">Googlen toimintojen hallinta</translation> <translation id="8985320356172329008">Olet kirjautuneena Google-tilille käyttäjänä</translation> +<translation id="8986567980592931173">Kirjaudu sisään Google-tililläsi, niin voit synkronoida esimerkiksi salasanat ja historian.</translation> <translation id="8998289560386111590">Ei saatavilla laitteellasi</translation> <translation id="9000089900434778519">Hakukoneesi on <ph name="DSE_NAME" />. Katso tarvittaessa hakukoneen ohjeet hakuhistorian poistamiselle.</translation> <translation id="9008201768610948239">Ohita</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb index b8fba76..1585837c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Zoom Out</translation> <translation id="2230173723195178503">Na-load na ang webpage</translation> <translation id="2239626343334228536">Kini-clear ang data sa pag-browse...</translation> +<translation id="2242467532204595597">Gamitin ang Chrome sa tuwing magta-tap ka sa mga link sa mga mensahe, dokumento, at iba pang app.</translation> <translation id="22508856139286506">Mga Na-dismiss na Babala (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Menu → History</translation> <translation id="2256933947031277845">Pinapayagan ka lang ng iyong organisasyon na mag-sign in gamit ang ilang partikular na account.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} na-save na address ang available sa itaas ng iyong keyboard.}one{{count} na-save na address ang available sa itaas ng iyong keyboard.}other{{count} na na-save na address ang available sa itaas ng iyong keyboard.}}</translation> <translation id="2421004566762153674">Pag-block sa third-party na cookies</translation> <translation id="2421044535038393232">Magpatuloy sa Pag-edit</translation> +<translation id="2423077901494354337">Masusulit mo na ngayon ang Chrome sa iyong device.</translation> <translation id="2434405374328098816">May na-save ka nang password para sa "<ph name="USERNAME" />" sa <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Ipakita ang password</translation> <translation id="2451654228769116489">I-pin ang Tab</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Mga Abiso</translation> <translation id="2496626742194544812">Pumunta sa Unang Tab</translation> <translation id="2500374554657206846">Mga Opsyon para Mag-save ng Password</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> (na) Password na ginamit ulit</translation> <translation id="2523363575747517183">Paulit-ulit na sinusubukang buksan ng website na ito ang isa pang application.</translation> <translation id="2529021024822217800">Buksan Lahat</translation> <translation id="2547458583188611426">Hindi gumagana ang pag-sync. Para simulan ang pag-sync, ilagay ang iyong passphrase.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Mag-alok na mag-translate ng mga page sa iba pang wika</translation> <translation id="3588820906588687999">Buksan ang Larawan sa Bagong Tab</translation> <translation id="3595252146048399851">Mapipili mo kung ano ang isi-sync anumang oras sa <ph name="BEGIN_LINK" />mga setting<ph name="END_LINK" />. Puwedeng i-personalize ng Google ang Search at iba pang serbisyo batay sa iyong history.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} Mahinang password}one{{COUNT} Mahinang password}other{{COUNT} na Mahinang password}}</translation> <translation id="3603009562372709545">Kopyahin ang URL ng Link</translation> <translation id="3607167657931203000">Mag-autofill ng Data</translation> <translation id="3608008480985212611">Mag-sign in para pamahalaan ang iyong mga preference.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Pagsamahin ang aking data</translation> <translation id="3929457972718048006">Mga Address</translation> <translation id="3943492037546055397">Mga Password</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} Mahinang Password}one{{count} Mahinang Password}other{{count} na Mahinang Password}}</translation> <translation id="3959736869653157332">Menu → Bagong Tab na Incognito</translation> <translation id="3967822245660637423">Tapos na ang pag-download</translation> <translation id="3968505803272650567">Pamahalaan ang Mga Interes</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Ipakita ang Mga Tab</translation> <translation id="6187302354554850004">Huling na-sync: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Hindi pa nababasa</translation> -<translation id="6193424046394092997">{count,plural, =1{Na-bookmark sa {title}}one{Na-bookmark sa {title}}other{Na-bookmark sa {title}}}</translation> <translation id="6196207969502475924">Paghahanap gamit ang boses</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Isara ang {COUNT} Tab}one{Isara ang {COUNT} Tab}other{Isara ang {COUNT} na Tab}}</translation> <translation id="6210079381482819663">Ililipat dito ang mga tab na hindi ginamit sa loob ng <ph name="THRESHOLD" /> (na) araw o higit pa. Puwede mo itong baguhin anumang oras sa <ph name="BEGIN_LINK" />mga setting<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Magsimula ng Bagong Download?</translation> <translation id="6347953390226388422">{count,plural, =1{Made-delete ang address na ito sa iyong Google Account (<ph name="USER_EMAIL" />) at sa device na ito.}one{Made-delete ang mga address na ito sa iyong Google Account (<ph name="USER_EMAIL" />) at sa device na ito.}other{Made-delete ang mga address na ito sa iyong Google Account (<ph name="USER_EMAIL" />) at sa device na ito.}}</translation> <translation id="634878792104344809">I-sync ang iyong password, history, at higit pa sa lahat ng device mo</translation> +<translation id="6348855835728304880">I-access ang iyong mga password sa Chrome at higit pa sa iba pang app sa device na ito.</translation> <translation id="6355820205320395730">Madaling hulaan ang mahihinang password. Tiyaking malalakas na password ang gagawin mo. <ph name="BEGIN_LINK" />Tumingin pa ng mga tip sa seguridad.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Subaybayan ang <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Walang Mga Tab na Incognito</translation> @@ -821,7 +820,6 @@ Na-encrypt ang iyong data gamit ang iyong passphrase sa pag-sync noong <ph name="TIME" />. Ilagay ito upang simulan ang pag-sync.</translation> <translation id="6418346271604475326">Ihinahanda ang PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Na-save ang bookmark sa {title} sa iyong account na {email}}one{Na-save ang mga bookmark sa {title} sa iyong account na {email}}other{Na-save ang mga bookmark sa {title} sa iyong account na {email}}}</translation> <translation id="6429213933892582367">Buksan ang Mga Opsyon sa Password</translation> <translation id="6434591244308415567">Nagkaroon ng error. Subukang muli sa ibang pagkakataon.</translation> <translation id="6435236283694032571">Idagdag sa Listahan ng Babasahin</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Mag-explore ng mga bagong feature at tip sa Ano’ng Bago</translation> <translation id="7223102419539744003">Isara ang Tab</translation> <translation id="722454870747268814">Bagong Tab na Incognito</translation> +<translation id="723787869754590019">Gamitin ang Chrome para sa Autofill</translation> <translation id="7265758999917665941">Hindi Kailanman Para sa Site na Ito</translation> <translation id="7272437679830969316">Hindi ma-verify ang iyong pagkakakilanlan. Hindi nakopya ang password.</translation> <translation id="7291368939935408496">Inihahanda ang Mga Password...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">Gumagamit ka ng mga password na mukhang mahirap hulaan</translation> <translation id="8668210798914567634">Na-save na ang page na ito sa iyong Listahan ng Babasahin.</translation> <translation id="8680787084697685621">Wala sa panahon ang mga detalye sa pag-sign-in sa account.</translation> +<translation id="868773710103052534">Handa Ka Na</translation> <translation id="8693663554456874301">{count,plural, =1{Isara ang Tab}one{Isara ang Mga Tab}other{Isara ang Mga Tab}}</translation> <translation id="8703536910991780768">Mahirap Hulaan ang Password Mo</translation> <translation id="8706588385081740091">Mga Password</translation> <translation id="8717864919010420084">Kopyahin ang Link</translation> <translation id="8721297211384281569">Menu ng Mga Tool</translation> <translation id="8725066075913043281">Muling subukan</translation> +<translation id="8727043961453758442">Sulitin ang Chrome</translation> <translation id="8730621377337864115">Tapos na</translation> <translation id="8731388423028622182">Na-sign out ka sa iyong account na <ph name="USER_NAME" /> bilang bahagi ng pag-reset ng iyong iPhone. I-tap ang magpatuloy sa ibaba para mag-sign in.</translation> <translation id="87371078663613140">I-explore ang mga opsyon sa menu bar</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. Buksan ang Mga Setting ng iPad</translation> <translation id="8976382372951310360">Tulong</translation> <translation id="8976414606286374109">Naka-save ang mga card sa iyong Google Account.</translation> -<translation id="8978059030508051916">{count,plural, =0{Walang Nakompromisong Password}=1{{count} Nakompromisong Password}one{{count} Nakompromisong Password}other{{count} na Nakompromisong Password}}</translation> <translation id="8981454092730389528">Mga Kontrol ng Aktibidad ng Google</translation> <translation id="8985320356172329008">Naka-sign In ka sa Google bilang</translation> +<translation id="8986567980592931173">Mag-sign in sa Google Account mo para ma-sync ang iyong mga password, history, at higit pa.</translation> <translation id="8998289560386111590">Hindi available sa iyong device</translation> <translation id="9000089900434778519"><ph name="DSE_NAME" /> ang iyong search engine. Tingnan ang mga tagubilin nito para sa pag-delete sa iyong history ng paghahanap, kung naaangkop.</translation> <translation id="9008201768610948239">Balewalain</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb index 19818dbf..d69f3723 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Notifications</translation> <translation id="2496626742194544812">Aller au premier onglet</translation> <translation id="2500374554657206846">Options d'enregistrement des mots de passe</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> mots de passe réutilisés</translation> <translation id="2523363575747517183">Ce site Web a tenté plusieurs fois d'ouvrir une autre application.</translation> <translation id="2529021024822217800">Tout ouvrir</translation> <translation id="2547458583188611426">La synchronisation ne fonctionne pas. Pour lancer la synchronisation, entrez votre phrase de passe.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Proposer des traductions de pages dans d'autres langues</translation> <translation id="3588820906588687999">Ouvrir l'image dans un nouvel onglet</translation> <translation id="3595252146048399851">Vous pouvez toujours choisir les éléments à synchroniser dans les <ph name="BEGIN_LINK" />paramètres<ph name="END_LINK" />. Google peut personnaliser la recherche et d'autres services en fonction de votre historique.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} mot de passe faible}one{{COUNT} mot de passe faible}other{{COUNT} mots de passe faibles}}</translation> <translation id="3603009562372709545">Copier lien URL</translation> <translation id="3607167657931203000">Données de saisie auto</translation> <translation id="3608008480985212611">Connectez-vous pour gérer vos préférences.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Combiner mes données</translation> <translation id="3929457972718048006">Adresses</translation> <translation id="3943492037546055397">Mots de passe</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} mot de passe faible}one{{count} mot de passe faible}other{{count} mots de passe faibles}}</translation> <translation id="3959736869653157332">Menu → Nouvel onglet de navigation privée</translation> <translation id="3967822245660637423">Téléchargement terminé</translation> <translation id="3968505803272650567">Gérer les centres d'intérêt</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">Afficher les onglets</translation> <translation id="6187302354554850004">Dernière synchro : <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Non lu</translation> -<translation id="6193424046394092997">{count,plural, =1{Marqué comme favori dans {title}}one{Marqué comme favori dans {title}}other{Marqués comme favoris dans {title}}}</translation> <translation id="6196207969502475924">Recherche vocale</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Fermer {COUNT} onglet}one{Fermer {COUNT} onglet}other{Fermer {COUNT} onglets}}</translation> <translation id="6210079381482819663">Les onglets non utilisés pendant <ph name="THRESHOLD" /> jours ou plus sont déplacés ici. Vous pouvez changer cette option en tout temps dans les <ph name="BEGIN_LINK" />paramètres<ph name="END_LINK" />.</translation> @@ -820,7 +816,6 @@ Vos données ont été chiffrées avec votre phrase de passe le <ph name="TIME" />. Veuillez l'entrer pour commencer la synchronisation.</translation> <translation id="6418346271604475326">Prép. du PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Favori {title} enregistré dans votre compte, {email}}one{Favori {title} enregistré dans votre compte, {email}}other{Favoris {title} enregistrés dans votre compte, {email}}}</translation> <translation id="6429213933892582367">Ouvrez les options de mot de passe</translation> <translation id="6434591244308415567">Une erreur s'est produite. Réessayez plus tard.</translation> <translation id="6435236283694032571">Ajouter à la liste de lecture</translation> @@ -1024,6 +1019,7 @@ <translation id="7781011649027948662">Traduire la page?</translation> <translation id="7781069478569868053">Page Nouvel onglet</translation> <translation id="7781829728241885113">Hier</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Après 1 jour}one{Après {COUNT} jours}other{Après {COUNT} jours}}</translation> <translation id="778855399387580014">Lancez une recherche dans un nouvel onglet Chrome.</translation> <translation id="7791543448312431591">Ajouter</translation> <translation id="7807060072011926525">Fourni par Google</translation> @@ -1088,6 +1084,7 @@ <translation id="8136856065410661948">Cela sera utilisé pour créer des événements dans votre agenda Apple à partir de Chrome et de la lentille Google.</translation> <translation id="8156478151976189188">La synchronisation de mots de passe ne fonctionne pas</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> comptes</translation> +<translation id="8159358225423560600">à l'instant</translation> <translation id="8179976553408161302">Entrée</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Vos appareils<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Traduire la page</translation> @@ -1118,6 +1115,7 @@ <translation id="8393889347136007944">Onglets non utilisés pendant <ph name="THRESHOLD" /> jours</translation> <translation id="8407669440184693619">Aucun mot de passé trouvé pour ce site</translation> <translation id="842017693807136194">Connecté avec</translation> +<translation id="8423121072346537366">À l'instant</translation> <translation id="8425693829365242963">Vos mots de passe sont uniques</translation> <translation id="8428045167754449968">Ville</translation> <translation id="8428213095426709021">Paramètres</translation> @@ -1203,7 +1201,6 @@ <translation id="8974714402877957201">1. Ouvrez Réglages de l'iPad</translation> <translation id="8976382372951310360">Aide</translation> <translation id="8976414606286374109">Les cartes seront enregistrées dans votre compte Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Aucun mot de passe compromis}=1{{count} mot de passe compromis}one{{count} mot de passe compromis}other{{count} mots de passe compromis}}</translation> <translation id="8981454092730389528">Commandes d'activité Google</translation> <translation id="8985320356172329008">Connecté(e) à Google en tant que</translation> <translation id="8998289560386111590">Non accessible sur votre appareil</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb index f687c7449..db8d7e7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Notifications</translation> <translation id="2496626742194544812">Accéder au premier onglet</translation> <translation id="2500374554657206846">Options d'enregistrement des mots de passe</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> mots de passe réutilisés</translation> <translation id="2523363575747517183">Ce site Web a tenté à plusieurs reprises d'ouvrir une autre application.</translation> <translation id="2529021024822217800">Tout ouvrir</translation> <translation id="2547458583188611426">La synchronisation ne fonctionne pas. Pour la lancer, saisissez votre phrase secrète.</translation> @@ -227,6 +226,7 @@ <translation id="2576499762020411840">Utiliser et enregistrer les mots de passe dans votre compte Google</translation> <translation id="2578571896248130439">Envoyer la page Web</translation> <translation id="2584132361465095047">Ajouter un compte…</translation> +<translation id="2595587704210555261">{COUNT,plural, =1{Les onglets ouverts inutilisés pendant une journée ou plus sont déplacés vers "Onglets inactifs" afin que vous puissiez facilement vous concentrer sur ceux que vous utilisez le plus. Vous pouvez modifier cette option à tout moment dans les paramètres.}one{Les onglets ouverts inutilisés pendant {COUNT} jour ou plus sont déplacés vers "Onglets inactifs" afin que vous puissiez facilement vous concentrer sur ceux que vous utilisez le plus. Vous pouvez modifier cette option à tout moment dans les paramètres.}other{Les onglets ouverts inutilisés pendant {COUNT} jours ou plus sont déplacés vers "Onglets inactifs" afin que vous puissiez facilement vous concentrer sur ceux que vous utilisez le plus. Vous pouvez modifier cette option à tout moment dans les paramètres.}}</translation> <translation id="2600682495497606169">Effacer tous les cookies du site</translation> <translation id="2609008503159898744">Fermer tous les onglets ?</translation> <translation id="2625189173221582860">Mot de passe copié</translation> @@ -388,7 +388,6 @@ <translation id="3581564640715911333">Proposer de traduire les pages dans d'autres langues</translation> <translation id="3588820906588687999">Ouvrir l'image dans un nouvel onglet</translation> <translation id="3595252146048399851">Vous pouvez toujours choisir quels éléments synchroniser dans les <ph name="BEGIN_LINK" />paramètres<ph name="END_LINK" />. Google peut personnaliser la recherche et d'autres services en fonction de votre historique.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} mot de passe peu sécurisé}one{{COUNT} mot de passe peu sécurisé}other{{COUNT} mots de passe peu sécurisés}}</translation> <translation id="3603009562372709545">Copier l'URL du lien</translation> <translation id="3607167657931203000">Saisie automatique</translation> <translation id="3608008480985212611">Connectez-vous pour gérer vos préférences.</translation> @@ -434,7 +433,6 @@ <translation id="3928666092801078803">Combiner mes données</translation> <translation id="3929457972718048006">Adresses</translation> <translation id="3943492037546055397">Mots de passe</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} mot de passe peu sécurisé}one{{count} mot de passe peu sécurisé}other{{count} mots de passe peu sécurisés}}</translation> <translation id="3959736869653157332">Menu → Nouvel onglet de navigation privée</translation> <translation id="3967822245660637423">Téléchargement terminé</translation> <translation id="3968505803272650567">Gérer les centres d'intérêt</translation> @@ -575,6 +573,7 @@ <translation id="4844899002472726590">Voir et modifier les thèmes qui vous intéressent</translation> <translation id="4848999860252535517">Supprimer le mot de passe pour <ph name="WEBSITE" /> ?</translation> <translation id="4854345657858711387">Définir un code secret</translation> +<translation id="4856498338299082007">Dans votre compte Google</translation> <translation id="4858786880085262208">Passez à HTTPS, si possible. Les sites sécurisés peuvent intégrer du contenu non sécurisé.</translation> <translation id="4860895144060829044">Appeler</translation> <translation id="4872323082491632254">Vérifier les mots de passe</translation> @@ -770,7 +769,6 @@ <translation id="6184086493125982861">Afficher les onglets</translation> <translation id="6187302354554850004">Dernière synchro : <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Non lus</translation> -<translation id="6193424046394092997">{count,plural, =1{Ajouté aux favoris sur {title}}one{Ajouté aux favoris sur {title}}other{Ajoutés aux favoris sur {title}}}</translation> <translation id="6196207969502475924">Recherche vocale</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Fermer {COUNT} onglet}one{Fermer {COUNT} onglet}other{Fermer {COUNT} onglets}}</translation> <translation id="6210079381482819663">Les onglets inutilisés pendant au moins <ph name="THRESHOLD" /> jours sont déplacés ici. Vous pouvez modifier cette option à tout moment dans les <ph name="BEGIN_LINK" />paramètres<ph name="END_LINK" />.</translation> @@ -819,7 +817,6 @@ Vos données ont été chiffrées avec votre phrase secrète de synchronisation le <ph name="TIME" />. Saisissez-la pour lancer la synchronisation.</translation> <translation id="6418346271604475326">PDF en prépa.</translation> -<translation id="6421095165635308">{count,plural, =1{Favori enregistré dans {title} sur votre compte {email}}one{Favori enregistré dans {title} sur votre compte {email}}other{Favoris enregistrés dans {title} sur votre compte {email}}}</translation> <translation id="6429213933892582367">Ouvrez "Options de mots de passe"</translation> <translation id="6434591244308415567">Une erreur s'est produite. Réessayez plus tard.</translation> <translation id="6435236283694032571">Ajouter à la liste de lecture</translation> @@ -1089,6 +1086,7 @@ <translation id="8136856065410661948">Cela permettra de créer des événements dans votre calendrier Apple à partir de Chrome et de Google Lens.</translation> <translation id="8156478151976189188">Password Sync ne fonctionne pas</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> comptes</translation> +<translation id="8159358225423560600">à l'instant</translation> <translation id="8179976553408161302">Entrée</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Vos appareils<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Traduire la page</translation> @@ -1097,6 +1095,7 @@ <translation id="821809831108207540">Pour personnaliser votre flux Discover et Chrome, connectez-vous et activez la synchronisation.</translation> <translation id="8225985093977202398">Img/fich. en cache</translation> <translation id="8237382152611443140">Accédez à "Préremplir les mots de passe"</translation> +<translation id="8248969482078657578">La grille "Onglets inactifs" vous aide à rester concentré</translation> <translation id="8261506727792406068">Supprimer</translation> <translation id="8264966119170358612">Certains de vos mots de passe enregistrés ont été divulgués à la suite d'une violation de données non-Google. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation> <translation id="8265018477030547118">Uniquement sur cet appareil</translation> @@ -1118,6 +1117,7 @@ <translation id="8393889347136007944">Onglets non utilisés pendant <ph name="THRESHOLD" /> jours</translation> <translation id="8407669440184693619">Aucun mot de passe trouvé pour ce site</translation> <translation id="842017693807136194">Connecté avec</translation> +<translation id="8423121072346537366">à l'instant</translation> <translation id="8425693829365242963">Vos mots de passe sont uniques</translation> <translation id="8428045167754449968">Ville</translation> <translation id="8428213095426709021">Paramètres</translation> @@ -1203,7 +1203,6 @@ <translation id="8974714402877957201">1. Ouvrez les réglages de l'iPad</translation> <translation id="8976382372951310360">Aide</translation> <translation id="8976414606286374109">Les cartes sont enregistrées dans votre compte Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Aucun mot de passe compromis}=1{{count} mot de passe compromis}one{{count} mot de passe compromis}other{{count} mots de passe compromis}}</translation> <translation id="8981454092730389528">Commandes Google relatives à l'activité</translation> <translation id="8985320356172329008">Connecté à Google en tant que</translation> <translation id="8998289560386111590">Non disponible sur votre appareil</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_strings_gl.xtb index 9bbbeb1..62076243 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Notificacións</translation> <translation id="2496626742194544812">Ir á primeira pestana</translation> <translation id="2500374554657206846">Opcións para gardar contrasinais</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> contrasinais reutilizados</translation> <translation id="2523363575747517183">Este sitio web está tentando abrir outra aplicación.</translation> <translation id="2529021024822217800">Abrir todo</translation> <translation id="2547458583188611426">A sincronización non funciona. Para comezar a sincronizar datos, escribe a túa frase de acceso.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Ofrece a tradución de páxinas noutros idiomas</translation> <translation id="3588820906588687999">Abrir imaxe nunha pestana nova</translation> <translation id="3595252146048399851">Sempre podes escoller na <ph name="BEGIN_LINK" />configuración<ph name="END_LINK" /> o contido que queres sincronizar. Google pode personalizar a Busca e outros servizos en función do teu historial.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} contrasinal pouco seguro}other{{COUNT} contrasinais pouco seguros}}</translation> <translation id="3603009562372709545">Copiar URL da ligazón</translation> <translation id="3607167657931203000">Autocompletar datos</translation> <translation id="3608008480985212611">Iniciar sesión para xestionar as túas preferencias.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Combinar os meus datos</translation> <translation id="3929457972718048006">Enderezos</translation> <translation id="3943492037546055397">Contrasinais</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} contrasinal pouco seguro}other{{count} contrasinais pouco seguros}}</translation> <translation id="3959736869653157332">Menú → Nova pestana do modo de incógnito</translation> <translation id="3967822245660637423">Descarga completa</translation> <translation id="3968505803272650567">Xestionar intereses</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">Amosar pestanas</translation> <translation id="6187302354554850004">Última sincronización: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Mensaxes non lidas</translation> -<translation id="6193424046394092997">{count,plural, =1{Marcador engadido a {title}}other{Marcadores engadidos a {title}}}</translation> <translation id="6196207969502475924">Busca por voz</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Pechar {COUNT} pestana}other{Pechar {COUNT} pestanas}}</translation> <translation id="6210079381482819663">As pestanas que non se usen durante <ph name="THRESHOLD" /> días ou máis moveranse aquí. Podes cambiar esta opción en calquera momento en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation> @@ -820,7 +816,6 @@ Os teus datos encriptáronse co teu contrasinal de sincronización o <ph name="TIME" />. Introdúceo para comezar a sincronización.</translation> <translation id="6418346271604475326">Preparando PDF</translation> -<translation id="6421095165635308">{count,plural, =1{O marcador gardouse en {title}, na túa conta ({email})}other{Os marcadores gardáronse en {title}, na túa conta ({email})}}</translation> <translation id="6429213933892582367">Abre Password Options (Opcións de contrasinais)</translation> <translation id="6434591244308415567">Produciuse un erro. Téntao de novo máis tarde.</translation> <translation id="6435236283694032571">Engadir á lista de lectura</translation> @@ -1024,6 +1019,7 @@ <translation id="7781011649027948662">Traducir esta páxina?</translation> <translation id="7781069478569868053">Páxina Nova pestana</translation> <translation id="7781829728241885113">Onte</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Despois de 1 día}other{Despois de {COUNT} días}}</translation> <translation id="778855399387580014">Inicia unha busca nunha nova pestana de Chrome.</translation> <translation id="7791543448312431591">Engadir</translation> <translation id="7807060072011926525">Ofrecido por Google</translation> @@ -1205,7 +1201,6 @@ <translation id="8974714402877957201">1. Abre a configuración do iPad</translation> <translation id="8976382372951310360">Axuda</translation> <translation id="8976414606286374109">As tarxetas gárdanse na túa Conta de Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Ningún contrasinal vulnerado}=1{{count} contrasinal vulnerado}other{{count} contrasinais vulnerados}}</translation> <translation id="8981454092730389528">Controis de actividade de Google</translation> <translation id="8985320356172329008">Iniciaches sesión en Google como</translation> <translation id="8998289560386111590">Non está dispoñible no teu dispositivo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb index ac207e5..5c613610 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">નાનું કરો</translation> <translation id="2230173723195178503">વેબપેજ લોડ કર્યું</translation> <translation id="2239626343334228536">બ્રાઉઝિંગ ડેટા સાફ થઈ રહ્યો છે...</translation> +<translation id="2242467532204595597">જ્યારે પણ તમે મેસેજ, દસ્તાવેજો અને અન્ય ઍપમાં લિંક પર ટૅપ કરો, ત્યારે Chromeનો ઉપયોગ કરો.</translation> <translation id="22508856139286506">છોડી દીધેલી ચેતવણીઓ (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">મેનૂ → ઇતિહાસ</translation> <translation id="2256933947031277845">તમારી સંસ્થા માત્ર અમુક ચોક્કસ એકાઉન્ટ વડે તમને સાઇન ઇન કરવાની મંજૂરી આપે છે.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{તમારા કીબોર્ડ પર {count} સાચવેલું સરનામું ઉપલબ્ધ છે.}one{તમારા કીબોર્ડ પર {count} સાચવેલું સરનામું ઉપલબ્ધ છે.}other{તમારા કીબોર્ડ પર {count} સાચવેલા સરનામા ઉપલબ્ધ છે.}}</translation> <translation id="2421004566762153674">ત્રીજા પક્ષની કુકી બ્લૉક કરી રહ્યાં છીએ</translation> <translation id="2421044535038393232">ફેરફાર કરતા રહો</translation> +<translation id="2423077901494354337">તમે હવે તમારા ડિવાઇસ પર Chromeનો વધુને વધુ લાભ મેળવશો.</translation> <translation id="2434405374328098816">તમે <ph name="WEBSITE" /> પર "<ph name="USERNAME" />" માટેનો પાસવર્ડ પહેલેથી સાચવ્યો છે</translation> <translation id="2435457462613246316">પાસવર્ડ બતાવો</translation> <translation id="2451654228769116489">ટૅબને પિન કરો</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">નોટિફિકેશનો</translation> <translation id="2496626742194544812">પહેલી ટૅબ પર જાઓ</translation> <translation id="2500374554657206846">પાસવર્ડ સાચવવાના વિકલ્પો</translation> -<translation id="2502415369140591438">ફરીથી ઉપયોગમાં લેવાયેલા <ph name="COUNT" /> પાસવર્ડ</translation> <translation id="2523363575747517183">આ વેબસાઇટ વારંવાર અન્ય ઍપ્લિકેશન ખોલવાનો પ્રયાસ કરી રહી છે.</translation> <translation id="2529021024822217800">બધા ખોલો</translation> <translation id="2547458583188611426">સિંક કાર્ય કરી રહ્યું નથી. સિંક કરવાનું શરૂ કરવા માટે, તમારો પાસફ્રેઝ દાખલ કરો.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">પેજનો અન્ય ભાષાઓમાં અનુવાદ કરવાનું ઑફર કરો</translation> <translation id="3588820906588687999">નવા ટેબમાં છબી ખોલો</translation> <translation id="3595252146048399851">શું સિંક કરવું, તે તમે <ph name="BEGIN_LINK" />સેટિંગ<ph name="END_LINK" />માં જઈને કોઈપણ સમયે પસંદ કરી શકો છો. Google તમારા ઇતિહાસના આધારે Search અને અન્ય સેવાઓને મનગમતી બનાવી શકે છે.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} નબળો પાસવર્ડ}one{{COUNT} નબળો પાસવર્ડ}other{{COUNT} નબળા પાસવર્ડ}}</translation> <translation id="3603009562372709545">લિંક URL કૉપિ કરો</translation> <translation id="3607167657931203000">સ્વતઃભરણ ડેટા</translation> <translation id="3608008480985212611">તમારી પસંદગીઓ મેનેજ કરવા માટે, સાઇન ઇન કરો.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">મારા ડેટાને સંયોજિત કરો</translation> <translation id="3929457972718048006">સરનામાં</translation> <translation id="3943492037546055397">પાસવર્ડ</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} નબળો પાસવર્ડ}one{{count} નબળો પાસવર્ડ}other{{count} નબળા પાસવર્ડ}}</translation> <translation id="3959736869653157332">મેનૂ → નવી છૂપી ટૅબ</translation> <translation id="3967822245660637423">ડાઉનલોડ પૂર્ણ</translation> <translation id="3968505803272650567">રુચિઓ મેનેજ કરો</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">ટૅબ્સ બતાવો</translation> <translation id="6187302354554850004">છેલ્લે સમન્વયિત કરેલું: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">વાંચ્યા વગરની</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} પર બુકમાર્ક કર્યું}one{{title} પર બુકમાર્ક કર્યું}other{{title} પર બુકમાર્ક કર્યા}}</translation> <translation id="6196207969502475924">વૉઇસ શોધ</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ટૅબ બંધ કરો}one{{COUNT} ટૅબ બંધ કરો}other{{COUNT} ટૅબ બંધ કરો}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> દિવસ કે તેથી વધારે સમય સુધી ઉપયોગ કરવામાં આવ્યો ન હોય એવા ટૅબને અહીં ખસેડવામાં આવશે. તમે <ph name="BEGIN_LINK" />સેટિંગ<ph name="END_LINK" />માં જઈને આને કોઈપણ સમયે બદલી શકો છો.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">નવું ડાઉનલોડ શરૂ કરીએ?</translation> <translation id="6347953390226388422">{count,plural, =1{આ સરનામું તમારા Google એકાઉન્ટ (<ph name="USER_EMAIL" />) અને આ ડિવાઇસમાંથી ડિલીટ કરવામાં આવશે.}one{આ સરનામું તમારા Google એકાઉન્ટ (<ph name="USER_EMAIL" />) અને આ ડિવાઇસમાંથી ડિલીટ કરવામાં આવશે.}other{આ સરનામા તમારા Google એકાઉન્ટ (<ph name="USER_EMAIL" />) અને આ ડિવાઇસમાંથી ડિલીટ કરવામાં આવશે.}}</translation> <translation id="634878792104344809">તમારા બધા ડિવાઇસ પર તમારા પાસવર્ડ, ઇતિહાસ અને બીજું ઘણું સિંક કરો</translation> +<translation id="6348855835728304880">આ ડિવાઇસ પર અન્ય ઍપ માટેના Chromeના તમારા પાસવર્ડ જેવી બીજી ઘણી બાબતોને ઍક્સેસ કરો.</translation> <translation id="6355820205320395730">નબળા પાસવર્ડનું અનુમાન કરવું સરળ હોય છે. તમે સશક્ત પાસવર્ડ બનાવવાની ખાતરી કરો. <ph name="BEGIN_LINK" />સુરક્ષા સંબંધિત વધુ ટિપ જુઓ.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" />ને ફૉલો કરો</translation> <translation id="6362362396625799311">કોઈ છુપા ટૅબ્સ નથી</translation> @@ -821,7 +820,6 @@ તમારો ડેટા <ph name="TIME" />ના રોજ તમારા સિંક પાસફ્રેઝ સાથે એન્ક્રિપ્ટ કરવામાં આવ્યો હતો. સિંક શરૂ કરવા માટે એ દાખલ કરો.</translation> <translation id="6418346271604475326">PDF તૈયાર કરી રહ્યાં છે</translation> -<translation id="6421095165635308">{count,plural, =1{તમારા એકાઉન્ટમાં {title}માં બુકમાર્ક સાચવવામાં આવ્યું, {email}}one{તમારા એકાઉન્ટમાં {title}માં બુકમાર્ક સાચવવામાં આવ્યું, {email}}other{તમારા એકાઉન્ટમાં {title}માં બુકમાર્ક સાચવવામાં આવ્યાં, {email}}}</translation> <translation id="6429213933892582367">પાસવર્ડના વિકલ્પો ખોલો</translation> <translation id="6434591244308415567">એક ભૂલ આવી છે. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation> <translation id="6435236283694032571">વાંચન સૂચિમાં ઉમેરો</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">"નવું શું છે" સુવિધામાં નવી સુવિધાઓ અને ટિપ વિશે જાણો</translation> <translation id="7223102419539744003">ટૅબ બંધ કરો</translation> <translation id="722454870747268814">નવું છૂપું ટૅબ</translation> +<translation id="723787869754590019">ઑટોમૅટિક રીતે ભરવાની સુવિધા માટે Chromeનો ઉપયોગ કરો</translation> <translation id="7265758999917665941">આ સાઇટ માટે ક્યારેય નહીં</translation> <translation id="7272437679830969316">તમારી ઓળખની ચકાસણી કરી શકાતી નથી. પાસવર્ડ કૉપિ કરેલો નથી.</translation> <translation id="7291368939935408496">પાસવર્ડ તૈયાર કરી રહ્યાં છીએ…</translation> @@ -1090,6 +1089,7 @@ <translation id="8136856065410661948">Chrome અને Google Lensમાંથી તમારા Apple Calendarમાં ઇવેન્ટ બનાવવા માટે, આનો ઉપયોગ કરવામાં આવશે.</translation> <translation id="8156478151976189188">પાસવર્ડ સિંક કાર્ય કરતું નથી</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> એકાઉન્ટ્સ</translation> +<translation id="8159358225423560600">હમણાં જ</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />તમારા ડિવાઇસ<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">પેજનો અનુવાદ કરો</translation> @@ -1120,6 +1120,7 @@ <translation id="8393889347136007944"><ph name="THRESHOLD" /> દિવસથી ઉપયોગમાં ન લેવાયેલી ટૅબ</translation> <translation id="8407669440184693619">આ સાઇટ માટે કોઈ પાસવર્ડ મળ્યાં નથી</translation> <translation id="842017693807136194">ની સાથે સાઇન ઇન કરેલ</translation> +<translation id="8423121072346537366">હમણાં જ</translation> <translation id="8425693829365242963">તમારા પાસવર્ડ વિશિષ્ટ છે</translation> <translation id="8428045167754449968">શહેર/નગર</translation> <translation id="8428213095426709021">સેટિંગ</translation> @@ -1153,12 +1154,14 @@ <translation id="8663764600409216912">તમે એવા પાસવર્ડનો ઉપયોગ કરી રહ્યાં છો જેનું અનુમાન લગાવવું મુશ્કેલ છે</translation> <translation id="8668210798914567634">આ પેજ, તમારી વાંચન સૂચિમાં સાચવવામાં આવ્યું છે.</translation> <translation id="8680787084697685621">એકાઉન્ટ સાઇન ઇન વિગતો જૂની થઈ ગઈ છે.</translation> +<translation id="868773710103052534">તમે પૂર્ણ રીતે સજ્જ છો</translation> <translation id="8693663554456874301">{count,plural, =1{ટૅબ બંધ કરો}one{ટૅબ બંધ કરો}other{ટૅબ બંધ કરો}}</translation> <translation id="8703536910991780768">તમારા પાસવર્ડ સશક્ત જણાય છે</translation> <translation id="8706588385081740091">પાસવર્ડ</translation> <translation id="8717864919010420084">લિંકની કૉપિ કરો</translation> <translation id="8721297211384281569">સાધન મેનૂ</translation> <translation id="8725066075913043281">ફરી પ્રયાસ કરો</translation> +<translation id="8727043961453758442">Chromeનો વધુને વધુ લાભ મેળવો</translation> <translation id="8730621377337864115">થઈ ગયું</translation> <translation id="8731388423028622182">તમારી iPhone રીસેટ પ્રક્રિયાના ભાગ તરીકે તમારા એકાઉન્ટ <ph name="USER_NAME" />માંથી તમને સાઇન આઉટ કરવામાં આવ્યા હતા. સાઇન ઇન કરવા માટે નીચે ચાલુ રાખો બટન પર ટૅપ કરો.</translation> <translation id="87371078663613140">મેનૂ બારના વિકલ્પો વિશે શોધખોળ કરો</translation> @@ -1205,9 +1208,9 @@ <translation id="8974714402877957201">1. iPad સેટિંગ ખોલો</translation> <translation id="8976382372951310360">સહાય</translation> <translation id="8976414606286374109">કાર્ડ તમારા Google એકાઉન્ટમાં સાચવવામાં આવે છે.</translation> -<translation id="8978059030508051916">{count,plural, =0{ચેડાં કરાયેલો એકપણ પાસવર્ડ નથી}=1{ચેડાં કરાયેલો {count} પાસવર્ડ}one{ચેડાં કરાયેલો {count} પાસવર્ડ}other{ચેડાં કરાયેલા {count} પાસવર્ડ}}</translation> <translation id="8981454092730389528">Google પ્રવૃત્તિ નિયંત્રણો</translation> <translation id="8985320356172329008">Google પર આ તરીકે સાઇન ઇન થયાં</translation> +<translation id="8986567980592931173">તમારા પાસવર્ડ અને ઇતિહાસ જેવું બીજું ઘણું સિંક કરવા માટે, તમારા Google એકાઉન્ટ વડે સાઇન ઇન કરો.</translation> <translation id="8998289560386111590">તમારા ડિવાઇસ પર ઉપલબ્ધ નથી</translation> <translation id="9000089900434778519">તમારું શોધ એન્જિન <ph name="DSE_NAME" /> છે. જો લાગુ થતી હોય, તો તમારા શોધ ઇતિહાસને ડિલીટ કરવા માટે, તેમની સૂચનાઓ જુઓ.</translation> <translation id="9008201768610948239">અવગણો</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb index dfa3262..d8c94ed 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">ज़ूम घटाएं</translation> <translation id="2230173723195178503">वेबपेज लोड हो गया है</translation> <translation id="2239626343334228536">ब्राउज़िंग डेटा साफ़ हो रहा है...</translation> +<translation id="2242467532204595597">मैसेज, दस्तावेज़ों, और अन्य ऐप्लिकेशन में मिले लिंक पर टैप करके, किसी भी समय Chrome का इस्तेमाल करें.</translation> <translation id="22508856139286506">खारिज की गई चेतावनियां (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">मेन्यू → इतिहास</translation> <translation id="2256933947031277845">आपका संगठन, आपको सिर्फ़ कुछ खास खातों से साइन इन करने की अनुमति देता है.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{सेव किया गया {count} पता, आपके कीबोर्ड के ऊपर उपलब्ध है.}one{सेव किया गया {count} पता, आपके कीबोर्ड के ऊपर उपलब्ध है.}other{सेव किए गए {count} पते, आपके कीबोर्ड के ऊपर उपलब्ध हैं.}}</translation> <translation id="2421004566762153674">तीसरे पक्ष की कुकी ब्लॉक की जा रही हैं</translation> <translation id="2421044535038393232">बदलाव करते रहें</translation> +<translation id="2423077901494354337">अब आपको अपने डिवाइस पर, Chrome का ज़्यादा से ज़्यादा फ़ायदा मिलेगा.</translation> <translation id="2434405374328098816">आपने <ph name="WEBSITE" /> पर, "<ph name="USERNAME" />" का पासवर्ड पहले ही सेव कर दिया है</translation> <translation id="2435457462613246316">पासवर्ड दिखाएं</translation> <translation id="2451654228769116489">पिन करके छोटा किया गया टैब</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">सूचनाएं</translation> <translation id="2496626742194544812">पहले टैब पर जाएं</translation> <translation id="2500374554657206846">पासवर्ड सेव करने के विकल्प</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> पासवर्ड ऐसे हैं जिनका इस्तेमाल एक से ज़्यादा खातों के लिए किया गया है</translation> <translation id="2523363575747517183">यह वेबसाइट बार-बार किसी दूसरे ऐप्लिकेशन को खोलने की कोशिश कर रही है.</translation> <translation id="2529021024822217800">सभी खोलें</translation> <translation id="2547458583188611426">सिंक करने की सुविधा काम नहीं कर रही है. इसे चालू करने के लिए, अपना लंबा पासवर्ड डालें.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">दूसरी भाषाओं में पेजों का अनुवाद करने की सुविधा दें</translation> <translation id="3588820906588687999">इमेज को 'नए टैब' में खोलें</translation> <translation id="3595252146048399851"><ph name="BEGIN_LINK" />सेटिंग<ph name="END_LINK" /> में जाकर, कभी भी यह चुना जा सकता है कि किस चीज़ को सिंक करना है. Google आपके इतिहास के आधार पर, Search और अन्य सेवाओं को आपकी पसंद के मुताबिक बना सकता है.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} कमज़ोर पासवर्ड मिला}one{{COUNT} कमज़ोर पासवर्ड मिला}other{{COUNT} कमज़ोर पासवर्ड मिले}}</translation> <translation id="3603009562372709545">लिंक URL को कॉपी करें</translation> <translation id="3607167657931203000">ऑटोमैटिक भरना</translation> <translation id="3608008480985212611">अपनी प्राथमिकताएं मैनेज करने के लिए साइन इन करें.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">मेरा डेटा संयोजित करें</translation> <translation id="3929457972718048006">पते</translation> <translation id="3943492037546055397">पासवर्ड</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} कमज़ोर पासवर्ड मिला}one{{count} कमज़ोर पासवर्ड मिला}other{{count} कमज़ोर पासवर्ड मिले}}</translation> <translation id="3959736869653157332">मेन्यू → नया गुप्त टैब</translation> <translation id="3967822245660637423">डाउनलोड पूरा हुआ</translation> <translation id="3968505803272650567">पसंद को प्रबंधित करें</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">टैब दिखाएं</translation> <translation id="6187302354554850004">अंतिम बार समन्वयित: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">अपठित</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} में बुकमार्क किया गया}one{{title} में बुकमार्क किया गया}other{{title} में बुकमार्क किया गया}}</translation> <translation id="6196207969502475924">बोलकर खोजें</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} टैब बंद करें}one{{COUNT} टैब बंद करें}other{{COUNT} टैब बंद करें}}</translation> <translation id="6210079381482819663">जिन टैब का इस्तेमाल <ph name="THRESHOLD" /> या इससे ज़्यादा दिनों तक नहीं किया गया है उन्हें यहां ले जाया जाता है. <ph name="BEGIN_LINK" />सेटिंग<ph name="END_LINK" /> में जाकर, इसे कभी भी बदला जा सकता है.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">नया डाउनलोड शुरू करें?</translation> <translation id="6347953390226388422">{count,plural, =1{यह पता आपके Google खाते (<ph name="USER_EMAIL" />) और इस डिवाइस से मिटा दिया जाएगा.}one{ये पते आपके Google खाते (<ph name="USER_EMAIL" />) और इस डिवाइस से मिटा दिए जाएंगे.}other{ये पते आपके Google खाते (<ph name="USER_EMAIL" />) और इस डिवाइस से मिटा दिए जाएंगे.}}</translation> <translation id="634878792104344809">अपने बुकमार्क, पासवर्ड, इतिहास, और दूसरी कई चीज़ें अपने सभी डिवाइस पर सिंक करना</translation> +<translation id="6348855835728304880">इस डिवाइस पर मौजूद अन्य ऐप्लिकेशन में, अपने Chrome पासवर्ड वगैरह ऐक्सेस करें.</translation> <translation id="6355820205320395730">कमज़ोर पासवर्ड आसानी से क्रैक किए जा सकते हैं. पक्का करें कि आपने मज़बूत पासवर्ड बनाए हैं. <ph name="BEGIN_LINK" />सुरक्षा से जुड़ी और सलाह देखें.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> को फ़ॉलो करें</translation> <translation id="6362362396625799311">कोई गुप्त टैब नहीं है</translation> @@ -821,7 +820,6 @@ आपका डेटा आपके सिंक पासफ़्रेज़ के साथ <ph name="TIME" /> पर सुरक्षित किया गया था. सिंक शुरू करने के लिए यह डालें.</translation> <translation id="6418346271604475326">PDF तैयार हो रहा है</translation> -<translation id="6421095165635308">{count,plural, =1{आपके खाते {email} में मौजूद {title} में बुकमार्क सेव किया गया}one{आपके खाते {email} में मौजूद {title} में बुकमार्क सेव किया गया}other{आपके खाते {email} में मौजूद {title} में बुकमार्क सेव किए गए}}</translation> <translation id="6429213933892582367">Password Options को खोलें</translation> <translation id="6434591244308415567">कोई गड़बड़ी हुई. बाद में फिर कोशिश करें.</translation> <translation id="6435236283694032571">रीडिंग लिस्ट में जोड़ें</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">'नया क्या है' में नई सुविधाओं के बारे में जानें और सलाह पाएं</translation> <translation id="7223102419539744003">टैब को बंद करें</translation> <translation id="722454870747268814">नया गुप्त टैब</translation> +<translation id="723787869754590019">ऑटोमैटिक भरने की सुविधा के लिए, Chrome का इस्तेमाल करें</translation> <translation id="7265758999917665941">इस साइट के लिए कभी नहीं</translation> <translation id="7272437679830969316">आपकी पहचान की पुष्टि नहीं हो पा रही है. पासवर्ड कॉपी नहीं हुआ.</translation> <translation id="7291368939935408496">पासवर्ड तैयार हो रहे हैं...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">आपके पासवर्ड हैक करना मुश्किल है</translation> <translation id="8668210798914567634">यह पेज आपकी रीडिंग लिस्ट में सेव कर लिया गया है.</translation> <translation id="8680787084697685621">खाते में साइन इन से जुड़ी जानकारियां पुरानी हो गई हैं.</translation> +<translation id="868773710103052534">आप पूरी तरह से तैयार हैं</translation> <translation id="8693663554456874301">{count,plural, =1{टैब को बंद करें}one{टैब को बंद करें}other{टैब बंद करें}}</translation> <translation id="8703536910991780768">आपका पासवर्ड मज़बूत है</translation> <translation id="8706588385081740091">पासवर्ड</translation> <translation id="8717864919010420084">लिंक कॉपी करें</translation> <translation id="8721297211384281569">टूल मेन्यू</translation> <translation id="8725066075913043281">फिर से कोशिश करें</translation> +<translation id="8727043961453758442">Chrome का ज़्यादा से ज़्यादा फ़ायदा पाएं</translation> <translation id="8730621377337864115">हो गया</translation> <translation id="8731388423028622182">iPhone रीसेट होने की वजह से, आपको <ph name="USER_NAME" /> खाते से साइन आउट कर दिया गया था. साइन इन करने के लिए, नीचे 'जारी रखें' पर टैप करें.</translation> <translation id="87371078663613140">मेन्यू बार में दिए गए विकल्पों के बारे में जानें</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. iPad की सेटिंग खोलें</translation> <translation id="8976382372951310360">सहायता</translation> <translation id="8976414606286374109">कार्ड आपके Google खाते में सेव हो जाते हैं.</translation> -<translation id="8978059030508051916">{count,plural, =0{पासवर्ड हैक या चोरी नहीं हुए हैं}=1{{count} पासवर्ड या तो हैक हुआ है या चोरी हुआ है}one{{count} पासवर्ड या तो हैक हुआ है या चोरी हुआ है}other{{count} पासवर्ड या तो हैक हुए हैं या चोरी हुए हैं}}</translation> <translation id="8981454092730389528">Google गतिविधि नियंत्रण</translation> <translation id="8985320356172329008">आपने Google में इस ईमेल पते से साइन इन किया है</translation> +<translation id="8986567980592931173">अपने पासवर्ड, इतिहास वगैरह को सिंक करने के लिए, अपने Google खाते से साइन इन करें.</translation> <translation id="8998289560386111590">यह मोड आपके डिवाइस पर उपलब्ध नहीं है</translation> <translation id="9000089900434778519">आपका सर्च इंजन <ph name="DSE_NAME" /> है. अपना खोज इतिहास मिटाने के लिए निर्देश देखें.</translation> <translation id="9008201768610948239">ध्यान न दें</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb index e102072..d96068dd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Obavijesti</translation> <translation id="2496626742194544812">Idi na prvu karticu</translation> <translation id="2500374554657206846">Opcije za spremanje zaporki</translation> -<translation id="2502415369140591438">Višestruko korištene zaporke: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Ova web-lokacija opetovano pokušava otvoriti neku drugu aplikaciju.</translation> <translation id="2529021024822217800">Otvori sve</translation> <translation id="2547458583188611426">Sinkronizacija ne funkcionira. Unesite šifru da biste pokrenuli sinkronizaciju.</translation> @@ -354,6 +353,7 @@ <translation id="3324193307694657476">2. adresni redak</translation> <translation id="3328459813621383194">Premještanje neaktivnih kartica</translation> <translation id="3328801116991980348">Informacije o web-lokaciji</translation> +<translation id="3344485292736684439">{count,plural, =1{Oznaka je spremljena u "{title}" na vašem računu, {email}}one{Oznake spremljene na "{title}" na vašem računu, {email}}few{Oznake spremljene na "{title}" na vašem računu, {email}}other{Oznake spremljene na "{title}" na vašem računu, {email}}}</translation> <translation id="3371831930909698441">Prevoditelj je dostupan. Opcije su dostupne pri dnu zaslona.</translation> <translation id="3377063233124932127">Sada se vaše spremljene oznake, zaporke i ostalo nalaze pri vrhu.</translation> <translation id="3393920035788932672">Dopušteni skočni</translation> @@ -391,7 +391,6 @@ <translation id="3581564640715911333">Ponudi prevođenje stranica na druge jezike</translation> <translation id="3588820906588687999">Otvori sliku u novoj kartici</translation> <translation id="3595252146048399851">U <ph name="BEGIN_LINK" />postavkama<ph name="END_LINK" /> možete odabrati što će se sinkronizirati. Google može prilagoditi Pretraživanje i druge usluge na temelju vaše povijesti.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} slaba zaporka}one{{COUNT} slaba zaporka}few{{COUNT} slabe zaporke}other{{COUNT} slabih zaporki}}</translation> <translation id="3603009562372709545">Kopiraj URL veze</translation> <translation id="3607167657931203000">Podaci automatskog popunjavanja</translation> <translation id="3608008480985212611">Prijavite se da biste upravljali svojim preferencijama.</translation> @@ -437,7 +436,6 @@ <translation id="3928666092801078803">Kombiniranje podataka</translation> <translation id="3929457972718048006">Adrese</translation> <translation id="3943492037546055397">Zaporke</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} slaba zaporka}one{{count} slaba zaporka}few{{count} slabe zaporke}other{{count} slabih zaporki}}</translation> <translation id="3959736869653157332">Izbornik → Nova anonimna kartica</translation> <translation id="3967822245660637423">Preuzimanje dovršeno</translation> <translation id="3968505803272650567">Upravljaj interesima</translation> @@ -774,7 +772,6 @@ <translation id="6184086493125982861">Prikaz kartica</translation> <translation id="6187302354554850004">Posljednja sinkr.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Nepročitano</translation> -<translation id="6193424046394092997">{count,plural, =1{Označeno kao {title}}one{Označeno kao {title}}few{Označeno kao {title}}other{Označeno kao {title}}}</translation> <translation id="6196207969502475924">Glasovno pretraživanje</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Zatvori {COUNT} karticu}one{Zatvori {COUNT} karticu}few{Zatvori {COUNT} kartice}other{Zatvori {COUNT} kartica}}</translation> <translation id="6210079381482819663">Kartice koje se ne upotrebljavaju <ph name="THRESHOLD" /> ili više dana premještaju se ovdje. To uvijek možete promijeniti u <ph name="BEGIN_LINK" />postavkama<ph name="END_LINK" />.</translation> @@ -824,7 +821,6 @@ Vaši su podaci šifrirani vašom šifrom za sinkronizaciju <ph name="TIME" />. Unesite je da biste pokrenuli sinkronizaciju.</translation> <translation id="6418346271604475326">Priprema PDF-a</translation> -<translation id="6421095165635308">{count,plural, =1{Oznaka je spremljena u mapu {title} na vašem računu, {email}}one{Oznake su spremljene u mapu {title} na vašem računu, {email}}few{Oznake su spremljene u mapu {title} na vašem računu, {email}}other{Oznake su spremljene u mapu {title} na vašem računu, {email}}}</translation> <translation id="6429213933892582367">Otvorite Opcije zaporke</translation> <translation id="6434591244308415567">Došlo je do pogreške. Pokušajte ponovo kasnije.</translation> <translation id="6435236283694032571">Dodaj na popis za čitanje</translation> @@ -1037,6 +1033,7 @@ <translation id="7840771868269352570">Odabrane će se stavke ukloniti.</translation> <translation id="7845466610722898">Prikaži popis za čitanje</translation> <translation id="784551991304901159">Za pregled podataka na izborniku odaberite Uključi</translation> +<translation id="7846158885638438868">{count,plural, =1{Označeno u "{title}"}one{Označeno u "{title}"}few{Označeno u "{title}"}other{Označeno u "{title}"}}</translation> <translation id="7853202427316060426">Aktivnost</translation> <translation id="7856733331829174190">Preuzimanje nije moguće</translation> <translation id="785938070103630874">Otvorite zaporke, načine plaćanja ili adresu i drugo</translation> @@ -1213,7 +1210,6 @@ <translation id="8974714402877957201">1. Otvorite postavke iPada</translation> <translation id="8976382372951310360">Pomoć</translation> <translation id="8976414606286374109">Kartice se spremaju na vaš Google račun.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nema ugroženih zaporki}=1{{count} ugrožena zaporka}one{{count} ugrožena zaporka}few{{count} ugrožene zaporke}other{{count} ugroženih zaporki}}</translation> <translation id="8981454092730389528">Google kontrole aktivnosti</translation> <translation id="8985320356172329008">Prijavljeni ste na Google kao</translation> <translation id="8986567980592931173">Prijavite se Google računom da biste sinkronizirali zaporke, povijest i ostalo.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb index f339971..c5362a4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Kicsinyítés</translation> <translation id="2230173723195178503">A weboldal betöltött</translation> <translation id="2239626343334228536">Böngészési adatok törlése…</translation> +<translation id="2242467532204595597">Bármikor használhatja a Chrome-ot, amikor üzenetekben, dokumentumokban és más alkalmazásokban linkekre kattint.</translation> <translation id="22508856139286506">Elvetett figyelmeztetések (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Menü → Előzmények</translation> <translation id="2256933947031277845">Szervezete csak bizonyos fiókokkal engedélyezi a bejelentkezést.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} mentett cím áll rendelkezésre a billentyűzet felett.}other{{count} mentett cím áll rendelkezésre a billentyűzet felett.}}</translation> <translation id="2421004566762153674">Harmadik félhez tartozó cookie-k letiltása</translation> <translation id="2421044535038393232">Szerkesztés folytatása</translation> +<translation id="2423077901494354337">Mostantól a legtöbbet hozhatja ki a Chrome-ból az eszközén.</translation> <translation id="2434405374328098816">Már mentett jelszót a(z) „<ph name="USERNAME" />” felhasználónévhez a(z) <ph name="WEBSITE" /> webhelyen</translation> <translation id="2435457462613246316">Jelszó megjelenítése</translation> <translation id="2451654228769116489">Lap rögzítése</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Értesítések</translation> <translation id="2496626742194544812">Ugrás az első lapra</translation> <translation id="2500374554657206846">A jelszó mentésére szolgáló lehetőségek</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> újrafelhasznált jelszó</translation> <translation id="2523363575747517183">Ez a webhely folyamatosan próbál megnyitni egy másik alkalmazást.</translation> <translation id="2529021024822217800">Az összes megnyitása</translation> <translation id="2547458583188611426">Nem működik a szinkronizálás. A szinkronizálás megkezdéséhez adja meg összetett jelszavát.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Más nyelvű oldalak fordításának felajánlása</translation> <translation id="3588820906588687999">Kép megnyitása új lapon</translation> <translation id="3595252146048399851">A <ph name="BEGIN_LINK" />beállítások<ph name="END_LINK" /> között bármikor módosíthatja a szinkronizálni kívánt elemeket. A Google az Ön előzményei alapján személyre szabhatja a Keresőt és más szolgáltatásokat.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} gyenge jelszó}other{{COUNT} gyenge jelszó}}</translation> <translation id="3603009562372709545">Link URL-jének másolása</translation> <translation id="3607167657931203000">Automatikus kitöltés adatai</translation> <translation id="3608008480985212611">Jelentkezzen be a beállításai kezeléséhez.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Adataim egyesítése</translation> <translation id="3929457972718048006">Címek</translation> <translation id="3943492037546055397">Jelszavak</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} gyenge jelszó}other{{count} gyenge jelszó}}</translation> <translation id="3959736869653157332">Menü → Új inkognitó lap</translation> <translation id="3967822245660637423">A letöltés sikeres</translation> <translation id="3968505803272650567">Érdeklődési körök kezelése</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Lapok megjelenítése</translation> <translation id="6187302354554850004">Utolsó szinkron.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Olvasatlan</translation> -<translation id="6193424046394092997">{count,plural, =1{Könyvjelzők közé téve itt: {title}}other{Könyvjelzők közé téve itt: {title}}}</translation> <translation id="6196207969502475924">Hangalapú keresés</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} lap bezárása}other{{COUNT} lap bezárása}}</translation> <translation id="6210079381482819663">A több mint <ph name="THRESHOLD" /> napja nem használt lapok ide kerülnek. Ezt bármikor módosíthatja a <ph name="BEGIN_LINK" />beállításokban<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Elindítja az új letöltést?</translation> <translation id="6347953390226388422">{count,plural, =1{Ezzel törli ezt a címet Google-fiókjából (<ph name="USER_EMAIL" />) és erről az eszközről.}other{Ezzel törli ezeket a címeket a Google-fiókjából (<ph name="USER_EMAIL" />) és erről az eszközről.}}</translation> <translation id="634878792104344809">Jelszavak, előzmények és egyebek szinkronizálása az összes eszközén</translation> +<translation id="6348855835728304880">Hozzáférhet Chrome-jelszavaihoz és még sok máshoz az erre az eszközre telepített alkalmazásokban.</translation> <translation id="6355820205320395730">A gyenge jelszavakat könnyű kitalálni. Figyeljen arra, hogy erős jelszavakat hozzon létre. <ph name="BEGIN_LINK" />Itt további biztonsági tippeket talál.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> követése</translation> <translation id="6362362396625799311">Nincsenek inkognitó lapok</translation> @@ -821,7 +820,6 @@ Adatainak titkosítása megtörtént összetett szinkronizálási jelszavával a következő időpontban: <ph name="TIME" />. Adja meg a jelszót a szinkronizálás megkezdéséhez.</translation> <translation id="6418346271604475326">PDF előkészítése</translation> -<translation id="6421095165635308">{count,plural, =1{Könyvjelző mentve a(z) {title} mappába a fiókjában ({email})}other{Könyvjelzők mentve a(z) {title} mappába a fiókjában ({email})}}</translation> <translation id="6429213933892582367">A Jelszóbeállítások megnyitása</translation> <translation id="6434591244308415567">Hiba történt, próbálja újra később.</translation> <translation id="6435236283694032571">Hozzáadás az Olvasólistához</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Az Újdonságok szakaszban új funkciókat és tippeket találhat</translation> <translation id="7223102419539744003">Lap bezárása</translation> <translation id="722454870747268814">Új inkognitó lap</translation> +<translation id="723787869754590019">A Chrome használata automatikus kitöltéshez</translation> <translation id="7265758999917665941">Ezen a webhelyen soha</translation> <translation id="7272437679830969316">Nem sikerült ellenőrizni a személyazonosságát. A jelszó nem lett másolva.</translation> <translation id="7291368939935408496">Jelszavak előkészítése…</translation> @@ -1025,6 +1024,7 @@ <translation id="7781011649027948662">Lefordítja az oldalt?</translation> <translation id="7781069478569868053">Új lap oldal</translation> <translation id="7781829728241885113">Tegnap</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{1 nap múlva}other{{COUNT} nap múlva}}</translation> <translation id="778855399387580014">Keresés indítása új Chrome-lapon.</translation> <translation id="7791543448312431591">Hozzáadás</translation> <translation id="7807060072011926525">A Google biztosítja</translation> @@ -1154,12 +1154,14 @@ <translation id="8663764600409216912">Olyan jelszavakat használ, amelyeket valószínűleg nehéz kitalálni</translation> <translation id="8668210798914567634">Ez az oldal az Ön olvasási listájára van mentve.</translation> <translation id="8680787084697685621">A fiók bejelentkezési részletei elavultak.</translation> +<translation id="868773710103052534">Elkészült</translation> <translation id="8693663554456874301">{count,plural, =1{Lap bezárása}other{Lapok bezárása}}</translation> <translation id="8703536910991780768">Jelszavai erősnek tűnnek</translation> <translation id="8706588385081740091">Jelszavak</translation> <translation id="8717864919010420084">Link másolása</translation> <translation id="8721297211384281569">Eszközök menü</translation> <translation id="8725066075913043281">Újrapróbálás</translation> +<translation id="8727043961453758442">Hozza ki a legtöbbet a Chrome-ból</translation> <translation id="8730621377337864115">Kész</translation> <translation id="8731388423028622182">Az iPhone visszaállításakor a rendszer kijelentkeztette <ph name="USER_NAME" /> fiókjából. A bejelentkezéshez koppintson a Folytatás gombra alább.</translation> <translation id="87371078663613140">Fedezze fel a menüsorban rendelkezésre álló beállításokat</translation> @@ -1206,9 +1208,9 @@ <translation id="8974714402877957201">1. Nyissa meg az iPad Beállítások menüjét.</translation> <translation id="8976382372951310360">Súgó</translation> <translation id="8976414606286374109">A kártyákat a rendszer az Ön Google-fiókjába menti.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nincsenek illetéktelen kezekbe került jelszavai}=1{{count} illetéktelen kezekbe került jelszó}other{{count} illetéktelen kezekbe került jelszó}}</translation> <translation id="8981454092730389528">Google Tevékenységvezérlők</translation> <translation id="8985320356172329008">Bejelentkezve a Google rendszerébe mint</translation> +<translation id="8986567980592931173">Jelszavai, előzményei és egyebek szinkronizálásához jelentkezzen be Google-fiókjába.</translation> <translation id="8998289560386111590">Nem áll rendelkezésre az eszközén</translation> <translation id="9000089900434778519">Az Ön keresőmotorja a következő: <ph name="DSE_NAME" />. A keresési előzmények törléséről a keresőmotorja útmutatójából tájékozódhat, ha van ilyen.</translation> <translation id="9008201768610948239">Mellőzés</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_strings_hy.xtb index 7815fbe..8ce28e9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hy.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Ծանուցումներ</translation> <translation id="2496626742194544812">Անցնել առաջին ներդիր</translation> <translation id="2500374554657206846">Գաղտնաբառը պահելու տարբերակներ</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> կրկնվող գաղտնաբառ</translation> <translation id="2523363575747517183">Այս կայքը բազմիցս փորձում է բացել մեկ այլ հավելված։</translation> <translation id="2529021024822217800">Բացել բոլորը</translation> <translation id="2547458583188611426">Համաժամացումը չի աշխատում։ Համաժամացումը սկսելու համար մուտքագրեք ձեր անցաբառը։</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Առաջարկել էջերի թարգմանությունն այլ լեզուներով</translation> <translation id="3588820906588687999">Բացել պատկերը նոր ներդիրում</translation> <translation id="3595252146048399851">Դուք ցանկացած ժամանակ կարող եք անցնել <ph name="BEGIN_LINK" />կարգավորումներ<ph name="END_LINK" /> և ընտրել, թե ինչն եք ուզում համաժամացնել։ Google-ը կարող է ձեր պատմության հիման վրա անհատականացնել Որոնումը և այլ ծառայությունները։</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} թույլ գաղտնաբառ}one{{COUNT} թույլ գաղտնաբառ}other{{COUNT} թույլ գաղտնաբառ}}</translation> <translation id="3603009562372709545">Պատճենել հղման հասցեն</translation> <translation id="3607167657931203000">Ինքնալցման տվյալները</translation> <translation id="3608008480985212611">Մտեք հաշիվ՝ ձեր կարգավորումները կառավարելու համար։</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Իմ տվյալների միավորում</translation> <translation id="3929457972718048006">Հասցեներ</translation> <translation id="3943492037546055397">Գաղտնաբառեր</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} թույլ գաղտնաբառ}one{{count} թույլ գաղտնաբառ}other{{count} թույլ գաղտնաբառ}}</translation> <translation id="3959736869653157332">Ընտրացանկ → Նոր ինկոգնիտո ներդիր</translation> <translation id="3967822245660637423">Ներբեռնումն ավարտվեց</translation> <translation id="3968505803272650567">Կառավարել հետաքրքրությունները</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">Ցույց տալ ներդիրները</translation> <translation id="6187302354554850004">Վերջին անգամ համաժամացվել է՝ <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Չկարդացված</translation> -<translation id="6193424046394092997">{count,plural, =1{Էջանշվեց «{title}» պանակում}one{Էջանշվեց «{title}» պանակում}other{Էջանշվեցին «{title}» պանակում}}</translation> <translation id="6196207969502475924">Ձայնային որոնում</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Փակել {COUNT} ներդիր}one{Փակել {COUNT} ներդիր}other{Փակել {COUNT} ներդիր}}</translation> <translation id="6210079381482819663">Առնվազն <ph name="THRESHOLD" /> օր չօգտագործված ներդիրները տեղափոխվում են այստեղ։ Սա ցանկացած ժամանակ կարող եք <ph name="BEGIN_LINK" />կարգավորումներում<ph name="END_LINK" /> փոփոխել։</translation> @@ -820,7 +816,6 @@ Ձեր տվյալները գաղտնագրվել են ձեր համաժամացման անցաբառով <ph name="TIME" />-ին: Համաժամացման համար մուտքագրեք անցաբառը:</translation> <translation id="6418346271604475326">PDF-ի պատրաստում</translation> -<translation id="6421095165635308">{count,plural, =1{Էջանիշը պահվեց {email} հաշվի «{title}» բաժնում}one{Էջանիշը պահվեց {email} հաշվի «{title}» բաժնում}other{Էջանիշները պահվեցին {email} հաշվի «{title}» բաժնում}}</translation> <translation id="6429213933892582367">Բացեք Գաղտնաբառերի կարգավորումները</translation> <translation id="6434591244308415567">Սխալ առաջացավ։ Փորձեք ավելի ուշ։</translation> <translation id="6435236283694032571">Ավելացնել ընթերցանության ցանկում</translation> @@ -1024,6 +1019,7 @@ <translation id="7781011649027948662">Թարգմանե՞լ էջը</translation> <translation id="7781069478569868053">Նոր ներդիրի էջ</translation> <translation id="7781829728241885113">Երեկ</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{1 օր հետո}one{{COUNT} օր հետո}other{{COUNT} օր հետո}}</translation> <translation id="778855399387580014">Սկսեք որոնել Chrome-ի նոր ներդիրում:</translation> <translation id="7791543448312431591">Ավելացնել</translation> <translation id="7807060072011926525">Տրամադրված է Google-ի կողմից</translation> @@ -1205,7 +1201,6 @@ <translation id="8974714402877957201">1. Բացեք iPad-ի կարգավորումները։</translation> <translation id="8976382372951310360">Օգնություն</translation> <translation id="8976414606286374109">Քարտերը պահվում են Google հաշվում։</translation> -<translation id="8978059030508051916">{count,plural, =0{Կոտրված գաղտնաբառեր չկան}=1{{count} կոտրված գաղտնաբառ}one{{count} կոտրված գաղտնաբառ}other{{count} կոտրված գաղտնաբառ}}</translation> <translation id="8981454092730389528">Google-ի գործունեության կառավարներ</translation> <translation id="8985320356172329008">Մուտք եք գործել Google որպես՝</translation> <translation id="8998289560386111590">Հասանելի չէ ձեր սարքում</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb index 79cedb10..18fe58b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Perkecil</translation> <translation id="2230173723195178503">Halaman web dimuat</translation> <translation id="2239626343334228536">Menghapus data browsing...</translation> +<translation id="2242467532204595597">Gunakan Chrome kapan saja dengan mengetuk link di pesan, dokumen, dan aplikasi lainnya.</translation> <translation id="22508856139286506">Peringatan yang Ditolak (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Menu → Histori</translation> <translation id="2256933947031277845">Organisasi mengizinkan Anda login hanya dengan akun tertentu.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} alamat tersimpan tersedia di atas keyboard Anda.}other{{count} alamat tersimpan tersedia di atas keyboard Anda.}}</translation> <translation id="2421004566762153674">Memblokir cookie pihak ketiga</translation> <translation id="2421044535038393232">Terus Edit</translation> +<translation id="2423077901494354337">Anda kini dapat memaksimalkan penggunaan Chrome di perangkat Anda.</translation> <translation id="2434405374328098816">Anda sudah menyimpan sandi untuk "<ph name="USERNAME" />" di <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Tampilkan sandi</translation> <translation id="2451654228769116489">Sematkan Tab</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Notifikasi</translation> <translation id="2496626742194544812">Buka Tab Pertama</translation> <translation id="2500374554657206846">Opsi untuk Menyimpan Sandi</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> Sandi digunakan ulang</translation> <translation id="2523363575747517183">Situs ini berulang kali mencoba membuka aplikasi lain.</translation> <translation id="2529021024822217800">Buka Semua</translation> <translation id="2547458583188611426">Sinkronisasi tidak berfungsi. Untuk memulai sinkronisasi, masukkan frasa sandi.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Tawarkan penerjemahan halaman ke dalam bahasa lain</translation> <translation id="3588820906588687999">Buka Gambar di Tab Baru</translation> <translation id="3595252146048399851">Anda dapat memilih jenis data yang akan disinkronkan di <ph name="BEGIN_LINK" />setelan<ph name="END_LINK" /> kapan saja. Google dapat mempersonalisasi Penelusuran dan layanan lainnya berdasarkan histori Anda.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} Sandi lemah}other{{COUNT} Sandi lemah}}</translation> <translation id="3603009562372709545">Salin URL Tautan</translation> <translation id="3607167657931203000">Data Isi-Otomatis</translation> <translation id="3608008480985212611">Login untuk mengelola preferensi Anda.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Gabungkan data saya</translation> <translation id="3929457972718048006">Alamat</translation> <translation id="3943492037546055397">Sandi</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} Sandi Lemah}other{{count} Sandi Lemah}}</translation> <translation id="3959736869653157332">Menu → Tab Samaran Baru</translation> <translation id="3967822245660637423">Download selesai</translation> <translation id="3968505803272650567">Kelola Minat</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Tampilkan Tab</translation> <translation id="6187302354554850004">Sinkron terakhir: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Belum dibaca</translation> -<translation id="6193424046394092997">{count,plural, =1{Di-bookmark ke {title}}other{Di-bookmark ke {title}}}</translation> <translation id="6196207969502475924">Penelusuran Suara</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Tutup {COUNT} Tab}other{Tutup {COUNT} Tab}}</translation> <translation id="6210079381482819663">Tab yang tidak digunakan selama <ph name="THRESHOLD" /> hari atau lebih akan dipindahkan ke sini. Anda dapat mengubahnya kapan saja di <ph name="BEGIN_LINK" />setelan<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Mulai Download Baru?</translation> <translation id="6347953390226388422">{count,plural, =1{Alamat ini akan dihapus dari Akun Google Anda (<ph name="USER_EMAIL" />) dan dari perangkat ini.}other{Alamat ini akan dihapus dari Akun Google Anda (<ph name="USER_EMAIL" />) dan dari perangkat ini.}}</translation> <translation id="634878792104344809">Sinkronkan sandi, histori, dan lainnya di semua perangkat Anda</translation> +<translation id="6348855835728304880">Akses sandi Chrome dan lainnya di seluruh aplikasi lain pada perangkat ini.</translation> <translation id="6355820205320395730">Sandi yang lemah mudah ditebak. Pastikan Anda menggunakan sandi yang kuat. <ph name="BEGIN_LINK" />Lihat tips keamanan lainnya<ph name="END_LINK" />.</translation> <translation id="6361848730467328243">Ikuti <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Tidak Ada Tab Samaran</translation> @@ -821,7 +820,6 @@ Data Anda dienkripsi dengan frasa sandi sinkronisasi pada tanggal <ph name="TIME" />. Loginkan frasa sandi untuk memulai sinkronisasi.</translation> <translation id="6418346271604475326">Menyiapkan PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Bookmark disimpan ke {title} di akun Anda, {email}}other{Bookmark disimpan ke {title} di akun Anda, {email}}}</translation> <translation id="6429213933892582367">Buka Opsi Sandi</translation> <translation id="6434591244308415567">Terjadi error. Harap coba lagi nanti.</translation> <translation id="6435236283694032571">Tambahkan ke Daftar Bacaan</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Pelajari berbagai fitur dan tips baru di Yang Baru</translation> <translation id="7223102419539744003">Tutup Tab</translation> <translation id="722454870747268814">Tab Samaran Baru</translation> +<translation id="723787869754590019">Gunakan Chrome untuk Isi Otomatis</translation> <translation id="7265758999917665941">Jangan Pernah Untuk Situs Ini</translation> <translation id="7272437679830969316">Tidak dapat memverifikasi identitas. Sandi tidak disalin.</translation> <translation id="7291368939935408496">Mempersiapkan Sandi…</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">Anda menggunakan sandi yang tampaknya sulit ditebak</translation> <translation id="8668210798914567634">Halaman ini telah disimpan di Daftar Bacaan.</translation> <translation id="8680787084697685621">Detail proses masuk akun sudah usang.</translation> +<translation id="868773710103052534">Anda Sudah Siap</translation> <translation id="8693663554456874301">{count,plural, =1{Tutup Tab}other{Tutup Tab}}</translation> <translation id="8703536910991780768">Sandi Anda tampak Kuat</translation> <translation id="8706588385081740091">Sandi</translation> <translation id="8717864919010420084">Salin Link</translation> <translation id="8721297211384281569">Menu Alat</translation> <translation id="8725066075913043281">Coba lagi</translation> +<translation id="8727043961453758442">Maksimalkan penggunaan Chrome</translation> <translation id="8730621377337864115">Selesai</translation> <translation id="8731388423028622182">Anda telah logout dari akun <ph name="USER_NAME" /> sebagai bagian dari proses reset iPhone. Ketuk lanjutkan di bawah untuk login.</translation> <translation id="87371078663613140">Jelajahi opsi di panel menu</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. Buka Settings di iPad</translation> <translation id="8976382372951310360">Bantuan</translation> <translation id="8976414606286374109">Kartu disimpan ke Akun Google Anda.</translation> -<translation id="8978059030508051916">{count,plural, =0{Tidak Ada Sandi yang Telah Dibobol}=1{{count} Sandi Telah Dibobol}other{{count} Sandi Telah Dibobol}}</translation> <translation id="8981454092730389528">Kontrol Aktivitas Google</translation> <translation id="8985320356172329008">Login ke Google sebagai</translation> +<translation id="8986567980592931173">Login dengan Akun Google Anda untuk menyinkronkan sandi, histori, dan lainnya.</translation> <translation id="8998289560386111590">Tidak tersedia di perangkat Anda</translation> <translation id="9000089900434778519">Mesin telusur Anda adalah <ph name="DSE_NAME" />. Lihat petunjuknya untuk menghapus histori penelusuran Anda, jika memungkinkan.</translation> <translation id="9008201768610948239">Abaikan</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb index a881e3a7..b1ec4367 100644 --- a/ios/chrome/app/strings/resources/ios_strings_is.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Minnka aðdrátt</translation> <translation id="2230173723195178503">Vefsíða sótt</translation> <translation id="2239626343334228536">Hreinsar vefskoðunargögn...</translation> +<translation id="2242467532204595597">Notaðu Chrome þegar þú ýtir á tengla í skilaboðum, skjölum og öðrum forritum.</translation> <translation id="22508856139286506">Hunsaðar viðvaranir (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Valmynd → Ferill</translation> <translation id="2256933947031277845">Fyrirtækið þitt leyfir þér eingöngu að skrá þig inn með tilteknum reikningum.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} vistað heimilisfang tiltækt ofan við lyklaborðið.}one{{count} vistað heimilisfang tiltækt ofan við lyklaborðið.}other{{count} vistuð heimilisföng tiltæk ofan við lyklaborðið.}}</translation> <translation id="2421004566762153674">Lokað á fótspor frá þriðju aðilum</translation> <translation id="2421044535038393232">Halda áfram að breyta</translation> +<translation id="2423077901494354337">Nú mun Chrome nýtast þér sem best í tækinu.</translation> <translation id="2434405374328098816">Þú hefur þegar vistað aðgangsorð fyrir „<ph name="USERNAME" />“ á <ph name="WEBSITE" />.</translation> <translation id="2435457462613246316">Sýna aðgangsorð</translation> <translation id="2451654228769116489">Festa flipa</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Tilkynningar</translation> <translation id="2496626742194544812">Opna fyrsta flipa</translation> <translation id="2500374554657206846">Val um vistun aðgangsorðs</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> endurnýtt aðgangsorð</translation> <translation id="2523363575747517183">Þetta vefsvæði reynir ítrekað að opna annað forrit.</translation> <translation id="2529021024822217800">Opna allt</translation> <translation id="2547458583188611426">Samstilling virkar ekki. Sláðu inn aðgangsorðið þitt til að hefja samstillingu.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Bjóðast til að þýða síður á önnur tungumál</translation> <translation id="3588820906588687999">Opna mynd í nýjum flipa</translation> <translation id="3595252146048399851">Þú getur alltaf valið hvað á að samstilla í <ph name="BEGIN_LINK" />stillingunum<ph name="END_LINK" />. Google kann að sérsníða Leit og aðrar þjónustur í samræmi við ferilinn þinn.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} lélegt aðgangsorð}one{{COUNT} lélegt aðgangsorð}other{{COUNT} léleg aðgangsorð}}</translation> <translation id="3603009562372709545">Afrita vefslóð tengils</translation> <translation id="3607167657931203000">Gögn sjálfvirkrar útfyllingar</translation> <translation id="3608008480985212611">Skráðu þig inn til að stjórna kjörstillingum.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Sameina gögnin mín</translation> <translation id="3929457972718048006">Heimilisföng</translation> <translation id="3943492037546055397">Aðgangsorð</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} lélegt aðgangsorð}one{{count} lélegt aðgangsorð}other{{count} léleg aðgangsorð}}</translation> <translation id="3959736869653157332">Valmynd → Nýr huliðsflipi</translation> <translation id="3967822245660637423">Niðurhali lokið</translation> <translation id="3968505803272650567">Stjórna áhugasviðum</translation> @@ -611,6 +610,7 @@ <translation id="5118764316110575523">Slökkt</translation> <translation id="5119391094379141756">Veldu Chrome</translation> <translation id="5121618895923301719">Þú ert þegar að vakta þessa vöru. Þessi síða er vistuð í <ph name="BEGIN_LINK" />Bókamerkjum í snjalltæki<ph name="END_LINK" />.</translation> +<translation id="5126465625664020024">Skráðu þig inn og samstilltu</translation> <translation id="5132942445612118989">Samstilltu aðgangsorðin, ferilinn og fleira í öllum tækjum</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} lélegt aðgangsorð}one{{COUNT} lélegt aðgangsorð}other{{COUNT} léleg aðgangsorð}}</translation> <translation id="5149188072385105201">Bæta aðgangsorði við...</translation> @@ -771,7 +771,6 @@ <translation id="6184086493125982861">Sýna flipa</translation> <translation id="6187302354554850004">Síðast samstillt: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Ólesið</translation> -<translation id="6193424046394092997">{count,plural, =1{Bókamerkt í {title}}one{Bókamerkt í {title}}other{Bókamerkt í {title}}}</translation> <translation id="6196207969502475924">Raddleit</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Loka {COUNT} flipa}one{Loka {COUNT} flipa}other{Loka {COUNT} flipum}}</translation> <translation id="6210079381482819663">Flipar sem eru ekki notaðir í <ph name="THRESHOLD" /> daga eða meira eru færðir hingað. Þú getur breytt þessu hvenær sem er í <ph name="BEGIN_LINK" />stillingunum<ph name="END_LINK" />.</translation> @@ -801,6 +800,7 @@ <translation id="6346549652287021269">Hefja nýtt niðurhal?</translation> <translation id="6347953390226388422">{count,plural, =1{Þessu heimilisfangi verður eytt af Google-reikningnum þínum (<ph name="USER_EMAIL" />) og úr þessu tæki.}one{Þessum heimilisföngum verður eytt af Google-reikningnum þínum (<ph name="USER_EMAIL" />) og úr þessu tæki.}other{Þessum heimilisföngum verður eytt af Google-reikningnum þínum (<ph name="USER_EMAIL" />) og úr þessu tæki.}}</translation> <translation id="634878792104344809">Samstilltu aðgangsorð, feril og fleira í öllum tækjunum þínum</translation> +<translation id="6348855835728304880">Nálgastu Chrome-aðgangsorðin þín og fleira í öðrum forritum í tækinu.</translation> <translation id="6355820205320395730">Léleg aðgangsorð eru þau sem auðvelt er að giska á. Gakktu úr skugga um að þú búir til traust aðgangsorð. <ph name="BEGIN_LINK" />Sjá fleiri öryggisábendingar.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Fylgja <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Engir huliðsflipar</translation> @@ -820,7 +820,6 @@ Gögnin þín voru dulkóðuð með aðgangsorði samstillingar <ph name="TIME" />. Sláðu það inn til að hefja samstillingu.</translation> <translation id="6418346271604475326">Undirbýr PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Bókamerki var vistað í {title} á reikningnum þínum, {email}}one{Bókamerki voru vistuð í {title} á reikningnum þínum, {email}}other{Bókamerki voru vistuð í {title} á reikningnum þínum, {email}}}</translation> <translation id="6429213933892582367">Opnaðu „Valkostir fyrir aðgangsorð“</translation> <translation id="6434591244308415567">Villa kom upp. Reyndu aftur síðar.</translation> <translation id="6435236283694032571">Bæta við leslista</translation> @@ -953,6 +952,7 @@ <translation id="7221173315674413369">Kannaðu nýja eiginleika og ábendingar í „Nýjungar“</translation> <translation id="7223102419539744003">Loka flipa</translation> <translation id="722454870747268814">Nýr huliðsflipi</translation> +<translation id="723787869754590019">Notaðu Chrome fyrir sjálfvirka útfyllingu</translation> <translation id="7265758999917665941">Aldrei fyrir þetta vefsvæði</translation> <translation id="7272437679830969316">Ekki tókst að staðfesta hver þú ert. Aðgangsorð var ekki afritað.</translation> <translation id="7291368939935408496">Undirbýr aðgangsorð...</translation> @@ -1089,6 +1089,7 @@ <translation id="8136856065410661948">Þetta verður notað til að búa til viðburði í Apple Calendar frá Chrome og Google-linsu.</translation> <translation id="8156478151976189188">Samstilling aðgangsorða virkar ekki</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> reikningar</translation> +<translation id="8159358225423560600">rétt í þessu</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Tækin þín<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Þýða síðu</translation> @@ -1119,6 +1120,7 @@ <translation id="8393889347136007944">Flipar ónotaðir í <ph name="THRESHOLD" /> daga</translation> <translation id="8407669440184693619">Engin aðgangsorð fundust fyrir þetta vefsvæði</translation> <translation id="842017693807136194">Skráð inn með</translation> +<translation id="8423121072346537366">Rétt í þessu</translation> <translation id="8425693829365242963">Aðgangsorðin þín eru einkvæm</translation> <translation id="8428045167754449968">Borg/bær</translation> <translation id="8428213095426709021">Stillingar</translation> @@ -1152,12 +1154,14 @@ <translation id="8663764600409216912">Þú ert að nota aðgangsorð sem líta út fyrir að erfitt sé að giska á</translation> <translation id="8668210798914567634">Síðan var vistuð á leslistann þinn.</translation> <translation id="8680787084697685621">Innskráningarupplýsingar reikningsins eru úreltar.</translation> +<translation id="868773710103052534">Nú er allt klárt</translation> <translation id="8693663554456874301">{count,plural, =1{Loka flipa}one{Loka flipum}other{Loka flipum}}</translation> <translation id="8703536910991780768">Aðgangsorðin þín virðast traust</translation> <translation id="8706588385081740091">Aðgangsorð</translation> <translation id="8717864919010420084">Afrita tengil</translation> <translation id="8721297211384281569">Verkfæravalmynd</translation> <translation id="8725066075913043281">Reyna aftur</translation> +<translation id="8727043961453758442">Fáðu sem mest út úr Chrome</translation> <translation id="8730621377337864115">Lokið</translation> <translation id="8731388423028622182">Þú varst skráð(ur) út af reikningnum þínum <ph name="USER_NAME" /> í tengslum við endurstillingu iPhone. Ýttu á „Halda áfram“ hér fyrir neðan til að skrá þig inn.</translation> <translation id="87371078663613140">Skoðaðu valkosti á valmyndarstikunni</translation> @@ -1204,9 +1208,9 @@ <translation id="8974714402877957201">1. Opnaðu stillingar iPad</translation> <translation id="8976382372951310360">Hjálp</translation> <translation id="8976414606286374109">Kort verða vistuð á Google reikningnum þínum.</translation> -<translation id="8978059030508051916">{count,plural, =0{Engin aðgangsorð í hættu}=1{{count} aðgangsorð í hættu}one{{count} aðgangsorð í hættu}other{{count} aðgangsorð í hættu}}</translation> <translation id="8981454092730389528">Virknistýringar Google</translation> <translation id="8985320356172329008">Innskráð(ur) á Google sem</translation> +<translation id="8986567980592931173">Skráðu þig inn á Google-reikninginn þinn til að samstilla aðgangsorð, feril og fleira.</translation> <translation id="8998289560386111590">Ekki í boði í tækinu þínu</translation> <translation id="9000089900434778519">Leitarvélin þín er <ph name="DSE_NAME" />. Skoðaðu leiðbeiningar hennar um að eyða leitarferlinum ef það á við.</translation> <translation id="9008201768610948239">Hunsa</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb index 2e4cf617..b5646c5b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Notifiche</translation> <translation id="2496626742194544812">Vai alla prima scheda</translation> <translation id="2500374554657206846">Opzioni per salvare la password</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> password riutilizzate</translation> <translation id="2523363575747517183">Questo sito web sta cercando ripetutamente di aprire un'altra applicazione.</translation> <translation id="2529021024822217800">Apri tutto</translation> <translation id="2547458583188611426">La sincronizzazione non funziona. Per avviare la sincronizzazione devi inserire la tua passphrase.</translation> @@ -320,6 +319,7 @@ <translation id="3131206671572504478">Blocca tutti</translation> <translation id="313283613037595347">Crea nuova scheda di navigazione in incognito.</translation> <translation id="3146109040683991651">Imposta Chrome come browser predefinito</translation> +<translation id="3152169319860972623">La funzionalità Controllo password controlla le tue password salvate e ti avvisa in caso di violazioni online. <ph name="BEGIN_LINK" />Scopri di più<ph name="END_LINK" />.</translation> <translation id="3153862085237805241">Salva carta</translation> <translation id="3157387275655328056">Aggiungi all'elenco di lettura</translation> <translation id="3157684681743766797">Segna tutti come...</translation> @@ -352,6 +352,7 @@ <translation id="3324193307694657476">Indirizzo 2</translation> <translation id="3328459813621383194">Sposta schede non attive</translation> <translation id="3328801116991980348">Informazioni sito</translation> +<translation id="3344485292736684439">{count,plural, =1{Preferito salvato nella cartella "{title}" nel tuo account {email}}other{Preferiti salvati nella cartella "{title}" nel tuo account {email}}}</translation> <translation id="3371831930909698441">Traduttore disponibile. Opzioni disponibili nella parte inferiore dello schermo.</translation> <translation id="3377063233124932127">Ora i tuoi preferiti, le password e altri dati salvati sono visualizzati in alto.</translation> <translation id="3393920035788932672">Popup consentiti</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Proponi di tradurre le pagine in altre lingue</translation> <translation id="3588820906588687999">Apri immagine in un'altra scheda</translation> <translation id="3595252146048399851">Puoi scegliere in qualsiasi momento i dati da sincronizzare nelle <ph name="BEGIN_LINK" />impostazioni<ph name="END_LINK" />. Google potrebbe personalizzare la Ricerca e altri servizi in base alla tua cronologia.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} password inefficace}other{{COUNT} password inefficaci}}</translation> <translation id="3603009562372709545">Copia URL link</translation> <translation id="3607167657931203000">Dati della Compilazione automatica</translation> <translation id="3608008480985212611">Accedi per gestire le tue preferenze.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Unisci i miei dati</translation> <translation id="3929457972718048006">Indirizzi</translation> <translation id="3943492037546055397">Password</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} password inefficace}other{{count} password inefficaci}}</translation> <translation id="3959736869653157332">Menu → Nuova scheda di navigazione in incognito</translation> <translation id="3967822245660637423">Download completato</translation> <translation id="3968505803272650567">Gestisci interessi</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Mostra schede</translation> <translation id="6187302354554850004">Ultima sincronizzazione: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Da leggere</translation> -<translation id="6193424046394092997">{count,plural, =1{Preferito aggiunto in: {title}}other{Preferiti aggiunti in: {title}}}</translation> <translation id="6196207969502475924">Ricerca vocale</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Chiudi {COUNT} scheda}other{Chiudi {COUNT} schede}}</translation> <translation id="6210079381482819663">Le schede che non vengono utilizzate per almeno <ph name="THRESHOLD" /> giorni vengono spostate qui. Puoi modificare questa preferenza in qualsiasi momento nelle <ph name="BEGIN_LINK" />impostazioni<ph name="END_LINK" />.</translation> @@ -821,7 +819,6 @@ I tuoi dati sono stati criptati con la tua passphrase di sincronizzazione in data <ph name="TIME" />. Inseriscila per avviare la sincronizzazione.</translation> <translation id="6418346271604475326">Preparazione del PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Preferito salvato in {title} nel tuo account {email}}other{Preferiti salvati in {title} nel tuo account {email}}}</translation> <translation id="6429213933892582367">Apri Opzioni password</translation> <translation id="6434591244308415567">Si è verificato un errore. Riprova più tardi.</translation> <translation id="6435236283694032571">Aggiungi all'elenco di lettura</translation> @@ -1025,6 +1022,7 @@ <translation id="7781011649027948662">Tradurre la pagina?</translation> <translation id="7781069478569868053">Pagina Nuova scheda</translation> <translation id="7781829728241885113">Ieri</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Dopo 1 giorno}other{Dopo {COUNT} giorni}}</translation> <translation id="778855399387580014">Avvia una ricerca in una nuova scheda di Chrome.</translation> <translation id="7791543448312431591">Aggiungi</translation> <translation id="7807060072011926525">Fornito da Google</translation> @@ -1032,6 +1030,7 @@ <translation id="7840771868269352570">Gli elementi selezionati verranno rimossi.</translation> <translation id="7845466610722898">Mostra Elenco di lettura</translation> <translation id="784551991304901159">Per visualizzare i contenuti, seleziona Attiva dal menu</translation> +<translation id="7846158885638438868">{count,plural, =1{Preferito aggiunto alla cartella "{title}"}other{Preferiti aggiunti alla cartella "{title}"}}</translation> <translation id="7853202427316060426">Attività</translation> <translation id="7856733331829174190">Download non riuscito</translation> <translation id="785938070103630874">Apri password, metodi di pagamento o indirizzo e altro</translation> @@ -1206,7 +1205,6 @@ <translation id="8974714402877957201">1. Apri le Impostazioni dell'iPad</translation> <translation id="8976382372951310360">Guida</translation> <translation id="8976414606286374109">Le carte di credito vengono salvate nel tuo Account Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nessuna password compromessa}=1{{count} password compromessa}other{{count} password compromesse}}</translation> <translation id="8981454092730389528">Gestione attività di Google</translation> <translation id="8985320356172329008">Accesso effettuato a Google come</translation> <translation id="8998289560386111590">Non disponibile sul tuo dispositivo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb index 76cbc7c..851cfdd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">התרחקות</translation> <translation id="2230173723195178503">דף האינטרנט נטען</translation> <translation id="2239626343334228536">ניקוי נתוני הגלישה מתבצע…</translation> +<translation id="2242467532204595597">שימוש ב-Chrome בכל פעם שמקישים על קישורים בהודעות, במסמכים ובאפליקציות אחרות.</translation> <translation id="22508856139286506">אזהרות שנסגרו (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">תפריט ← היסטוריה</translation> <translation id="2256933947031277845">הארגון מאפשר לך להיכנס לדפדפן רק באמצעות חשבונות מסוימים.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{כתובת שמורה אחת ({count}) זמינה מעל המקלדת.}one{{count} כתובות שמורות זמינות מעל המקלדת.}two{{count} כתובות שמורות זמינות מעל המקלדת.}other{{count} כתובות שמורות זמינות מעל המקלדת.}}</translation> <translation id="2421004566762153674">חסימת קובצי Cookie של צד שלישי</translation> <translation id="2421044535038393232">המשך העריכה</translation> +<translation id="2423077901494354337">עכשיו אפשר ליהנות מהמיטב של Chrome במכשיר.</translation> <translation id="2434405374328098816">כבר שמרת סיסמה עבור המשתמש "<ph name="USERNAME" />" לאתר <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">הצגת סיסמה</translation> <translation id="2451654228769116489">הצמדת הכרטיסייה</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">התראות</translation> <translation id="2496626742194544812">מעבר לכרטיסייה הראשונה</translation> <translation id="2500374554657206846">אפשרויות לשמירת סיסמה</translation> -<translation id="2502415369140591438">יש <ph name="COUNT" /> סיסמאות בשימוש חוזר</translation> <translation id="2523363575747517183">האתר הזה מנסה שוב ושוב לפתוח אפליקציה אחרת.</translation> <translation id="2529021024822217800">פתיחת הכול</translation> <translation id="2547458583188611426">הסנכרון לא פועל. כדי להתחיל לסנכרן צריך להזין את ביטוי הסיסמה.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">הצעה לתרגם דפים בשפות אחרות</translation> <translation id="3588820906588687999">פתיחת התמונה בכרטיסייה חדשה</translation> <translation id="3595252146048399851">תמיד אפשר לבחור מה לסנכרן דרך <ph name="BEGIN_LINK" />ההגדרות<ph name="END_LINK" />. Google עשויה להתאים אישית את החיפוש ושירותים נוספים על סמך ההיסטוריה שלך.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{סיסמה חלשה אחת ({COUNT})}one{{COUNT} סיסמאות חלשות}two{{COUNT} סיסמאות חלשות}other{{COUNT} סיסמאות חלשות}}</translation> <translation id="3603009562372709545">העתקת URL של קישור</translation> <translation id="3607167657931203000">נתוני מילוי אוטומטי</translation> <translation id="3608008480985212611">צריך להיכנס לחשבון כדי לנהל את ההעדפות.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">שילוב הנתונים שלי</translation> <translation id="3929457972718048006">כתובות</translation> <translation id="3943492037546055397">סיסמאות</translation> -<translation id="3951717558054674026">{count,plural, =1{סיסמה חלשה אחת ({count})}one{{count} סיסמאות חלשות}two{{count} סיסמאות חלשות}other{{count} סיסמאות חלשות}}</translation> <translation id="3959736869653157332">תפריט ← כרטיסייה פרטית חדשה</translation> <translation id="3967822245660637423">ההורדה הושלמה</translation> <translation id="3968505803272650567">ניהול תחומי עניין</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">הצגת כרטיסיות</translation> <translation id="6187302354554850004">סונכרן לאחרונה: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">פריטים שלא נקראו</translation> -<translation id="6193424046394092997">{count,plural, =1{נוסף לסימניות בתיקייה {title}}one{Bookmarked to {title}}two{נוספו לסימניות בתיקייה {title}}other{נוספו לסימניות בתיקייה {title}}}</translation> <translation id="6196207969502475924">חיפוש קולי</translation> <translation id="6202364442240589072">{COUNT,plural, =1{סגירת כרטיסייה אחת ({COUNT})}one{סגירת {COUNT} כרטיסיות}two{סגירת {COUNT} כרטיסיות}other{סגירת {COUNT} כרטיסיות}}</translation> <translation id="6210079381482819663">כרטיסיות שלא משתמשים בהן במשך <ph name="THRESHOLD" /> ימים או יותר מועברות לכאן. תמיד אפשר לשנות זאת <ph name="BEGIN_LINK" />בהגדרות<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">להתחיל הורדה חדשה?</translation> <translation id="6347953390226388422">{count,plural, =1{הכתובת הזו תימחק מחשבון Google שלך (<ph name="USER_EMAIL" />) ומהמכשיר הזה.}one{הכתובות האלו יימחקו מחשבון Google שלך (<ph name="USER_EMAIL" />) ומהמכשיר הזה.}two{הכתובות האלו יימחקו מחשבון Google שלך (<ph name="USER_EMAIL" />) ומהמכשיר הזה.}other{הכתובות האלו יימחקו מחשבון Google שלך (<ph name="USER_EMAIL" />) ומהמכשיר הזה.}}</translation> <translation id="634878792104344809">סנכרון הסיסמאות, ההיסטוריה ונתונים נוספים בכל המכשירים שברשותך</translation> +<translation id="6348855835728304880">גישה לסיסמאות ולעוד אפשרויות ב-Chrome מאפליקציות נוספות במכשיר הזה.</translation> <translation id="6355820205320395730">קל לנחש סיסמאות חלשות. יש לוודא שהגדרת סיסמאות חזקות. <ph name="BEGIN_LINK" />עוד טיפים לגבי אבטחה<ph name="END_LINK" /></translation> <translation id="6361848730467328243">מעקב אחרי <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">אין כרטיסיות אנונימיות</translation> @@ -821,7 +820,6 @@ הנתונים שלך הוצפנו ב-<ph name="TIME" /> באמצעות ביטוי הסיסמה לסנכרון. יש להזין אותו כדי להתחיל בסנכרון.</translation> <translation id="6418346271604475326">PDF בהכנה</translation> -<translation id="6421095165635308">{count,plural, =1{הסימנייה נשמרה בתיקייה {title} בחשבון שלך, {email}}one{הסימניות נשמרו בתיקייה {title} בחשבון שלך, {email}}two{הסימניות נשמרו בתיקייה {title} בחשבון שלך, {email}}other{הסימניות נשמרו בתיקייה {title} בחשבון שלך, {email}}}</translation> <translation id="6429213933892582367">פתיחת האפשרויות של סיסמאות</translation> <translation id="6434591244308415567">אירעה שגיאה. יש לנסות שוב מאוחר יותר.</translation> <translation id="6435236283694032571">הוספה לרשימת הקריאה</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">בתכונה 'מה חדש' אפשר לגלות תכונות וטיפים חדשים</translation> <translation id="7223102419539744003">סגירת הכרטיסייה</translation> <translation id="722454870747268814">כרטיסייה פרטית חדשה</translation> +<translation id="723787869754590019">שימוש ב-Chrome למילוי אוטומטי</translation> <translation id="7265758999917665941">אף פעם עבור אתר זה</translation> <translation id="7272437679830969316">לא ניתן לאמת את הזהות שלך. הסיסמה לא הועתקה.</translation> <translation id="7291368939935408496">הכנת הסיסמאות מתבצעת...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">בחרת סיסמאות שקשה לנחש</translation> <translation id="8668210798914567634">דף זה נשמר ברשימת הקריאה שלך.</translation> <translation id="8680787084697685621">פרטי הכניסה לחשבון אינם מעודכנים.</translation> +<translation id="868773710103052534">הכול מוכן</translation> <translation id="8693663554456874301">{count,plural, =1{סגירת הכרטיסייה}one{סגירת הכרטיסיות}two{סגירת הכרטיסיות}other{סגירת הכרטיסיות}}</translation> <translation id="8703536910991780768">הסיסמאות נראות חזקות</translation> <translation id="8706588385081740091">סיסמאות</translation> <translation id="8717864919010420084">העתקת הקישור</translation> <translation id="8721297211384281569">התפריט 'כלים'</translation> <translation id="8725066075913043281">ניסיון חוזר</translation> +<translation id="8727043961453758442">נהנים מהמיטב של Chrome</translation> <translation id="8730621377337864115">בוצע</translation> <translation id="8731388423028622182">המערכת הוציאה אותך מהחשבון <ph name="USER_NAME" /> במסגרת האיפוס של iPhone. כדי להיכנס שוב לחשבון, יש להקיש על 'המשך' למטה.</translation> <translation id="87371078663613140">בודקים את האפשרויות בסרגל התפריטים</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. פותחים את הגדרות ה-iPad</translation> <translation id="8976382372951310360">עזרה</translation> <translation id="8976414606286374109">הכרטיסים נשמרים בחשבון Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{אין סיסמאות שנחשפו}=1{סיסמה אחת ({count}) שנחשפה}one{{count} סיסמאות שנחשפו}two{{count} סיסמאות שנחשפו}other{{count} סיסמאות שנחשפו}}</translation> <translation id="8981454092730389528">בחירת הפעילויות ב-Google</translation> <translation id="8985320356172329008">התחברת ל-Google בשם</translation> +<translation id="8986567980592931173">כניסה באמצעות חשבון Google לצורך סנכרון הסיסמאות, ההיסטוריה ועוד.</translation> <translation id="8998289560386111590">לא זמין במכשיר שלך</translation> <translation id="9000089900434778519">מנוע החיפוש שלך הוא <ph name="DSE_NAME" />. ניתן לעיין בהוראות שלו לגבי מחיקת היסטוריית החיפושים, אם רלוונטי.</translation> <translation id="9008201768610948239">סגירה</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb index 88a0c38..4d1f3330 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">縮小</translation> <translation id="2230173723195178503">ウェブページを読み込みました</translation> <translation id="2239626343334228536">閲覧データを削除しています...</translation> +<translation id="2242467532204595597">メッセージ、ドキュメント、他のアプリのリンクをタップしたときに、常に Chrome で開くよう設定できます。</translation> <translation id="22508856139286506">閉じた警告(<ph name="COUNT" /> 件)</translation> <translation id="2251686759395008410">メニュー → 履歴</translation> <translation id="2256933947031277845">組織が特定のアカウントでのログインしか許可していません。</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{キーボードの上部に保存済みの住所が {count} 件表示されています。}other{キーボードの上部に保存済みの住所が {count} 件表示されています。}}</translation> <translation id="2421004566762153674">サードパーティの Cookie をブロック</translation> <translation id="2421044535038393232">編集を続ける</translation> +<translation id="2423077901494354337">お使いのデバイスで Chrome を最大限に活用できるようになりました。</translation> <translation id="2434405374328098816"><ph name="WEBSITE" /> の「<ph name="USERNAME" />」のパスワードは保存済みです</translation> <translation id="2435457462613246316">パスワードを表示</translation> <translation id="2451654228769116489">タブを固定</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">通知</translation> <translation id="2496626742194544812">最初のタブに移動</translation> <translation id="2500374554657206846">パスワードの保存オプション</translation> -<translation id="2502415369140591438">使い回されているパスワード: <ph name="COUNT" /> 件</translation> <translation id="2523363575747517183">このウェブサイトは別のアプリケーションを繰り返し開こうとしています。</translation> <translation id="2529021024822217800">すべて開く</translation> <translation id="2547458583188611426">同期が機能していません。同期を開始するには、パスフレーズを入力してください。</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">他の言語のページで翻訳するかどうかを尋ねる</translation> <translation id="3588820906588687999">新しいタブで画像を開く</translation> <translation id="3595252146048399851">同期する項目はいつでも [<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />] で選択できます。Google では、履歴に基づいて検索やその他のサービスをカスタマイズすることがあります。</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{脆弱なパスワード: {COUNT} 件}other{脆弱なパスワード: {COUNT} 件}}</translation> <translation id="3603009562372709545">リンクのURLをコピー</translation> <translation id="3607167657931203000">自動入力のデータ</translation> <translation id="3608008480985212611">設定を管理するにはログインしてください。</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">データを統合する</translation> <translation id="3929457972718048006">住所</translation> <translation id="3943492037546055397">パスワード</translation> -<translation id="3951717558054674026">{count,plural, =1{脆弱なパスワード: {count} 件}other{脆弱なパスワード: {count} 件}}</translation> <translation id="3959736869653157332">メニュー → 新しいシークレット タブ</translation> <translation id="3967822245660637423">ダウンロード完了</translation> <translation id="3968505803272650567">興味のあるトピックを管理</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">タブを表示</translation> <translation id="6187302354554850004">最終同期: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">未読</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} にブックマークしました}other{{title} にブックマークしました}}</translation> <translation id="6196207969502475924">音声検索</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} 個のタブを閉じる}other{{COUNT} 個のタブを閉じる}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> 日間使用していないタブはここに移動されます。これは<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />でいつでも変更できます。</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">新たにダウンロードを開始しますか?</translation> <translation id="6347953390226388422">{count,plural, =1{この住所は Google アカウント(<ph name="USER_EMAIL" />)とこのデバイスから削除されます。}other{これらの住所は Google アカウント(<ph name="USER_EMAIL" />)とこのデバイスから削除されます。}}</translation> <translation id="634878792104344809">すべてのデバイスでパスワード、履歴、その他の設定を同期する</translation> +<translation id="6348855835728304880">このデバイスの他のアプリから、Chrome のパスワードなどにアクセスできます。</translation> <translation id="6355820205320395730">脆弱なパスワードは簡単に推測されてしまいます。安全なパスワードを作成してください。<ph name="BEGIN_LINK" />セキュリティに関する他のヒントを見る<ph name="END_LINK" /></translation> <translation id="6361848730467328243">「<ph name="DOMAIN_NAME" />」をフォロー</translation> <translation id="6362362396625799311">シークレット タブはありません</translation> @@ -821,7 +820,6 @@ データは <ph name="TIME" /> に同期パスフレーズで暗号化されました。同期を開始するには、同期パスフレーズを入力してください。</translation> <translation id="6418346271604475326">PDF を準備しています</translation> -<translation id="6421095165635308">{count,plural, =1{ブックマークをアカウント({email})の {title} に保存しました}other{ブックマークをアカウント({email})の {title} に保存しました}}</translation> <translation id="6429213933892582367">[パスワードのオプション] を開きます</translation> <translation id="6434591244308415567">エラーが発生しました。しばらくしてからもう一度お試しください。</translation> <translation id="6435236283694032571">リーディング リストに追加する</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">「新機能」で新しい機能とヒントをチェック</translation> <translation id="7223102419539744003">タブを閉じる</translation> <translation id="722454870747268814">新しいシークレット タブ</translation> +<translation id="723787869754590019">自動入力に Chrome を使用する</translation> <translation id="7265758999917665941">このサイトでは保存しない</translation> <translation id="7272437679830969316">ユーザー認証に失敗しました。パスワードはコピーされませんでした。</translation> <translation id="7291368939935408496">パスワードの準備中...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">推測しにくいパスワードが使用されています</translation> <translation id="8668210798914567634">このページはリーディング リストに保存されています。</translation> <translation id="8680787084697685621">アカウントのログイン情報が古くなっています。</translation> +<translation id="868773710103052534">設定が完了しました</translation> <translation id="8693663554456874301">{count,plural, =1{タブを閉じる}other{タブを閉じる}}</translation> <translation id="8703536910991780768">安全なパスワードが使用されています</translation> <translation id="8706588385081740091">パスワード</translation> <translation id="8717864919010420084">リンクをコピー</translation> <translation id="8721297211384281569">ツールメニュー</translation> <translation id="8725066075913043281">やり直し</translation> +<translation id="8727043961453758442">Chrome を最大限に活用</translation> <translation id="8730621377337864115">完了</translation> <translation id="8731388423028622182">iPhone をリセットしている途中で、アカウント <ph name="USER_NAME" /> からログアウトしました。下の [続行] をタップしてログインしてください。</translation> <translation id="87371078663613140">メニューバーのオプションを確認します</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. iPad の [設定] を開く</translation> <translation id="8976382372951310360">ヘルプ</translation> <translation id="8976414606286374109">カードは Google アカウントに保存されます。</translation> -<translation id="8978059030508051916">{count,plural, =0{不正使用されたパスワードはありません}=1{不正使用されたパスワード: {count} 件}other{不正使用されたパスワード: {count} 件}}</translation> <translation id="8981454092730389528">Google アクティビティ管理</translation> <translation id="8985320356172329008">Google にログイン済みのユーザー</translation> +<translation id="8986567980592931173">Google アカウントでログインすると、パスワードや履歴などを同期できます。</translation> <translation id="8998289560386111590">お使いのデバイスではご利用いただけません</translation> <translation id="9000089900434778519">検索エンジンは <ph name="DSE_NAME" /> に設定されています。検索履歴を削除する場合は、検索エンジンの手順をご確認ください(該当する場合)。</translation> <translation id="9008201768610948239">無視する</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb index a22eac9..464a897 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">შეტყობინებები</translation> <translation id="2496626742194544812">პირველ ჩანართზე გადასვლა</translation> <translation id="2500374554657206846">პაროლის შენახვის ვარიანტები</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> ხელახლა გამოყენებული პაროლი</translation> <translation id="2523363575747517183">ეს ვებსაიტი განუწყვეტლივ ცდილობს სხვა აპლიკაციის გახსნას.</translation> <translation id="2529021024822217800">ყველას გახსნა</translation> <translation id="2547458583188611426">სინქრონიზაცია არ მუშაობს. სინქრონიზაციის დასაწყებად შეიყვანეთ თქვენი საიდუმლო ფრაზა.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">სხვა ენებზე არსებული გვერდების თარგმნის შემოთავაზება</translation> <translation id="3588820906588687999">გამოსახულების გახსნა ახალ ჩანართზე</translation> <translation id="3595252146048399851"><ph name="BEGIN_LINK" />პარამეტრებიდან<ph name="END_LINK" /> ნებისმიერ დროს შეგიძლიათ აირჩიოთ, რისი სინქრონიზაცია გსურთ. თქვენი ისტორიის მეშვეობით Google შეძლებს Search-ისა და სხვა სერვისების თქვენზე მორგებას.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} სუსტი პაროლი}other{{COUNT} სუსტი პაროლი}}</translation> <translation id="3603009562372709545">ბმულის URL-ის კოპირება</translation> <translation id="3607167657931203000">ავტომატური შევსების მონაცემები</translation> <translation id="3608008480985212611">პარამეტრების სამართავად შედით სისტემაში.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">ჩემი მონაცემების კომბინირება</translation> <translation id="3929457972718048006">მისამართები</translation> <translation id="3943492037546055397">პაროლები</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} სუსტი პაროლი}other{{count} სუსტი პაროლი}}</translation> <translation id="3959736869653157332">მენიუ → ახალი ინკოგნიტო ჩანართი</translation> <translation id="3967822245660637423">ჩამოტვირთვა დასრულდა</translation> <translation id="3968505803272650567">ინტერესების მართვა</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">ჩანართების ჩვენება</translation> <translation id="6187302354554850004">ბოლო სინქრონიზაცია: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">წაუკითხავი</translation> -<translation id="6193424046394092997">{count,plural, =1{ჩაინიშნა „{title}“-ში}other{ჩაინიშნა „{title}“-ში}}</translation> <translation id="6196207969502475924">ხმოვანი ძიება</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ჩანართის დახურვა}other{{COUNT} ჩანართის დახურვა}}</translation> <translation id="6210079381482819663">ჩანართები, რომლებიც მინიმუმ <ph name="THRESHOLD" /> დღის განმავლობაში არ გამოიყენება, გადმოვა აქ. ამის შეცვლა ნებისმიერ დროს შეგიძლიათ <ph name="BEGIN_LINK" />პარამეტრებიდან<ph name="END_LINK" />.</translation> @@ -820,7 +816,6 @@ თქვენი მონაცემები დაიშიფრა სინქრონიზაციის საიდუმლო ფრაზის მეშვეობით <ph name="TIME" />-ში. სინქრონიზაციის დასაწყებად, შეიყვანეთ საიდუმლო ფრაზა.</translation> <translation id="6418346271604475326">PDF მზადდება</translation> -<translation id="6421095165635308">{count,plural, =1{სანიშნე შეინახა თქვენი ანგარიშის ({email}) „{title}“-ში}other{სანიშნეები შეინახა თქვენი ანგარიშის ({email}) „{title}“-ში}}</translation> <translation id="6429213933892582367">გახსენით „პაროლების ვარიანტები“</translation> <translation id="6434591244308415567">წარმოიქმნა შეცდომა. ცადეთ მოგვიანებით.</translation> <translation id="6435236283694032571">საკითხავ სიაში დამატება</translation> @@ -1206,7 +1201,6 @@ <translation id="8974714402877957201">1. გახსენით iPad-ის პარამეტრები</translation> <translation id="8976382372951310360">დახმარება</translation> <translation id="8976414606286374109">ბარათები შეინახება თქვენს Google ანგარიშში.</translation> -<translation id="8978059030508051916">{count,plural, =0{გატეხილი პაროლები არ არის}=1{{count} გატეხილი პაროლი}other{{count} გატეხილი პაროლი}}</translation> <translation id="8981454092730389528">Google აქტივობის მართვის საშუალებები</translation> <translation id="8985320356172329008">Google-ში შესულია:</translation> <translation id="8998289560386111590">მიუწვდომელია თქვენს მოწყობილობაზე</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_strings_kk.xtb index 1b34cc1..74fb0f44 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Хабарландырулар</translation> <translation id="2496626742194544812">Бірінші қойындыға өту</translation> <translation id="2500374554657206846">Құпия сөзді сақтау опциялары</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> бұрын қолданылған құпия сөз</translation> <translation id="2523363575747517183">Бұл сайт қайта-қайта басқа қолданбаны ашуға тырысуда.</translation> <translation id="2529021024822217800">Барлығын ашу</translation> <translation id="2547458583188611426">Синхрондау жұмыс істемейді. Синхрондауды бастау үшін құпия фразаны енгізіңіз.</translation> @@ -279,7 +278,7 @@ <translation id="2843803966603263712">Аудару параметрлерін қайта орнату</translation> <translation id="284581348330507117">Бірегей құпия сөздер жасаңыз.</translation> <translation id="2848086008667475748">Параметрлерде әдепкі браузер етіп орнату…</translation> -<translation id="2858204748079866344">Құпиялылығыңызды сақтау мақсатында құпия сөзіңіз бұл өріске автоматты түрде толтырылмайды.</translation> +<translation id="2858204748079866344">Құпиялығыңызды сақтау мақсатында құпия сөзіңіз бұл өріске автоматты түрде толтырылмайды.</translation> <translation id="285960592395650245">Жүктеуді қайта орындап көру</translation> <translation id="2870560284913253234">Сайт</translation> <translation id="2871695793448672541">Жасырын құпия сөз</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Басқа тілдердегі беттердің аудармасын ұсыну</translation> <translation id="3588820906588687999">Кескінді жаңа қойындыда ашу</translation> <translation id="3595252146048399851">Синхрондалатын контентті кез келген уақытта <ph name="BEGIN_LINK" />Параметрлер<ph name="END_LINK" /> бөлімінде таңдай аласыз. Google жүйесі Search және басқа да қызметтерді тарихыңызға негіздеп жекелендіре алады.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} оңай құпия сөз}other{{COUNT} оңай құпия сөз}}</translation> <translation id="3603009562372709545">URL сілтемесін көшіру</translation> <translation id="3607167657931203000">Автотолтыру деректері</translation> <translation id="3608008480985212611">Параметрлерді басқару үшін аккаунтқа кіріңіз.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Деректерімді аралас пайдалану</translation> <translation id="3929457972718048006">Мекенжайлар</translation> <translation id="3943492037546055397">Құпия сөздер</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} оңай құпия сөз}other{{count} оңай құпия сөз}}</translation> <translation id="3959736869653157332">Мәзір → Жаңа инкогнито қойындысы</translation> <translation id="3967822245660637423">Жүктеп алынды</translation> <translation id="3968505803272650567">Қызығушылықтарды басқару</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Қойындыларды көрсету</translation> <translation id="6187302354554850004">Соңғы рет синхрондалған: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Оқылмаған</translation> -<translation id="6193424046394092997">{count,plural, =1{Бетбелгі {title} қалтасына қосылды}other{Бетбелгі {title} қалтасына қосылды}}</translation> <translation id="6196207969502475924">Дауыспен іздеу</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} қойындыны жабу}other{{COUNT} қойындыны жабу}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> немесе одан да көп күн пайдаланылмаған қойындылар осы жерге жылжытылады. Мұны кез келген уақытта <ph name="BEGIN_LINK" />параметрлерде<ph name="END_LINK" /> өзгерте аласыз.</translation> @@ -824,7 +820,6 @@ Деректер <ph name="TIME" /> күні синхрондаудың құпия фразасымен шифрланды. Синхрондауды бастау үшін фразаны енгізіңіз.</translation> <translation id="6418346271604475326">PDF дайындалуда</translation> -<translation id="6421095165635308">{count,plural, =1{{email} аккаунтыңызда {title} ішіне сақталған бетбелгі}other{{email} аккаунтыңызда {title} ішіне сақталған бетбелгілер}}</translation> <translation id="6429213933892582367">"Құпия сөз опциялары" параметрін ашыңыз.</translation> <translation id="6434591244308415567">Қате шықты. Әрекетті кейінірек қайталаңыз.</translation> <translation id="6435236283694032571">Оқу тізіміне қосу</translation> @@ -1044,7 +1039,7 @@ <translation id="7870750252270996949">Lens-ден көшірілген сурет</translation> <translation id="7879275349003161544">Жүктеп алынғандарды көрсету</translation> <translation id="7884694604461143138">Тарихтан іздеу (<ph name="COUNT" /> нәтиже табылды)</translation> -<translation id="7887198238286927132">Құпиялылығыңызды сақтау мақсатында бұл өріс автоматты түрде толтырылмайды.</translation> +<translation id="7887198238286927132">Құпиялығыңызды сақтау мақсатында бұл өріс автоматты түрде толтырылмайды.</translation> <translation id="7911190106180361398">Ұйымыңыз кез келген деректі синхрондауыңызға рұқсат бермейді.</translation> <translation id="7920949005883349320">Құпиялық және қауіпсіздік</translation> <translation id="7930998711684428189">Құпия сөздер қолды болған жағдайда, сізге бұл туралы хабарлайды.</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. iPad параметрлерін ашыңыз.</translation> <translation id="8976382372951310360">Анықтама</translation> <translation id="8976414606286374109">Карталар Google аккаунтыңызға сақталады.</translation> -<translation id="8978059030508051916">{count,plural, =0{Ұрланған құпия сөздер жоқ}=1{{count} ұрланған құпия сөз}other{{count} ұрланған құпия сөз}}</translation> <translation id="8981454092730389528">Google-дағы әрекеттерді басқару элементтері</translation> <translation id="8985320356172329008">Google жүйесіне кірген аккаунт:</translation> <translation id="8986567980592931173">Құпия сөздерді, тарихты және т.б. синхрондау үшін Google аккаунтымен кіріңіз.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_km.xtb b/ios/chrome/app/strings/resources/ios_strings_km.xtb index f0ada76a..0a2a204 100644 --- a/ios/chrome/app/strings/resources/ios_strings_km.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_km.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">ការជូនដំណឹង</translation> <translation id="2496626742194544812">ចូលទៅផ្ទាំងដំបូង</translation> <translation id="2500374554657206846">ជម្រើសសម្រាប់រក្សាទុកពាក្យសម្ងាត់</translation> -<translation id="2502415369140591438">ពាក្យសម្ងាត់ដែលប្រើឡើងវិញ <ph name="COUNT" /></translation> <translation id="2523363575747517183">គេហទំព័រនេះកំពុងព្យាយាមបើកកម្មវិធីផ្សេងទៀតម្តងហើយម្តងទៀត។</translation> <translation id="2529021024822217800">បើកទាំងអស់</translation> <translation id="2547458583188611426">សមកាលកម្មមិនដំណើរការទេ។ ដើម្បីចាប់ផ្ដើមធ្វើសមកាលកម្ម សូមបញ្ចូលឃ្លាសម្ងាត់របស់អ្នក។</translation> @@ -322,6 +321,7 @@ <translation id="3131206671572504478">ទប់ស្កាត់ទាំងអស់</translation> <translation id="313283613037595347">បង្កើតផ្ទាំងឯកជនថ្មី។</translation> <translation id="3146109040683991651">កំណត់ Chrome ជាកម្មវិធីរុករកតាមអ៊ីនធឺណិតលំនាំដើម</translation> +<translation id="3152169319860972623">ការពិនិត្យពាក្យសម្ងាត់ពិនិត្យមើលពាក្យសម្ងាត់ដែលអ្នកបានរក្សាទុក រួចប្រាប់អ្នកឱ្យប្រុងប្រយ័ត្នអំពីការបែកធ្លាយទាំងឡាយលើអ៊ីណធឺណិត។ <ph name="BEGIN_LINK" />ស្វែងយល់បន្ថែម។<ph name="END_LINK" /></translation> <translation id="3153862085237805241">រក្សាទុកបណ្ណ</translation> <translation id="3157387275655328056">បន្ថែមទៅបញ្ជីអាន</translation> <translation id="3157684681743766797">សម្គាល់ទាំងអស់…</translation> @@ -354,6 +354,7 @@ <translation id="3324193307694657476">អាសយដ្ឋាន 2</translation> <translation id="3328459813621383194">ផ្លាស់ទីផ្ទាំងដែលអសកម្ម</translation> <translation id="3328801116991980348">ព័ត៌មានគេហទំព័រ</translation> +<translation id="3344485292736684439">{count,plural, =1{បានរក្សាទុកចំណាំទៅក្នុង "{title}" នៅក្នុងគណនី {email} របស់អ្នក}other{បានរក្សាទុកចំណាំទៅក្នុង "{title}" នៅក្នុងគណនី {email} របស់អ្នក}}</translation> <translation id="3371831930909698441">មានមុខងារបកប្រែ។ ជម្រើសមាននៅជិតផ្នែកខាងក្រោមបំផុតរបស់អេក្រង់។</translation> <translation id="3377063233124932127">ឥឡូវនេះ ចំណាំ ពាក្យសម្ងាត់ និងអ្វីៗជាច្រើនទៀតដែលបានរក្សាទុករបស់អ្នកស្ថិតនៅខាងលើគេបំផុត។</translation> <translation id="3393920035788932672">បានអនុញ្ញាតការលេចឡើង</translation> @@ -391,7 +392,6 @@ <translation id="3581564640715911333">ផ្តល់ជូនការបកប្រែទំព័រជាភាសាផ្សេងទៀត</translation> <translation id="3588820906588687999">បើករូបភាពនៅក្នុងផ្ទាំងថ្មី</translation> <translation id="3595252146048399851">អ្នកអាចជ្រើសរើសអ្វីដែលត្រូវធ្វើសមកាលកម្មនៅក្នុង<ph name="BEGIN_LINK" />ការកំណត់<ph name="END_LINK" />បានជានិច្ច។ Google អាចកំណត់ម៉ាស៊ីនស្វែងរក និងសេវាកម្មផ្សេងទៀតឱ្យមានលក្ខណៈផ្ទាល់ខ្លួន ផ្អែកតាមប្រវត្តិរបស់អ្នក។</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{ពាក្យសម្ងាត់ខ្សោយ {COUNT}}other{ពាក្យសម្ងាត់ខ្សោយ {COUNT}}}</translation> <translation id="3603009562372709545">ចម្លងតំណ URL</translation> <translation id="3607167657931203000">ទិន្នន័យបំពេញស្វ័យប្រវត្តិ</translation> <translation id="3608008480985212611">ចូលគណនីដើម្បីគ្រប់គ្រងចំណូលចិត្តរបស់អ្នក។</translation> @@ -437,7 +437,6 @@ <translation id="3928666092801078803">រួមបញ្ចូលទិន្នន័យរបស់ខ្ញុំ</translation> <translation id="3929457972718048006">អាសយដ្ឋាន</translation> <translation id="3943492037546055397">ពាក្យសម្ងាត់</translation> -<translation id="3951717558054674026">{count,plural, =1{ពាក្យសម្ងាត់ខ្សោយ {count}}other{ពាក្យសម្ងាត់ខ្សោយ {count}}}</translation> <translation id="3959736869653157332">ម៉ឺនុយ → ផ្ទាំងឯកជនថ្មី</translation> <translation id="3967822245660637423">ការទាញយកបានបញ្ចប់</translation> <translation id="3968505803272650567">គ្រប់គ្រងចំណាប់អារម្មណ៍</translation> @@ -774,7 +773,6 @@ <translation id="6184086493125982861">បង្ហាញផ្ទាំង</translation> <translation id="6187302354554850004">សមកម្មចុងក្រោយ: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">មិនទាន់អាន</translation> -<translation id="6193424046394092997">{count,plural, =1{បានដាក់ចំណាំទៅ {title}}other{បានដាក់ចំណាំទៅ {title}}}</translation> <translation id="6196207969502475924">ស្វែងរកដោយសម្លេង</translation> <translation id="6202364442240589072">{COUNT,plural, =1{បិទផ្ទាំង {COUNT}}other{បិទផ្ទាំង {COUNT}}}</translation> <translation id="6210079381482819663">ផ្ទាំងដែលមិនបានប្រើរយៈពេល <ph name="THRESHOLD" /> ថ្ងៃឡើងទៅត្រូវបានផ្លាស់ទីមកទីនេះ។ អ្នកអាចផ្លាស់ប្ដូរលក្ខណៈនេះបានគ្រប់ពេលនៅក្នុង<ph name="BEGIN_LINK" />ការកំណត់<ph name="END_LINK" />។</translation> @@ -824,7 +822,6 @@ ទិន្នន័យរបស់អ្នកត្រូវបានអ៊ិនគ្រីបដោយប្រើឃ្លាសម្ងាត់សមកាលកម្មរបស់អ្នកកាលពីថ្ងៃ <ph name="TIME" />។ សូមបញ្ចូលវាដើម្បីចាប់ផ្តើមធ្វើសមកាលកម្ម។</translation> <translation id="6418346271604475326">កំពុងរៀបចំ PDF</translation> -<translation id="6421095165635308">{count,plural, =1{បានរក្សាទុកចំណាំទៅ {title} នៅក្នុងគណនីរបស់អ្នក {email}}other{បានរក្សាទុកចំណាំទៅ {title} នៅក្នុងគណនីរបស់អ្នក {email}}}</translation> <translation id="6429213933892582367">បើក "ជម្រើសពាក្យសម្ងាត់"</translation> <translation id="6434591244308415567">មានបញ្ហាកើតឡើង។ ព្យាយាមម្តងទៀតនៅពេលក្រោយ។</translation> <translation id="6435236283694032571">បញ្ចូលទៅក្នុងបញ្ជីអាន</translation> @@ -1037,6 +1034,7 @@ <translation id="7840771868269352570">ធាតុដែលអ្នកបានជ្រើសរើសនឹងត្រូវបានលុបចេញ។</translation> <translation id="7845466610722898">បង្ហាញបញ្ជីអាន</translation> <translation id="784551991304901159">ដើម្បីមើលឃើញខ្លឹមសារ សូមជ្រើសរើស "បើក" ពីម៉ឺនុយ</translation> +<translation id="7846158885638438868">{count,plural, =1{បានដាក់ចំណាំទៅក្នុង "{title}"}other{បានដាក់ចំណាំទៅក្នុង "{title}"}}</translation> <translation id="7853202427316060426">សកម្មភាព</translation> <translation id="7856733331829174190">មិនអាចទាញយកបានទេ</translation> <translation id="785938070103630874">បើកពាក្យសម្ងាត់ វិធីបង់ប្រាក់ ឬអាសយដ្ឋាន និងអ្វីៗជាច្រើនទៀត</translation> @@ -1213,7 +1211,6 @@ <translation id="8974714402877957201">1. បើកការកំណត់ iPad</translation> <translation id="8976382372951310360">ជំនួយ</translation> <translation id="8976414606286374109">បណ្ណត្រូវបានរក្សាទុកក្នុងគណនី Google របស់អ្នក។</translation> -<translation id="8978059030508051916">{count,plural, =0{គ្មានពាក្យសម្ងាត់ដែលរងការលុកលុយ}=1{ពាក្យសម្ងាត់ដែលរងការលុកលុយ {count}}other{ពាក្យសម្ងាត់ដែលរងការលុកលុយ {count}}}</translation> <translation id="8981454092730389528">ការគ្រប់គ្រងសកម្មភាព Google</translation> <translation id="8985320356172329008">បានចូល Google ជា</translation> <translation id="8986567980592931173">ចូលដោយប្រើគណនី Google របស់អ្នក ដើម្បីធ្វើសមកាលកម្មពាក្យសម្ងាត់ ប្រវត្តិរបស់អ្នក និងអ្វីៗជាច្រើនទៀត។</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb index 131681ff..946fb089 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">ಝೂಮ್ ಔಟ್</translation> <translation id="2230173723195178503">ವೆಬ್ಪುಟ ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="2239626343334228536">ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ...</translation> +<translation id="2242467532204595597">ಸಂದೇಶಗಳು, ಡಾಕ್ಯುಮೆಂಟ್ಗಳು ಮತ್ತು ಇತರ ಆ್ಯಪ್ಗಳಲ್ಲಿನ ಲಿಂಕ್ಗಳನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿದಾಗ ನೀವು ಯಾವಾಗ ಬೇಕಾದರೂ Chrome ಅನ್ನು ಬಳಸಬಹುದು.</translation> <translation id="22508856139286506">ವಜಾಗೊಳಿಸಿದ ಎಚ್ಚರಿಕೆಗಳು (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">ಮೆನು → ಇತಿಹಾಸ</translation> <translation id="2256933947031277845">ಕೆಲವು ಖಾತೆಗಳ ಮೂಲಕ ಮಾತ್ರ ಸೈನ್ ಇನ್ ಮಾಡಲು ನಿಮ್ಮ ಸಂಸ್ಥೆ ನಿಮಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} ಉಳಿಸಿದ ವಿಳಾಸ ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಲಭ್ಯವಿದೆ.}one{{count} ಉಳಿಸಿದ ವಿಳಾಸಗಳು ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಲಭ್ಯವಿದೆ.}other{{count} ಉಳಿಸಿದ ವಿಳಾಸಗಳು ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಲಭ್ಯವಿದೆ.}}</translation> <translation id="2421004566762153674">ಥರ್ಡ್-ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸುವುದು</translation> <translation id="2421044535038393232">ಎಡಿಟ್ ಮಾಡುತ್ತಿರಿ</translation> +<translation id="2423077901494354337">ನೀವು ಈಗ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ Chrome ನಿಂದ ಹೆಚ್ಚಿನ ಪ್ರಯೋಜನವನ್ನು ಪಡೆಯುತ್ತೀರಿ.</translation> <translation id="2434405374328098816">ನೀವು ಈಗಾಗಲೇ <ph name="WEBSITE" /> ನಲ್ಲಿ "<ph name="USERNAME" />" ಗೆ ಸಂಬಂಧಿಸಿದ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಉಳಿಸಿದ್ದೀರಿ</translation> <translation id="2435457462613246316">ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ತೋರಿಸಿ</translation> <translation id="2451654228769116489">ಟ್ಯಾಬ್ ಅನ್ನು ಪಿನ್ ಮಾಡಿ</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">ಸೂಚನೆಗಳು</translation> <translation id="2496626742194544812">ಮೊದಲ ಟ್ಯಾನ್ಗೆ ಹೋಗಿ</translation> <translation id="2500374554657206846">ಪಾಸ್ವರ್ಡ್ ಉಳಿಸಲು ಆಯ್ಕೆಗಳು</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> ಮರುಬಳಕೆ ಮಾಡಲಾದ ಪಾಸ್ವರ್ಡ್ಗಳು</translation> <translation id="2523363575747517183">ಈ ವೆಬ್ಸೈಟ್ ಪದೇ ಪದೇ ಇನ್ನೊಂದು ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ.</translation> <translation id="2529021024822217800">ಎಲ್ಲವನ್ನೂ ತೆರೆಯಿರಿ</translation> <translation id="2547458583188611426">ಸಿಂಕ್ ಕೆಲಸ ಮಾಡುತ್ತಿಲ್ಲ. ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು, ನಿಮ್ಮ ಪಾಸ್ಫ್ರೇಸ್ ನಮೂದಿಸಿ.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">ಪುಟಗಳನ್ನು ಇತರ ಭಾಷೆಗಳಲ್ಲಿ ಅನುವಾದಿಸಲು ಅವಕಾಶ ನೀಡಿ</translation> <translation id="3588820906588687999">ಚಿತ್ರವನ್ನು ಹೊಸ ಟ್ಯಾಬ್ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation> <translation id="3595252146048399851">ಏನನ್ನು ಸಿಂಕ್ ಮಾಡಬೇಕು ಎಂಬುದನ್ನು <ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ<ph name="END_LINK" /> ಯಾವಾಗ ಬೇಕಾದರೂ ನೀವು ಆಯ್ಕೆ ಮಾಡಬಹುದು. Google, ನಿಮ್ಮ ಇತಿಹಾಸವನ್ನು ಆಧರಿಸಿ, Search ಮತ್ತು ಇತರ ಸೇವೆಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಬಹುದು.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್}one{{COUNT} ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳು}other{{COUNT} ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳು}}</translation> <translation id="3603009562372709545">ಲಿಂಕ್ URL ನಕಲಿಸಿ</translation> <translation id="3607167657931203000">ಸ್ವಯಂಭರ್ತಿ ಡೇಟಾ</translation> <translation id="3608008480985212611">ನಿಮ್ಮ ಆದ್ಯತೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">ನನ್ನ ಡೇಟಾ ಒಂದುಗೂಡಿಸಿ</translation> <translation id="3929457972718048006">ವಿಳಾಸಗಳು</translation> <translation id="3943492037546055397">ಪಾಸ್ವರ್ಡ್ಗಳು</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್}one{{count} ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳು}other{{count} ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳು}}</translation> <translation id="3959736869653157332">ಮೆನು → ಹೊಸ ಅಜ್ಞಾತ ಟ್ಯಾಬ್</translation> <translation id="3967822245660637423">ಡೌನ್ಲೋಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ</translation> <translation id="3968505803272650567">ಆಸಕ್ತಿಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">ಟ್ಯಾಬ್ಗಳನ್ನು ತೋರಿಸಿ</translation> <translation id="6187302354554850004">ಕೊನೆಯದಾಗಿ ಸಿಂಕ್ ಮಾಡಿರುವುದು: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">ಓದದಿರುವುದು</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} ಗೆ ಬುಕ್ಮಾರ್ಕ್ ಮಾಡಲಾಗಿದೆ}one{{title} ಗೆ ಬುಕ್ಮಾರ್ಕ್ ಮಾಡಲಾಗಿದೆ}other{{title} ಗೆ ಬುಕ್ಮಾರ್ಕ್ ಮಾಡಲಾಗಿದೆ}}</translation> <translation id="6196207969502475924">ಧ್ವನಿ ಹುಡುಕಾಟ</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿರಿ}one{{COUNT} ಟ್ಯಾಬ್ಗಳನ್ನು ಮುಚ್ಚಿರಿ}other{{COUNT} ಟ್ಯಾಬ್ಗಳನ್ನು ಮುಚ್ಚಿರಿ}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> ದಿನಗಳು ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಸಮಯದಿಂದ ಬಳಸಲಾಗಿರದ ಟ್ಯಾಬ್ಗಳನ್ನು ಇಲ್ಲಿಗೆ ಸರಿಸಲಾಗುತ್ತದೆ. ನೀವು ಇದನ್ನು <ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ<ph name="END_LINK" /> ಯಾವಾಗ ಬೇಕಾದರೂ ಬದಲಾಯಿಸಬಹುದು.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">ಹೊಸ ಡೌನ್ಲೋಡ್ ಪ್ರಾರಂಭಿಸುವುದೇ?</translation> <translation id="6347953390226388422">{count,plural, =1{ಈ ವಿಳಾಸವನ್ನು ನಿಮ್ಮ Google ಖಾತೆಯಿಂದ (<ph name="USER_EMAIL" />) ಹಾಗೂ ಈ ಸಾಧನದಿಂದ ಅಳಿಸಲಾಗುತ್ತದೆ.}one{ಈ ವಿಳಾಸಗಳನ್ನು ನಿಮ್ಮ Google ಖಾತೆಯಿಂದ (<ph name="USER_EMAIL" />) ಹಾಗೂ ಈ ಸಾಧನದಿಂದ ಅಳಿಸಲಾಗುತ್ತದೆ.}other{ಈ ವಿಳಾಸಗಳನ್ನು ನಿಮ್ಮ Google ಖಾತೆಯಿಂದ (<ph name="USER_EMAIL" />) ಹಾಗೂ ಈ ಸಾಧನದಿಂದ ಅಳಿಸಲಾಗುತ್ತದೆ.}}</translation> <translation id="634878792104344809">ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲೂ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳು, ಇತಿಹಾಸ ಹಾಗೂ ಇನ್ನೂ ಹೆಚ್ಚಿನವುಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಿ</translation> +<translation id="6348855835728304880">ಈ ಸಾಧನದಲ್ಲಿ ಇತರ ಆ್ಯಪ್ಗಳಾದ್ಯಂತ ನಿಮ್ಮ Chrome ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿ.</translation> <translation id="6355820205320395730">ದುರ್ಬಲ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಸುಲಭವಾಗಿ ಊಹಿಸಬಹುದು. ನೀವು ಸದೃಢ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ರಚಿಸುತ್ತಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ಭದ್ರತಾ ಸಲಹೆಗಳನ್ನು ನೋಡಿ.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> ಅನ್ನು ಫಾಲೋ ಮಾಡಿ</translation> <translation id="6362362396625799311">ಯಾವುದೇ ಅದೃಶ್ಯ ಟ್ಯಾಬ್ಗಳಿಲ್ಲ</translation> @@ -821,7 +820,6 @@ ನಿಮ್ಮ ಡೇಟಾವನ್ನು <ph name="TIME" /> ರಂದು ನಿಮ್ಮ ಸಿಂಕ್ ಪಾಸ್ಫ್ರೇಸ್ನೊಂದಿಗೆ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು ಅದನ್ನು ನಮೂದಿಸಿ.</translation> <translation id="6418346271604475326">PDF ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ</translation> -<translation id="6421095165635308">{count,plural, =1{ಬುಕ್ಮಾರ್ಕ್ ಅನ್ನು {title} ನಲ್ಲಿನ ನಿಮ್ಮ {email} ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ}one{ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು {title} ನಲ್ಲಿನ ನಿಮ್ಮ {email} ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ}other{ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು {title} ನಲ್ಲಿನ ನಿಮ್ಮ {email} ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ}}</translation> <translation id="6429213933892582367">ಪಾಸ್ವರ್ಡ್ ಆಯ್ಕೆಗಳು ಎಂಬುದನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="6434591244308415567">ಒಂದು ದೋಷ ಸಂಭವಿಸಿದೆ. ಆನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="6435236283694032571">ಓದುವ ಪಟ್ಟಿಗೆ ಸೇರಿಸಿ</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">'ಹೊಸತೇನಿದೆ' ಎಂಬಲ್ಲಿ ಹೊಸ ಫೀಚರ್ಗಳು ಹಾಗೂ ಸಲಹೆಗಳನ್ನು ಎಕ್ಸ್ಪ್ಲೋರ್ ಮಾಡಿ</translation> <translation id="7223102419539744003">ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿರಿ</translation> <translation id="722454870747268814">ಹೊಸ ಅದೃಶ್ಯ ಟ್ಯಾಬ್</translation> +<translation id="723787869754590019">ಆಟೋಫಿಲ್ಗಾಗಿ Chrome ಬಳಸಿ</translation> <translation id="7265758999917665941">ಈ ಸೈಟ್ಗೆ ಎಂದಿಗೂ ಬೇಡ</translation> <translation id="7272437679830969316">ನಿಮ್ಮ ಗುರುತನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಕಲಿಸಲಾಗಿಲ್ಲ.</translation> <translation id="7291368939935408496">ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">ಊಹಿಸಲು ಕಷ್ಟವಾದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ನೀವು ಬಳಸುತ್ತಿದ್ದೀರಿ</translation> <translation id="8668210798914567634">ಈ ಪುಟವನ್ನು ನಿಮ್ಮ ಓದುವಿಕೆ ಪಟ್ಟಿಯಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ.</translation> <translation id="8680787084697685621">ಖಾತೆಯ ಸೈನ್-ಇನ್ ವಿವರಗಳು ಹಳೆಯದಾಗಿವೆ.</translation> +<translation id="868773710103052534">ನೀವು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ</translation> <translation id="8693663554456874301">{count,plural, =1{ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿ}one{ಟ್ಯಾಬ್ಗಳನ್ನು ಮುಚ್ಚಿ}other{ಟ್ಯಾಬ್ಗಳನ್ನು ಮುಚ್ಚಿ}}</translation> <translation id="8703536910991780768">ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳು ಸದೃಢವಾಗಿರುವಂತೆ ತೋರುತ್ತಿವೆ</translation> <translation id="8706588385081740091">ಪಾಸ್ವರ್ಡ್ಗಳು</translation> <translation id="8717864919010420084">ಲಿಂಕ್ ನಕಲಿಸಿ</translation> <translation id="8721297211384281569">ಪರಿಕರಗಳ ಮೆನು</translation> <translation id="8725066075913043281">ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</translation> +<translation id="8727043961453758442">Chrome ನಿಂದ ಹೆಚ್ಚಿನ ಪ್ರಯೋಜನವನ್ನು ಪಡೆಯಿರಿ</translation> <translation id="8730621377337864115">ಮುಗಿದಿದೆ</translation> <translation id="8731388423028622182">ನಿಮ್ಮ ಐಫೋನ್ ರೀಸೆಟ್ನ ಭಾಗವಾಗಿ ನಿಮ್ಮ ಖಾತೆ <ph name="USER_NAME" /> ನಿಂದ ನಿಮ್ಮನ್ನು ಸೈನ್ಔಟ್ ಮಾಡಲಾಗಿದೆ. ಸೈನ್ ಇನ್ ಮಾಡಲು, ಕೆಳಗೆ ಮುಂದುವರಿಸಿ ಎಂಬುದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation> <translation id="87371078663613140">ಮೆನು ಬಾರ್ನಲ್ಲಿ ಆಯ್ಕೆಗಳನ್ನು ಎಕ್ಸ್ಪ್ಲೋರ್ ಮಾಡಿ</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. iPad ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="8976382372951310360">ಸಹಾಯ</translation> <translation id="8976414606286374109">ಕಾರ್ಡ್ಗಳನ್ನು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ.</translation> -<translation id="8978059030508051916">{count,plural, =0{ಯಾವುದೇ ಪಾಸ್ವರ್ಡ್ಗಳು ಅಪಾಯಕ್ಕೀಡಾಗಿಲ್ಲ}=1{{count} ಪಾಸ್ವರ್ಡ್ ಅಪಾಯಕ್ಕೀಡಾಗಿದೆ}one{{count} ಪಾಸ್ವರ್ಡ್ಗಳು ಅಪಾಯಕ್ಕೀಡಾಗಿವೆ}other{{count} ಪಾಸ್ವರ್ಡ್ಗಳು ಅಪಾಯಕ್ಕೀಡಾಗಿವೆ}}</translation> <translation id="8981454092730389528">Google ಚಟುವಟಿಕೆ ನಿಯಂತ್ರಣಗಳು</translation> <translation id="8985320356172329008">Google ಗೆ ಹೀಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗಿದೆ</translation> +<translation id="8986567980592931173">ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳು, ಇತಿಹಾಸ ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ಸಿಂಕ್ ಮಾಡಲು ನಿಮ್ಮ Google ಖಾತೆಯ ಮೂಲಕ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation> <translation id="8998289560386111590">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ</translation> <translation id="9000089900434778519">ನಿಮ್ಮ ಹುಡುಕಾಟ ಎಂಜಿನ್ <ph name="DSE_NAME" /> ಆಗಿದೆ. ಅನ್ವಯಿಸಿದರೆ, ನಿಮ್ಮ ಹುಡುಕಾಟ ಇತಿಹಾಸವನ್ನು ಅಳಿಸಲು ಅವರ ಸೂಚನೆಗಳನ್ನು ನೋಡಿ.</translation> <translation id="9008201768610948239">ನಿರ್ಲಕ್ಷಿಸಿ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb index 736ac2272..9e1c9a3 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">축소</translation> <translation id="2230173723195178503">웹페이지 로드됨</translation> <translation id="2239626343334228536">인터넷 사용 기록 삭제 중...</translation> +<translation id="2242467532204595597">이제 언제든 메시지, 문서, 기타 앱에서 링크를 탭하여 Chrome을 사용하세요.</translation> <translation id="22508856139286506">닫은 경고(<ph name="COUNT" />개)</translation> <translation id="2251686759395008410">메뉴 → 방문 기록</translation> <translation id="2256933947031277845">조직에서 특정 계정으로만 로그인하도록 허용합니다.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{키보드 위에 저장된 주소 {count}개가 있습니다.}other{키보드 위에 저장된 주소 {count}개가 있습니다.}}</translation> <translation id="2421004566762153674">타사 쿠키 차단</translation> <translation id="2421044535038393232">수정 계속</translation> +<translation id="2423077901494354337">이제 기기에서 Chrome을 최대한 활용할 수 있습니다.</translation> <translation id="2434405374328098816"><ph name="USERNAME" />님의 <ph name="WEBSITE" /> 비밀번호는 이미 저장되어 있습니다.</translation> <translation id="2435457462613246316">비밀번호 표시</translation> <translation id="2451654228769116489">탭 고정</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">알림</translation> <translation id="2496626742194544812">첫 번째 탭으로 이동</translation> <translation id="2500374554657206846">비밀번호 저장 옵션</translation> -<translation id="2502415369140591438">재사용된 비밀번호 <ph name="COUNT" />개</translation> <translation id="2523363575747517183">다른 애플리케이션을 열려는 반복적인 시도가 실행되는 웹사이트입니다.</translation> <translation id="2529021024822217800">모두 열기</translation> <translation id="2547458583188611426">동기화가 작동하지 않습니다. 동기화를 시작하려면 암호를 입력하세요.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">다른 언어로 된 페이지의 번역 옵션 제공</translation> <translation id="3588820906588687999">새 탭에서 이미지 열기</translation> <translation id="3595252146048399851">언제든지 <ph name="BEGIN_LINK" />설정<ph name="END_LINK" />에서 동기화할 항목을 선택할 수 있습니다. Google에서는 사용자의 방문 기록을 기반으로 Google 검색 및 기타 서비스를 맞춤설정할 수 있습니다.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{취약한 비밀번호 {COUNT}개}other{취약한 비밀번호 {COUNT}개}}</translation> <translation id="3603009562372709545">링크 URL 복사</translation> <translation id="3607167657931203000">데이터 자동 완성</translation> <translation id="3608008480985212611">환경설정을 관리하려면 로그인하세요.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">내 데이터 결합하기</translation> <translation id="3929457972718048006">주소</translation> <translation id="3943492037546055397">비밀번호</translation> -<translation id="3951717558054674026">{count,plural, =1{취약한 비밀번호 {count}개}other{취약한 비밀번호 {count}개}}</translation> <translation id="3959736869653157332">메뉴 → 새 시크릿 탭</translation> <translation id="3967822245660637423">다운로드 완료</translation> <translation id="3968505803272650567">관심분야 관리</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">탭 표시</translation> <translation id="6187302354554850004">최근 동기화: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">읽지않음</translation> -<translation id="6193424046394092997">{count,plural, =1{{title}에 북마크를 생성함}other{{title}에 북마크를 생성함}}</translation> <translation id="6196207969502475924">음성 검색</translation> <translation id="6202364442240589072">{COUNT,plural, =1{탭 {COUNT}개 닫기}other{탭 {COUNT}개 닫기}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" />일 이상 사용하지 않은 탭은 여기로 이동됩니다. 언제든지 <ph name="BEGIN_LINK" />설정<ph name="END_LINK" />에서 변경할 수 있습니다.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">다운로드를 새로 시작하시겠습니까?</translation> <translation id="6347953390226388422">{count,plural, =1{Google 계정(<ph name="USER_EMAIL" />)과 이 기기에서 이 주소가 삭제됩니다.}other{Google 계정(<ph name="USER_EMAIL" />)과 이 기기에서 이 주소가 삭제됩니다.}}</translation> <translation id="634878792104344809">비밀번호, 방문 기록 등을 모든 기기에 동기화</translation> +<translation id="6348855835728304880">이 기기의 다른 앱에서 Chrome 비밀번호 등에 액세스합니다.</translation> <translation id="6355820205320395730">취약한 비밀번호는 추측하기 쉽습니다. 안전한 비밀번호를 만들어야 합니다. <ph name="BEGIN_LINK" />보안 도움말 더보기<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> 팔로우</translation> <translation id="6362362396625799311">시크릿 탭 없음</translation> @@ -821,7 +820,6 @@ <ph name="TIME" />에 동기화 암호로 데이터가 암호화되었습니다. 동기화를 시작하려면 입력하세요.</translation> <translation id="6418346271604475326">PDF 준비 중</translation> -<translation id="6421095165635308">{count,plural, =1{계정({email})의 {title}에 북마크가 저장됨}other{계정({email})의 {title}에 북마크가 저장됨}}</translation> <translation id="6429213933892582367">비밀번호 옵션을 엽니다.</translation> <translation id="6434591244308415567">오류가 발생했습니다. 나중에 다시 시도해 보세요.</translation> <translation id="6435236283694032571">읽기 목록에 추가</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">'새로운 기능'에서 새로운 기능과 팁을 살펴보세요.</translation> <translation id="7223102419539744003">탭 닫기</translation> <translation id="722454870747268814">새 시크릿 탭</translation> +<translation id="723787869754590019">Chrome에서 자동 완성 사용</translation> <translation id="7265758999917665941">이 사이트 제외</translation> <translation id="7272437679830969316">신원을 인증할 수 없습니다. 비밀번호가 복사되지 않았습니다.</translation> <translation id="7291368939935408496">비밀번호 준비 중...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">추측하기 어려운 비밀번호를 사용 중입니다</translation> <translation id="8668210798914567634">읽기 목록에 저장된 페이지입니다.</translation> <translation id="8680787084697685621">계정 로그인 세부정보의 유효기간이 만료되었습니다.</translation> +<translation id="868773710103052534">모두 완료되었습니다</translation> <translation id="8693663554456874301">{count,plural, =1{탭 닫기}other{탭 닫기}}</translation> <translation id="8703536910991780768">안전한 비밀번호</translation> <translation id="8706588385081740091">비밀번호</translation> <translation id="8717864919010420084">링크 복사</translation> <translation id="8721297211384281569">도구 메뉴</translation> <translation id="8725066075913043281">다시 시도하세요</translation> +<translation id="8727043961453758442">Chrome 최대한 활용하기</translation> <translation id="8730621377337864115">완료</translation> <translation id="8731388423028622182">iPhone 재설정 중 <ph name="USER_NAME" /> 계정에서 로그아웃되었습니다. 아래에서 '계속'을 탭하여 로그인하세요.</translation> <translation id="87371078663613140">메뉴 바의 옵션 살펴보기</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. iPad 설정을 엽니다.</translation> <translation id="8976382372951310360">도움말</translation> <translation id="8976414606286374109">카드가 Google 계정에 저장됩니다.</translation> -<translation id="8978059030508051916">{count,plural, =0{유출된 비밀번호 없음}=1{유출된 비밀번호 {count}개}other{유출된 비밀번호 {count}개}}</translation> <translation id="8981454092730389528">Google 활동 제어</translation> <translation id="8985320356172329008">다음 계정으로 Google에 로그인함:</translation> +<translation id="8986567980592931173">Google 계정으로 로그인하여 비밀번호, 방문 기록 등을 동기화하세요.</translation> <translation id="8998289560386111590">내 기기에서 사용할 수 없음</translation> <translation id="9000089900434778519">사용 중인 검색엔진은 <ph name="DSE_NAME" />입니다. 해당 검색엔진에서 검색 기록을 삭제할 수 있는 경우 검색 기록 삭제 안내를 확인하세요.</translation> <translation id="9008201768610948239">무시</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb index 662d5a7c..fa96c8c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Билдирмелер</translation> <translation id="2496626742194544812">Биринчи өтмөккө өтүү</translation> <translation id="2500374554657206846">Сырсөздү сактоо параметрлери</translation> -<translation id="2502415369140591438">Кайра колдонулган <ph name="COUNT" /> сырсөз бар</translation> <translation id="2523363575747517183">Бул вебсайт башка колдонмону ачууга бир нече жолу аракет кылууда.</translation> <translation id="2529021024822217800">Баарын ачуу</translation> <translation id="2547458583188611426">Шайкештирилген жок. Шайкештирүүнү баштоо үчүн сыр сүйлөмүңүздү киргизиңиз.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Башка тилдердеги барактарды которуу сунушталсын</translation> <translation id="3588820906588687999">Сүрөттү жаңы өтмөктө ачуу</translation> <translation id="3595252146048399851">Эмнени шайкештирүү керек экенин ар дайым <ph name="BEGIN_LINK" />параметрлерден<ph name="END_LINK" /> тандай аласыз. Google таржымалыңыздын негизинде Издөөнү жана башка кызматтарды жекелештириши мүмкүн.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} начар сырсөз бар}other{{COUNT} начар сырсөз бар}}</translation> <translation id="3603009562372709545">Шилтеменин URL көчүрүү</translation> <translation id="3607167657931203000">Дайындарды автотолтуруу</translation> <translation id="3608008480985212611">Параметрлериңизди тескөө үчүн аккаунтуңузга кириңиз.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Дайындарымды бириктирүү</translation> <translation id="3929457972718048006">Даректер</translation> <translation id="3943492037546055397">Сырсөздөр</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} начар сырсөз бар}other{{count} начар сырсөз бар}}</translation> <translation id="3959736869653157332">Меню → Жаңы жашыруун өтмөк</translation> <translation id="3967822245660637423">Жүктөп алуу аяктады</translation> <translation id="3968505803272650567">Кызыккан нерселерди башкаруу</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">Өтмөктөрдү көрсөтүү</translation> <translation id="6187302354554850004">Акркы жолу шайкешт: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Окулбагандар</translation> -<translation id="6193424046394092997">{count,plural, =1{Кыстарма {title} папкасында түзүлдү}other{Кыстарма {title} папкасында түзүлдү}}</translation> <translation id="6196207969502475924">Айтып издөө</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} өтмөктү жабуу}other{{COUNT} өтмөктү жабуу}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> же андан көбүрөөк күн колдонулбаган өтмөктөр ушул жерге жылдырылат. Бул мүмкүнчүлүктү каалаган убакта <ph name="BEGIN_LINK" />параметрлерден<ph name="END_LINK" /> өзгөртө аласыз.</translation> @@ -820,7 +816,6 @@ Дайын-даректериңиз саат <ph name="TIME" /> купуя сөз айкашы менен шифрлеген. Шайкештирип баштоо үчүн аны киргизиңиз.</translation> <translation id="6418346271604475326">PDF даярдалууда</translation> -<translation id="6421095165635308">{count,plural, =1{Кыстарма {email} аккаунтуңуздагы папкага ({title}) сакталды}other{Кыстармалар {email} аккаунтуңуздагы папкага ({title}) сакталды}}</translation> <translation id="6429213933892582367">Сырсөздүн параметрлерин ачыңыз</translation> <translation id="6434591244308415567">Ката кетти. Бир аздан кийин кайталап көрүңүз.</translation> <translation id="6435236283694032571">Окуу тизмесине кошуу</translation> @@ -1024,6 +1019,7 @@ <translation id="7781011649027948662">Бул баракча которулсунбу?</translation> <translation id="7781069478569868053">Жаңы өтмөк бети</translation> <translation id="7781829728241885113">Кечээ</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{1 күндөн кийин}other{{COUNT} күндөн кийин}}</translation> <translation id="778855399387580014">Chrome'дун жаңы өтмөгүндө издеңиз.</translation> <translation id="7791543448312431591">Кошуу</translation> <translation id="7807060072011926525">Google сунуштайт</translation> @@ -1205,7 +1201,6 @@ <translation id="8974714402877957201">1. iPad параметрлерин ачыңыз</translation> <translation id="8976382372951310360">Жардам</translation> <translation id="8976414606286374109">Карталар Google аккаунтуңузга сакталат.</translation> -<translation id="8978059030508051916">{count,plural, =0{Уурдалган сырсөздөр жок}=1{{count} уурдалган сырсөз бар}other{{count} уурдалган сырсөз бар}}</translation> <translation id="8981454092730389528">Google'дагы аракеттерди башкаруу каражаттары</translation> <translation id="8985320356172329008">Google'га төмөнкү ат менен кирдиңиз</translation> <translation id="8998289560386111590">Түзмөгүңүздө жеткиликтүү эмес</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb index e4c478b..19d60aa 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">ການແຈ້ງເຕືອນ</translation> <translation id="2496626742194544812">ເຂົ້າໄປແຖບທຳອິດ</translation> <translation id="2500374554657206846">ຕົວເລືອກເພື່ອບັນທຶກລະຫັດຜ່ານ</translation> -<translation id="2502415369140591438">ມີລະຫັດຜ່ານທີ່ໃຊ້ຊ້ຳ <ph name="COUNT" /> ລາຍການ</translation> <translation id="2523363575747517183">ເວັບໄຊກຳລັງພະຍາຍາມເປີດແອັບພລິເຄຊັນອື່ນຊໍ້າໄປມາຫຼາຍເທື່ອ.</translation> <translation id="2529021024822217800">ເປີດທັງຫມົດ</translation> <translation id="2547458583188611426">ຊິ້ງບໍ່ເຮັດວຽກ. ເພື່ອເລີ່ມຊິ້ງຂໍ້ມູນ, ໃຫ້ໃສ່ລະຫັດຜ່ານຂອງທ່ານ.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">ໃຫ້ການແປໜ້າຕ່າງໆເປັນພາສາອື່ນ</translation> <translation id="3588820906588687999">ຮູບເປີດຢູ່ໃນແຖບໃໝ່</translation> <translation id="3595252146048399851">ທ່ານສາມາດເລືອກສິ່ງທີ່ຈະຊິ້ງຂໍ້ມູນໄດ້ໃນ <ph name="BEGIN_LINK" />ການຕັ້ງຄ່າ<ph name="END_LINK" />. Google ອາດປັບແຕ່ງການຊອກຫາ ແລະ ບໍລິການອື່ນໆຂອງ Google ໃຫ້ເປັນແບບສ່ວນຕົວໂດຍອ້າງອີງໃສ່ປະຫວັດຂອງທ່ານ.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{ມີລະຫັດຜ່ານງ່າຍ {COUNT} ລາຍການ}other{ມີລະຫັດຜ່ານງ່າຍ {COUNT} ລາຍການ}}</translation> <translation id="3603009562372709545">ອັດສຳເນົາ URL ຂອງລິ້ງ</translation> <translation id="3607167657931203000">ຕື່ມຂໍ້ມູນອັດຕະໂນມັດ</translation> <translation id="3608008480985212611">ເຂົ້າສູ່ລະບົບເພື່ອຈັດການການຕັ້ງຄ່າຂອງທ່ານ.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">ລວມຂໍ້ມູນຂອງຂ້ອຍເຂົ້າກັນ</translation> <translation id="3929457972718048006">ທີ່ຢູ່</translation> <translation id="3943492037546055397">ລະຫັດຜ່ານ</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} ລະຫັດຜ່ານງ່າຍ}other{{count} ລະຫັດຜ່ານງ່າຍ}}</translation> <translation id="3959736869653157332">ເມນູ → ແຖບບໍ່ເປີດເຜີຍຕົວຕົນໃໝ່</translation> <translation id="3967822245660637423">ດາວໂຫຼດສຳເລັດ</translation> <translation id="3968505803272650567">ຈັດການຄວາມສົນໃຈ</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">ສະແດງແຖບ</translation> <translation id="6187302354554850004">ຊິ້ງຂໍ້ມູນຫຼ້າສຸດ: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">ຍັງບໍ່ໄດ້ອ່ານ</translation> -<translation id="6193424046394092997">{count,plural, =1{ໄດ້ບຸກມາກໃສ່ {title} ແລ້ວ}other{ໄດ້ບຸກມາກໃສ່ {title} ແລ້ວ}}</translation> <translation id="6196207969502475924">ການຄົ້ນຫາສຽງ</translation> <translation id="6202364442240589072">{COUNT,plural, =1{ປິດ {COUNT} ແຖບ}other{ປິດ {COUNT} ແຖບ}}</translation> <translation id="6210079381482819663">ແຖບທີ່ບໍ່ໄດ້ນຳໃຊ້ເປັນເວລາຢ່າງໜ້ອຍ <ph name="THRESHOLD" /> ຈະຖືກຍ້າຍມາຢູ່ບ່ອນນີ້. ທ່ານສາມາດປ່ຽນສິ່ງນີ້ຕອນໃດກໍໄດ້ໃນ <ph name="BEGIN_LINK" />ການຕັ້ງຄ່າ<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ ຂໍ້ມູນຂອງທ່ານຖືກເຂົ້າລະຫັດໄວ້ດ້ວຍວະລີຜ່ານການຊິ້ງຂອງທ່ານໃນວັນທີ <ph name="TIME" />. ໃຫ້ປ້ອນມັນເພື່ອເລີ່ມການຊິ້ງຂໍ້ມູນ.</translation> <translation id="6418346271604475326">ກຳລັງກະກຽມ PDF</translation> -<translation id="6421095165635308">{count,plural, =1{ບັນທຶກບຸກມາກໃສ່ {title} ໃນບັນຊີຂອງທ່ານ, {email} ແລ້ວ}other{ບັນທຶກບຸກມາກໃສ່ {title} ໃນບັນຊີຂອງທ່ານ, {email} ແລ້ວ}}</translation> <translation id="6429213933892582367">ເປີດຕົວເລືອກລະຫັດຜ່ານ</translation> <translation id="6434591244308415567">ເກີດຄວາມຜິດພາດຂຶ້ນ. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ.</translation> <translation id="6435236283694032571">ເພີ່ມໃສ່ລາຍການທີ່ຈະອ່ານ</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. ເປີດການຕັ້ງຄ່າ iPad</translation> <translation id="8976382372951310360">ຊ່ວຍເຫຼືອ</translation> <translation id="8976414606286374109">ບັດຕ່າງໆແມ່ນຖືກບັນທຶກໄປໃສ່ບັນຊີ Google ຂອງທ່ານ.</translation> -<translation id="8978059030508051916">{count,plural, =0{ບໍ່ມີລະຫັດຜ່ານທີ່ຖືກລະເມີດ}=1{{count} ລະຫັດຜ່ານທີ່ຖືກລະເມີດ}other{{count} ລະຫັດຜ່ານທີ່ຖືກລະເມີດ}}</translation> <translation id="8981454092730389528">ການຄວບຄຸມກິດຈະກຳ Google</translation> <translation id="8985320356172329008">ເຂົ້າສູ່ລະບົບ Google ເປັນ</translation> <translation id="8986567980592931173">ເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີ Google ຂອງທ່ານເພື່ອຊິ້ງລະຫັດຜ່ານ, ປະຫວັດ ແລໍະ ອື່ນໆຂອງທ່ານ.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb index f680b97..a11b4705 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Tolinti</translation> <translation id="2230173723195178503">TInklalapis įkeltas</translation> <translation id="2239626343334228536">Išvalomi naršymo duomenis...</translation> +<translation id="2242467532204595597">Naudokite „Chrome“ bet kada palietę nuorodas pranešimuose, dokumentuose ir kitose programose.</translation> <translation id="22508856139286506">Perspėjimai, kurių atsisakyta (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Meniu → „Istorija“</translation> <translation id="2256933947031277845">Organizacijoje leidžiama prisijungti tik naudojant tam tikras paskyras.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{Virš klaviatūros pasiekiamas {count} išsaugotas adresas.}one{Virš klaviatūros pasiekiamas {count} išsaugotas adresas.}few{Virš klaviatūros pasiekiami {count} išsaugoti adresai.}many{Virš klaviatūros pasiekiama {count} išsaugoto adreso.}other{Virš klaviatūros pasiekiami {count} išsaugotų adresų.}}</translation> <translation id="2421004566762153674">Blokuojami trečiosios šalies slapukai</translation> <translation id="2421044535038393232">Toliau redaguoti</translation> +<translation id="2423077901494354337">Dabar galite išnaudoti visas „Chrome“ galimybes įrenginyje.</translation> <translation id="2434405374328098816">Jau išsaugojote <ph name="USERNAME" /> slaptažodį svetainėje <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Rodyti slaptažodį</translation> <translation id="2451654228769116489">Prisegti skirtuką</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Pranešimai</translation> <translation id="2496626742194544812">Eiti į pirmą skirtuką</translation> <translation id="2500374554657206846">Slaptažodžio išsaugojimo parinktys</translation> -<translation id="2502415369140591438">Pakartotinai naudojamų slaptažodžių: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Ši svetainė pakartotinai bando atidaryti kitą programą.</translation> <translation id="2529021024822217800">Atidaryti viską</translation> <translation id="2547458583188611426">Sinchronizavimas neveikia. Jei norite pradėti sinchronizuoti, įveskite slaptafrazę.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Siūlyti versti puslapius į kitas kalbas</translation> <translation id="3588820906588687999">Atidaryti vaizdą naujo skirtuko lape</translation> <translation id="3595252146048399851">Bet kada galite pasirinkti, ką norite sinchronizuoti, skiltyje <ph name="BEGIN_LINK" />„Nustatymai“<ph name="END_LINK" />. „Google“ gali suasmeninti Paiešką ir kitas paslaugas pagal jūsų istoriją.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} nesudėtingas slaptažodis}one{{COUNT} nesudėtingas slaptažodis}few{{COUNT} nesudėtingi slaptažodžiai}many{{COUNT} nesudėtingo slaptažodžio}other{{COUNT} nesudėtingų slaptažodžių}}</translation> <translation id="3603009562372709545">Kopijuoti nuorodos URL</translation> <translation id="3607167657931203000">Autom. pild. duom.</translation> <translation id="3608008480985212611">Prisijunkite, kad galėtumėte tvarkyti nuostatas.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Sujungti duomenis</translation> <translation id="3929457972718048006">Adresai</translation> <translation id="3943492037546055397">Slaptažodžiai</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} nesudėtingas slaptažodis}one{{count} nesudėtingas slaptažodis}few{{count} nesudėtingi slaptažodžiai}many{{count} nesudėtingo slaptažodžio}other{{count} nesudėtingų slaptažodžių}}</translation> <translation id="3959736869653157332">Meniu → „Naujas inkognito skirtukas“</translation> <translation id="3967822245660637423">Atsisiuntimas baigtas</translation> <translation id="3968505803272650567">Tvarkyti pomėgius</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Rodyti skirtukus</translation> <translation id="6187302354554850004">Pask. k. sinchr.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Neskaityti</translation> -<translation id="6193424046394092997">{count,plural, =1{Sukurta žymė aplanke „{title}“}one{Sukurtos žymės aplanke „{title}“}few{Sukurtos žymės aplanke „{title}“}many{Sukurtos žymės aplanke „{title}“}other{Sukurtos žymės aplanke „{title}“}}</translation> <translation id="6196207969502475924">Paieška balsu</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Uždaryti {COUNT} skirtuką}one{Uždaryti {COUNT} skirtuką}few{Uždaryti {COUNT} skirtukus}many{Uždaryti {COUNT} skirtuko}other{Uždaryti {COUNT} skirtukų}}</translation> <translation id="6210079381482819663">Čia perkeliami skirtukai, kurie nebuvo naudojami <ph name="THRESHOLD" /> ar daugiau dienų. Tai galite bet kada pakeisti skiltyje <ph name="BEGIN_LINK" />Nustatymai<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Pradėti naują atsisiuntimą?</translation> <translation id="6347953390226388422">{count,plural, =1{Šis adresas bus ištrintas iš jūsų „Google“ paskyros (<ph name="USER_EMAIL" />) ir šio įrenginio.}one{Šie adresai bus ištrinti iš jūsų „Google“ paskyros (<ph name="USER_EMAIL" />) ir šio įrenginio.}few{Šie adresai bus ištrinti iš jūsų „Google“ paskyros (<ph name="USER_EMAIL" />) ir šio įrenginio.}many{Šie adresai bus ištrinti iš jūsų „Google“ paskyros (<ph name="USER_EMAIL" />) ir šio įrenginio.}other{Šie adresai bus ištrinti iš jūsų „Google“ paskyros (<ph name="USER_EMAIL" />) ir šio įrenginio.}}</translation> <translation id="634878792104344809">Sinchronizuokite slaptažodžius, istoriją ir kitą turinį visuose savo įrenginiuose</translation> +<translation id="6348855835728304880">Pasiekite „Chrome“ slaptažodžius ir kitas programas kitose šio įrenginio programose.</translation> <translation id="6355820205320395730">Nesudėtingus slaptažodžius lengva atspėti. Įsitikinkite, kad kuriate sudėtingus slaptažodžius. <ph name="BEGIN_LINK" />Žr. daugiau saugos patarimų.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Stebėti „<ph name="DOMAIN_NAME" />“</translation> <translation id="6362362396625799311">Nėra inkognito skirtukų</translation> @@ -821,7 +820,6 @@ <ph name="TIME" /> duomenys buvo užšifruoti naudojant sinchronizavimo slaptafrazę. Įveskite ją, kad pradėtumėte sinchronizuoti.</translation> <translation id="6418346271604475326">Ruošiamas PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Žymė išsaugota skiltyje „{title}“ jūsų paskyroje ({email})}one{Žymės išsaugotos skiltyje „{title}“ jūsų paskyroje ({email})}few{Žymės išsaugotos skiltyje „{title}“ jūsų paskyroje ({email})}many{Žymės išsaugotos skiltyje „{title}“ jūsų paskyroje ({email})}other{Žymės išsaugotos skiltyje „{title}“ jūsų paskyroje ({email})}}</translation> <translation id="6429213933892582367">Atidarykite slaptažodžio parinktis</translation> <translation id="6434591244308415567">Įvyko klaida. Vėliau bandykite dar kartą.</translation> <translation id="6435236283694032571">Pridėti prie skaitymo sąrašo</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Naršykite naujas funkcijas ir patarimus skiltyje „Kas naujo“</translation> <translation id="7223102419539744003">Uždaryti skirtuką</translation> <translation id="722454870747268814">Naujas inkognito skirtukas</translation> +<translation id="723787869754590019">„Chrome“ naudojimas automatinio pildymo funkcijai</translation> <translation id="7265758999917665941">Niekada šioje svetainėje</translation> <translation id="7272437679830969316">Nepavyko patvirtinti tapatybės. Slaptažodis nenukopijuotas.</translation> <translation id="7291368939935408496">Ruošiami slaptažodžiai…</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">Naudojate slaptažodžius, kuriuos turėtų būti sunku atspėti</translation> <translation id="8668210798914567634">Puslapis išsaugotas skaitymo sąraše.</translation> <translation id="8680787084697685621">Išsami prisijungimo prie paskyros informacija pasenusi.</translation> +<translation id="868773710103052534">Viskas nustatyta</translation> <translation id="8693663554456874301">{count,plural, =1{Uždaryti skirtuką}one{Uždaryti skirtukus}few{Uždaryti skirtukus}many{Uždaryti skirtukus}other{Uždaryti skirtukus}}</translation> <translation id="8703536910991780768">Jūsų slaptažodžiai atrodo sudėtingi</translation> <translation id="8706588385081740091">Slaptažodžiai</translation> <translation id="8717864919010420084">Kopijuoti nuorodą</translation> <translation id="8721297211384281569">Įrankių meniu</translation> <translation id="8725066075913043281">Bandyti dar kartą</translation> +<translation id="8727043961453758442">Išnaudokite visas „Chrome“ galimybes</translation> <translation id="8730621377337864115">Atlikta</translation> <translation id="8731388423028622182">Buvote atjungti nuo paskyros <ph name="USER_NAME" /> nustatant „iPhone“ iš naujo. Toliau palieskite „Tęsti“, kad prisijungtumėte.</translation> <translation id="87371078663613140">Naršykite parinktis meniu juostoje</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. Atidarykite „iPad“ nustatymus</translation> <translation id="8976382372951310360">Pagalba</translation> <translation id="8976414606286374109">Kortelės išsaugomos „Google“ paskyroje.</translation> -<translation id="8978059030508051916">{count,plural, =0{Pažeistų slaptažodžių nėra}=1{{count} pažeistas slaptažodis}one{{count} pažeistas slaptažodis}few{{count} pažeisti slaptažodžiai}many{{count} pažeisto slaptažodžio}other{{count} pažeistų slaptažodžių}}</translation> <translation id="8981454092730389528">„Google“ veiklos valdikliai</translation> <translation id="8985320356172329008">Prisijungta prie „Google“ kaip</translation> +<translation id="8986567980592931173">Prisijunkite naudodami „Google“ paskyrą, kad sinchronizuotumėte slaptažodžius, istoriją ir kt.</translation> <translation id="8998289560386111590">Nepasiekiama jūsų įrenginyje</translation> <translation id="9000089900434778519">Jūsų paieškos variklis yra „<ph name="DSE_NAME" />“. Peržiūrėkite jo instrukcijas, kaip ištrinti paieškos istoriją (jei taikoma).</translation> <translation id="9008201768610948239">Nepaisyti</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_strings_lv.xtb index 115811b..3f1f3dd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lv.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Paziņojumi</translation> <translation id="2496626742194544812">Pāriet uz pirmo cilni</translation> <translation id="2500374554657206846">Paroles saglabāšanas iespējas</translation> -<translation id="2502415369140591438">Atkārtoti izmantoto paroļu skaits: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Šī vietne atkārtoti mēģina atvērt citu lietojumprogrammu.</translation> <translation id="2529021024822217800">Atvērt visas</translation> <translation id="2547458583188611426">Sinhronizācija nedarbojas. Lai sāktu sinhronizāciju, ievadiet savu ieejas frāzi.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Piedāvāt tulkot lapas citās valodās</translation> <translation id="3588820906588687999">Atvērt attēlu jaunā cilnē</translation> <translation id="3595252146048399851"><ph name="BEGIN_LINK" />Iestatījumos<ph name="END_LINK" /> varat jebkurā laikā izvēlēties, ko sinhronizēt. Google var personalizēt pakalpojumu Meklēšana un citus pakalpojumus, ņemot vērā jūsu vēsturi.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} nedroša parole}zero{{COUNT} nedrošu paroļu}one{{COUNT} nedroša parole}other{{COUNT} nedrošas paroles}}</translation> <translation id="3603009562372709545">Kopēt saites URL</translation> <translation id="3607167657931203000">Aut. aizpildes dati</translation> <translation id="3608008480985212611">Pierakstieties, lai pārvaldītu savas preferences.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Datu apvienošana</translation> <translation id="3929457972718048006">Adreses</translation> <translation id="3943492037546055397">Paroles</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} nedroša parole}zero{{count} nedrošu paroļu}one{{count} nedroša parole}other{{count} nedrošas paroles}}</translation> <translation id="3959736869653157332">Izvēlne → Jauna inkognito cilne</translation> <translation id="3967822245660637423">Lejupielāde pabeigta</translation> <translation id="3968505803272650567">Pārvaldīt intereses</translation> @@ -772,7 +769,6 @@ <translation id="6184086493125982861">Rādīt cilnes</translation> <translation id="6187302354554850004">Pēdējoreiz sinhr.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Nelasīts</translation> -<translation id="6193424046394092997">{count,plural, =1{Grāmatzīme saglabāta mapē “{title}”}zero{Grāmatzīmes saglabātas mapē “{title}”}one{Grāmatzīmes saglabātas mapē “{title}”}other{Grāmatzīmes saglabātas mapē “{title}”}}</translation> <translation id="6196207969502475924">Meklēšana ar balsi</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Aizvērt {COUNT} cilni}zero{Aizvērt {COUNT} cilnes}one{Aizvērt {COUNT} cilni}other{Aizvērt {COUNT} cilnes}}</translation> <translation id="6210079381482819663">Šeit tiek pārvietotas cilnes, kas nav izmantotas vismaz <ph name="THRESHOLD" /> dienu(-as). <ph name="BEGIN_LINK" />Iestatījumos<ph name="END_LINK" /> varat jebkurā laikā to mainīt.</translation> @@ -821,7 +817,6 @@ Jūsu dati tika šifrēti, izmantojot jūsu sinhronizācijas ieejas frāzi šādā datumā: <ph name="TIME" />. Lai sāktu sinhronizēšanu, ievadiet ieejas frāzi.</translation> <translation id="6418346271604475326">PDF sagatave</translation> -<translation id="6421095165635308">{count,plural, =1{Grāmatzīme saglabāta jūsu kontā {email}, mapē “{title}”.}zero{Grāmatzīmes saglabātas jūsu kontā {email}, mapē “{title}”.}one{Grāmatzīmes saglabātas jūsu kontā {email}, mapē “{title}”.}other{Grāmatzīmes saglabātas jūsu kontā {email}, mapē “{title}”.}}</translation> <translation id="6429213933892582367">Atveriet sadaļu Paroles iespējas.</translation> <translation id="6434591244308415567">Radās kļūda. Vēlāk mēģiniet vēlreiz.</translation> <translation id="6435236283694032571">Pievienot lasīšanas sarakstam</translation> @@ -1025,6 +1020,7 @@ <translation id="7781011649027948662">Vai tulkot lapu?</translation> <translation id="7781069478569868053">Jaunas cilnes lapa</translation> <translation id="7781829728241885113">Vakar</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Pēc 1 dienas}zero{Pēc {COUNT} dienām}one{Pēc {COUNT} dienas}other{Pēc {COUNT} dienām}}</translation> <translation id="778855399387580014">Meklējiet jaunā Chrome cilnē.</translation> <translation id="7791543448312431591">Pievienot</translation> <translation id="7807060072011926525">Nodrošina Google</translation> @@ -1089,6 +1085,7 @@ <translation id="8136856065410661948">Piekļuve tiks izmantota, lai jūsu Apple kalendārā veidotu pasākumus no pārlūka Chrome un funkcijas Google Lens.</translation> <translation id="8156478151976189188">Paroļu sinhronizācija nedarbojas</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> konti</translation> +<translation id="8159358225423560600">tikko</translation> <translation id="8179976553408161302">Ievadīt</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Jūsu ierīces<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Tulkot lapu</translation> @@ -1119,6 +1116,7 @@ <translation id="8393889347136007944">Cilnes, kas nav izmantotas <ph name="THRESHOLD" /> dienu(-as)</translation> <translation id="8407669440184693619">Šai vietnei nav atrasta neviena parole</translation> <translation id="842017693807136194">Pierakstījies kā</translation> +<translation id="8423121072346537366">tikko</translation> <translation id="8425693829365242963">Jūsu paroles ir unikālas</translation> <translation id="8428045167754449968">Pilsēta/ciems</translation> <translation id="8428213095426709021">Iestatījumi</translation> @@ -1204,7 +1202,6 @@ <translation id="8974714402877957201">1. iPad planšetdatorā atveriet sadaļu Settings (Iestatījumi).</translation> <translation id="8976382372951310360">Palīdzība</translation> <translation id="8976414606286374109">Karšu informācija tiek saglabāta jūsu Google kontā.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nav uzlauztu paroļu}=1{{count} uzlauzta parole}zero{{count} uzlauztu paroļu}one{{count} uzlauzta parole}other{{count} uzlauztas paroles}}</translation> <translation id="8981454092730389528">Google aktivitātes vadīklas</translation> <translation id="8985320356172329008">Pierakstījies Google kontā kā</translation> <translation id="8998289560386111590">Nav pieejams jūsu ierīcē</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb index 737921dc..590b0bf 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Известувања</translation> <translation id="2496626742194544812">Одете на првата картичка</translation> <translation id="2500374554657206846">Опции за зачувување лозинка</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> повторно употребени лозинки</translation> <translation id="2523363575747517183">Веб-сајтов постојано се обидува да отвори друга апликација.</translation> <translation id="2529021024822217800">Отвори ги сите</translation> <translation id="2547458583188611426">Синхронизацијата не функционира. Внесете ја лозинката за да започне синхронизацијата.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Понудувај превод на страниците на други јазици</translation> <translation id="3588820906588687999">Отворете ја сликата во нова картичка</translation> <translation id="3595252146048399851">Секогаш може да изберете што да синхронизирате во <ph name="BEGIN_LINK" />Поставки<ph name="END_LINK" />. Google може да ги персонализира „Пребарување“ и другите услуги според вашата историја.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} слаба лозинка}one{{COUNT} слаба лозинка}other{{COUNT} слаби лозинки}}</translation> <translation id="3603009562372709545">Копирајте URL на врска</translation> <translation id="3607167657931203000">Автомат. пополнување</translation> <translation id="3608008480985212611">Најавете се за да управувате со вашите поставки.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Комбинирај ги моите податоци</translation> <translation id="3929457972718048006">Адреси</translation> <translation id="3943492037546055397">Лозинки</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} слаба лозинка}one{{count} слаба лозинка}other{{count} слаби лозинки}}</translation> <translation id="3959736869653157332">Мени → Нова картичка „Инкогнито“</translation> <translation id="3967822245660637423">Преземањето е завршено</translation> <translation id="3968505803272650567">Управувајте со интересите</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">Прикажи картички</translation> <translation id="6187302354554850004">Последна синхронизација: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Непрочитани</translation> -<translation id="6193424046394092997">{count,plural, =1{Додаден е обележувач во {title}}one{Додадени се обележувачи во {title}}other{Додадени се обележувачи во {title}}}</translation> <translation id="6196207969502475924">Гласовно пребарување</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Затвори {COUNT} картичка}one{Затвори {COUNT} картичка}other{Затвори {COUNT} картички}}</translation> <translation id="6210079381482819663">Картичките што не се користат <ph name="THRESHOLD" /> или повеќе дена се преместуваат тука. Ова може да го промените во секое време во <ph name="BEGIN_LINK" />Поставки<ph name="END_LINK" />.</translation> @@ -820,7 +816,6 @@ Вашите податоци беа шифрирани со лозинка за синхронизирање на <ph name="TIME" />. Внесете ја за да го започнете синхронизирањето.</translation> <translation id="6418346271604475326">Се подготвува PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Зачуван е обележувач во {title} во вашата сметка, {email}}one{Зачувани се обележувачи во {title} во вашата сметка, {email}}other{Зачувани се обележувачи во {title} во вашата сметка, {email}}}</translation> <translation id="6429213933892582367">Отворете „Опции за лозинки“</translation> <translation id="6434591244308415567">Грешка. Обидете се повторно подоцна.</translation> <translation id="6435236283694032571">Додај во „Списокот за читање“</translation> @@ -1024,6 +1019,7 @@ <translation id="7781011649027948662">Да се преведе страницата?</translation> <translation id="7781069478569868053">Страница во нова картичка</translation> <translation id="7781829728241885113">Вчера</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{По 1 ден}one{По {COUNT} ден}other{По {COUNT} дена}}</translation> <translation id="778855399387580014">Започнете пребарување во нова картичка на Chrome.</translation> <translation id="7791543448312431591">Додај</translation> <translation id="7807060072011926525">Обезбедено од Google</translation> @@ -1088,6 +1084,7 @@ <translation id="8136856065410661948">Ова ќе се користи за да се создаваат настани во вашиот „Календар на Apple“ од Chrome и Google Lens.</translation> <translation id="8156478151976189188">Синхронизацијата на лозинките не работи</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> сметки</translation> +<translation id="8159358225423560600">пред малку</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Вашите уреди<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Преведи ја страницата</translation> @@ -1118,6 +1115,7 @@ <translation id="8393889347136007944">Картички што не се користат <ph name="THRESHOLD" /> дена</translation> <translation id="8407669440184693619">Не се најдени лозинки за сајтов</translation> <translation id="842017693807136194">Најавен со</translation> +<translation id="8423121072346537366">Пред малку</translation> <translation id="8425693829365242963">Вашите лозинки се единствени</translation> <translation id="8428045167754449968">Град</translation> <translation id="8428213095426709021">Поставки</translation> @@ -1203,7 +1201,6 @@ <translation id="8974714402877957201">1. Отворете ги поставките за iPad</translation> <translation id="8976382372951310360">Помош</translation> <translation id="8976414606286374109">Картичките се зачувуваат во вашата сметка на Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Нема компромитирани лозинки}=1{{count} компромитирана лозинка}one{{count} компромитирана лозинка}other{{count} компромитирани лозинки}}</translation> <translation id="8981454092730389528">Контроли на активност на Google</translation> <translation id="8985320356172329008">Најавени сте на Google како</translation> <translation id="8998289560386111590">Не е достапен на вашиот уред</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb index 0f7ba0f6..2398fa02 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">അറിയിപ്പുകൾ</translation> <translation id="2496626742194544812">ആദ്യ ടാബിലേക്ക് പോകുക</translation> <translation id="2500374554657206846">പാസ്വേഡ് സംരക്ഷിക്കാനുള്ള ഓപ്ഷനുകൾ</translation> -<translation id="2502415369140591438">ആവർത്തിച്ച് ഉപയോഗിക്കുന്ന <ph name="COUNT" /> പാസ്വേഡുകൾ</translation> <translation id="2523363575747517183">മറ്റൊരു ആപ്പ് തുറക്കാൻ ഈ വെബ്സൈറ്റ് ആവർത്തിച്ച് ശ്രമിക്കുന്നു.</translation> <translation id="2529021024822217800">എല്ലാം തുറക്കുക</translation> <translation id="2547458583188611426">സമന്വയിപ്പിക്കൽ പ്രവർത്തിക്കുന്നില്ല. സമന്വയിപ്പിക്കാൻ തുടങ്ങുന്നതിന് നിങ്ങളുടെ പാസ്ഫ്രെയ്സ് നൽകുക.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">പേജുകൾ മറ്റ് ഭാഷകളിലേക്ക് വിവർത്തനം ചെയ്യാനുള്ള ഓഫർ</translation> <translation id="3588820906588687999">ചിത്രം പുതിയ ടാബിൽ തുറക്കുക</translation> <translation id="3595252146048399851">എന്തൊക്കെ സമന്വയിപ്പിക്കണമെന്ന് നിങ്ങൾക്ക് എല്ലായ്പ്പോഴും <ph name="BEGIN_LINK" />ക്രമീകരണത്തിൽ<ph name="END_LINK" /> തിരഞ്ഞെടുക്കാം. നിങ്ങളുടെ ചരിത്രത്തെ അടിസ്ഥാനമാക്കി, Search, മറ്റ് സേവനങ്ങൾ എന്നിവ Google വ്യക്തിപരമാക്കിയേക്കാം.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{ദുർബലമായ {COUNT} പാസ്വേഡ്}other{ദുർബലമായ {COUNT} പാസ്വേഡുകൾ}}</translation> <translation id="3603009562372709545">ലിങ്ക് URL പകർത്തുക</translation> <translation id="3607167657931203000">സ്വയമേവ പൂരിപ്പിക്കൽ ഡാറ്റ</translation> <translation id="3608008480985212611">നിങ്ങളുടെ മുൻഗണനകൾ മാനേജ് ചെയ്യാൻ സൈൻ ഇൻ ചെയ്യുക.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">എന്റെ വിവരങ്ങൾ സംയോജിപ്പിക്കുക</translation> <translation id="3929457972718048006">വിലാസങ്ങള്</translation> <translation id="3943492037546055397">പാസ്വേഡുകൾ</translation> -<translation id="3951717558054674026">{count,plural, =1{ദുർബലമായ {count} പാസ്വേഡ്}other{ദുർബലമായ {count} പാസ്വേഡുകൾ}}</translation> <translation id="3959736869653157332">മെനു → പുതിയ അദൃശ്യ ടാബ്</translation> <translation id="3967822245660637423">ഡൗൺലോഡ് പൂർത്തിയായി</translation> <translation id="3968505803272650567">താൽപ്പര്യങ്ങൾ മാനേജ് ചെയ്യുക</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">ടാബുകൾ കാണിക്കുക</translation> <translation id="6187302354554850004">അവസാനം സമന്വയിപ്പിച്ചത്: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">വായിക്കാത്തവ</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} എന്നതിലേക്ക് ബുക്ക്മാർക്ക് ചെയ്തു}other{{title} എന്നതിലേക്ക് ബുക്ക്മാർക്ക് ചെയ്തു}}</translation> <translation id="6196207969502475924">ശബ്ദ തിരയൽ</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ടാബ് അടയ്ക്കുക}other{{COUNT} ടാബുകൾ അടയ്ക്കുക}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> ദിവസമോ അതിൽ കൂടുതലോ ഉപയോഗിക്കാത്ത ടാബുകൾ ഇങ്ങോട്ട് നീക്കും. <ph name="BEGIN_LINK" />ക്രമീകരണത്തിൽ<ph name="END_LINK" /> ഏതുസമയത്തും നിങ്ങൾക്കിത് മാറ്റാം.</translation> @@ -824,7 +820,6 @@ <ph name="TIME" />-ന് നിങ്ങളുടെ സമന്വയ പാസ്ഫ്രെയ്സ് ഉപയോഗിച്ച് ഡാറ്റ എൻക്രിപ്റ്റ് ചെയ്തു. സമന്വയം ആരംഭിക്കുന്നതിന് പാസ്ഫ്രേസ് നൽകുക.</translation> <translation id="6418346271604475326">PDF തയ്യാറാക്കുന്നു</translation> -<translation id="6421095165635308">{count,plural, =1{{email} എന്ന നിങ്ങളുടെ അക്കൗണ്ടിലെ {title} എന്നതിലേക്ക് ബുക്ക്മാർക്ക് സംരക്ഷിച്ചു}other{{email} എന്ന നിങ്ങളുടെ അക്കൗണ്ടിലെ {title} എന്നതിലേക്ക് ബുക്ക്മാർക്കുകൾ സംരക്ഷിച്ചു}}</translation> <translation id="6429213933892582367">പാസ്വേഡ് ഓപ്ഷനുകൾ തുറക്കുക</translation> <translation id="6434591244308415567">ഒരു പിശകുണ്ടായി. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="6435236283694032571">വായിക്കാനുള്ളവയുടെ ലിസ്റ്റിൽ ചേർക്കുക</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. iPad ക്രമീകരണം തുറക്കുക</translation> <translation id="8976382372951310360">സഹായം</translation> <translation id="8976414606286374109">കാർഡുകൾ Google അക്കൗണ്ടിലേക്ക് സംരക്ഷിച്ചു.</translation> -<translation id="8978059030508051916">{count,plural, =0{അപഹരിക്കപ്പെട്ട പാസ്വേഡുകൾ ഒന്നുമില്ല}=1{അപഹരിക്കപ്പെട്ട {count} പാസ്വേഡ്}other{അപഹരിക്കപ്പെട്ട {count} പാസ്വേഡുകൾ}}</translation> <translation id="8981454092730389528">Google പ്രവർത്തന നിയന്ത്രണങ്ങൾ</translation> <translation id="8985320356172329008">ഇനിപ്പറയുന്ന പേരിൽ Google-ലേക്ക് സൈൻ ഇൻ ചെയ്തിരിക്കുന്നു</translation> <translation id="8986567980592931173">നിങ്ങളുടെ പാസ്വേഡുകളും ചരിത്രവും മറ്റും സമന്വയിപ്പിക്കാൻ നിങ്ങളുടെ Google Account ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്യുക.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_strings_mn.xtb index 3c0065f..13c7199 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Жижигрүүлэх</translation> <translation id="2230173723195178503">Веб хуудсыг ачаалласан</translation> <translation id="2239626343334228536">Хөтчийн өгөгдлийг устгаж байна...</translation> +<translation id="2242467532204595597">Мессеж, документ болон бусад аппад холбооснуудыг товших бүрдээ Chrome-г ашиглана уу.</translation> <translation id="22508856139286506">Үл хэрэгссэн сануулгууд (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Цэс → Түүх</translation> <translation id="2256933947031277845">Танай байгууллага таныг зөвхөн тодорхой бүртгэлүүдэд нэвтрэхийг зөвшөөрнө.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{Таны гарын дээр хадгалсан {count} хаяг боломжтой байна.}other{Таны гарын дээр хадгалсан {count} хаяг боломжтой байна.}}</translation> <translation id="2421004566762153674">Гуравдагч талын күүкиг блоклож байна</translation> <translation id="2421044535038393232">Үргэлжлүүлэн засах</translation> +<translation id="2423077901494354337">Та одоо төхөөрөмждөө Chrome-г бүрэн ашиглана.</translation> <translation id="2434405374328098816">Та <ph name="WEBSITE" />-д аль хэдийн "<ph name="USERNAME" />"-н нууц үгийг хадгалсан</translation> <translation id="2435457462613246316">Нууц үг харуулах</translation> <translation id="2451654228769116489">Таб бэхлэх</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Мэдэгдэл</translation> <translation id="2496626742194544812">Эхний таб руу очих</translation> <translation id="2500374554657206846">Нууц үг хадгалах сонголтууд</translation> -<translation id="2502415369140591438">Дахин ашигласан <ph name="COUNT" /> нууц үг</translation> <translation id="2523363575747517183">Энэ вебсайт өөр апп нээхээр удаа дараа оролдож байна.</translation> <translation id="2529021024822217800">Бүгдийг нээх</translation> <translation id="2547458583188611426">Синк хийх ажиллахгүй байна. Синк хийж эхлэхийн тулд нэвтрэх үгээ оруулна уу.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Хуудсыг бусад хэлээр орчуулахыг санал болгох</translation> <translation id="3588820906588687999">Зургийг шинэ цонхонд нээ</translation> <translation id="3595252146048399851">Та синк хийх зүйлээ <ph name="BEGIN_LINK" />тохиргоо<ph name="END_LINK" /> хэсгээс хүссэн үедээ сонгох боломжтой. Google таны түүхэд тулгуурлан Хайлт болон бусад үйлчилгээг хувийн болгож магадгүй.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} сул нууц үг}other{{COUNT} сул нууц үг}}</translation> <translation id="3603009562372709545">Холбоосын URL-ыг хуулах</translation> <translation id="3607167657931203000">Автоматаар бөглөх хэсгийн өгөгдөл</translation> <translation id="3608008480985212611">Сонголтоо удирдахын тулд нэвтрээрэй.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Миний өгөгдлийг нэгтгэх</translation> <translation id="3929457972718048006">Хаягууд</translation> <translation id="3943492037546055397">Нууц үг</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} сул нууц үг}other{{count} сул нууц үг}}</translation> <translation id="3959736869653157332">Цэс → Шинэ нууцлалтай таб</translation> <translation id="3967822245660637423">Татаж авч дууслаа</translation> <translation id="3968505803272650567">Сонирхлыг удирдах</translation> @@ -610,6 +609,7 @@ <translation id="5118764316110575523">Унтраалттай</translation> <translation id="5119391094379141756">Chrome-г сонгоно уу</translation> <translation id="5121618895923301719">Та энэ бүтээгдэхүүнийг аль хэдийн хянаж байна. Энэ хуудсыг <ph name="BEGIN_LINK" />Мобайл хавчуургад<ph name="END_LINK" /> хадгалсан.</translation> +<translation id="5126465625664020024">Нэвтрээд, синк хийх</translation> <translation id="5132942445612118989">Нууц үг, түүх болон бусад зүйлээ бүх төхөөрөмждөө синк хийгээрэй</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} сул нууц үг}other{{COUNT} сул нууц үг}}</translation> <translation id="5149188072385105201">Нууц үг нэмэх...</translation> @@ -770,7 +770,6 @@ <translation id="6184086493125982861">Цонхнуудыг харуул</translation> <translation id="6187302354554850004">Хамгийн сүүлд синк хийсэн: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Уншаагүй</translation> -<translation id="6193424046394092997">{count,plural, =1{{title}-д тэмдэглэсэн}other{{title}-д тэмдэглэсэн}}</translation> <translation id="6196207969502475924">Дуугаар хайх</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} табыг хаах}other{{COUNT} табыг хаах}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> эсвэл түүнээс олон хоног ашиглаагүй табуудыг ийшээ зөөдөг. Та үүнийг хүссэн үедээ <ph name="BEGIN_LINK" />тохиргоонд<ph name="END_LINK" /> өөрчлөх боломжтой.</translation> @@ -800,6 +799,7 @@ <translation id="6346549652287021269">Шинэ таталтыг эхлүүлэх үү?</translation> <translation id="6347953390226388422">{count,plural, =1{Энэ хаягийг таны Google Бүртгэл (<ph name="USER_EMAIL" />) болон энэ төхөөрөмжөөс устгана.}other{Эдгээр хаягийг таны Google Бүртгэл (<ph name="USER_EMAIL" />) болон энэ төхөөрөмжөөс устгана.}}</translation> <translation id="634878792104344809">Бүх төхөөрөмж дээрээ нууц үгнүүд, түүх болон бусад зүйлээ синк хийгээрэй</translation> +<translation id="6348855835728304880">Энэ төхөөрөмжийн бусад аппаас Chrome-н нууц үгнүүд болон бусад зүйлдээ хандаарай.</translation> <translation id="6355820205320395730">Сул нууц үгнүүдийг таахад хялбар байдаг. Сайн нууц үгнүүд үүсгэж байгаа эсэхээ шалгаарай. <ph name="BEGIN_LINK" />Аюулгүй байдлын бусад зөвлөгөөг харна уу.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" />-г дагах</translation> <translation id="6362362396625799311">Нууцлалын таб байхгүй байна</translation> @@ -819,7 +819,6 @@ Таны өгөгдлийг таны синк хийх нэвтрэх үгтэй <ph name="TIME" />-д шифрлэсэн байна. Синкийг эхлүүлэхийн тулд үүнийг оруулна уу.</translation> <translation id="6418346271604475326">PDF форматыг бэлдэж байна</translation> -<translation id="6421095165635308">{count,plural, =1{Хавчуургыг таны {email} бүртгэл дэх {title}-д хадгалсан}other{Хавчуургуудыг таны {email} бүртгэл дэх {title}-д хадгалсан}}</translation> <translation id="6429213933892582367">Нууц үгний сонголтыг нээнэ үү</translation> <translation id="6434591244308415567">Алдаа гарлаа. Дараа дахин оролдоно уу.</translation> <translation id="6435236283694032571">Унших жагсаалтад нэмэх</translation> @@ -952,6 +951,7 @@ <translation id="7221173315674413369">"Шинэ юм юу байна" хэсэгт шинэ онцлогууд болон зөвлөгөөнүүдийг судлаарай</translation> <translation id="7223102419539744003">Табыг хаах</translation> <translation id="722454870747268814">Шинэ Нууцлалтай таб</translation> +<translation id="723787869754590019">Chrome-г Автоматаар бөглөх хэсэгт ашиглах</translation> <translation id="7265758999917665941">Энэ сайтад хэзээ ч хадгалахгүй</translation> <translation id="7272437679830969316">Таныг баталгаажуулж чадсангүй. Нууц үгийг хуулаагүй байна.</translation> <translation id="7291368939935408496">Нууц үгийг бэлтгэж байна...</translation> @@ -1088,6 +1088,7 @@ <translation id="8136856065410661948">Үүнийг таны Apple Calendar-т Chrome болон Google Lens-с үйл явдал үүсгэхэд ашиглана.</translation> <translation id="8156478151976189188">Нууц үг синк хийх ажиллахгүй байна</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> хаяг</translation> +<translation id="8159358225423560600">дөнгөж сая</translation> <translation id="8179976553408161302">Нэвтрэх</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Таны төхөөрөмжүүд<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Хуудсыг орчуулах</translation> @@ -1118,6 +1119,7 @@ <translation id="8393889347136007944"><ph name="THRESHOLD" /> хоногийн турш ашиглаагүй табууд</translation> <translation id="8407669440184693619">Энэ сайтад нууц үг олдсонгүй</translation> <translation id="842017693807136194">Дараахаар нэвтэрсэн</translation> +<translation id="8423121072346537366">Дөнгөж сая</translation> <translation id="8425693829365242963">Таны нууц үгнүүд өвөрмөц байна</translation> <translation id="8428045167754449968">Хот / Тосгон</translation> <translation id="8428213095426709021">Тохиргоо</translation> @@ -1151,12 +1153,14 @@ <translation id="8663764600409216912">Та таахад хэцүү харагдаж байгаа нууц үгнүүд ашиглаж байна</translation> <translation id="8668210798914567634">Энэ хуудсыг таны Унших жагсаалтад aль хэдийн хадгалсан.</translation> <translation id="8680787084697685621">Дансны нэвтрэх мэдээлэл хуучирсан байна.</translation> +<translation id="868773710103052534">Тохируулж дууслаа</translation> <translation id="8693663554456874301">{count,plural, =1{Табыг хаах}other{Табуудыг хаах}}</translation> <translation id="8703536910991780768">Таны нууц үгнүүд сайн харагдаж байна</translation> <translation id="8706588385081740091">Нууц үгнүүд</translation> <translation id="8717864919010420084">Холбоосыг хуулах</translation> <translation id="8721297211384281569">Хэрэгслүүд цэс</translation> <translation id="8725066075913043281">Дахин оролдож үзнэ үү.</translation> +<translation id="8727043961453758442">Chrome-г бүрэн ашиглаарай</translation> <translation id="8730621377337864115">хийсэн</translation> <translation id="8731388423028622182">Таны iPhone-г шинэчлэх явцад таныг <ph name="USER_NAME" /> бүртгэлээс тань гаргасан. Нэвтрэхийн тулд доорх үргэлжлүүлэх дээр товшино уу.</translation> <translation id="87371078663613140">Цэсийн талбар дахь сонголтыг судална уу</translation> @@ -1203,9 +1207,9 @@ <translation id="8974714402877957201">1. iPad-н тохиргоог нээнэ үү</translation> <translation id="8976382372951310360">Тусламж</translation> <translation id="8976414606286374109">Картыг таны Google Бүртгэлд хадгалсан.</translation> -<translation id="8978059030508051916">{count,plural, =0{Ямар ч алдагдсан нууц үг алга}=1{Алдагдсан {count} нууц үг}other{Алдагдсан {count} нууц үг}}</translation> <translation id="8981454092730389528">Google-н Ашиглалтын удирдлага</translation> <translation id="8985320356172329008">Google-д дараахаар нэвтэрсэн</translation> +<translation id="8986567980592931173">Нууц үгнүүд, түүх болон бусад зүйлээ синк хийхийн тулд Google Бүртгэлдээ нэвтэрнэ үү.</translation> <translation id="8998289560386111590">Таны төхөөрөмжид боломжгүй</translation> <translation id="9000089900434778519">Таны хайлтын систем <ph name="DSE_NAME" /> байна. Хэрэв боломжтой бол хайлтын түүхээ устгахын тулд үүний зааварчилгааг харна уу.</translation> <translation id="9008201768610948239">Алгас</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb index 3ac14f23..68954ae 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">झूम आउट करा</translation> <translation id="2230173723195178503">वेबपेज लोड केले</translation> <translation id="2239626343334228536">ब्राउझिंग डेटा साफ करत आहे...</translation> +<translation id="2242467532204595597">तुम्ही मेसेज, दस्तऐवज आणि इतर ॲप्समध्ये लिंकवर टॅप करता, तेव्हा कधीही Chrome वापरा.</translation> <translation id="22508856139286506">डिसमिस केलेल्या चेतावण्या (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">मेनू → इतिहास</translation> <translation id="2256933947031277845">तुमची संस्था तुम्हाला फक्त ठरावीक खाती वापरून साइन इन करण्याची अनुमती देते.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{तुमच्या कीबोर्डच्या वरती सेव्ह केलेला {count} अॅड्रेस उपलब्ध आहे.}other{तुमच्या कीबोर्डच्या वरती सेव्ह केलेले {count} अॅड्रेस उपलब्ध आहेत.}}</translation> <translation id="2421004566762153674">तृतीय पक्षाच्या कुकी ब्लॉक करत आहे</translation> <translation id="2421044535038393232">संपादन करणे सुरू ठेवा</translation> +<translation id="2423077901494354337">तुम्ही आता तुमच्या डिव्हाइसवर Chrome चा पुरेपूर वापर कराल.</translation> <translation id="2434405374328098816">तुम्ही <ph name="WEBSITE" /> वर "<ph name="USERNAME" />" चा पासवर्ड आधीच सेव्ह केला आहे</translation> <translation id="2435457462613246316">पासवर्ड दर्शवा</translation> <translation id="2451654228769116489">टॅब पिन करा</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">सूचना</translation> <translation id="2496626742194544812">पहिल्या टॅबवर जा</translation> <translation id="2500374554657206846">पासवर्ड सेव्ह करण्यासाठी पर्याय</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> पुन्हा वापरलेले पासवर्ड</translation> <translation id="2523363575747517183">ही वेबसाइट वारंवार दुसरे अॅप्लिकेशन उघडण्याचा प्रयत्न करत आहे.</translation> <translation id="2529021024822217800">सर्व उघडा</translation> <translation id="2547458583188611426">सिंक काम करत नाही. सिंक सुरू करण्यासाठी तुमचा पासफ्रेझ एंटर करा.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">पेजचे अन्य भाषांमध्ये भाषांतर उपलब्ध करा</translation> <translation id="3588820906588687999">नवीन टॅबमध्ये इमेज उघडा</translation> <translation id="3595252146048399851">काय सिंक करायचे हे तुम्ही <ph name="BEGIN_LINK" />सेटिंग्ज<ph name="END_LINK" /> मध्ये कधीही निवडू शकता. Google तुमच्या इतिहासाच्या आधारे Search आणि इतर सेवा पर्सनलाइझ करू शकते.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} कमकुवत पासवर्ड}other{{COUNT} कमकुवत पासवर्ड}}</translation> <translation id="3603009562372709545">लिंक URL कॉपी करा</translation> <translation id="3607167657931203000">ऑटोफिल डेटा</translation> <translation id="3608008480985212611">तुमची प्राधान्ये व्यवस्थापित करण्यासाठी साइन इन करा.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">माझा डेटा एकत्र करा</translation> <translation id="3929457972718048006">पत्ते</translation> <translation id="3943492037546055397">पासवर्ड</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} कमकुवत पासवर्ड}other{{count} कमकुवत पासवर्ड}}</translation> <translation id="3959736869653157332">मेनू → नवीन गुप्त टॅब</translation> <translation id="3967822245660637423">पूर्ण डाउनलोड करा</translation> <translation id="3968505803272650567">स्वारस्ये व्यवस्थापित करा</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">टॅब दर्शवा</translation> <translation id="6187302354554850004">अखेरचे संंकालित: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">न वाचलेले</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} मध्ये बुकमार्क केली आहे}other{{title} मध्ये बुकमार्क केल्या आहेत}}</translation> <translation id="6196207969502475924">व्हॉइस शोध</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} टॅब बंद करा}other{{COUNT} टॅब बंद करा}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> दिवस किंवा त्याहून अधिक दिवस न वापरलेले टॅब येथे हलवले जातात. तुम्ही <ph name="BEGIN_LINK" />सेटिंग्ज<ph name="END_LINK" />मध्ये हे कधीही बदलू शकता.</translation> @@ -803,6 +801,7 @@ <translation id="6346549652287021269">नवीन डाउनलोड सुरू करायचे?</translation> <translation id="6347953390226388422">{count,plural, =1{हा पत्ता तुमच्या Google खाते (<ph name="USER_EMAIL" />) आणि या डिव्हाइसवरून हटवला जाईल.}other{हे पत्ते तुमच्या Google खाते (<ph name="USER_EMAIL" />) आणि या डिव्हाइसवरून हटवले जातील.}}</translation> <translation id="634878792104344809">तुमच्या सर्व डिव्हाइसवर तुमचे पासवर्ड, इतिहास आणि बरेच काही सिंक करा</translation> +<translation id="6348855835728304880">डिव्हाइसवरील इतर सर्व अॅप्सवर तुमचे Chrome पासवर्ड आणि आणखी बरेच काही ॲक्सेस करा.</translation> <translation id="6355820205320395730">कमकुवत पासवर्ड ओळखणे सोपे असते. तुम्ही क्लिष्ट पासवर्ड तयार करत आहात याची खात्री करा. <ph name="BEGIN_LINK" />आणखी सुरक्षा टिपा पहा.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> ला फॉलो करा</translation> <translation id="6362362396625799311">कोणतेही गुप्त टॅब नाहीत</translation> @@ -822,7 +821,6 @@ तुमचा डेटा तुमच्या सिंक सांकेतिक पासफ्रेझसह <ph name="TIME" /> वाजता एंक्रिप्ट केलेला होता. सिंक सुरू करण्यासाठी तो एंटर करा.</translation> <translation id="6418346271604475326">पीडीएफ तयार करत आहे</translation> -<translation id="6421095165635308">{count,plural, =1{तुमच्या खात्यामधील {title} मध्ये बुकमार्क सेव्ह केला आहे, {email}}other{तुमच्या खात्यामधील {title} मध्ये बुकमार्क सेव्ह केले आहेत, {email}}}</translation> <translation id="6429213933892582367">पासवर्ड पर्याय उघडा</translation> <translation id="6434591244308415567">एरर आली. नंतर पुन्हा प्रयत्न करा.</translation> <translation id="6435236283694032571">वाचन सूची मध्ये जोडा</translation> @@ -955,6 +953,7 @@ <translation id="7221173315674413369">नवीन काय आहे मधील नवीन वैशिष्ट्ये आणि टिपा एक्सप्लोर करा</translation> <translation id="7223102419539744003">टॅब बंद करा</translation> <translation id="722454870747268814">नवीन गुप्त टॅब</translation> +<translation id="723787869754590019">ऑटोफिल साठी Chrome वापरा</translation> <translation id="7265758999917665941">या साइटसाठी कधीही नाही</translation> <translation id="7272437679830969316">तुमच्या ओळखीची पडताळणी करता आली नाही. पासवर्ड कॉपी केला नाही.</translation> <translation id="7291368939935408496">पासवर्ड तयार करत आहे…</translation> @@ -1156,12 +1155,14 @@ <translation id="8663764600409216912">तुम्ही असे पासवर्ड वापरत आहात ज्यांचा अंदाज लावणे कठीण आहे</translation> <translation id="8668210798914567634">हे पृष्ठ आपल्या वाचन सूचीमध्ये सेव्ह केले गेले आहे.</translation> <translation id="8680787084697685621">खाते साइन-इन तपशील कालबाह्य झाला.</translation> +<translation id="868773710103052534">तुम्ही पूर्णपणे तयार आहात</translation> <translation id="8693663554456874301">{count,plural, =1{टॅब बंद करा}other{टॅब बंद करा}}</translation> <translation id="8703536910991780768">तुमचे पासवर्ड क्लिष्ट दिसत आहेत</translation> <translation id="8706588385081740091">पासवर्ड</translation> <translation id="8717864919010420084">लिंक कॉपी करा</translation> <translation id="8721297211384281569">साधने मेनू</translation> <translation id="8725066075913043281">पुन्हा प्रयत्न करा</translation> +<translation id="8727043961453758442">Chrome चा पुरेपूर वापर करा</translation> <translation id="8730621377337864115">पूर्ण झाले</translation> <translation id="8731388423028622182">तुमच्या iPhone रीसेटचा भाग म्हणून तुम्हाला <ph name="USER_NAME" /> खात्यामधून साइन आउट केले गेले होते. साइन इन करण्यासाठी, सुरू ठेवा वर खाली टॅप करा.</translation> <translation id="87371078663613140">मेनू बारमधील पर्याय एक्सप्लोर करा</translation> @@ -1208,9 +1209,9 @@ <translation id="8974714402877957201">१. iPad सेटिंग्ज उघडा</translation> <translation id="8976382372951310360">मदत</translation> <translation id="8976414606286374109">कार्ड तुमच्या Google खाते मध्ये सेव्ह केली जातात.</translation> -<translation id="8978059030508051916">{count,plural, =0{No Compromised Passwords}=1{{count} धोक्यात असलेला पासवर्ड}other{{count} धोक्यात असलेले पासवर्ड}}</translation> <translation id="8981454092730389528">Google ॲक्टिव्हिटी नियंत्रणे</translation> <translation id="8985320356172329008">Google मध्ये हे म्हणून साइन इन केले</translation> +<translation id="8986567980592931173">तुमचे पासवर्ड, इतिहास आणि आणखी बरेच काही सिंक करण्यासाठी तुमचे Google खाते वापरून साइन इन करा.</translation> <translation id="8998289560386111590">तुमच्या डिव्हाइसवर उपलब्ध नाही</translation> <translation id="9000089900434778519"><ph name="DSE_NAME" /> हे तुमचे शोध इंजीन आहे. लागू असल्यास, तुमचा शोध इतिहास हटवण्यासाठी, त्याच्या सूचना पहा.</translation> <translation id="9008201768610948239">दुर्लक्ष करा</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb index fbf9b0d4..a98b014c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Zum Keluar</translation> <translation id="2230173723195178503">Halaman web dimuatkan</translation> <translation id="2239626343334228536">Mengosongkan data semakan imbas...</translation> +<translation id="2242467532204595597">Gunakan Chrome pada bila-bila masa anda mengetik pautan dalam mesej, dokumen dan apl lain.</translation> <translation id="22508856139286506">Amaran yang Diketepikan (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Menu → Sejarah</translation> <translation id="2256933947031277845">Organisasi anda membenarkan anda log masuk dengan akaun tertentu sahaja.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} alamat yang disimpan tersedia di sebelah atas papan kekunci anda.}other{{count} alamat yang disimpan tersedia di sebelah atas papan kekunci anda.}}</translation> <translation id="2421004566762153674">Menyekat kuki pihak ketiga</translation> <translation id="2421044535038393232">Teruskan Mengedit</translation> +<translation id="2423077901494354337">Kini anda boleh memanfaatkan Chrome sepenuhnya pada peranti anda.</translation> <translation id="2434405374328098816">Anda telah pun menyimpan kata laluan untuk "<ph name="USERNAME" />" pada <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Paparkan kata laluan</translation> <translation id="2451654228769116489">Semat Tab</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Pemberitahuan</translation> <translation id="2496626742194544812">Pergi ke Tab Pertama</translation> <translation id="2500374554657206846">Pilihan untuk Menyimpan Kata Laluan</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> Kata laluan yang digunakan semula</translation> <translation id="2523363575747517183">Tapak web ini berulang kali cuba membuka aplikasi lain.</translation> <translation id="2529021024822217800">Buka Semua</translation> <translation id="2547458583188611426">Penyegerakan tidak berfungsi. Masukkan ungkapan laluan anda untuk memulakan penyegerakan.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Tawaran untuk menterjemah halaman dalam bahasa lain</translation> <translation id="3588820906588687999">Buka Imej dalam Tab Baharu</translation> <translation id="3595252146048399851">Anda boleh memilih item yang hendak disegerakkan dalam <ph name="BEGIN_LINK" />tetapan<ph name="END_LINK" /> pada bila-bila masa. Google mungkin memeribadikan Carian dan perkhidmatan lain berdasarkan sejarah anda.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} Kata laluan lemah}other{{COUNT} Kata laluan lemah}}</translation> <translation id="3603009562372709545">Salin URL Paut</translation> <translation id="3607167657931203000">Autolengkap Data</translation> <translation id="3608008480985212611">Log masuk untuk mengurus keutamaan anda.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Gabungkan data saya</translation> <translation id="3929457972718048006">Alamat</translation> <translation id="3943492037546055397">Kata laluan</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} Kata Laluan Lemah}other{{count} Kata Laluan Lemah}}</translation> <translation id="3959736869653157332">Menu → Tab Inkognito Baharu</translation> <translation id="3967822245660637423">Muat turun selesai</translation> <translation id="3968505803272650567">Urus Minat</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Paparkan Tab</translation> <translation id="6187302354554850004">Terakhir disgrkkan: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Belum dibaca</translation> -<translation id="6193424046394092997">{count,plural, =1{Ditanda halaman ke {title}}other{Ditanda halaman ke {title}}}</translation> <translation id="6196207969502475924">Carian Suara</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Tutup {COUNT} Tab}other{Tutup {COUNT} Tab}}</translation> <translation id="6210079381482819663">Tab yang tidak digunakan selama <ph name="THRESHOLD" /> hari atau lebih dialihkan kepada bahagian ini. Anda boleh menukar pilihan ini pada bila-bila masa dalam <ph name="BEGIN_LINK" />tetapan<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Mulakan Muat Turun Baharu?</translation> <translation id="6347953390226388422">{count,plural, =1{Alamat ini akan dipadamkan daripada Google Account (<ph name="USER_EMAIL" />) anda dan daripada peranti ini.}other{Alamat ini akan dipadamkan daripada Google Account (<ph name="USER_EMAIL" />) anda dan daripada peranti ini.}}</translation> <translation id="634878792104344809">Segerakkan kata laluan, sejarah dan pelbagai lagi pada semua peranti anda</translation> +<translation id="6348855835728304880">Akses kata laluan Chrome anda dan pelbagai lagi merentas apl lain pada peranti ini.</translation> <translation id="6355820205320395730">Kata laluan yang lemah mudah diteka. Pastikan anda sedang membuat kata laluan yang kukuh. <ph name="BEGIN_LINK" />Lihat lebih banyak petua keselamatan.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Ikuti <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Tiada Tab Inkognito</translation> @@ -821,7 +820,6 @@ Data anda disulitkan dengan ungkapan laluan segerak anda pada <ph name="TIME" />. Masukkannya untuk memulakan penyegerakan.</translation> <translation id="6418346271604475326">Menyediakan PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Penanda halaman disimpan pada {title} dalam akaun anda, {email}}other{Penanda halaman disimpan pada {title} dalam akaun anda, {email}}}</translation> <translation id="6429213933892582367">Buka Pilihan Kata Laluan</translation> <translation id="6434591244308415567">Ralat telah berlaku. Cuba sebentar lagi.</translation> <translation id="6435236283694032571">Tambahkan pada Senarai Bacaan</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Teroka ciri dan petua baharu dalam Perkara Baharu</translation> <translation id="7223102419539744003">Tutup Tab</translation> <translation id="722454870747268814">Tab Inkognito Baharu</translation> +<translation id="723787869754590019">Gunakan Chrome untuk Autolengkap</translation> <translation id="7265758999917665941">Jangan Sekali-kali untuk Tapak Ini</translation> <translation id="7272437679830969316">Tidak dapat mengesahkan identiti anda. Kata laluan tidak disalin.</translation> <translation id="7291368939935408496">Menyediakan Kata Laluan…</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">Anda menggunakan kata laluan yang kelihatan sukar diteka</translation> <translation id="8668210798914567634">Halaman ini telah disimpan pada Senarai Bacaan anda.</translation> <translation id="8680787084697685621">Butiran log masuk akaun sudah lapuk.</translation> +<translation id="868773710103052534">Selesai</translation> <translation id="8693663554456874301">{count,plural, =1{Tutup Tab}other{Tutup Tab}}</translation> <translation id="8703536910991780768">Kata Laluan Anda kelihatan Kukuh</translation> <translation id="8706588385081740091">Kata laluan</translation> <translation id="8717864919010420084">Salin Pautan</translation> <translation id="8721297211384281569">Menu Alat</translation> <translation id="8725066075913043281">Cuba lagi</translation> +<translation id="8727043961453758442">Manfaatkan Chrome sepenuhnya</translation> <translation id="8730621377337864115">Selesai</translation> <translation id="8731388423028622182">Anda telah dilog keluar daripada akaun <ph name="USER_NAME" /> anda sebagai sebahagian daripada tetapan semula iPhone anda. Ketik teruskan di bawah untuk log masuk.</translation> <translation id="87371078663613140">Teroka pilihan dalam bar menu</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. Buka Tetapan ipad</translation> <translation id="8976382372951310360">Bantuan</translation> <translation id="8976414606286374109">Kad disimpan pada Akaun Google anda.</translation> -<translation id="8978059030508051916">{count,plural, =0{Tiada Kata Laluan yang Terjejas}=1{{count} Kata Laluan yang Terjejas}other{{count} Kata Laluan yang Terjejas}}</translation> <translation id="8981454092730389528">Kawalan Aktiviti Google</translation> <translation id="8985320356172329008">Sedang log masuk ke Google sebagai</translation> +<translation id="8986567980592931173">Log masuk dengan Google Account anda untuk menyegerakkan kata laluan dan sejarah anda serta pelbagai lagi.</translation> <translation id="8998289560386111590">Tidak tersedia pada peranti anda</translation> <translation id="9000089900434778519">Enjin carian anda ialah <ph name="DSE_NAME" />. Lihat arahan enjin carian itu untuk memadamkan sejarah carian anda, jika berkenaan.</translation> <translation id="9008201768610948239">Abaikan</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_my.xtb b/ios/chrome/app/strings/resources/ios_strings_my.xtb index 576700d..07fd288 100644 --- a/ios/chrome/app/strings/resources/ios_strings_my.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_my.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">အကြောင်းကြားစာ</translation> <translation id="2496626742194544812">ပထမတဘ်သို့သွားရန်</translation> <translation id="2500374554657206846">'စကားဝှက် သိမ်းရန်' ရွေးစရာများ</translation> -<translation id="2502415369140591438">ပြန်သုံးထားသည့် စကားဝှက် <ph name="COUNT" /> ခု</translation> <translation id="2523363575747517183">ဤဝဘ်ဆိုက်က နောက်ထပ် အပလီကေးရှင်းတစ်ခုကို ထပ်တလဲလဲ ဖွင့်နေပါသည်။</translation> <translation id="2529021024822217800">အားလုံးကို ဖွင့်ရန်</translation> <translation id="2547458583188611426">စင့်ခ်လုပ်ခြင်း မရပါ။ စင့်ခ်လုပ်ခြင်းစတင်ရန် သင်၏စကားဝှက်စာ ထည့်ပါ။</translation> @@ -322,6 +321,7 @@ <translation id="3131206671572504478">အားလုံးကို ပိတ်ရန်</translation> <translation id="313283613037595347">ရုပ်ဖျက်တဘ်အသစ် ပြုလုပ်ပါ။</translation> <translation id="3146109040683991651">Chrome ကို ‘မူရင်းဘရောင်ဇာ’ အဖြစ် သတ်မှတ်ရန်</translation> +<translation id="3152169319860972623">‘စကားဝှက် စစ်ဆေးခြင်း’ သည် သင်သိမ်းထားသော စကားဝှက်များကို စစ်ဆေးပြီး အွန်လိုင်းကျိုးပေါက်မှုရှိပါက သတိပေးသည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်။<ph name="END_LINK" /></translation> <translation id="3153862085237805241">ကတ်ကို သိမ်းရန်</translation> <translation id="3157387275655328056">ဖတ်ရန်စာရင်းသို့ ထည့်ပါ</translation> <translation id="3157684681743766797">အားလုံးကို အမှတ်အသားလုပ်ရန်…</translation> @@ -391,7 +391,6 @@ <translation id="3581564640715911333">စာမျက်နှာများကို အခြားဘာသာစကားများဖြင့် ပြန်ဆိုရန် ကမ်းလှမ်းသည်</translation> <translation id="3588820906588687999">ရုပ်ပုံကို တက်ဘ်အသစ်တွင်ဖွင့်ရန်</translation> <translation id="3595252146048399851">စင့်ခ်လုပ်မည့်အရာကို <ph name="BEGIN_LINK" />ဆက်တင်များ<ph name="END_LINK" /> တွင် အချိန်မရွေး ရွေးနိုင်သည်။ Google က Search နှင့် အခြားဝန်ဆောင်မှုများကို သင့်မှတ်တမ်းပေါ်မူတည်၍ ပုဂ္ဂိုလ်ရေးသီးသန့် ပြုလုပ်နိုင်သည်။</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{အားနည်းသည့် စကားဝှက် {COUNT} ခု}other{အားနည်းသည့် စကားဝှက် {COUNT} ခု}}</translation> <translation id="3603009562372709545">လင့်ခ် URL ကို ကူးယူမည်</translation> <translation id="3607167657931203000">အလိုအလျောက် ဖြည့်စွက်ရန်ဒေတာ</translation> <translation id="3608008480985212611">သင့်သတ်မှတ်ချက်များကို စီမံရန် လက်မှတ်ထိုးဝင်ပါ။</translation> @@ -437,7 +436,6 @@ <translation id="3928666092801078803">ကျွန်ုပ်၏ ဒေတာများကို ပေါင်းပါ</translation> <translation id="3929457972718048006">လိပ်စာများ</translation> <translation id="3943492037546055397">စကားဝှက်များ</translation> -<translation id="3951717558054674026">{count,plural, =1{အားနည်းသည့် စကားဝှက် {count} ခု}other{အားနည်းသည့် စကားဝှက် {count} ခု}}</translation> <translation id="3959736869653157332">မီနူး → ရုပ်ဖျက်တဘ်အသစ်</translation> <translation id="3967822245660637423">ဒေါင်းလုဒ်လုပ်ခြင်း ပြည့်စုံပါပြီ</translation> <translation id="3968505803272650567">စိတ်ဝင်စားမှုများ စီမံရန်</translation> @@ -773,7 +771,6 @@ <translation id="6184086493125982861">တဲဘ်များ ပြမည်</translation> <translation id="6187302354554850004">နောက်ဆုံး ထပ်တူပြုခြင်း: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">မဖတ်ရသေးသောစာ</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} သို့ စာညှပ်ကို သိမ်းထားသည်}other{{title} သို့ စာညှပ်ကို သိမ်းထားသည်}}</translation> <translation id="6196207969502475924">အသံဖြင့် ရှာဖွေမှု</translation> <translation id="6202364442240589072">{COUNT,plural, =1{တဘ် {COUNT} ခု ပိတ်ရန်}other{တဘ် {COUNT} ခု ပိတ်ရန်}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> ရက်နှင့်အထက် မသုံးသောတဘ်များကို ဤနေရာသို့ ရွှေ့သည်။ ၎င်းကို <ph name="BEGIN_LINK" />ဆက်တင်များ<ph name="END_LINK" /> တွင် အချိန်မရွေး ပြောင်းနိုင်သည်။</translation> @@ -823,7 +820,6 @@ သင့်ဒေတာများကို <ph name="TIME" /> ပေါ်တွင်သင်စင့်ခ်ပြုလုပ်ထားသည့် စကားဝှက်ဖြင့် အသွင်ဝှက်ထားပါသည်။ စင့်ခ်ပြုလုပ်ခြင်းစတင်ရန် ၎င်းကိုထည့်ပါ။</translation> <translation id="6418346271604475326">PDF ပြင်ဆင်နေသည်</translation> -<translation id="6421095165635308">{count,plural, =1{သင့်အကောင့် {email} ရှိ {title} ၌ လိပ်စာကို သိမ်းထားသည်}other{သင့်အကောင့် {email} ရှိ {title} ၌ လိပ်စာများကို သိမ်းထားသည်}}</translation> <translation id="6429213933892582367">စကားဝှက် ရွေးစရာများကို ဖွင့်ပါ</translation> <translation id="6434591244308415567">အမှားအယွင်း ရှိနေသည်။ နောက်မှ ထပ်လုပ်ကြည့်ပါ။</translation> <translation id="6435236283694032571">‘ဖတ်ရန်စာရင်း’ တွင် ထည့်ရန်</translation> @@ -1212,7 +1208,6 @@ <translation id="8974714402877957201">၁။ ‘iPad ဆက်တင်များ’ ဖွင့်ပါ</translation> <translation id="8976382372951310360">အကူအညီ</translation> <translation id="8976414606286374109">ကတ်များကို သင်၏ Google Account တွင် သိမ်းမည်။</translation> -<translation id="8978059030508051916">{count,plural, =0{ကျိုးပေါက်ထားသည့် စကားဝှက်များ မရှိပါ}=1{ကျိုးပေါက်ထားသည့် စကားဝှက် {count} ခု}other{ကျိုးပေါက်ထားသည့် စကားဝှက် {count} ခု}}</translation> <translation id="8981454092730389528">Google လုပ်ဆောင်ချက်များ ထိန်းချုပ်ရန်</translation> <translation id="8985320356172329008">အဖြစ် Google သို့လက်မှတ်ထိုးဝင်ထားသည်</translation> <translation id="8986567980592931173">သင့်စကားဝှက်၊ မှတ်တမ်း စသည်တို့ကိုစင့်ခ်လုပ်ရန် သင်၏ Google Account ဖြင့် လက်မှတ်ထိုးဝင်ပါ။</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb index 0c90281..d03dfd9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">जुम घटाउनुहोस्</translation> <translation id="2230173723195178503">वेबपृष्ठ लोड गरियो</translation> <translation id="2239626343334228536">ब्राउजिङ डेटा खाली गर्दै...</translation> +<translation id="2242467532204595597">जुनसुकै बेला म्यासेज, डकुमेन्ट र अन्य एपहरूमा भएका लिंकहरूमा ट्याप गरेर Chrome प्रयोग गर्नुहोस्।</translation> <translation id="22508856139286506">खारेज गरिएका चेतावनीहरू (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">मेनु → इतिहास</translation> <translation id="2256933947031277845">तपाईंको सङ्गठनको नीतिअनुसार तपाईं निश्चित खातामार्फत मात्र साइन इन गर्न पाउनुहुन्छ।</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{तपाईंको किबोर्डको माथिल्लो भागमा {count} वटा सेभ गरिएको ठेगाना उपलब्ध छ।}other{तपाईंको किबोर्डको माथिल्लो भागमा {count} वटा सेभ गरिएको ठेगाना उपलब्ध छ।}}</translation> <translation id="2421004566762153674">तेस्रो पक्षीय कुकीहरूलाई रोक लगाउँदै</translation> <translation id="2421044535038393232">सम्पादन गरिरहनुहोस्</translation> +<translation id="2423077901494354337">तपाईं अब आफ्नो डिभाइसमा Chrome बाट बढीभन्दा बढी फाइदा पाउनु हुने छ।</translation> <translation id="2434405374328098816">तपाईंले <ph name="WEBSITE" /> का हकमा "<ph name="USERNAME" />" को पासवर्ड सेभ गरिसक्नुभएको छ</translation> <translation id="2435457462613246316">पासवर्ड देखाउनुहोस्</translation> <translation id="2451654228769116489">ट्याब पिन गर्नुहोस्</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">सूचनाहरू</translation> <translation id="2496626742194544812">पहिलो ट्याबमा जानुहोस्</translation> <translation id="2500374554657206846">पासवर्ड सुरक्षित गर्ने विकल्पहरू</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> वटा पासवर्ड पहिले नै प्रयोग गरिएका छन्</translation> <translation id="2523363575747517183">यो वेबसाइटले बारम्बार अर्को एप खोल्ने प्रयास गर्दैछ।</translation> <translation id="2529021024822217800">सबै खोल्नुहोस्</translation> <translation id="2547458583188611426">सिंक गर्ने सुविधाले काम गरिरहेको छैन। सिंक गर्ने कार्य सुरु गर्न आफ्नो पासफ्रेज हाल्नुहोस्।</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">पृष्ठहरू अन्य भाषामा अनुवाद गर्ने प्रस्ताव गर्नुहोस्</translation> <translation id="3588820906588687999">छविलाई नयाँ ट्याबमा खोल्नुहोस्</translation> <translation id="3595252146048399851">तपाईं जुनसुकै बेला <ph name="BEGIN_LINK" />सेटिङ<ph name="END_LINK" />मा गई आफूले सिंक गर्न चाहेका कुराहरू छनौट गर्न सक्नुहुन्छ। Google ले तपाईंले विगतमा हेरेका वेबपेजका आधारमा Search र अन्य सेवाहरू पर्सनलाइज गर्न सक्छ।</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} वटा कमजोर पासवर्ड भेटियो}other{{COUNT} वटा कमजोर पासवर्ड भेटिए}}</translation> <translation id="3603009562372709545">लिंक URL प्रतिलिपि गर्नुहोस्</translation> <translation id="3607167657931203000">स्वतः भरणको डेटा</translation> <translation id="3608008480985212611">आफ्ना प्राथमिकताहरू व्यवस्थापन गर्न साइन इन गर्नुहोस्।</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">मेरो डेटालाई संयोजन गर्नुहोस्</translation> <translation id="3929457972718048006">ठेगानाहरू</translation> <translation id="3943492037546055397">पासवर्डहरू</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} वटा कमजोर पासवर्ड भेटियो}other{{count} वटा कमजोर पासवर्ड भेटिए}}</translation> <translation id="3959736869653157332">मेनु → नयाँ इन्कोग्निटो ट्याब</translation> <translation id="3967822245660637423">डाउनलोड पूर्ण भयो</translation> <translation id="3968505803272650567">रुचिहरू व्यवस्थापन गर्नुहोस्</translation> @@ -611,6 +610,7 @@ <translation id="5118764316110575523">निष्क्रिय छ</translation> <translation id="5119391094379141756">Chrome चयन गर्नुहोस्</translation> <translation id="5121618895923301719">तपाईं यो उत्पादन ट्र्याक गरिरहनुभएको छ। यो पेज <ph name="BEGIN_LINK" />मोबाइल बुकमार्कहरू<ph name="END_LINK" />मा सेभ गरिएको छ।</translation> +<translation id="5126465625664020024">साइन इन गरेर सिंक गर्नुहोस्</translation> <translation id="5132942445612118989">सबै यन्त्रहरूमा आफ्ना पासवर्ड, इतिहास र थप कुरा सिंक गर्नुहोस्</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} वटा कमजोर पासवर्ड भेटियो}other{{COUNT} वटा कमजोर पासवर्ड भेटिए}}</translation> <translation id="5149188072385105201">पासवर्ड सेभ गर्नुहोस्...</translation> @@ -771,7 +771,6 @@ <translation id="6184086493125982861">ट्याबहरू देखाउनुहोस्</translation> <translation id="6187302354554850004">पछिल्लोपटक सिंक भएको: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">नपढिएको</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} मा बुकमार्क गरियो}other{{title} मा बुकमार्क गरियो}}</translation> <translation id="6196207969502475924">आवाज खोज</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} वटा ट्याब बन्द गर्नुहोस्}other{{COUNT} वटा ट्याब बन्द गर्नुहोस्}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> वा सोभन्दा धेरै दिनसम्म प्रयोग नगरिएका ट्याबहरू सारेर यहाँ ल्याइन्छन्। तपाईं जुनसुकै बेला <ph name="BEGIN_LINK" />सेटिङ<ph name="END_LINK" />मा गई यो सेटिङ बदल्न सक्नुहुन्छ।</translation> @@ -801,6 +800,7 @@ <translation id="6346549652287021269">नयाँ डाउनलोड सुरु गर्ने हो?</translation> <translation id="6347953390226388422">{count,plural, =1{तपाईंको Google खाता (<ph name="USER_EMAIL" />) र यो डिभाइसबाट यो ठेगाना मेटाइने छ।}other{तपाईंको Google खाता (<ph name="USER_EMAIL" />) र यो डिभाइसबाट यी ठेगानाहरू मेटाइने छन्।}}</translation> <translation id="634878792104344809">आफ्ना सबै डिभाइसहरूमा तपाईंका बुकमार्क, पासवर्ड, इतिहास र अन्य कुराहरू सिंक गर्नुहोस्</translation> +<translation id="6348855835728304880">यो डिभाइसमा भएका अन्य सबै एपहरूमा तपाईंले Chrome मा सेभ गर्नुभएका पासवर्ड र अन्य कुराहरू प्रयोग गर्नुहोस्।</translation> <translation id="6355820205320395730">कमजोर पासवर्डहरू सजिलैसँग अनुमान लगाउन सकिन्छ। आफूले राख्न लागेका पासवर्डहरू भरपर्दा छन् भन्ने कुरा सुनिश्चित गर्नुहोस्। <ph name="BEGIN_LINK" />सुरक्षासम्बन्धी थप सुझावहरू हेर्नुहोस्।<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> फलो गर्नुहोस्</translation> <translation id="6362362396625799311">कुनै इन्कोग्निटो ट्याबहरू छैनन्</translation> @@ -820,7 +820,6 @@ तपाईँको डेटालाई <ph name="TIME" /> मा तपाईँको सिंक पासफ्रेजमार्फत इन्क्रिप्ट गरिएको थियो। सिंक सुरु गर्न त्यो पासफ्रेज प्रविष्टि गर्नुहोस्।</translation> <translation id="6418346271604475326">PDF तयार गर्दै</translation> -<translation id="6421095165635308">{count,plural, =1{यो बुकमार्क तपाईंको खाता {email} मा भएको {title} मा सेभ गरियो}other{यी बुकमार्कहरू तपाईंको खाता {email} मा भएको {title} मा सेभ गरिए}}</translation> <translation id="6429213933892582367">पासवर्डसम्बन्धी विकल्पहरू खोल्नुहोस्</translation> <translation id="6434591244308415567">कुनै त्रुटि भयो। पछि फेरि प्रयास गर्नुहोस्।</translation> <translation id="6435236283694032571">पछि पढ्न सेभ गरिएका वेबपेजको सूचीमा हाल्नुहोस्</translation> @@ -953,6 +952,7 @@ <translation id="7221173315674413369">"नयाँ के छ" मा गई नयाँ सुविधा र सुझावहरूका बारेमा जान्नुहोस्</translation> <translation id="7223102419539744003">ट्याब बन्द गर्नुहोस्</translation> <translation id="722454870747268814">नयाँ इन्कोग्निटो ट्याब</translation> +<translation id="723787869754590019">Chrome को अटोफिल सुविधा प्रयोग गर्नुहोस्</translation> <translation id="7265758999917665941">यो साइटका हकमा कहिल्यै पनि नसम्झनुहोस्</translation> <translation id="7272437679830969316">तपाईंको पहिचान पुष्टि गर्न सकिएन। पासवर्डको प्रतिलिपि गरिएको छैन।</translation> <translation id="7291368939935408496">पासवर्डहरू निर्यात गर्ने तयारी गरिँदै…</translation> @@ -1089,6 +1089,7 @@ <translation id="8136856065410661948">Chrome तथा Google लेन्समार्फत Apple पात्रोमा कार्यक्रमहरू बनाउने प्रयोजनका लागि यो एप प्रयोग गरिने छ।</translation> <translation id="8156478151976189188">पासवर्ड सिंक गर्ने सुविधाले काम गरिरहेको छैन</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> खाताहरू</translation> +<translation id="8159358225423560600">अहिले भर्खरै</translation> <translation id="8179976553408161302">प्रविष्टि गर्नुहोस्</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />तपाईंका डिभाइसहरू<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">पृष्ठ अनुवाद गर्नुहोस्</translation> @@ -1119,6 +1120,7 @@ <translation id="8393889347136007944">गत <ph name="THRESHOLD" /> दिनदेखि प्रयोग नगरिएका ट्याबहरू</translation> <translation id="8407669440184693619">यो साइटका लागि कुनै पनि पासवर्ड फेला परेन</translation> <translation id="842017693807136194">निम्न प्रमाणमार्फत साइन इन ...</translation> +<translation id="8423121072346537366">अहिले भर्खरै</translation> <translation id="8425693829365242963">तपाईंका पासवर्डहरू एकअर्कासँग मिल्दैनन्</translation> <translation id="8428045167754449968">गाउँ / टोल</translation> <translation id="8428213095426709021">सेटिङहरू</translation> @@ -1152,12 +1154,14 @@ <translation id="8663764600409216912">तपाईंले अनुमान लगाउन कठिन हुने पासवर्डहरू प्रयोग गर्नुभएको छ</translation> <translation id="8668210798914567634">यस पृष्ठलाई तपाईंको पाठ्य सूचीमा सुरक्षित गरिएको छ।</translation> <translation id="8680787084697685621">खाता साइन-इन विवरणहरूको समय समाप्त भएको छ।</translation> +<translation id="868773710103052534">तपाईं पूर्ण रूपमा तयार हुनुहुन्छ</translation> <translation id="8693663554456874301">{count,plural, =1{ट्याब बन्द गर्नुहोस्}other{ट्याबहरू बन्द गर्नुहोस्}}</translation> <translation id="8703536910991780768">तपाईंका पासवर्डहरू भरपर्दा देखिन्छन्</translation> <translation id="8706588385081740091">पासवर्डहरू</translation> <translation id="8717864919010420084">लिंक प्रतिलिपि गर्नुहोस्</translation> <translation id="8721297211384281569">उपकरणहरू मेनु</translation> <translation id="8725066075913043281">पुन: प्रयास गर्नुहोस्</translation> +<translation id="8727043961453758442">Chrome बाट बढीभन्दा बढी फाइदा लिनुहोस्</translation> <translation id="8730621377337864115">गरियो</translation> <translation id="8731388423028622182">तपाईंको iPhone रिसेट गरिएका कारण तपाईंलाई तपाईंको <ph name="USER_NAME" /> खाताबाट साइन आउट गरिएको थियो। साइन इन गर्न तल दिइएको "जारी राख्नुहोस्" मा ट्याप गर्नुहोस्।</translation> <translation id="87371078663613140">मेनु बारमा भएका विकल्पहरूका बारेमा जान्नुहोस्</translation> @@ -1204,9 +1208,9 @@ <translation id="8974714402877957201">१. iPad का सेटिङ खोल्नुहोस्</translation> <translation id="8976382372951310360">मद्दत</translation> <translation id="8976414606286374109">कार्डहरू तपाईंको Google खातामा सेभ गरिन्छन्।</translation> -<translation id="8978059030508051916">{count,plural, =0{कुनै पनि पासवर्ड ह्याक वा चोरी भएको छैन}=1{{count} वटा पासवर्ड ह्याक वा चोरी भएको छ}other{{count} वटा पासवर्ड ह्याक वा चोरी भएका छन्}}</translation> <translation id="8981454092730389528">Google गतिविधि नियन्त्रणहरू</translation> <translation id="8985320356172329008">Google मा यस रूपमा साइन इन गरियो</translation> +<translation id="8986567980592931173">आफ्ना पासवर्ड र हिस्ट्रीलगायतका कुराहरू सिंक गर्न Google खातामार्फत साइन इन गर्नुहोस्।</translation> <translation id="8998289560386111590">तपाईंको डिभाइसमा उपलब्ध छैन</translation> <translation id="9000089900434778519">तपाईंको डिफल्ट सर्च इन्जिन <ph name="DSE_NAME" /> हो। तपाईंको सर्च इन्जिनमा खोजको इतिहास मेटाउन मिल्छ भने खोज इतिहास मेटाउन सर्च इन्जिनले उपलब्ध गराएका निर्देशनहरू हेर्नुहोस्।</translation> <translation id="9008201768610948239">बेवास्ता गर्नुहोस्</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb index f13167a8..2c3ded8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Meldingen</translation> <translation id="2496626742194544812">Naar het eerste tabblad gaan</translation> <translation id="2500374554657206846">Opties voor 'Wachtwoord opslaan'</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> hergebruikte wachtwoorden</translation> <translation id="2523363575747517183">Deze website probeert herhaaldelijk een andere app te openen.</translation> <translation id="2529021024822217800">Alles openen</translation> <translation id="2547458583188611426">Synchronisatie werkt niet. Geef je wachtwoordzin op om de synchronisatie te starten.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Aanbieden pagina's in andere talen te vertalen</translation> <translation id="3588820906588687999">Afbeelding openen op nieuw tabblad</translation> <translation id="3595252146048399851">Je kunt altijd in de <ph name="BEGIN_LINK" />instellingen<ph name="END_LINK" /> bepalen wat je wilt synchroniseren. Google kan Zoeken en andere services personaliseren op basis van je geschiedenis.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} zwak wachtwoord}other{{COUNT} zwakke wachtwoorden}}</translation> <translation id="3603009562372709545">Link-URL kopiëren</translation> <translation id="3607167657931203000">Gegevens van Automatisch invullen</translation> <translation id="3608008480985212611">Log in om je voorkeuren te beheren.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Mijn gegevens combineren</translation> <translation id="3929457972718048006">Adressen</translation> <translation id="3943492037546055397">Wachtwoorden</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} zwak wachtwoord}other{{count} zwakke wachtwoorden}}</translation> <translation id="3959736869653157332">Menu → Nieuw incognitotabblad</translation> <translation id="3967822245660637423">Downloaden voltooid</translation> <translation id="3968505803272650567">Interesses beheren</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Tabbladen bekijken</translation> <translation id="6187302354554850004">Laatst gesynchroniseerd: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Ongelezen</translation> -<translation id="6193424046394092997">{count,plural, =1{Gebookmarkt in {title}}other{Gebookmarkt in {title}}}</translation> <translation id="6196207969502475924">Gesproken zoekopdrachten</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} tabblad sluiten}other{{COUNT} tabbladen sluiten}}</translation> <translation id="6210079381482819663">Tabbladen die <ph name="THRESHOLD" /> dagen of langer niet zijn gebruikt, worden hier naartoe verplaatst. Je kunt dit altijd wijzigen in de <ph name="BEGIN_LINK" />instellingen<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Je gegevens zijn op <ph name="TIME" /> versleuteld met je wachtwoordzin voor synchronisatie. Geef deze op om de synchronisatie te starten.</translation> <translation id="6418346271604475326">Pdf voorbereiden</translation> -<translation id="6421095165635308">{count,plural, =1{Bookmark opgeslagen in {title} in je account {email}}other{Bookmarks opgeslagen in {title} in je account {email}}}</translation> <translation id="6429213933892582367">Wachtwoordopties openen</translation> <translation id="6434591244308415567">Er is een fout opgetreden. Probeer het later opnieuw.</translation> <translation id="6435236283694032571">Toevoegen aan leeslijst</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. Open de iPad-instellingen</translation> <translation id="8976382372951310360">Hulp</translation> <translation id="8976414606286374109">Kaarten worden opgeslagen in je Google-account.</translation> -<translation id="8978059030508051916">{count,plural, =0{Geen gehackte wachtwoorden}=1{{count} gehackt wachtwoord}other{{count} gehackte wachtwoorden}}</translation> <translation id="8981454092730389528">Google-activiteitsopties</translation> <translation id="8985320356172329008">Ingelogd bij Google als</translation> <translation id="8986567980592931173">Log in met je Google-account om onder andere je wachtwoorden en geschiedenis te synchroniseren.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb index 79c53eb..fdf2e02 100644 --- a/ios/chrome/app/strings/resources/ios_strings_no.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Varsler</translation> <translation id="2496626742194544812">Gå til første fane</translation> <translation id="2500374554657206846">Alternativer for passordlagring</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> gjenbrukte passord</translation> <translation id="2523363575747517183">Dette nettstedet prøver gjentatte ganger å åpne en annen app.</translation> <translation id="2529021024822217800">Åpne alle</translation> <translation id="2547458583188611426">Synkronisering fungerer ikke. For å starte synkroniseringen, skriv inn passordfrasen din.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Tilby å oversette sider på andre språk</translation> <translation id="3588820906588687999">Åpne bildet i en ny fane</translation> <translation id="3595252146048399851">Du kan når som helst velge hva du vil synkronisere, i <ph name="BEGIN_LINK" />innstillingene<ph name="END_LINK" />. Google kan gi Søk og andre tjenester personlig preg basert på loggen din.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} svakt passord}other{{COUNT} svake passord}}</translation> <translation id="3603009562372709545">Kopiér linkadressen</translation> <translation id="3607167657931203000">Autofylldata</translation> <translation id="3608008480985212611">Logg på for å administrere preferansene dine.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Kombiner dataene mine</translation> <translation id="3929457972718048006">Adresser</translation> <translation id="3943492037546055397">Passord</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} svakt passord}other{{count} svake passord}}</translation> <translation id="3959736869653157332">Meny → Ny inkognitofane</translation> <translation id="3967822245660637423">Nedlasting fullført</translation> <translation id="3968505803272650567">Administrer interesser</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Vis faner</translation> <translation id="6187302354554850004">Sist synkronisert: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Ulest</translation> -<translation id="6193424046394092997">{count,plural, =1{Satt som bokmerke i {title}}other{Satt som bokmerke i {title}}}</translation> <translation id="6196207969502475924">Google Talesøk</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Lukk {COUNT} fane}other{Lukk {COUNT} faner}}</translation> <translation id="6210079381482819663">Faner som ikke brukes i <ph name="THRESHOLD" /> dager eller mer, flyttes hit. Du kan når som helst endre dette i <ph name="BEGIN_LINK" />innstillingene<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Dataene dine er kryptert med passordfrasen din for synkronisering <ph name="TIME" />. Skriv den inn for å starte synkroniseringen.</translation> <translation id="6418346271604475326">Forbereder PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Et bokmerke er lagret i {title} i kontoen din, {email}}other{Bokmerkene er lagret i {title} i kontoen din, {email}}}</translation> <translation id="6429213933892582367">Åpne Passordvalg</translation> <translation id="6434591244308415567">Det oppsto en feil. Prøv på nytt senere.</translation> <translation id="6435236283694032571">Legg til på leselisten</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. Åpne iPad-innstillingene</translation> <translation id="8976382372951310360">Hjelp</translation> <translation id="8976414606286374109">Kort lagres i Google-kontoen din.</translation> -<translation id="8978059030508051916">{count,plural, =0{Ingen passord er utsatt for sikkerhetsbrudd}=1{{count} passord er utsatt for sikkerhetsbrudd}other{{count} passord er utsatt for sikkerhetsbrudd}}</translation> <translation id="8981454092730389528">Google Aktivitetslagring</translation> <translation id="8985320356172329008">Logget på Google som</translation> <translation id="8986567980592931173">Logg på med Google-kontoen din for å synkronisere passordene dine, loggen din med mer.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb index 306182b7..5dc69b98 100644 --- a/ios/chrome/app/strings/resources/ios_strings_or.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">ବିଜ୍ଞପ୍ତି</translation> <translation id="2496626742194544812">ପ୍ରଥମ ଟାବକୁ ଯାଆନ୍ତୁ</translation> <translation id="2500374554657206846">ପାସ୍ୱାର୍ଡ ସେଭ୍ କରିବା ପାଇଁ ବିକଳ୍ପ</translation> -<translation id="2502415369140591438"><ph name="COUNT" />ଟି ପୁଣି ବ୍ୟବହାର କରାଯାଇଥିବା ପାସୱାର୍ଡ</translation> <translation id="2523363575747517183">ଏହି ୱେବ୍ସାଇଟ୍ ବାରମ୍ୱାର ଅନ୍ୟଏକ ଆପ୍ଲିକେସନ୍ ଖୋଲିବାକୁ ଚେଷ୍ଟା କରୁଛି।</translation> <translation id="2529021024822217800">ସବୁ ଖୋଲନ୍ତୁ</translation> <translation id="2547458583188611426">ସିଙ୍କ କାମ କରୁନାହିଁ। ସିଙ୍କ ଆରମ୍ଭ କରିବାକୁ ଆପଣଙ୍କ ପାସଫ୍ରେଜ ଲେଖନ୍ତୁ।</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">ଅନ୍ୟ ଭାଷାରେ ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଅନୁବାଦ କରିବାକୁ ଅଫର୍ ଦିଅନ୍ତୁ</translation> <translation id="3588820906588687999">ନୂଆ ଟାବ୍ରେ ଛବି ଖୋଲନ୍ତୁ</translation> <translation id="3595252146048399851">କଣ ସିଙ୍କ କରାଯିବ, ତାହା ଆପଣ <ph name="BEGIN_LINK" />ସେଟିଂସ<ph name="END_LINK" />ରେ ସର୍ବଦା ବାଛିପାରିବେ। Google ଆପଣଙ୍କ ଇତିହାସ ଆଧାରରେ Search ଏବଂ ଅନ୍ୟ ସେବାଗୁଡ଼ିକୁ ପର୍ସନାଲାଇଜ କରିପାରେ।</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT}ଟି ଦୁର୍ବଳ ପାସୱାର୍ଡ}other{{COUNT}ଟି ଦୁର୍ବଳ ପାସୱାର୍ଡ}}</translation> <translation id="3603009562372709545">ଲିଙ୍କ୍ URL କପି କରନ୍ତୁ</translation> <translation id="3607167657931203000">ଅଟୋଫିଲ୍ ଡାଟା</translation> <translation id="3608008480985212611">ଆପଣଙ୍କ ପସନ୍ଦଗୁଡ଼ିକୁ ପରିଚାଳନା କରିବା ପାଇଁ ସାଇନ ଇନ କରନ୍ତୁ।</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">ମୋର ଡାଟା ଏକାଠି କରନ୍ତୁ</translation> <translation id="3929457972718048006">ଠିକଣାଗୁଡ଼ିକ</translation> <translation id="3943492037546055397">ପାସ୍ୱର୍ଡଗୁଡ଼ିକ</translation> -<translation id="3951717558054674026">{count,plural, =1{{count}ଟି ଦୁର୍ବଳ ପାସୱାର୍ଡ}other{{count}ଟି ଦୁର୍ବଳ ପାସୱାର୍ଡ}}</translation> <translation id="3959736869653157332">ମେନୁ → ନୂଆ ଇନକଗ୍ନିଟୋ ଟାବ</translation> <translation id="3967822245660637423">ଡାଉନ୍ଲୋଡ୍ ଶେଷ ହୋଇଛି</translation> <translation id="3968505803272650567">ରୁଚିଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ</translation> @@ -769,7 +766,6 @@ <translation id="6184086493125982861">ଟାବ୍ ଦେଖାନ୍ତୁ</translation> <translation id="6187302354554850004">ଗତଥର ସିଙ୍କ୍ ହୋଇଛି: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">ଅପଠିତ</translation> -<translation id="6193424046394092997">{count,plural, =1{{title}ରେ ବୁକମାର୍କ କରାଯାଇଛି}other{{title}ରେ ବୁକମାର୍କ କରାଯାଇଛି}}</translation> <translation id="6196207969502475924">ଭଏସ୍ ସନ୍ଧାନ କରନ୍ତୁ</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT}ଟି ଟାବ୍ ବନ୍ଦ କରନ୍ତୁ}other{{COUNT}ଟି ଟାବ୍ ବନ୍ଦ କରନ୍ତୁ}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> କିମ୍ବା ଅଧିକ ଦିନ ପାଇଁ ବ୍ୟବହାର କରାଯାଇନଥିବା ଟାବଗୁଡ଼ିକୁ ଏଠାକୁ ମୁଭ କରାଯାଇଛି। ଆପଣ ଯେ କୌଣସି ସମୟରେ <ph name="BEGIN_LINK" />ସେଟିଂସ<ph name="END_LINK" />ରେ ଏହାକୁ ପରିବର୍ତ୍ତନ କରିପାରିବେ।</translation> @@ -818,7 +814,6 @@ <ph name="TIME" /> ବେଳେ ଆପଣଙ୍କ ସିଙ୍କ୍ ପାସ୍ଫ୍ରେଜ୍ ସହିତ ଆପଣଙ୍କର ଡାଟାକୁ ଏନକ୍ରିପ୍ଟ କରାଗଲା। ସିଙ୍କ୍ କରିବା ପାଇଁ ତାହା ଲେଖନ୍ତୁ।</translation> <translation id="6418346271604475326">PDF ପ୍ରସ୍ତୁତ କରୁଛି</translation> -<translation id="6421095165635308">{count,plural, =1{ଆପଣଙ୍କ ଆକାଉଣ୍ଟ, {email}ରେ ଥିବା {title}ରେ ବୁକମାର୍କ ସେଭ କରାଯାଇଛି}other{ଆପଣଙ୍କ ଆକାଉଣ୍ଟ, {email}ରେ ଥିବା {title}ରେ ବୁକମାର୍କଗୁଡ଼ିକ ସେଭ କରାଯାଇଛି}}</translation> <translation id="6429213933892582367">ପାସୱାର୍ଡ ବିକଳ୍ପଗୁଡ଼ିକୁ ଖୋଲନ୍ତୁ</translation> <translation id="6434591244308415567">ଏକ ତ୍ରୁଟି ଦେଖାଦେଲା। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation> <translation id="6435236283694032571">ପଢ଼ିବା ତାଲିକାରେ ଯୋଗ କରନ୍ତୁ</translation> @@ -1022,6 +1017,7 @@ <translation id="7781011649027948662">ପୃଷ୍ଠାକୁ ଅନୁବାଦ କରିବେ?</translation> <translation id="7781069478569868053">ନୂଆ ଟାବ୍ ପୃଷ୍ଠା</translation> <translation id="7781829728241885113">ଗତକଲି</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{1 ଦିନ ପରେ}other{{COUNT} ଦିନ ପରେ}}</translation> <translation id="778855399387580014">ଗୋଟିଏ ନୂଆ Chrome ଟାବ୍ରେ ଏକ ସର୍ଚ୍ଚ କରନ୍ତୁ।</translation> <translation id="7791543448312431591">ଯୋଡନ୍ତୁ</translation> <translation id="7807060072011926525">Google ଦ୍ୱାରା ପ୍ରଦାନ କରାଯାଇଛି</translation> @@ -1086,6 +1082,7 @@ <translation id="8136856065410661948">Chrome ଏବଂ Google Lensରୁ ଆପଣଙ୍କ Apple Calendarରେ ଇଭେଣ୍ଟଗୁଡ଼ିକୁ ତିଆରି କରିବା ପାଇଁ ଏହାକୁ ବ୍ୟବହାର କରାଯିବ।</translation> <translation id="8156478151976189188">ପାସୱାର୍ଡ ସିଙ୍କ୍ କାମ କରୁ ନାହିଁ</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" />ଟି ଆକାଉଣ୍ଟ</translation> +<translation id="8159358225423560600">ଏହିକ୍ଷଣି</translation> <translation id="8179976553408161302">ପ୍ରବେଶ</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />ଆପଣଙ୍କ ଡିଭାଇସଗୁଡ଼ିକ<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">ପୃଷ୍ଠାକୁ ଅନୁବାଦ କରନ୍ତୁ</translation> @@ -1116,6 +1113,7 @@ <translation id="8393889347136007944"><ph name="THRESHOLD" /> ଦିନ ପାଇଁ ଟାବଗୁଡ଼ିକୁ ବ୍ୟବହାର କରାଯାଇନାହିଁ</translation> <translation id="8407669440184693619">ଏହି ସାଇଟ୍ ପାଇଁ କୌଣସି ପାସ୍ୱର୍ଡ ମିଳିଲା ନାହିଁ</translation> <translation id="842017693807136194">ଏହା ମାଧ୍ୟମରେ ସାଇନ୍ ଇନ୍ କରିଛନ୍ତି</translation> +<translation id="8423121072346537366">ଏହିକ୍ଷଣି</translation> <translation id="8425693829365242963">ଆପଣଙ୍କ ପାସୱାର୍ଡଗୁଡ଼ିକ ସ୍ୱତନ୍ତ୍ର ଅଟେ</translation> <translation id="8428045167754449968">ବଡ଼ ସହର/ସହର</translation> <translation id="8428213095426709021">ସେଟିଂସ୍</translation> @@ -1201,7 +1199,6 @@ <translation id="8974714402877957201">1. iPad ସେଟିଂସ ଖୋଲନ୍ତୁ</translation> <translation id="8976382372951310360">ସହାୟତା</translation> <translation id="8976414606286374109">କାର୍ଡଗୁଡ଼ିକ ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇଥାଏ।</translation> -<translation id="8978059030508051916">{count,plural, =0{କୌଣସି ଚୋରି ହୋଇଯାଇଥିବା ପାସୱାର୍ଡ ନାହିଁ}=1{{count}ଟି ଚୋରି ହୋଇଯାଇଥିବା ପାସୱାର୍ଡ}other{{count}ଟି ଚୋରି ହୋଇଯାଇଥିବା ପାସୱାର୍ଡ}}</translation> <translation id="8981454092730389528">Google ଗତିବିଧି ନିୟନ୍ତ୍ରଣ</translation> <translation id="8985320356172329008">ଏପରି Googleରେ ସାଇନ୍ ଇନ୍ କରିଛନ୍ତି</translation> <translation id="8998289560386111590">ଆପଣଙ୍କ ଡିଭାଇସରେ ଉପଲବ୍ଧ ନାହିଁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb index a9f59a0..ec92d50 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">ਸੂਚਨਾਵਾਂ</translation> <translation id="2496626742194544812">ਪਹਿਲੀ ਟੈਬ 'ਤੇ ਜਾਓ</translation> <translation id="2500374554657206846">ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕਰਨ ਦੇ ਵਿਕਲਪ</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> ਮੁੜ-ਵਰਤੇ ਪਾਸਵਰਡ</translation> <translation id="2523363575747517183">ਇਹ ਵੈੱਬਸਾਈਟ ਵਾਰ-ਵਾਰ ਕੋਈ ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਖੋਲ੍ਹਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੀ ਹੈ।</translation> <translation id="2529021024822217800">ਸਭ ਖੋਲ੍ਹੋ</translation> <translation id="2547458583188611426">ਸਿੰਕ ਕੰਮ ਨਹੀਂ ਕਰ ਰਿਹਾ ਹੈ। ਸਿੰਕ ਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਆਪਣਾ ਪਾਸਫਰੇਜ਼ ਦਾਖਲ ਕਰੋ।</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">ਹੋਰ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਪੰਨਿਆਂ ਦਾ ਅਨੁਵਾਦ ਕਰਨ ਲਈ ਪੇਸ਼ਕਸ਼ ਕਰੋ</translation> <translation id="3588820906588687999">ਨਵੀਂ ਟੈਬ ਵਿੱਚ ਚਿੱਤਰ ਖੋਲ੍ਹੋ</translation> <translation id="3595252146048399851">ਤੁਸੀਂ <ph name="BEGIN_LINK" />ਸੈਟਿੰਗਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਇਹ ਕਿਸੇ ਵੀ ਵੇਲੇ ਚੁਣ ਸਕਦੇ ਹੋ ਕਿ ਕੀ ਸਿੰਕ ਕਰਨਾ ਹੈ। Google ਤੁਹਾਡੇ ਇਤਿਹਾਸ ਦੇ ਆਧਾਰ 'ਤੇ Search ਅਤੇ ਹੋਰ ਸੇਵਾਵਾਂ ਨੂੰ ਵਿਅਕਤੀਗਤ ਬਣਾ ਸਕਦਾ ਹੈ।</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} ਕਮਜ਼ੋਰ ਪਾਸਵਰਡ}one{{COUNT} ਕਮਜ਼ੋਰ ਪਾਸਵਰਡ}other{{COUNT} ਕਮਜ਼ੋਰ ਪਾਸਵਰਡ}}</translation> <translation id="3603009562372709545">ਲਿੰਕ URL ਕਾਪੀ ਕਰੋ</translation> <translation id="3607167657931203000">ਆਟੋਫਿਲ ਡਾਟਾ </translation> <translation id="3608008480985212611">ਆਪਣੀਆਂ ਤਰਜੀਹਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">ਮੇਰੇ ਡਾਟੇ ਨੂੰ ਮਿਲਾਓ</translation> <translation id="3929457972718048006">ਪਤੇ</translation> <translation id="3943492037546055397">ਪਾਸਵਰਡ</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} ਕਮਜ਼ੋਰ ਪਾਸਵਰਡ}one{{count} ਕਮਜ਼ੋਰ ਪਾਸਵਰਡ}other{{count} ਕਮਜ਼ੋਰ ਪਾਸਵਰਡ}}</translation> <translation id="3959736869653157332">ਮੀਨੂ → ਨਵੀਂ ਇਨਕੋਗਨਿਟੋ ਟੈਬ</translation> <translation id="3967822245660637423">ਡਾਊਨਲੋਡ ਪੂਰਾ ਹੋਇਆ</translation> <translation id="3968505803272650567">ਦਿਲਚਸਪੀਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">ਟੈਬਸ ਦਿਖਾਓ</translation> <translation id="6187302354554850004">ਪਿਛਲੀ ਵਾਰ ਸਿੰਕ ਕੀਤੇ: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">ਨਾ-ਪੜ੍ਹੇ ਹੋਏ ਇੰਦਰਾਜ</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} ਵਿੱਚ ਬੁੱਕਮਾਰਕ ਕੀਤਾ ਗਿਆ}one{{title} ਵਿੱਚ ਬੁੱਕਮਾਰਕ ਕੀਤਾ ਗਿਆ}other{{title} ਵਿੱਚ ਬੁੱਕਮਾਰਕ ਕੀਤੇ ਗਏ}}</translation> <translation id="6196207969502475924">ਅਵਾਜ਼ੀ ਖੋਜ</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ਟੈਬ ਬੰਦ ਕਰੋ}one{{COUNT} ਟੈਬ ਬੰਦ ਕਰੋ}other{{COUNT} ਟੈਬਾਂ ਬੰਦ ਕਰੋ}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> ਜਾਂ ਇਸ ਤੋਂ ਵੱਧ ਦਿਨਾਂ ਤੱਕ ਨਾ ਵਰਤੀਆਂ ਗਈਆਂ ਟੈਬਾਂ ਨੂੰ ਇੱਥੇ ਲਿਜਾਇਆ ਜਾਂਦਾ ਹੈ। ਤੁਸੀਂ ਕਿਸੇ ਵੇਲੇ ਵੀ <ph name="BEGIN_LINK" />ਸੈਟਿੰਗਾਂ<ph name="END_LINK" /> ਵਿੱਚ ਜਾ ਕੇ ਇਸਨੂੰ ਬਦਲ ਸਕਦੇ ਹੋ।</translation> @@ -820,7 +816,6 @@ ਤੁਹਾਡਾ ਡਾਟਾ ਤੁਹਾਡੇ ਸਿੰਕ ਪਾਸਫਰੇਜ਼ ਨਾਲ <ph name="TIME" /> ਨੂੰ ਇਨਕ੍ਰਿਪਟ ਕੀਤਾ ਗਿਆ ਸੀ। ਸਿੰਕ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਇਸਨੂੰ ਦਾਖਲ ਕਰੋ।</translation> <translation id="6418346271604475326">PDF ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> -<translation id="6421095165635308">{count,plural, =1{ਬੁੱਕਮਾਰਕ ਨੂੰ ਤੁਹਾਡੇ ਖਾਤੇ, {email} ਵਿੱਚ {title} ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ}one{ਬੁੱਕਮਾਰਕ ਨੂੰ ਤੁਹਾਡੇ ਖਾਤੇ, {email} ਵਿੱਚ {title} ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ}other{ਬੁੱਕਮਾਰਕਾਂ ਨੂੰ ਤੁਹਾਡੇ ਖਾਤੇ, {email} ਵਿੱਚ {title} ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ}}</translation> <translation id="6429213933892582367">ਪਾਸਵਰਡ ਵਿਕਲਪ ਖੋਲ੍ਹੋ</translation> <translation id="6434591244308415567">ਇੱਕ ਗੜਬੜ ਹੋ ਗਈ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="6435236283694032571">ਪੜ੍ਹਨ-ਸੂਚੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</translation> @@ -1206,7 +1201,6 @@ <translation id="8974714402877957201">1. iPad ਦੀਆਂ ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ</translation> <translation id="8976382372951310360">ਮਦਦ</translation> <translation id="8976414606286374109">ਕਾਰਡ ਤੁਹਾਡੇ Google ਖਾਤੇ 'ਤੇ ਰੱਖਿਅਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।</translation> -<translation id="8978059030508051916">{count,plural, =0{ਕਿਸੇ ਪਾਸਵਰਡ ਨਾਲ ਛੇੜਛਾੜ ਨਹੀਂ ਹੋਈ}=1{{count} ਪਾਸਵਰਡ ਨਾਲ ਛੇੜਛਾੜ ਹੋਈ}other{{count} ਪਾਸਵਰਡਾਂ ਨਾਲ ਛੇੜਛਾੜ ਹੋਈ}}</translation> <translation id="8981454092730389528">Google ਸਰਗਰਮੀ ਕੰਟਰੋਲ</translation> <translation id="8985320356172329008">ਇਸ ਵਜੋਂ Google ਵਿੱਚ ਸਾਈਨ ਇਨ ਕੀਤਾ ਹੋਇਆ ਹੈ</translation> <translation id="8998289560386111590">ਤੁਹਾਡੇ ਡੀਵਾਈਸ 'ਤੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb index 65da30a8..1684d20 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Powiadomienia</translation> <translation id="2496626742194544812">Przejdź do pierwszej karty</translation> <translation id="2500374554657206846">Opcje zapisania hasła</translation> -<translation id="2502415369140591438">Ponownie użyte hasła: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Ta strona internetowa wielokrotnie próbuje otworzyć inną aplikację.</translation> <translation id="2529021024822217800">Otwórz wszystkie</translation> <translation id="2547458583188611426">Synchronizacja nie działa. Aby ją rozpocząć, wpisz hasło.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Proponuj tłumaczenie stron w innych językach</translation> <translation id="3588820906588687999">Otwórz grafikę w nowej karcie</translation> <translation id="3595252146048399851">W <ph name="BEGIN_LINK" />ustawieniach<ph name="END_LINK" /> możesz wybrać, co chcesz synchronizować. Google może korzystać z Twojej historii, aby dostosowywać działanie wyszukiwarki i innych usług.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} słabe hasło}few{{COUNT} słabe hasła}many{{COUNT} słabych haseł}other{{COUNT} słabego hasła}}</translation> <translation id="3603009562372709545">Kopiuj URL linku</translation> <translation id="3607167657931203000">Autouzupełnianie</translation> <translation id="3608008480985212611">Zaloguj się, aby zarządzać ustawieniami.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Połącz moje dane</translation> <translation id="3929457972718048006">Adresy</translation> <translation id="3943492037546055397">Hasła</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} słabe hasło}few{{count} słabe hasła}many{{count} słabych haseł}other{{count} słabego hasła}}</translation> <translation id="3959736869653157332">Menu → Nowa karta incognito</translation> <translation id="3967822245660637423">Pobieranie zakończone</translation> <translation id="3968505803272650567">Zarządzaj zainteresowaniami</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Pokaż karty</translation> <translation id="6187302354554850004">Ostatnia synchronizacja: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Nieprzeczytane</translation> -<translation id="6193424046394092997">{count,plural, =1{Dodano do zakładek w folderze {title}}few{Dodano do zakładek w folderze {title}}many{Dodano do zakładek w folderze {title}}other{Dodano do zakładek w folderze {title}}}</translation> <translation id="6196207969502475924">Wyszukiwanie głosowe</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Zamknij {COUNT} kartę}few{Zamknij {COUNT} karty}many{Zamknij {COUNT} kart}other{Zamknij {COUNT} karty}}</translation> <translation id="6210079381482819663">Tutaj są przenoszone karty nieużywane przez co najmniej <ph name="THRESHOLD" /> dni. Możesz to zmienić w dowolnym momencie w <ph name="BEGIN_LINK" />ustawieniach<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Twoje dane zostały zaszyfrowane z użyciem hasła synchronizacji w dniu <ph name="TIME" />. Wpisz je, by rozpocząć synchronizację.</translation> <translation id="6418346271604475326">Przygotowuję PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Zakładka została zapisana w folderze {title} na Twoim koncie {email}}few{Zakładki zostały zapisane w folderze {title} na Twoim koncie {email}}many{Zakładki zostały zapisane w folderze {title} na Twoim koncie {email}}other{Zakładki zostały zapisane w folderze {title} na Twoim koncie {email}}}</translation> <translation id="6429213933892582367">Otwórz Opcje haseł</translation> <translation id="6434591244308415567">Wystąpił błąd. Spróbuj ponownie później.</translation> <translation id="6435236283694032571">Dodaj do listy Do przeczytania</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. Otwórz Ustawienia na iPadzie.</translation> <translation id="8976382372951310360">Pomoc</translation> <translation id="8976414606286374109">Karty zostały zapisane na koncie Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Brak przejętych haseł}=1{{count} przejęte hasło}few{{count} przejęte hasła}many{{count} przejętych haseł}other{{count} przejętego hasła}}</translation> <translation id="8981454092730389528">Zarządzanie aktywnością w Google</translation> <translation id="8985320356172329008">Jesteś zalogowany w Google jako</translation> <translation id="8986567980592931173">Zaloguj się na konto Google, aby synchronizować swoje hasła, historię i inne dane.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb index 6979fab..2eb23fc9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Notificações</translation> <translation id="2496626742194544812">Ir para a primeira guia</translation> <translation id="2500374554657206846">Opções para salvar senha</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> senhas reutilizadas</translation> <translation id="2523363575747517183">Este site está tentando repetidamente abrir outro aplicativo.</translation> <translation id="2529021024822217800">Abrir todos</translation> <translation id="2547458583188611426">A sincronização não está funcionando. Para iniciar a sincronização, digite a senha longa.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Oferecer para traduzir páginas em outros idiomas</translation> <translation id="3588820906588687999">Abrir imagem em "Nova guia"</translation> <translation id="3595252146048399851">Nas <ph name="BEGIN_LINK" />configurações<ph name="END_LINK" />, é possível escolher a qualquer momento o que é sincronizado. O Google pode personalizar a Pesquisa e outros serviços com base no seu histórico.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} senha fraca}one{{COUNT} senha fraca}other{{COUNT} senhas fracas}}</translation> <translation id="3603009562372709545">Copiar URL do link</translation> <translation id="3607167657931203000">Dados de preenchimento automático</translation> <translation id="3608008480985212611">Faça login para gerenciar suas preferências.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Integrar meus dados</translation> <translation id="3929457972718048006">Endereços</translation> <translation id="3943492037546055397">Senhas</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} senha fraca}one{{count} senha fraca}other{{count} senhas fracas}}</translation> <translation id="3959736869653157332">Menu → Nova guia anônima</translation> <translation id="3967822245660637423">Download concluído</translation> <translation id="3968505803272650567">Gerenciar interesses</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Mostrar guias</translation> <translation id="6187302354554850004">Última sincronização: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Não lidas</translation> -<translation id="6193424046394092997">{count,plural, =1{Adicionado aos favoritos em {title}}one{Adicionado aos favoritos em {title}}other{Adicionados aos favoritos em {title}}}</translation> <translation id="6196207969502475924">Pesquisa por voz</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Fechar {COUNT} guia}one{Fechar {COUNT} guia}other{Fechar {COUNT} guias}}</translation> <translation id="6210079381482819663">As guias não usadas há <ph name="THRESHOLD" /> dias ou mais são movidas para cá. É possível mudar isso a qualquer momento nas <ph name="BEGIN_LINK" />configurações<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Seus dados foram criptografados com sua senha longa de sincronização no dia <ph name="TIME" />. Informe-a para começar a sincronização.</translation> <translation id="6418346271604475326">Preparando PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Favorito salvo na pasta {title} na sua conta {email}}one{Favorito salvo na pasta {title} na sua conta {email}}other{Favoritos salvos na pasta {title} na sua conta {email}}}</translation> <translation id="6429213933892582367">Abra "Opções de senha"</translation> <translation id="6434591244308415567">Ocorreu um erro. Tente novamente mais tarde.</translation> <translation id="6435236283694032571">Adicionar à Lista de leitura</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. Abra o app Ajustes do iPad</translation> <translation id="8976382372951310360">Ajuda</translation> <translation id="8976414606286374109">Os cartões são salvos na sua Conta do Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nenhuma senha comprometida}=1{{count} senha comprometida}one{{count} senha comprometida}other{{count} senhas comprometidas}}</translation> <translation id="8981454092730389528">Controles de atividades do Google</translation> <translation id="8985320356172329008">Conectado(a) ao Google como</translation> <translation id="8986567980592931173">Faça login com sua Conta do Google para sincronizar senhas, histórico e muito mais.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb index 6d23eb3..e74e2d83 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Notificações</translation> <translation id="2496626742194544812">Ir para o primeiro separador</translation> <translation id="2500374554657206846">Opções para Guardar palavra-passe</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> palavras-passe reutilizadas</translation> <translation id="2523363575747517183">Este Website está a tentar repetidamente abrir outra aplicação.</translation> <translation id="2529021024822217800">Abrir todos</translation> <translation id="2547458583188611426">A sincronização não está a funcionar. Para iniciar a sincronização, introduza a sua frase de acesso.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Proponha a tradução de páginas noutros idiomas</translation> <translation id="3588820906588687999">Abrir imagem num novo separador</translation> <translation id="3595252146048399851">Pode escolher o que quer sincronizar nas <ph name="BEGIN_LINK" />definições<ph name="END_LINK" />. A Google pode personalizar a Pesquisa e outros serviços com base no seu histórico.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} palavra-passe fraca}other{{COUNT} palavras-passe fracas}}</translation> <translation id="3603009562372709545">Copiar URL do Link</translation> <translation id="3607167657931203000">Dados de preenchimento automático</translation> <translation id="3608008480985212611">Iniciar sessão para gerir as suas preferências.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Combinar os meus dados</translation> <translation id="3929457972718048006">Moradas</translation> <translation id="3943492037546055397">Palavras-passe</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} palavra-passe fraca}other{{count} palavras-passe fracas}}</translation> <translation id="3959736869653157332">Menu → Novo separador anónimo</translation> <translation id="3967822245660637423">Transferência concluída</translation> <translation id="3968505803272650567">Gerir interesses</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Mostrar Separadores</translation> <translation id="6187302354554850004">Última sincronização: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Não lidas</translation> -<translation id="6193424046394092997">{count,plural, =1{Adicionado aos marcadores em {title}}other{Adicionado aos marcadores em {title}}}</translation> <translation id="6196207969502475924">Pesquisa por Voz</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Fechar {COUNT} separador}other{Fechar {COUNT} separadores}}</translation> <translation id="6210079381482819663">Os separadores que não são usados há <ph name="THRESHOLD" /> dias ou mais são movidos para aqui. Pode alterar esta definição em qualquer altura nas <ph name="BEGIN_LINK" />definições<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Os dados foram encriptados com a sua frase de acesso de sincronização em <ph name="TIME" />. Introduza-a para iniciar a sincronização.</translation> <translation id="6418346271604475326">A preparar PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Marcador guardado em {title} na sua conta {email}}other{Marcadores guardados em {title} na sua conta {email}}}</translation> <translation id="6429213933892582367">Abra as Opções de palavras-passe</translation> <translation id="6434591244308415567">Ocorreu um erro. Tente mais tarde.</translation> <translation id="6435236283694032571">Adicionar à lista de leitura</translation> @@ -1094,6 +1089,7 @@ <translation id="8136856065410661948">Isto vai ser usado para criar eventos no seu Calendário Apple a partir do Chrome e Google Lens.</translation> <translation id="8156478151976189188">A Sincronização de palavras-passe não está a funcionar</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> contas</translation> +<translation id="8159358225423560600">agora mesmo</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Os seus dispositivos<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Traduzir página</translation> @@ -1124,6 +1120,7 @@ <translation id="8393889347136007944">Separadores não usados há <ph name="THRESHOLD" /> dias</translation> <translation id="8407669440184693619">Não foram encontradas palavras-passe para este site</translation> <translation id="842017693807136194">Iniciar sessão com</translation> +<translation id="8423121072346537366">Agora mesmo</translation> <translation id="8425693829365242963">As suas palavras-passe são únicas</translation> <translation id="8428045167754449968">Cidade/Localidade</translation> <translation id="8428213095426709021">Definições</translation> @@ -1211,7 +1208,6 @@ <translation id="8974714402877957201">1. Abra as Definições do iPad</translation> <translation id="8976382372951310360">Ajuda</translation> <translation id="8976414606286374109">Os cartões são guardados na sua Conta Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nenhuma palavra-passe comprometida}=1{{count} palavra-passe comprometida}other{{count} palavras-passe comprometidas}}</translation> <translation id="8981454092730389528">Controlos da atividade Google</translation> <translation id="8985320356172329008">Iniciou sessão no Google como</translation> <translation id="8986567980592931173">Inicie sessão com a sua Conta Google para sincronizar as palavras-passe, o histórico e muito mais.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb index b230aaf..2fbb639 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Micșorează</translation> <translation id="2230173723195178503">Pagina web s-a încărcat</translation> <translation id="2239626343334228536">Se șterg datele de navigare...</translation> +<translation id="2242467532204595597">Folosește Chrome oricând atingi linkuri în mesaje, documente și alte aplicații.</translation> <translation id="22508856139286506">Avertismente respinse (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Meniu → Istoric</translation> <translation id="2256933947031277845">Organizația îți permite să te conectezi doar cu anumite conturi.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} adresă salvată disponibilă deasupra tastaturii.}few{{count} adrese salvate disponibile deasupra tastaturii.}other{{count} de adrese salvate disponibile deasupra tastaturii.}}</translation> <translation id="2421004566762153674">Blocarea cookie-urilor terță parte</translation> <translation id="2421044535038393232">Continuă editarea</translation> +<translation id="2423077901494354337">Acum vei profita la maximum de Chrome pe dispozitiv.</translation> <translation id="2434405374328098816">Ai salvat deja o parolă pentru <ph name="USERNAME" /> la <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Afișați parola</translation> <translation id="2451654228769116489">Fixează fila</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Notificări</translation> <translation id="2496626742194544812">Accesează prima filă</translation> <translation id="2500374554657206846">Opțiuni pentru Salvarea parolei</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> parole refolosite</translation> <translation id="2523363575747517183">Acest site încearcă în mod repetat să deschidă altă aplicație.</translation> <translation id="2529021024822217800">Deschide-le pe toate</translation> <translation id="2547458583188611426">Sincronizarea nu funcționează. Pentru a porni sincronizarea, introdu expresia de acces.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Oferă traducerea paginilor în alte limbi</translation> <translation id="3588820906588687999">Deschide imaginea într-o filă nouă</translation> <translation id="3595252146048399851">Poți să alegi oricând ce să sincronizezi în <ph name="BEGIN_LINK" />setări<ph name="END_LINK" />. Google poate personaliza Căutarea și alte servicii pe baza istoricului.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} parolă slabă}few{{COUNT} parole slabe}other{{COUNT} de parole slabe}}</translation> <translation id="3603009562372709545">Copiază adresa URL a linkului</translation> <translation id="3607167657931203000">Datele de completare automată</translation> <translation id="3608008480985212611">Conectează-te pentru a-ți gestiona preferințele.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Combină datele</translation> <translation id="3929457972718048006">Adrese</translation> <translation id="3943492037546055397">Parole</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} parolă slabă}few{{count} parole slabe}other{{count} de parole slabe}}</translation> <translation id="3959736869653157332">Meniu → Filă incognito nouă</translation> <translation id="3967822245660637423">Descărcare finalizată</translation> <translation id="3968505803272650567">Gestionează interesele</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Afișează butonul File</translation> <translation id="6187302354554850004">Ultima sincronizare: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Necitite</translation> -<translation id="6193424046394092997">{count,plural, =1{Marcaj adăugat în {title}}few{Marcaje adăugate în {title}}other{Marcaje adăugate în {title}}}</translation> <translation id="6196207969502475924">Căutare vocală</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Închide {COUNT} filă}few{Închide {COUNT} file}other{Închide {COUNT} de file}}</translation> <translation id="6210079381482819663">Filele care nu sunt folosesc timp de minimum <ph name="THRESHOLD" /> zile se mută aici. Poți modifica oricând opțiunea din <ph name="BEGIN_LINK" />setări<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Începi o nouă descărcare?</translation> <translation id="6347953390226388422">{count,plural, =1{Adresa se va șterge din Contul Google (<ph name="USER_EMAIL" />) și de pe acest dispozitiv.}few{Adresele se vor șterge din Contul Google (<ph name="USER_EMAIL" />) și de pe acest dispozitiv.}other{Adresele se vor șterge din Contul Google (<ph name="USER_EMAIL" />) și de pe acest dispozitiv.}}</translation> <translation id="634878792104344809">Sincronizează parolele, istoricul și alte date, pe toate dispozitivele</translation> +<translation id="6348855835728304880">Accesează parolele Chrome și alte funcții în alte aplicații de pe acest dispozitiv.</translation> <translation id="6355820205320395730">Parolele slabe sunt ușor de ghicit. Trebuie să creezi parole puternice. <ph name="BEGIN_LINK" />Vezi mai multe sfaturi de securitate.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Urmărește <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Nu există file incognito</translation> @@ -821,7 +820,6 @@ Datele au fost criptate cu expresia de acces pentru sincronizare la <ph name="TIME" />. Introdu-o pentru a începe sincronizarea.</translation> <translation id="6418346271604475326">Se pregătește fișierul PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Marcajul a fost salvat în {title} din contul {email}}few{Marcajele au fost salvate în {title} din contul {email}}other{Marcajele au fost salvate în {title} din contul {email}}}</translation> <translation id="6429213933892582367">Deschide Opțiuni pentru parolă</translation> <translation id="6434591244308415567">A apărut o eroare, încearcă mai târziu.</translation> <translation id="6435236283694032571">Adaugă în Lista de lecturi</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Explorează noile funcții și sfaturi în secțiunea Noutăți</translation> <translation id="7223102419539744003">Închide fila</translation> <translation id="722454870747268814">Filă incognito nouă</translation> +<translation id="723787869754590019">Folosește Chrome pentru completare automată</translation> <translation id="7265758999917665941">Niciodată pentru acest site</translation> <translation id="7272437679830969316">Nu ți se poate confirma identitatea. Parola nu a fost copiată.</translation> <translation id="7291368939935408496">Se pregătesc parolele...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">Folosești parole greu de ghicit</translation> <translation id="8668210798914567634">Această pagină a fost salvată în Lista de lectură.</translation> <translation id="8680787084697685621">Datele de conectare la cont au expirat.</translation> +<translation id="868773710103052534">Ai reușit</translation> <translation id="8693663554456874301">{count,plural, =1{Închide fila}few{Închide filele}other{Închide filele}}</translation> <translation id="8703536910991780768">Parolele sunt puternice</translation> <translation id="8706588385081740091">Parole</translation> <translation id="8717864919010420084">Copiază linkul</translation> <translation id="8721297211384281569">Meniul Instrumente</translation> <translation id="8725066075913043281">Încearcă din nou</translation> +<translation id="8727043961453758442">Profită la maximum de Chrome</translation> <translation id="8730621377337864115">Terminat</translation> <translation id="8731388423028622182">Te-ai deconectat de la contul <ph name="USER_NAME" /> în cadrul resetării dispozitivului iPhone. Atinge Continuă pentru a te conecta.</translation> <translation id="87371078663613140">Explorează opțiunile din bara de meniu</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. Deschide Setările dispozitivului iPad.</translation> <translation id="8976382372951310360">Ajutor</translation> <translation id="8976414606286374109">Cardurile se salvează în Contul Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nicio parolă compromisă}=1{{count} parolă compromisă}few{{count} parole compromise}other{{count} de parole compromise}}</translation> <translation id="8981454092730389528">Opțiuni privind activitatea Google</translation> <translation id="8985320356172329008">Conectat(ă) la Google ca</translation> +<translation id="8986567980592931173">Conectează-te cu Contul Google pentru a sincroniza parolele, istoricul și alte date.</translation> <translation id="8998289560386111590">Nu este disponibil pe dispozitivul tău</translation> <translation id="9000089900434778519">Motorul tău de căutare este <ph name="DSE_NAME" />. Vezi instrucțiunile pentru ștergerea istoricului căutărilor, dacă este cazul.</translation> <translation id="9008201768610948239">Ignorați</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb index c3149ea3..78fb082 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Уведомления</translation> <translation id="2496626742194544812">Перейти к первой вкладке</translation> <translation id="2500374554657206846">Параметры сохранения пароля</translation> -<translation id="2502415369140591438">Повторяющихся паролей: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Этот сайт часто пытается открыть другое приложение.</translation> <translation id="2529021024822217800">Открыть все</translation> <translation id="2547458583188611426">Синхронизация не выполняется. Чтобы запустить ее, введите кодовую фразу.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Предлагать перевести страницы на других языках.</translation> <translation id="3588820906588687999">Открыть изображение в новой вкладке</translation> <translation id="3595252146048399851">Вы всегда можете выбрать, что синхронизировать, в <ph name="BEGIN_LINK" />настройках<ph name="END_LINK" />. Google может персонально настраивать Поиск и другие сервисы на основе вашей истории.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} простой пароль}one{{COUNT} простой пароль}few{{COUNT} простых пароля}many{{COUNT} простых паролей}other{{COUNT} простого пароля}}</translation> <translation id="3603009562372709545">Копировать URL</translation> <translation id="3607167657931203000">Данные автозаполнения</translation> <translation id="3608008480985212611">Войдите в аккаунт, чтобы задать настройки.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Объединить данные</translation> <translation id="3929457972718048006">Адреса</translation> <translation id="3943492037546055397">Пароли</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} простой пароль}one{{count} простой пароль}few{{count} простых пароля}many{{count} простых паролей}other{{count} простого пароля}}</translation> <translation id="3959736869653157332">Меню → Новая вкладка инкогнито</translation> <translation id="3967822245660637423">Скачивание завершено.</translation> <translation id="3968505803272650567">Настроить интересы</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Показать вкладки</translation> <translation id="6187302354554850004">Послед. синхр.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Непрочитанные</translation> -<translation id="6193424046394092997">{count,plural, =1{Закладка добавлена в папку "{title}".}one{Закладки добавлены в папку "{title}".}few{Закладки добавлены в папку "{title}".}many{Закладки добавлены в папку "{title}".}other{Закладки добавлены в папку "{title}".}}</translation> <translation id="6196207969502475924">Голосовой поиск</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Закрыть {COUNT} вкладку}one{Закрыть {COUNT} вкладку}few{Закрыть {COUNT} вкладки}many{Закрыть {COUNT} вкладок}other{Закрыть {COUNT} вкладки}}</translation> <translation id="6210079381482819663">Вкладки, которые не использовались в течение нескольких дней (<ph name="THRESHOLD" />), перемещаются сюда. Это поведение можно в любой момент изменить в <ph name="BEGIN_LINK" />настройках<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Данные были зашифрованы с помощью кодовой фразы <ph name="TIME" />. Введите ее, чтобы начать синхронизацию.</translation> <translation id="6418346271604475326">Подготовка PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Закладка добавлена в папку "{title}" в вашем аккаунте ({email}).}one{Закладки добавлены в папку "{title}" в вашем аккаунте ({email}).}few{Закладки добавлены в папку "{title}" в вашем аккаунте ({email}).}many{Закладки добавлены в папку "{title}" в вашем аккаунте ({email}).}other{Закладки добавлены в папку "{title}" в вашем аккаунте ({email}).}}</translation> <translation id="6429213933892582367">Откройте раздел "Настройки паролей".</translation> <translation id="6434591244308415567">Произошла ошибка. Повторите попытку позже.</translation> <translation id="6435236283694032571">Добавить в список для чтения</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. Откройте настройки устройства iPad.</translation> <translation id="8976382372951310360">Справка</translation> <translation id="8976414606286374109">Карты сохраняются в аккаунте Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Нет раскрытых паролей}=1{{count} раскрытый пароль}one{{count} раскрытый пароль}few{{count} раскрытых пароля}many{{count} раскрытых паролей}other{{count} раскрытого пароля}}</translation> <translation id="8981454092730389528">Отслеживание действий в Google</translation> <translation id="8985320356172329008">Вы вошли в аккаунт</translation> <translation id="8986567980592931173">Чтобы синхронизировать пароли, историю и другие данные, достаточно войти в аккаунт Google.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb index d9ad3e9..3f3e3396 100644 --- a/ios/chrome/app/strings/resources/ios_strings_si.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">දැනුම්දීම්</translation> <translation id="2496626742194544812">පළමු පටිත්ත වෙත යන්න</translation> <translation id="2500374554657206846">මුරපදය සුරැකීමට විකල්ප</translation> -<translation id="2502415369140591438">යළි භාවිතා කළ මුරපද <ph name="COUNT" />ක්</translation> <translation id="2523363575747517183">මෙම වෙබ් අඩවිය තවත් යෙදුමක් විවෘත කිරීමට නැවත නැවතත් උත්සාහ කරයි.</translation> <translation id="2529021024822217800">සියල්ල විවෘත කරන්න</translation> <translation id="2547458583188611426">සමමුහුර්ත කිරීම ක්රියා නොකරයි. සමමුහුර්ත කිරීම ආරම්භ කිරීමට, ඔබේ මුර-වැකිකඩ ඇතුළු කරන්න.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">වෙනත් භාෂාවල පිටු පරිවර්තනයට පිරිනමන්න</translation> <translation id="3588820906588687999">රූපය නව පටිත්තක විවෘත කරන්න</translation> <translation id="3595252146048399851">ඔබට සැම විට <ph name="BEGIN_LINK" />සැකසීම්<ph name="END_LINK" /> තුළ සමමුහුර්ත කළ යුතු දේ තෝරා ගත හැක. Google ඔබේ ඉතිහාසය මත පදනම්ව සෙවීම් සහ අනෙකුත් සේවාවන් පෞද්ගලීකරණය කිරීමට ඉඩ ඇත.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} දුර්වල මුරපදයක්}one{දුර්වල මුරපද {COUNT}ක්}other{දුර්වල මුරපද {COUNT}ක්}}</translation> <translation id="3603009562372709545">සබැඳි URL පිටපත් කරන්න</translation> <translation id="3607167657931203000">ස්වයං පිරවුම් දත්ත</translation> <translation id="3608008480985212611">ඔබේ මනාප කළමනාකරණය කිරීමට පුරන්න.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">මගේ දත්ත ඒකාබද්ධ කරන්න</translation> <translation id="3929457972718048006">ලිපින</translation> <translation id="3943492037546055397">මුරපද</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} දුර්වල මුරපදයක්}one{දුර්වල මුරපද {count}ක්}other{දුර්වල මුරපද {count}ක්}}</translation> <translation id="3959736869653157332">මෙනුව → නව අප්රකට ටැබය</translation> <translation id="3967822245660637423">බාගැනීම සම්පූර්ණයි</translation> <translation id="3968505803272650567">රුචිකත්ව කළමනාකරණය කරන්න</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">පටිති පෙන්වන්න</translation> <translation id="6187302354554850004">අවසන් වරට සමමුහුර්ත කළේ: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">නොකියවූ</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} වෙත පිටුසන් කර ඇත}one{{title} වෙත පිටුසන් කර ඇත}other{{title} වෙත පිටුසන් කර ඇත}}</translation> <translation id="6196207969502475924">හඬ සෙවීම</translation> <translation id="6202364442240589072">{COUNT,plural, =1{ටැබ {COUNT}ක් වසන්න}one{ටැබ {COUNT}ක් වසන්න}other{ටැබ {COUNT}ක් වසන්න}}</translation> <translation id="6210079381482819663">දින <ph name="THRESHOLD" />ක් හෝ ඊට වැඩි කාලයක් භාවිතා නොකළ පටිති මෙතැනට ගෙන යනු ලැබේ. ඔබට <ph name="BEGIN_LINK" />සැකසීම්<ph name="END_LINK" /> තුළ මෙය ඕනෑම වේලාවක වෙනස් කළ හැක.</translation> @@ -820,7 +816,6 @@ ඔබේ දත්ත <ph name="TIME" /> විට ඔබේ සමමුහුර්ත මුරවදන සමඟ සංකේතනය කර ඇත. සමමුහුර්ත කිරීම ආරම්භ කිරීමට ඇතුළු කරන්න.</translation> <translation id="6418346271604475326">PDF සූදානම් කිරීම</translation> -<translation id="6421095165635308">{count,plural, =1{පිටුසන ඔබේ ගිණුමේ {email}, {title} වෙත සුරකින ලදි}one{පිටුසන ඔබේ ගිණුමේ {email}, {title} වෙත සුරකින ලදි}other{පිටුසන ඔබේ ගිණුමේ {email}, {title} වෙත සුරකින ලදි}}</translation> <translation id="6429213933892582367">මුරපද විකල්ප විවෘත කරන්න</translation> <translation id="6434591244308415567">දෝෂයක් සිදු විය. පසුව නැවත උත්සාහ කරන්න.</translation> <translation id="6435236283694032571">කියවීම් ලැයිස්තුවට එක් කරන්න</translation> @@ -1089,6 +1084,7 @@ <translation id="8136856065410661948">Chrome සහ Google Lens වෙතින් ඔබේ Apple දින දර්ශනයේ සිදුවීම් තැනීමට මෙය භාවිතා කරනු ඇත.</translation> <translation id="8156478151976189188">මුරපද සමමුහුර්තය ක්රියා නොකරයි</translation> <translation id="8157532349231307196">ගිණුම් <ph name="NUMBER_OF_ACCOUNTS" /></translation> +<translation id="8159358225423560600">මේ දැන්</translation> <translation id="8179976553408161302">ඇතුළු කරන්න</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />ඔබගේ උපාංග<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">පිටුව පරිවර්තන කරන්න</translation> @@ -1119,6 +1115,7 @@ <translation id="8393889347136007944">දින <ph name="THRESHOLD" />ක් සඳහා පටිති භාවිතා නොවේ</translation> <translation id="8407669440184693619">මෙම වෙබ් අඩවිය සඳහා මුරපද කිසිවක් හමු නොවිය</translation> <translation id="842017693807136194">පුරා ඇත</translation> +<translation id="8423121072346537366">මේ දැන්</translation> <translation id="8425693829365242963">ඔබේ මුරපද අනන්ය වේ</translation> <translation id="8428045167754449968">නගරය / පුරවරය</translation> <translation id="8428213095426709021">සැකසුම්</translation> @@ -1204,7 +1201,6 @@ <translation id="8974714402877957201">1. iPad සැකසීම් විවෘත කරන්න</translation> <translation id="8976382372951310360">උදවු</translation> <translation id="8976414606286374109">කාඩ්පත් ඔබගේ Google ගිණුමට සුරැකේ.</translation> -<translation id="8978059030508051916">{count,plural, =0{අවදානමට පත් වූ මුරපද නැත}=1{අවදානමට පත් වූ {count} මුරපදයක්}one{අවදානමට පත් වූ මුරපද {count}ක්}other{අවදානමට පත් වූ මුරපද {count}ක්}}</translation> <translation id="8981454092730389528">Google ක්රියාකාරකම් පාලනය</translation> <translation id="8985320356172329008">Google වෙත පුරනය වූයේ</translation> <translation id="8998289560386111590">ඔබේ උපාංගයෙහි නොමැත</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb index 56b9ed9..73dedcc 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Upozornenia</translation> <translation id="2496626742194544812">Prejsť na prvú kartu</translation> <translation id="2500374554657206846">Možnosti uloženia hesla</translation> -<translation id="2502415369140591438">Recyklované heslá: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Tento web sa opakovane pokúša otvoriť ďalšiu aplikáciu.</translation> <translation id="2529021024822217800">Otvoriť všetky</translation> <translation id="2547458583188611426">Synchronizácia nefunguje. Ak ju chcete spustiť, zadajte prístupovú frázu</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Ponúkať preklad stránok v ďalších jazykoch</translation> <translation id="3588820906588687999">Otvoriť obrázok na novej karte</translation> <translation id="3595252146048399851">Položky, ktoré chcete synchronizovať, môžete kedykoľvek vybrať v <ph name="BEGIN_LINK" />nastaveniach<ph name="END_LINK" />. Google môže prispôsobiť Vyhľadávanie a ďalšie služby na základe vašej histórie.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} slabé heslo}few{{COUNT} slabé heslá}many{{COUNT} Weak passwords}other{{COUNT} slabých hesiel}}</translation> <translation id="3603009562372709545">Kopírovať webovú adresu odkazu</translation> <translation id="3607167657931203000">Údaje automatického dopĺňania</translation> <translation id="3608008480985212611">Ak chcete spravovať predvoľby, prihláste sa</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Spojiť moje dáta</translation> <translation id="3929457972718048006">Adresy</translation> <translation id="3943492037546055397">Heslá</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} slabé heslo}few{{count} slabé heslá}many{{count} Weak Passwords}other{{count} slabých hesiel}}</translation> <translation id="3959736869653157332">Ponuka → Nová karta inkognito</translation> <translation id="3967822245660637423">Sťahovanie dokončené</translation> <translation id="3968505803272650567">Spravovať záujmy</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Zobraziť karty</translation> <translation id="6187302354554850004">Synchronizované <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Neprečítané</translation> -<translation id="6193424046394092997">{count,plural, =1{Uložené ako záložka do priečinka {title}}few{Uložené ako záložky do priečinka {title}}many{Bookmarked to {title}}other{Uložené ako záložky do priečinka {title}}}</translation> <translation id="6196207969502475924">Hlasové vyhľadávanie</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Zavrieť {COUNT} kartu}few{Zavrieť {COUNT} karty}many{Close {COUNT} Tabs}other{Zavrieť {COUNT} kariet}}</translation> <translation id="6210079381482819663">Presunú sa sem karty, ktoré sa nepoužívajú <ph name="THRESHOLD" /> alebo viac dní. Túto možnosť môžete kedykoľvek zmeniť v <ph name="BEGIN_LINK" />nastaveniach<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Vaše údaje boli <ph name="TIME" /> zašifrované pomocou vlastnej prístupovej frázy synchronizácie. Keď ju zadáte, synchronizácia sa spustí.</translation> <translation id="6418346271604475326">Príprava PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Záložka bola uložená do priečinka {title} vo vašom účte {email}}few{Záložky boli uložené do priečinka {title} vo vašom účte {email}}many{Záložky boli uložené do priečinka {title} vo vašom účte {email}}other{Záložky boli uložené do priečinka {title} vo vašom účte {email}}}</translation> <translation id="6429213933892582367">Otvorte Možnosti hesiel</translation> <translation id="6434591244308415567">Vyskytla sa chyba. Skúste to neskôr.</translation> <translation id="6435236283694032571">Pridať do čitateľského zoznamu</translation> @@ -1029,6 +1024,7 @@ <translation id="7781011649027948662">Chcete preložiť stránku?</translation> <translation id="7781069478569868053">Stránka na novej karte</translation> <translation id="7781829728241885113">Včera</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Po 1 dni}few{Po {COUNT} dňoch}many{Po {COUNT} dňa}other{Po {COUNT} dňoch}}</translation> <translation id="778855399387580014">Začnite vyhľadávanie na novej karte Chrome.</translation> <translation id="7791543448312431591">Pridať</translation> <translation id="7807060072011926525">Poskytuje Google</translation> @@ -1212,7 +1208,6 @@ <translation id="8974714402877957201">1. Otvorte nastavenia iPadu</translation> <translation id="8976382372951310360">Pomocník</translation> <translation id="8976414606286374109">Karty sa ukladajú do vášho účtu Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Žiadne odhalené heslá}=1{{count} odhalené heslo}few{{count} odhalené heslá}many{{count} Compromised Passwords}other{{count} odhalených hesiel}}</translation> <translation id="8981454092730389528">Riadenie aktivity Google</translation> <translation id="8985320356172329008">Prihlásený účet Google</translation> <translation id="8986567980592931173">Ak chcete synchronizovať heslá, históriu a ďalší obsah, prihláste sa účtom Google.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb index 358724db..c46c5b04 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Pomanjšaj</translation> <translation id="2230173723195178503">Spletna stran je naložena</translation> <translation id="2239626343334228536">Brisanje podatkov brskanja …</translation> +<translation id="2242467532204595597">Chrome lahko uporabljate, kadar koli se dotaknete povezav v sporočilih, dokumentih in drugih aplikacijah.</translation> <translation id="22508856139286506">Opuščena opozorila (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Meni → Zgodovina</translation> <translation id="2256933947031277845">Organizacija dovoli prijavo samo z nekaterimi računi.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{Nad tipkovnico je na voljo {count} shranjen naslov.}one{Nad tipkovnico je na voljo {count} shranjen naslov.}two{Nad tipkovnico sta na voljo {count} shranjena naslova.}few{Nad tipkovnico so na voljo {count} shranjeni naslovi.}other{Nad tipkovnico je na voljo {count} shranjenih naslovov.}}</translation> <translation id="2421004566762153674">Blokiranje piškotkov drugih spletnih mest</translation> <translation id="2421044535038393232">Nadaljuj urejanje</translation> +<translation id="2423077901494354337">Zdaj boste lahko v napravi kar najbolje izkoristili Chrome.</translation> <translation id="2434405374328098816">Na <ph name="WEBSITE" /> ste že shranili geslo za »<ph name="USERNAME" />«.</translation> <translation id="2435457462613246316">Pokaži geslo</translation> <translation id="2451654228769116489">Pripni zavihek</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Obvestila</translation> <translation id="2496626742194544812">Na prvi zavihek</translation> <translation id="2500374554657206846">Možnosti shranjevanja gesel</translation> -<translation id="2502415369140591438">Št. znova uporabljenih gesel: <ph name="COUNT" /></translation> <translation id="2523363575747517183">To spletno mesto nenehno poskuša odpreti drugo aplikacijo.</translation> <translation id="2529021024822217800">Odpri vse</translation> <translation id="2547458583188611426">Sinhronizacija ne deluje. Če želite začeti sinhronizacijo, vnesite geslo.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Ponudi prevajanje strani v drugih jezikih</translation> <translation id="3588820906588687999">Odpri sliko na novem zavihku</translation> <translation id="3595252146048399851">V <ph name="BEGIN_LINK" />nastavitvah<ph name="END_LINK" /> lahko kadar koli izberete, kaj želite sinhronizirati. Google lahko prilagodi Iskanje Google in druge storitve glede na vašo zgodovino.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} šibko geslo}one{{COUNT} šibko geslo}two{{COUNT} šibki gesli}few{{COUNT} šibka gesla}other{{COUNT} šibkih gesel}}</translation> <translation id="3603009562372709545">Kopiraj URL povezave</translation> <translation id="3607167657931203000">Autofill Data</translation> <translation id="3608008480985212611">Prijavite se, če želite upravljati nastavitve.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Združevanje podatkov</translation> <translation id="3929457972718048006">Naslovi</translation> <translation id="3943492037546055397">Gesla</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} šibko geslo}one{{count} šibko geslo}two{{count} šibki gesli}few{{count} šibka gesla}other{{count} šibkih gesel}}</translation> <translation id="3959736869653157332">Meni → Novi anonimni zavihek</translation> <translation id="3967822245660637423">Prenos končan</translation> <translation id="3968505803272650567">Upravljanje zanimanj</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Pokaži zavihke</translation> <translation id="6187302354554850004">Nazadnje sinhronizirano: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Neprebrano</translation> -<translation id="6193424046394092997">{count,plural, =1{Zaznamek ustvarjen v mapi {title}}one{Zaznamki ustvarjeni v mapi {title}}two{Zaznamki ustvarjeni v mapi {title}}few{Zaznamki ustvarjeni v mapi {title}}other{Zaznamki ustvarjeni v mapi {title}}}</translation> <translation id="6196207969502475924">Glasovno iskanje</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Zapri {COUNT} zavihek}one{Zapri {COUNT} zavihek}two{Zapri {COUNT} zavihka}few{Zapri {COUNT} zavihke}other{Zapri {COUNT} zavihkov}}</translation> <translation id="6210079381482819663">Sem so premaknjeni zavihki, ki jih ne uporabljate najmanj toliko dni: <ph name="THRESHOLD" />. To lahko kadar koli spremenite v <ph name="BEGIN_LINK" />nastavitvah<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Želite začeti nov prenos?</translation> <translation id="6347953390226388422">{count,plural, =1{Ta naslov bo izbrisan iz računa Google (<ph name="USER_EMAIL" />) in iz te naprave.}one{Ti naslovi bodo izbrisani iz računa Google (<ph name="USER_EMAIL" />) in iz te naprave.}two{Ti naslovi bodo izbrisani iz računa Google (<ph name="USER_EMAIL" />) in iz te naprave.}few{Ti naslovi bodo izbrisani iz računa Google (<ph name="USER_EMAIL" />) in iz te naprave.}other{Ti naslovi bodo izbrisani iz računa Google (<ph name="USER_EMAIL" />) in iz te naprave.}}</translation> <translation id="634878792104344809">Sinhronizirajte gesla, zgodovino in druge podatke v vseh svojih napravah.</translation> +<translation id="6348855835728304880">Dostopajte do gesel v Chromu in drugega v drugih aplikacijah v tej napravi.</translation> <translation id="6355820205320395730">Šibka gesla je preprosto ugotoviti. Vedno ustvarite zapletena gesla. <ph name="BEGIN_LINK" />Oglejte si več varnostnih nasvetov.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Spremljaj <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">No Incognito Tabs</translation> @@ -821,7 +820,6 @@ Podatki so bili šifrirani z vašim geslom za sinhronizacijo <ph name="TIME" />. Vnesite ga, če želite začeti sinhronizacijo.</translation> <translation id="6418346271604475326">Preparing PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Zaznamek je shranjen v mapi {title} v računu, {email}}one{Zaznamki so shranjeni v mapi {title} v računu, {email}.}two{Zaznamki so shranjeni v mapi {title} v računu, {email}.}few{Zaznamki so shranjeni v mapi {title} v računu, {email}.}other{Zaznamki so shranjeni v mapi {title} v računu, {email}.}}</translation> <translation id="6429213933892582367">Odprite »Password Options« (Možnosti gesla).</translation> <translation id="6434591244308415567">Prišlo je do napake. Poskusite znova pozneje.</translation> <translation id="6435236283694032571">Dodajanje na bralni seznam</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Raziščite nove funkcije in nasvete v »Novosti«</translation> <translation id="7223102419539744003">Zapri zavihek</translation> <translation id="722454870747268814">New Incognito Tab</translation> +<translation id="723787869754590019">Uporaba Chroma za samodejno izpolnjevanje</translation> <translation id="7265758999917665941">Nikoli za to spletno mesto</translation> <translation id="7272437679830969316">Identitete ni mogoče preveriti. Geslo ni kopirano.</translation> <translation id="7291368939935408496">Pripravljanje gesel ...</translation> @@ -1090,6 +1089,7 @@ <translation id="8136856065410661948">To bo uporabljeno za ustvarjanje dogodkov v koledarju Apple Calendar s Chromom in Googlom Lens.</translation> <translation id="8156478151976189188">Sinhronizacija gesel ne deluje</translation> <translation id="8157532349231307196">Število računov: <ph name="NUMBER_OF_ACCOUNTS" /></translation> +<translation id="8159358225423560600">pravkar</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Vaše naprave<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Prevedi stran</translation> @@ -1120,6 +1120,7 @@ <translation id="8393889347136007944">Zavihki niso bili uporabljeni toliko dni: <ph name="THRESHOLD" /></translation> <translation id="8407669440184693619">Za to spletno mesto ni najdenih gesel</translation> <translation id="842017693807136194">Prijava z/s</translation> +<translation id="8423121072346537366">pravkar</translation> <translation id="8425693829365242963">Vaša gesla so edinstvena</translation> <translation id="8428045167754449968">Mesto</translation> <translation id="8428213095426709021">Nastavitve</translation> @@ -1153,12 +1154,14 @@ <translation id="8663764600409216912">Uporabljate gesla, ki jih je težko ugotoviti.</translation> <translation id="8668210798914567634">Ta stran je shranjena na bralni seznam.</translation> <translation id="8680787084697685621">Podrobnosti prijave v račun so zastarele.</translation> +<translation id="868773710103052534">Vse je pripravljeno</translation> <translation id="8693663554456874301">{count,plural, =1{Zapiranje zavihka}one{Zapiranje zavihkov}two{Zapiranje zavihkov}few{Zapiranje zavihkov}other{Zapiranje zavihkov}}</translation> <translation id="8703536910991780768">Vaša gesla so videti zapletena</translation> <translation id="8706588385081740091">Gesla</translation> <translation id="8717864919010420084">Kopiraj povezavo</translation> <translation id="8721297211384281569">Meni »Orodja«</translation> <translation id="8725066075913043281">Poskusite znova</translation> +<translation id="8727043961453758442">Izkoristite Chrome na najboljši način</translation> <translation id="8730621377337864115">Končano</translation> <translation id="8731388423028622182">Zaradi ponastavitve iPhona ste bili odjavljeni iz računa <ph name="USER_NAME" />. Spodaj se dotaknite gumba za nadaljevanje, če se želite prijaviti.</translation> <translation id="87371078663613140">Raziščite možnosti v menijski vrstici</translation> @@ -1205,9 +1208,9 @@ <translation id="8974714402877957201">1. Odprite nastavitve za iPad.</translation> <translation id="8976382372951310360">Pomoč</translation> <translation id="8976414606286374109">Kartice se shranijo v račun Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Ni ogroženih gesel}=1{{count} ogroženo geslo}one{{count} ogroženo geslo}two{{count} ogroženi gesli}few{{count} ogrožena gesla}other{{count} ogroženih gesel}}</translation> <translation id="8981454092730389528">Googlovi kontrolniki za dejavnost</translation> <translation id="8985320356172329008">V Google ste prijavljeni kot</translation> +<translation id="8986567980592931173">Prijavite se v račun Google, če želite sinhronizirati gesla, zgodovino in drugo.</translation> <translation id="8998289560386111590">Ni na voljo v vaši napravi</translation> <translation id="9000089900434778519">Vaš iskalnik je <ph name="DSE_NAME" />. Oglejte si navodila iskalnika za brisanje zgodovine iskanja, če je na voljo.</translation> <translation id="9008201768610948239">Prezri</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb index 567a552..fef56a90 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Njoftimet</translation> <translation id="2496626742194544812">Shko te skeda e parë</translation> <translation id="2500374554657206846">Opsionet për të ruajtur fjalëkalimin</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> fjalëkalime të ripërdorura</translation> <translation id="2523363575747517183">Ky sajt uebi po përpiqet vazhdimisht të hapë një aplikacion tjetër.</translation> <translation id="2529021024822217800">Hapi të gjithë</translation> <translation id="2547458583188611426">Sinkronizimi nuk po funksionon. Për të nisur sinkronizimin, fut frazën e kalimit.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Ofro që t'i përkthesh faqet në gjuhë të tjera</translation> <translation id="3588820906588687999">Hape imazhin në skedë të re</translation> <translation id="3595252146048399851">Mund të zgjedhësh gjithmonë se çfarë do të sinkronizosh te <ph name="BEGIN_LINK" />cilësimet<ph name="END_LINK" />. Google mund t'i personalizojë "Kërko" dhe shërbimet e tjera bazuar në historikun tënd.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} fjalëkalim i dobët}other{{COUNT} fjalëkalime të dobëta}}</translation> <translation id="3603009562372709545">Kopjo URL-në e lidhjes</translation> <translation id="3607167657931203000">Plotëso automatikisht të dhënat</translation> <translation id="3608008480985212611">Identifikohu për të menaxhuar preferencat e tua.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Ndërthur të dhënat e mia</translation> <translation id="3929457972718048006">Adresat</translation> <translation id="3943492037546055397">Fjalëkalimet</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} fjalëkalim i dobët}other{{count} fjalëkalime të dobëta}}</translation> <translation id="3959736869653157332">Menyja → Skedë e re "e fshehtë"</translation> <translation id="3967822245660637423">Shkarkimi përfundoi</translation> <translation id="3968505803272650567">Menaxho interesat</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">Trego skedat</translation> <translation id="6187302354554850004">Sinkronizimi i fundit: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Të palexuara</translation> -<translation id="6193424046394092997">{count,plural, =1{U shënua si faqeshënues te {title}}other{U shënuan si faqeshënues te {title}}}</translation> <translation id="6196207969502475924">Kërkimi me zë</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Mbyll {COUNT} skedë}other{Mbyll {COUNT} skeda}}</translation> <translation id="6210079381482819663">Skedat që nuk përdoren për <ph name="THRESHOLD" /> ditë ose më shumë zhvendosen këtu. Këtë mund ta ndryshosh në çdo kohë te <ph name="BEGIN_LINK" />cilësimet<ph name="END_LINK" />.</translation> @@ -820,7 +816,6 @@ Të dhënat e tua janë koduar me frazën tënde të kalimit për sinkronizimin më <ph name="TIME" />. Fute atë për të nisur sinkronizmin.</translation> <translation id="6418346271604475326">Po përgatit PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Faqeshënuesi u ruajt te "{title}" në llogarinë tënde, {email}}other{Faqeshënuesit u ruajtën te "{title}" në llogarinë tënde, {email}}}</translation> <translation id="6429213933892582367">Hap "Opsionet e fjalëkalimeve"</translation> <translation id="6434591244308415567">Ndodhi një gabim. Provo përsëri më vonë.</translation> <translation id="6435236283694032571">Shto te lista e leximit</translation> @@ -1024,6 +1019,7 @@ <translation id="7781011649027948662">Të përkthehet faqja?</translation> <translation id="7781069478569868053">Faqe e skedës së re</translation> <translation id="7781829728241885113">Dje</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Pas 1 dite}other{Pas {COUNT} ditësh}}</translation> <translation id="778855399387580014">Nis një kërkim në një skedë të re Chrome.</translation> <translation id="7791543448312431591">Shtoje</translation> <translation id="7807060072011926525">Ofruar nga Google</translation> @@ -1088,6 +1084,7 @@ <translation id="8136856065410661948">Kjo do të përdoret për të krijuar ngjarje në Apple Calendar nga Chrome dhe nga "Lentja e Google".</translation> <translation id="8156478151976189188">Sinkronizimi i fjalëkalimeve nuk po funksionon</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> llogari</translation> +<translation id="8159358225423560600">pikërisht tani</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Pajisjet e tua<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Përkthe faqen</translation> @@ -1118,6 +1115,7 @@ <translation id="8393889347136007944">Skedat nuk janë përdorur për <ph name="THRESHOLD" /> ditë</translation> <translation id="8407669440184693619">Nuk u gjetën fjalëkalime për këtë sajt</translation> <translation id="842017693807136194">Identifikuar me</translation> +<translation id="8423121072346537366">Pikërisht tani</translation> <translation id="8425693829365242963">Fjalëkalimet e tua janë unike</translation> <translation id="8428045167754449968">Qyteti / Qyteza</translation> <translation id="8428213095426709021">Cilësimet</translation> @@ -1203,7 +1201,6 @@ <translation id="8974714402877957201">1. Hap "Cilësimet e iPad"</translation> <translation id="8976382372951310360">Ndihma</translation> <translation id="8976414606286374109">Kartat ruhen në "Llogarinë tënde të Google".</translation> -<translation id="8978059030508051916">{count,plural, =0{Asnjë fjalëkalim i komprometuar}=1{{count} fjalëkalim i komprometuar}other{{count} fjalëkalime të komprometuara}}</translation> <translation id="8981454092730389528">Kontrollet e aktivitetit të Google</translation> <translation id="8985320356172329008">Je identifikuar në Google si</translation> <translation id="8998289560386111590">Nuk ofrohet në pajisjen tënde</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb index 3ad1e8a..0803da1b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Obaveštenja</translation> <translation id="2496626742194544812">Ide na prvu karticu</translation> <translation id="2500374554657206846">Opcije za čuvanje lozinke</translation> -<translation id="2502415369140591438">Lozinki koje koristite za više naloga: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Ovaj veb-sajt neprekidno pokušava da otvori drugu aplikaciju.</translation> <translation id="2529021024822217800">Otvori sve</translation> <translation id="2547458583188611426">Sinhronizacija ne radi. Da biste pokrenuli sinhronizaciju, unesite pristupnu frazu.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Ponudi prevod stranica na drugim jezicima</translation> <translation id="3588820906588687999">Otvori sliku na novoj kartici</translation> <translation id="3595252146048399851">Uvek možete da odaberete šta ćete sinhronizovati u <ph name="BEGIN_LINK" />podešavanjima<ph name="END_LINK" />. Google može da personalizuje Pretragu i druge usluge na osnovu istorije.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} slaba lozinka}one{{COUNT} slaba lozinka}few{{COUNT} slabe lozinke}other{{COUNT} slabih lozinki}}</translation> <translation id="3603009562372709545">Kopiraj URL adresu linka</translation> <translation id="3607167657931203000">Podaci automatskog popunjavanja</translation> <translation id="3608008480985212611">Prijavite se da biste upravljali podešavanjima.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Kombinuj podatke</translation> <translation id="3929457972718048006">Adrese</translation> <translation id="3943492037546055397">Lozinke</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} slaba lozinka}one{{count} slaba lozinka}few{{count} slabe lozinke}other{{count} slabih lozinki}}</translation> <translation id="3959736869653157332">Meni → Nova kartica bez arhiviranja</translation> <translation id="3967822245660637423">Preuzimanje je dovršeno</translation> <translation id="3968505803272650567">Upravljajte interesovanjima</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Prikaži kartice</translation> <translation id="6187302354554850004">Poslednja sinhron.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Nepročitano</translation> -<translation id="6193424046394092997">{count,plural, =1{Obeleživač je dodat u: {title}}one{Obeleživači su dodati u: {title}}few{Obeleživači su dodati u: {title}}other{Obeleživači su dodati u: {title}}}</translation> <translation id="6196207969502475924">Glasovna pretraga</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Zatvori {COUNT} karticu}one{Zatvori {COUNT} karticu}few{Zatvori {COUNT} kartice}other{Zatvori {COUNT} kartica}}</translation> <translation id="6210079381482819663">Kartice koje se ne koriste <ph name="THRESHOLD" /> dana ili duže premeštaju se ovde. Ovo možete da promenite u svakom trenutku u <ph name="BEGIN_LINK" />podešavanjima<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Podaci su šifrovani pomoću pristupne fraze za sinhronizaciju <ph name="TIME" />. Unesite je da biste započeli sinhronizaciju.</translation> <translation id="6418346271604475326">Priprema PDF datoteke</translation> -<translation id="6421095165635308">{count,plural, =1{Obeleživač je sačuvan na nalogu, {email}, u: {title}}one{Obeleživači su sačuvani na nalogu, {email}, u: {title}}few{Obeleživači su sačuvani na nalogu, {email}, u: {title}}other{Obeleživači su sačuvani na nalogu, {email}, u: {title}}}</translation> <translation id="6429213933892582367">Otvorite Opcije lozinki</translation> <translation id="6434591244308415567">Došlo je do greške. Probajte ponovo kasnije.</translation> <translation id="6435236283694032571">Dodaj na Listu za čitanje</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. Otvorite podešavanja iPad-a</translation> <translation id="8976382372951310360">Pomoć</translation> <translation id="8976414606286374109">Kartice se čuvaju na Google nalogu.</translation> -<translation id="8978059030508051916">{count,plural, =0{Nema ugroženih lozinki}=1{{count} ugrožena lozinka}one{{count} ugrožena lozinka}few{{count} ugrožene lozinke}other{{count} ugroženih lozinki}}</translation> <translation id="8981454092730389528">Google kontrole aktivnosti</translation> <translation id="8985320356172329008">Prijavljeni ste na Google kao</translation> <translation id="8986567980592931173">Prijavite se pomoću Google naloga da biste sinhronizovali lozinke, istoriju i drugo.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb index 6c03cfe3..ef6f610 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Обавештења</translation> <translation id="2496626742194544812">Иде на прву картицу</translation> <translation id="2500374554657206846">Опције за чување лозинке</translation> -<translation id="2502415369140591438">Лозинки које користите за више налога: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Овај веб-сајт непрекидно покушава да отвори другу апликацију.</translation> <translation id="2529021024822217800">Отвори све</translation> <translation id="2547458583188611426">Синхронизација не ради. Да бисте покренули синхронизацију, унесите приступну фразу.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Понуди превод страница на другим језицима</translation> <translation id="3588820906588687999">Отвори слику на новој картици</translation> <translation id="3595252146048399851">Увек можете да одаберете шта ћете синхронизовати у <ph name="BEGIN_LINK" />подешавањима<ph name="END_LINK" />. Google може да персонализује Претрагу и друге услуге на основу историје.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} слаба лозинка}one{{COUNT} слаба лозинка}few{{COUNT} слабе лозинке}other{{COUNT} слабих лозинки}}</translation> <translation id="3603009562372709545">Копирај URL адресу линка</translation> <translation id="3607167657931203000">Подаци аутоматског попуњавања</translation> <translation id="3608008480985212611">Пријавите се да бисте управљали подешавањима.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Комбинуј податке</translation> <translation id="3929457972718048006">Адресе</translation> <translation id="3943492037546055397">Лозинке</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} слаба лозинка}one{{count} слаба лозинка}few{{count} слабе лозинке}other{{count} слабих лозинки}}</translation> <translation id="3959736869653157332">Мени → Нова картица без архивирања</translation> <translation id="3967822245660637423">Преузимање је довршено</translation> <translation id="3968505803272650567">Управљајте интересовањима</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Прикажи картице</translation> <translation id="6187302354554850004">Последња синхрон.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Непрочитано</translation> -<translation id="6193424046394092997">{count,plural, =1{Обележивач је додат у: {title}}one{Обележивачи су додати у: {title}}few{Обележивачи су додати у: {title}}other{Обележивачи су додати у: {title}}}</translation> <translation id="6196207969502475924">Гласовна претрага</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Затвори {COUNT} картицу}one{Затвори {COUNT} картицу}few{Затвори {COUNT} картице}other{Затвори {COUNT} картица}}</translation> <translation id="6210079381482819663">Картице које се не користе <ph name="THRESHOLD" /> дана или дуже премештају се овде. Ово можете да промените у сваком тренутку у <ph name="BEGIN_LINK" />подешавањима<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Подаци су шифровани помоћу приступне фразе за синхронизацију <ph name="TIME" />. Унесите је да бисте започели синхронизацију.</translation> <translation id="6418346271604475326">Припрема PDF датотеке</translation> -<translation id="6421095165635308">{count,plural, =1{Обележивач је сачуван на налогу, {email}, у: {title}}one{Обележивачи су сачувани на налогу, {email}, у: {title}}few{Обележивачи су сачувани на налогу, {email}, у: {title}}other{Обележивачи су сачувани на налогу, {email}, у: {title}}}</translation> <translation id="6429213933892582367">Отворите Опције лозинки</translation> <translation id="6434591244308415567">Дошло је до грешке. Пробајте поново касније.</translation> <translation id="6435236283694032571">Додај на Листу за читање</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. Отворите подешавања iPad-а</translation> <translation id="8976382372951310360">Помоћ</translation> <translation id="8976414606286374109">Картице се чувају на Google налогу.</translation> -<translation id="8978059030508051916">{count,plural, =0{Нема угрожених лозинки}=1{{count} угрожена лозинка}one{{count} угрожена лозинка}few{{count} угрожене лозинке}other{{count} угрожених лозинки}}</translation> <translation id="8981454092730389528">Google контроле активности</translation> <translation id="8985320356172329008">Пријављени сте на Google као</translation> <translation id="8986567980592931173">Пријавите се помоћу Google налога да бисте синхронизовали лозинке, историју и друго.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb index 5dd6cbb..16b6255 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Zooma ut</translation> <translation id="2230173723195178503">Webbsidan har lästs in</translation> <translation id="2239626343334228536">Tar bort webbinformation …</translation> +<translation id="2242467532204595597">Använd Chrome varje gång du trycker på länkar i meddelanden, dokument och andra appar.</translation> <translation id="22508856139286506">Ignorerade varningar (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Meny → Historik</translation> <translation id="2256933947031277845">Organisationen tillåter inloggning med endast vissa konton.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{{count} sparad adress visas ovanför tangentbordet.}other{{count} sparade adresser visas ovanför tangentbordet.}}</translation> <translation id="2421004566762153674">Cookies från tredje part blockeras</translation> <translation id="2421044535038393232">Fortsätt redigera</translation> +<translation id="2423077901494354337">Nu får du ut mesta möjliga av Chrome på din enhet.</translation> <translation id="2434405374328098816">Du har redan sparat ett lösenord för <ph name="USERNAME" /> på <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Visa lösenord</translation> <translation id="2451654228769116489">Fäst flik</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Aviseringar</translation> <translation id="2496626742194544812">Öppna första fliken</translation> <translation id="2500374554657206846">Alternativ för att spara lösenord</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> återanvända lösenord</translation> <translation id="2523363575747517183">Webbplatsen försöker öppna ett annat program upprepade gånger.</translation> <translation id="2529021024822217800">Öppna alla</translation> <translation id="2547458583188611426">Synkroniseringen fungerar inte. Ange din lösenfras för att starta synkroniseringen.</translation> @@ -320,6 +321,7 @@ <translation id="3131206671572504478">Blockera alla</translation> <translation id="313283613037595347">Skapa en ny inkognitoflik.</translation> <translation id="3146109040683991651">Ange Chrome som standardwebbläsare</translation> +<translation id="3152169319860972623">Lösenordskontroll granskar dina sparade lösenord och varnar dig vid eventuella onlineintrång. <ph name="BEGIN_LINK" />Läs mer.<ph name="END_LINK" /></translation> <translation id="3153862085237805241">Spara kortet</translation> <translation id="3157387275655328056">Lägg till i läslistan</translation> <translation id="3157684681743766797">Markera alla …</translation> @@ -389,7 +391,6 @@ <translation id="3581564640715911333">Erbjud översättning av sidor till andra språk</translation> <translation id="3588820906588687999">Öppna bild på ny flik</translation> <translation id="3595252146048399851">Du kan alltid välja vad som ska synkroniseras i <ph name="BEGIN_LINK" />inställningarna<ph name="END_LINK" />. Google kan anpassa Sök och andra tjänster utifrån din historik.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} svagt lösenord}other{{COUNT} svaga lösenord}}</translation> <translation id="3603009562372709545">Kopiera länkens webbadress</translation> <translation id="3607167657931203000">Autofyll uppgifter</translation> <translation id="3608008480985212611">Logga in för att hantera inställningarna.</translation> @@ -435,7 +436,6 @@ <translation id="3928666092801078803">Slå ihop data</translation> <translation id="3929457972718048006">Adresser</translation> <translation id="3943492037546055397">Lösenord</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} svagt lösenord}other{{count} svaga lösenord}}</translation> <translation id="3959736869653157332">Meny → Ny inkognitoflik</translation> <translation id="3967822245660637423">Nedladdning slutförd</translation> <translation id="3968505803272650567">Hantera intressen</translation> @@ -772,7 +772,6 @@ <translation id="6184086493125982861">Visa flikar</translation> <translation id="6187302354554850004">Synkroniserades senast: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Olästa</translation> -<translation id="6193424046394092997">{count,plural, =1{Bokmärkt i {title}}other{Bokmärkt i {title}}}</translation> <translation id="6196207969502475924">Röstsökning</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Stäng {COUNT} flik}other{Stäng {COUNT} flikar}}</translation> <translation id="6210079381482819663">Flikar som inte har använts på <ph name="THRESHOLD" /> dagar eller mer flyttas hit. Du kan när som helst ändra detta i <ph name="BEGIN_LINK" />inställningarna<ph name="END_LINK" />.</translation> @@ -802,6 +801,7 @@ <translation id="6346549652287021269">Starta ny nedladdning?</translation> <translation id="6347953390226388422">{count,plural, =1{Denna adress raderas från Google-kontot (<ph name="USER_EMAIL" />) och från enheten.}other{Dessa adresser raderas från Google-kontot (<ph name="USER_EMAIL" />) och från enheten.}}</translation> <translation id="634878792104344809">Synkronisera lösenord, historik med mera på alla dina enheter</translation> +<translation id="6348855835728304880">Få åtkomst till dina lösenord och annat från Chrome i andra appar på den här enheten.</translation> <translation id="6355820205320395730">Svaga lösenord är lätta att lista ut. Använd alltid starka lösenord. <ph name="BEGIN_LINK" />Här hittar du fler säkerhetstips.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Följ <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Inga inkognitoflikar</translation> @@ -821,7 +821,6 @@ Din data krypterades med lösenfrasen den <ph name="TIME" />. Ange den om du vill starta synkroniseringen.</translation> <translation id="6418346271604475326">Förbereder PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Bokmärket har sparats i {title} i kontot {email}}other{Bokmärkena har sparats i {title} i kontot {email}}}</translation> <translation id="6429213933892582367">Öppna Lösenordsalternativ</translation> <translation id="6434591244308415567">Ett fel uppstod. Försök igen senare.</translation> <translation id="6435236283694032571">Lägg till i läslistan</translation> @@ -954,6 +953,7 @@ <translation id="7221173315674413369">Utforska nya funktioner och tips i Nyheter</translation> <translation id="7223102419539744003">Stäng fliken</translation> <translation id="722454870747268814">Ny inkognitoflik</translation> +<translation id="723787869754590019">Använd Chrome för autofyll</translation> <translation id="7265758999917665941">Aldrig på den här webbplatsen</translation> <translation id="7272437679830969316">Det gick inte att verifiera din identitet. Lösenordet har inte kopierats.</translation> <translation id="7291368939935408496">Lösenorden förbereds …</translation> @@ -1155,12 +1155,14 @@ <translation id="8663764600409216912">Du använder lösenord som verkar svåra att lista ut</translation> <translation id="8668210798914567634">Den här sidan har sparats i läslistan.</translation> <translation id="8680787084697685621">Inloggningsuppgifterna för kontot är inte aktuella.</translation> +<translation id="868773710103052534">Klart</translation> <translation id="8693663554456874301">{count,plural, =1{Stäng fliken}other{Stäng flikar}}</translation> <translation id="8703536910991780768">Lösenorden ser starka ut</translation> <translation id="8706588385081740091">Lösenord</translation> <translation id="8717864919010420084">Kopiera länk</translation> <translation id="8721297211384281569">Verktyg</translation> <translation id="8725066075913043281">Försök igen</translation> +<translation id="8727043961453758442">Få ut mesta möjliga av Chrome</translation> <translation id="8730621377337864115">Klart</translation> <translation id="8731388423028622182">Du har loggats ut från kontot <ph name="USER_NAME" /> som en del av återställningen av din iPhone. Tryck på Fortsätt nedan för att logga in.</translation> <translation id="87371078663613140">Utforska alternativen på menyraden</translation> @@ -1207,9 +1209,9 @@ <translation id="8974714402877957201">1. Öppna iPad-inställningarna</translation> <translation id="8976382372951310360">Hjälp</translation> <translation id="8976414606286374109">Korten sparas i Google-kontot.</translation> -<translation id="8978059030508051916">{count,plural, =0{Inga utsatta lösenord}=1{{count} utsatt lösenord}other{{count} utsatta lösenord}}</translation> <translation id="8981454092730389528">Googles aktivitetsinställningar</translation> <translation id="8985320356172329008">Inloggad på Google som</translation> +<translation id="8986567980592931173">Logga in med Google-kontot för att synkronisera lösenord, historik med mera.</translation> <translation id="8998289560386111590">Inte tillgängligt på din enhet</translation> <translation id="9000089900434778519">Din sökmotor är <ph name="DSE_NAME" />. Läs anvisningarna för att radera sökhistoriken om tillämpligt.</translation> <translation id="9008201768610948239">Ignorera</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb index b773091..9d92a7e7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Arifa</translation> <translation id="2496626742194544812">Nenda kwenye Kichupo cha Kwanza</translation> <translation id="2500374554657206846">Chaguo za Kuhifadhi Nenosiri</translation> -<translation id="2502415369140591438">Manenosiri <ph name="COUNT" /> Yametumiwa kwingine</translation> <translation id="2523363575747517183">Tovuti hii inajaribu kufungua programu nyingine mara kwa mara.</translation> <translation id="2529021024822217800">Fungua Zote</translation> <translation id="2547458583188611426">Usawazishaji haufanyi kazi. Ili uanzishe usawazishaji weka kauli yako ya siri.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Jitolee kutafsiri kurasa katika lugha nyingine</translation> <translation id="3588820906588687999">Fungua Picha Katika Kichupo Kipya</translation> <translation id="3595252146048399851">Unaweza kuchagua unachotaka kusawazisha wakati wowote kwenye <ph name="BEGIN_LINK" />mipangilio<ph name="END_LINK" />. Google inaweza kuweka mapendeleo kwenye huduma ya Tafuta na huduma nyinginezo kulingana na historia yako.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{Nenosiri {COUNT} Dhaifu}other{Manenosiri {COUNT} Dhaifu}}</translation> <translation id="3603009562372709545">Nakili URL ya Kiungo</translation> <translation id="3607167657931203000">Jaza Data Kiotomatiki</translation> <translation id="3608008480985212611">Ingia katika akaunti ili udhibiti mapendeleo yako.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Unganisha data yangu</translation> <translation id="3929457972718048006">Anwani</translation> <translation id="3943492037546055397">Manenosiri</translation> -<translation id="3951717558054674026">{count,plural, =1{Nenosiri {count} Dhaifu}other{Manenosiri {count} Dhaifu}}</translation> <translation id="3959736869653157332">Menyu → Kichupo Fiche Kipya</translation> <translation id="3967822245660637423">Faili imekamilika kupakuliwa</translation> <translation id="3968505803272650567">Dhibiti Mambo Yanayokuvutia</translation> @@ -771,7 +768,6 @@ <translation id="6184086493125982861">Onyesha Vichupo</translation> <translation id="6187302354554850004">Ilisawazishwa mara ya mwisho: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Ambazo Hazijasomwa</translation> -<translation id="6193424046394092997">{count,plural, =1{Imealamishwa kwenye {title}}other{Imealamishwa kwenye {title}}}</translation> <translation id="6196207969502475924">Utafutaji wa Sauti</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Funga Kichupo {COUNT}}other{Funga Vichupo {COUNT}}}</translation> <translation id="6210079381482819663">Vichupo ambavyo havijatumika kwa siku <ph name="THRESHOLD" /> au zaidi vinahamishiwa hapa. Unaweza kubadilisha hali hii wakati wowote katika <ph name="BEGIN_LINK" />mipangilio<ph name="END_LINK" />.</translation> @@ -820,7 +816,6 @@ Data yako ilisimbwa kwa njia fiche kwa kauli yako ya siri ya kusawazisha mnamo <ph name="TIME" />. Iweke ili uanze kusawazisha.</translation> <translation id="6418346271604475326">Inaandaa PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Alamisho imehifadhiwa kwenye {title} katika akaunti yako, {email}}other{Alamisho zimehifadhiwa kwenye {title} katika akaunti yako, {email}}}</translation> <translation id="6429213933892582367">Fungua Chaguo za Nenosiri</translation> <translation id="6434591244308415567">Hitilafu imetokea. Tafadhali jaribu tena baadaye.</translation> <translation id="6435236283694032571">Ongeza kwenye Orodha ya Kusoma</translation> @@ -1089,6 +1084,7 @@ <translation id="8136856065410661948">Hii itatumika kuunda matukio kwenye Kalenda yako ya Apple kutoka kwenye Chrome na Lenzi ya Google.</translation> <translation id="8156478151976189188">Kipengele cha Kusawazisha manenosiri hakifanyi kazi</translation> <translation id="8157532349231307196">Akaunti <ph name="NUMBER_OF_ACCOUNTS" /></translation> +<translation id="8159358225423560600">sasa hivi</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Vifaa vyako<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Tafsiri Ukurasa</translation> @@ -1119,6 +1115,7 @@ <translation id="8393889347136007944">Vichupo ambavyo havijatumika kwa siku <ph name="THRESHOLD" /></translation> <translation id="8407669440184693619">Hatukupata manenosiri yoyote ya tovuti hii</translation> <translation id="842017693807136194">Umeingia katika Akaunti Ukitumia</translation> +<translation id="8423121072346537366">Sasa Hivi</translation> <translation id="8425693829365242963">Manenosiri yako ni ya Kipekee</translation> <translation id="8428045167754449968">Jiji / Mji</translation> <translation id="8428213095426709021">Mipangilio</translation> @@ -1204,7 +1201,6 @@ <translation id="8974714402877957201">1. Fungua Mipangilio ya iPad</translation> <translation id="8976382372951310360">Usaidizi</translation> <translation id="8976414606286374109">Kadi huhifadhiwa kwenye Akaunti yako ya Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Hakuna Manenosiri Yaliyoathiriwa}=1{Nenosiri {count} Lililoathiriwa}other{Manenosiri {count} Yaliyoathiriwa}}</translation> <translation id="8981454092730389528">Vidhibiti vya Shughuli za Google</translation> <translation id="8985320356172329008">Umeingia katika Google ukitumia</translation> <translation id="8998289560386111590">Haipatikani katika kifaa chako</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb index 8a5e97d..37f0153 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">அறிவிப்புகள்</translation> <translation id="2496626742194544812">முதல் பக்கத்திற்குச் செல்</translation> <translation id="2500374554657206846">கடவுச்சொல்லைச் சேமிப்பதற்கான விருப்பத்தேர்வுகள்</translation> -<translation id="2502415369140591438">ஏற்கெனவே பயன்படுத்திய கடவுச்சொற்கள்: <ph name="COUNT" /></translation> <translation id="2523363575747517183">இந்த இணையதளம், மற்றொரு பயன்பாட்டைத் திறப்பதற்கு மீண்டும் மீண்டும் முயல்கிறது.</translation> <translation id="2529021024822217800">எல்லாவற்றையும் திற</translation> <translation id="2547458583188611426">ஒத்திசைவு இயங்கவில்லை. ஒத்திசைவைத் தொடங்க கடவுச்சொற்றொடரை உள்ளிடவும்.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">பக்கங்களைப் பிற மொழிகளில் மொழிபெயர்க்க அனுமதி</translation> <translation id="3588820906588687999">படத்தைப் புதிய தாவலில் திற</translation> <translation id="3595252146048399851">எதையெல்லாம் ஒத்திசைக்க வேண்டும் என்பதை <ph name="BEGIN_LINK" />அமைப்புகளுக்குச்<ph name="END_LINK" /> சென்று எப்போது வேண்டுமானாலும் தேர்வுசெய்யலாம். உங்கள் பதிவுகளின் அடிப்படையில் Search மற்றும் பிற சேவைகளை Google பிரத்தியேகமாக்கலாம்.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{வலுவற்ற கடவுச்சொல்: {COUNT}}other{வலுவற்ற கடவுச்சொற்கள்: {COUNT}}}</translation> <translation id="3603009562372709545">இணைப்பு URL ஐ நகலெடு</translation> <translation id="3607167657931203000">தன்னிரப்பி தரவு</translation> <translation id="3608008480985212611">உங்கள் விருப்பத்தேர்வுகளை நிர்வகிக்க உள்நுழையுங்கள்.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">எனது தரவை ஒன்றிணை</translation> <translation id="3929457972718048006">முகவரிகள்</translation> <translation id="3943492037546055397">கடவுச்சொற்கள்</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} வலுவற்ற கடவுச்சொல்}other{{count} வலுவற்ற கடவுச்சொற்கள்}}</translation> <translation id="3959736869653157332">மெனு → புதிய மறைநிலைப் பக்கம்</translation> <translation id="3967822245660637423">பதிவிறக்கம் முடிந்தது</translation> <translation id="3968505803272650567">ஆர்வங்களை நிர்வகி</translation> @@ -772,7 +769,6 @@ <translation id="6184086493125982861">தாவல்களைக் காண்பி</translation> <translation id="6187302354554850004">கடைசியாக ஒத்திசைத்தது: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">படிக்காதவை</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} இல் புக்மார்க் செய்யப்பட்டது}other{{title} இல் புக்மார்க் செய்யப்பட்டது}}</translation> <translation id="6196207969502475924">குரல் தேடல்</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} தாவலை மூடுக}other{{COUNT} தாவல்களை மூடுக}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> நாட்கள் அல்லது அதற்கும் மேல் பயன்படுத்தப்படாத பக்கங்கள் இங்கே நகர்த்தப்படும். இதை எப்போது வேண்டுமானாலும் <ph name="BEGIN_LINK" />அமைப்புகளில்<ph name="END_LINK" /> மாற்றலாம்.</translation> @@ -821,7 +817,6 @@ <ph name="TIME" /> அன்று உங்கள் தரவு உங்கள் ஒத்திசைவு கடவுச்சொற்றொடரைக் கொண்டு என்க்ரிப்ட் செய்யப்பட்டது. ஒத்திசைவைத் தொடங்க, அதை உள்ளிடவும்.</translation> <translation id="6418346271604475326">PDF தயாராகிறது</translation> -<translation id="6421095165635308">{count,plural, =1{உங்கள் கணக்கில் ({email}) உள்ள {title} ஃபோல்டரில் புக்மார்க் சேமிக்கப்பட்டது}other{உங்கள் கணக்கில் ({email}) உள்ள {title} ஃபோல்டரில் புக்மார்க்குகள் சேமிக்கப்பட்டன}}</translation> <translation id="6429213933892582367">கடவுச்சொல் விருப்பங்கள் என்பதைத் திறக்கவும்</translation> <translation id="6434591244308415567">பிழை ஏற்பட்டது. பிறகு முயலவும்.</translation> <translation id="6435236283694032571">வாசிப்புப் பட்டியலில் சேர்</translation> @@ -1207,7 +1202,6 @@ <translation id="8974714402877957201">1. iPad அமைப்புகளைத் திறக்கவும்</translation> <translation id="8976382372951310360">உதவி</translation> <translation id="8976414606286374109">கார்டுகள் உங்கள் Google கணக்கில் சேமிக்கப்படும்.</translation> -<translation id="8978059030508051916">{count,plural, =0{களவாடப்பட்ட கடவுச்சொற்கள் எதுவுமில்லை}=1{{count} களவாடப்பட்ட கடவுச்சொல்}other{{count} களவாடப்பட்ட கடவுச்சொற்கள்}}</translation> <translation id="8981454092730389528">Google செயல்பாட்டுக் கட்டுப்பாடுகள்</translation> <translation id="8985320356172329008">Google இல் உள்நுழைந்திருக்கும் கணக்கு</translation> <translation id="8998289560386111590">உங்கள் சாதனத்தில் இல்லை</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb index 98eebc4e..128bf84 100644 --- a/ios/chrome/app/strings/resources/ios_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">దూరంగా జూమ్ చేయి</translation> <translation id="2230173723195178503">వెబ్పేజీ లోడ్ అయ్యింది</translation> <translation id="2239626343334228536">బ్రౌజింగ్ డేటాను తీసివేస్తోంది...</translation> +<translation id="2242467532204595597">మీరు మెసేజ్లు, డాక్యుమెంట్లు, అలాగే ఇతర యాప్లలోని లింక్లను ఎప్పుడైనా ట్యాప్ చేసినప్పుడు Chromeను ఉపయోగించండి.</translation> <translation id="22508856139286506">విస్మరించిన హెచ్చరికలు (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">మెనూ → హిస్టరీ</translation> <translation id="2256933947031277845">మీ సంస్థ మిమ్మల్ని కొన్ని ఖాతాలతో మాత్రమే సైన్ ఇన్ చేయడానికి అనుమతిస్తుంది.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{సేవ్ చేసిన {count} అడ్రస్ మీ కీబోర్డ్ పైన అందుబాటులో ఉంది.}other{సేవ్ చేసిన {count} అడ్రస్లు మీ కీబోర్డ్ పైన అందుబాటులో ఉన్నాయి.}}</translation> <translation id="2421004566762153674">థర్డ్-పార్టీ కుక్కీలను బ్లాక్ చేయడం</translation> <translation id="2421044535038393232">ఎడిట్ను కొనసాగించండి</translation> +<translation id="2423077901494354337">మీరు ఇప్పుడు మీ పరికరంలో Chrome నుండి అత్యధిక ప్రయోజనాలను పొందుతారు.</translation> <translation id="2434405374328098816">మీరు "<ph name="USERNAME" />" కోసం పాస్వర్డ్ను <ph name="WEBSITE" />లో ఇప్పటికే సేవ్ చేశారు</translation> <translation id="2435457462613246316">పాస్వర్డ్ను చూపించు</translation> <translation id="2451654228769116489">ట్యాబ్ను పిన్ చేయండి</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">నోటిఫికేషన్లు</translation> <translation id="2496626742194544812">మొదటి ట్యాబ్కు వెళ్లండి</translation> <translation id="2500374554657206846">పాస్వర్డ్ను సేవ్ చేసే ఎంపికలు</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> వేరే చోట వాడిన పాస్వర్డ్లు</translation> <translation id="2523363575747517183">ఈ వెబ్సైట్ మరో అప్లికేషన్ను తెరవడానికి పలుసార్లు ప్రయత్నిస్తోంది.</translation> <translation id="2529021024822217800">అన్నీ తెరువు</translation> <translation id="2547458583188611426">సింక్ పని చేయడం లేదు. సింక్ను ప్రారంభించడానికి రహస్య పదబంధాన్ని ఎంటర్ చేయండి.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">ఇతర భాషలలో ఉన్న పేజీలను అనువదించడాన్ని ఆఫర్ చేస్తుంది</translation> <translation id="3588820906588687999">చిత్రాన్ని కొత్త ట్యాబ్లో తెరువు</translation> <translation id="3595252146048399851">ఏది సింక్ చేయాలనే దాన్ని, మీరు ఎప్పుడైనా <ph name="BEGIN_LINK" />సెట్టింగ్లలో<ph name="END_LINK" /> ఎంచుకోవచ్చు. Google మీ హిస్టరీ ఆధారంగా Search, ఇతర సర్వీస్లను వ్యక్తిగతీకరించవచ్చు.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} బలహీనమైన పాస్వర్డ్}other{{COUNT} బలహీనమైన పాస్వర్డ్లు}}</translation> <translation id="3603009562372709545">లింక్ URLను కాపీ చేయి</translation> <translation id="3607167657931203000">స్వీయపూర్తి డేటా</translation> <translation id="3608008480985212611">మీ ప్రాధాన్యతలను మేనేజ్ చేయడానికి సైన్ ఇన్ చేయండి.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">నా డేటాను కలపండి</translation> <translation id="3929457972718048006">అడ్రస్లు</translation> <translation id="3943492037546055397">పాస్వర్డ్లు</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} బలహీనమైన పాస్వర్డ్}other{{count} బలహీనమైన పాస్వర్డ్లు}}</translation> <translation id="3959736869653157332">మెనూ → కొత్త అజ్ఞాత ట్యాబ్</translation> <translation id="3967822245660637423">డౌన్లోడ్ పూర్తయింది</translation> <translation id="3968505803272650567">ఆసక్తులను మేనేజ్ చేయండి</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">ట్యాబ్లను చూపించు</translation> <translation id="6187302354554850004">చివరగా సింక్ చేసింది: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">చదవనివి</translation> -<translation id="6193424046394092997">{count,plural, =1{{title}కి బుక్మార్క్ చేశారు}other{{title}కి బుక్మార్క్ చేశారు}}</translation> <translation id="6196207969502475924">వాయిస్ శోధన</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ట్యాబ్ను మూసివేయి}other{{COUNT} ట్యాబ్లను మూసివేయి}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> రోజులు లేదా అంతకంటే ఎక్కువ రోజులు ఉపయోగించని ట్యాబ్లు ఇక్కడికి తరలించబడ్డాయి. మీరు దీన్ని ఎప్పుడైనా <ph name="BEGIN_LINK" />సెట్టింగ్లు<ph name="END_LINK" />ఆప్షన్లో మార్చవచ్చు.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">కొత్త డౌన్లోడ్ ఆరంభించాలా?</translation> <translation id="6347953390226388422">{count,plural, =1{ఈ అడ్రస్ మీ Google ఖాతా (<ph name="USER_EMAIL" />) నుండి, అలాగే ఈ పరికరం నుండి తొలగించబడుతుంది.}other{ఈ అడ్రస్లు మీ Google ఖాతా (<ph name="USER_EMAIL" />) నుండి, అలాగే ఈ పరికరం నుండి తొలగించబడతాయి.}}</translation> <translation id="634878792104344809">మీ పాస్వర్డ్లను, హిస్టరీని, అలాగే మరిన్నింటిని మీ అన్ని పరికరాలలోనూ సింక్ చేయండి</translation> +<translation id="6348855835728304880">ఈ పరికరంలోని ఇతర యాప్లలో మీ Chrome పాస్వర్డ్లు, మరిన్నింటిని యాక్సెస్ చేయండి.</translation> <translation id="6355820205320395730">బలహీనమైన పాస్వర్డ్లను ఊహించడం చాలా సులభం. మీరు శక్తివంతమైన పాస్వర్డ్లను క్రియేట్ చేస్తున్నారని నిర్ధారించుకోండి. <ph name="BEGIN_LINK" />మరిన్ని సెక్యూరిటీ చిట్కాలను చూడండి.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" />ను ఫాలో అవ్వండి</translation> <translation id="6362362396625799311">అజ్ఞాత ట్యాబ్లు ఏవీ తెరిచి లేవు</translation> @@ -821,7 +820,6 @@ <ph name="TIME" />న మీ సింక్ రహస్య పదబంధంతో మీ డేటా ఎన్క్రిప్ట్ చేయబడింది. సింక్ను ప్రారంభించడానికి దీన్ని నమోదు చేయండి.</translation> <translation id="6418346271604475326">PDF సిద్ధపరు.</translation> -<translation id="6421095165635308">{count,plural, =1{బుక్మార్క్ మీ ఖాతా {email}లో {title}కు సేవ్ చేయబడింది}other{బుక్మార్క్లు మీ ఖాతా {email}లో {title}కు సేవ్ చేయబడ్డాయి}}</translation> <translation id="6429213933892582367">పాస్వర్డ్ ఆప్షన్లను తెరవండి</translation> <translation id="6434591244308415567">ఎర్రర్ ఏర్పడింది. తర్వాత మళ్లీ ప్రయత్నించండి.</translation> <translation id="6435236283694032571">చదవాల్సిన లిస్ట్కు జోడించండి</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">'కొత్తగా ఏమి ఉన్నాయి' విభాగంలో కొత్త ఫీచర్లు, చిట్కాలను అన్వేషించండి</translation> <translation id="7223102419539744003">ట్యాబ్ను మూసివేయండి</translation> <translation id="722454870747268814">కొత్త అజ్ఞాత ట్యాబ్</translation> +<translation id="723787869754590019">ఆటోఫిల్ కోసం Chromeను ఉపయోగించండి</translation> <translation id="7265758999917665941">ఈ సైట్ కోసం ఎప్పటికీ వద్దు</translation> <translation id="7272437679830969316">మీ గుర్తింపును ధృవీకరించడం సాధ్యపడలేదు. పాస్వర్డ్ కాపీ చేయబడలేదు.</translation> <translation id="7291368939935408496">పాస్వర్డ్లను సిద్ధం చేస్తోంది...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">మీరు ఊహించడానికి కష్టంగా కనిపించే పాస్వర్డ్లను ఉపయోగిస్తున్నారు</translation> <translation id="8668210798914567634">ఈ పేజీ మీ పఠన లిస్ట్కు సేవ్ చేయబడింది.</translation> <translation id="8680787084697685621">ఖాతా సైన్-ఇన్ వివరాల గడువు తేదీ ముగిసింది.</translation> +<translation id="868773710103052534">మీరు అంతా పూర్తి చేశారు</translation> <translation id="8693663554456874301">{count,plural, =1{ట్యాబ్ను మూసివేయి}other{ట్యాబ్లను మూసివేయి}}</translation> <translation id="8703536910991780768">మీ పాస్వర్డ్లు శక్తివంతమైనవిగా కనిపిస్తున్నాయి</translation> <translation id="8706588385081740091">పాస్వర్డ్లు</translation> <translation id="8717864919010420084">లింక్ని కాపీ చేయి</translation> <translation id="8721297211384281569">సాధనాల మెనూ</translation> <translation id="8725066075913043281">మళ్ళీ ప్రయత్నించండి</translation> +<translation id="8727043961453758442">Chrome నుండి అత్యధిక ప్రయోజనాలను పొందండి</translation> <translation id="8730621377337864115">పూర్తయింది</translation> <translation id="8731388423028622182">మీ iPhone రీసెట్ ప్రాసెస్లో భాగంగా మీరు మీ <ph name="USER_NAME" /> ఖాతా నుండి సైన్ అవుట్ చేయబడ్డారు. సైన్ ఇన్ చేయడానికి దిగువున ఉన్న కొనసాగించండి ఆప్షన్ను ట్యాప్ చేయండి.</translation> <translation id="87371078663613140">మెనూ బార్లోని ఆప్షన్లను అన్వేషించండి</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. iPad సెట్టింగ్లను తెరవండి</translation> <translation id="8976382372951310360">సహాయం</translation> <translation id="8976414606286374109">కార్డ్లు మీ Google ఖాతాకు సేవ్ చేయబడ్డాయి.</translation> -<translation id="8978059030508051916">{count,plural, =0{చోరీకి గురైన పాస్వర్డ్లు ఏవీ లేవు}=1{{count} చోరీకి గురైన పాస్వర్డ్}other{{count} చోరీకి గురైన పాస్వర్డ్లు}}</translation> <translation id="8981454092730389528">Google కార్యకలాపాల నియంత్రణలు</translation> <translation id="8985320356172329008">Googleకు ఇలా సైన్ ఇన్ చేశారు</translation> +<translation id="8986567980592931173">మీ పాస్వర్డ్లు, హిస్టరీ, అలాగే మరిన్నింటిని సింక్ చేయడానికి మీ Google ఖాతాతో సైన్ ఇన్ చేయండి.</translation> <translation id="8998289560386111590">ఈ మోడ్ మీ పరికరంలో అందుబాటులో లేదు</translation> <translation id="9000089900434778519">మీ సెర్చ్ ఇంజిన్ <ph name="DSE_NAME" />. వర్తిస్తే, మీ సెర్చ్ హిస్టరీని తొలగించడానికి దాని సూచనలను చూడండి.</translation> <translation id="9008201768610948239">విస్మరించు</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb index 342b6e9..f2cc115 100644 --- a/ios/chrome/app/strings/resources/ios_strings_th.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">ซูมออก</translation> <translation id="2230173723195178503">หน้าเว็บโหลดแล้ว</translation> <translation id="2239626343334228536">กำลังล้างข้อมูลการท่องเว็บ...</translation> +<translation id="2242467532204595597">ใช้ Chrome ทุกครั้งที่คุณแตะลิงก์ในข้อความ เอกสาร และแอปอื่นๆ</translation> <translation id="22508856139286506">คำเตือนที่ปิด (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">เมนู → ประวัติการเข้าชม</translation> <translation id="2256933947031277845">องค์กรอนุญาตให้คุณลงชื่อเข้าใช้ด้วยบัญชีบางบัญชีเท่านั้น</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{ที่อยู่ที่บันทึกไว้ {count} รายการพร้อมให้ใช้งานอยู่เหนือแป้นพิมพ์}other{ที่อยู่ที่บันทึกไว้ {count} รายการพร้อมให้ใช้งานอยู่เหนือแป้นพิมพ์}}</translation> <translation id="2421004566762153674">การบล็อกคุกกี้ของบุคคลที่สาม</translation> <translation id="2421044535038393232">แก้ไขต่อไป</translation> +<translation id="2423077901494354337">ตอนนี้คุณจะได้รับประโยชน์สูงสุดจาก Chrome ในอุปกรณ์แล้ว</translation> <translation id="2434405374328098816">คุณบันทึกรหัสผ่านสำหรับ "<ph name="USERNAME" />" ที่ <ph name="WEBSITE" /> ไว้แล้ว</translation> <translation id="2435457462613246316">แสดงรหัสผ่าน</translation> <translation id="2451654228769116489">ปักหมุดแท็บ</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">การแจ้งเตือน</translation> <translation id="2496626742194544812">ไปที่แท็บแรก</translation> <translation id="2500374554657206846">ตัวเลือกในการบันทึกรหัสผ่าน</translation> -<translation id="2502415369140591438">มีรหัสผ่านที่ใช้ซ้ำ <ph name="COUNT" /> รายการ</translation> <translation id="2523363575747517183">เว็บไซต์นี้พยายามเปิดแอปพลิเคชันอื่นอยู่เรื่อยๆ</translation> <translation id="2529021024822217800">เปิดทั้งหมด</translation> <translation id="2547458583188611426">การซิงค์ไม่ทำงาน หากต้องการเริ่มการซิงค์ ให้ป้อนรหัสผ่าน</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">เสนอที่จะแปลหน้าเว็บในภาษาอื่นๆ</translation> <translation id="3588820906588687999">เปิดภาพในแท็บใหม่</translation> <translation id="3595252146048399851">คุณเลือกสิ่งที่ต้องการซิงค์ได้เสมอใน<ph name="BEGIN_LINK" />การตั้งค่า<ph name="END_LINK" /> Google อาจปรับเปลี่ยน Search และบริการอื่นๆ ให้เหมาะกับคุณโดยอิงจากประวัติการเข้าชม</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{มีรหัสผ่านที่ไม่รัดกุม {COUNT} รายการ}other{มีรหัสผ่านที่ไม่รัดกุม {COUNT} รายการ}}</translation> <translation id="3603009562372709545">คัดลอก URL ของลิงก์</translation> <translation id="3607167657931203000">ป้อนข้อมูลอัตโนมัติ</translation> <translation id="3608008480985212611">ลงชื่อเข้าใช้เพื่อจัดการค่ากำหนด</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">รวมข้อมูลของฉัน</translation> <translation id="3929457972718048006">ที่อยู่</translation> <translation id="3943492037546055397">รหัสผ่าน</translation> -<translation id="3951717558054674026">{count,plural, =1{มีรหัสผ่านที่ไม่รัดกุม {count} รหัส}other{มีรหัสผ่านที่ไม่รัดกุม {count} รหัส}}</translation> <translation id="3959736869653157332">เมนู → แท็บใหม่ที่ไม่ระบุตัวตน</translation> <translation id="3967822245660637423">ดาวน์โหลดเสร็จสมบูรณ์</translation> <translation id="3968505803272650567">จัดการความสนใจ</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">แสดงแท็บ</translation> <translation id="6187302354554850004">ซิงค์ครั้งล่าสุด: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">ยังไม่ได้อ่าน</translation> -<translation id="6193424046394092997">{count,plural, =1{เพิ่มบุ๊กมาร์กไปยัง {title} แล้ว}other{เพิ่มบุ๊กมาร์กไปยัง {title} แล้ว}}</translation> <translation id="6196207969502475924">การค้นหาด้วยเสียง</translation> <translation id="6202364442240589072">{COUNT,plural, =1{ปิด {COUNT} แท็บ}other{ปิด {COUNT} แท็บ}}</translation> <translation id="6210079381482819663">แท็บที่ไม่ได้ใช้งานเป็นระยะเวลาอย่างน้อย <ph name="THRESHOLD" /> วันจะย้ายมาที่นี่ คุณเปลี่ยนตัวเลือกนี้ได้ทุกเมื่อใน<ph name="BEGIN_LINK" />การตั้งค่า<ph name="END_LINK" /></translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">เริ่มดาวน์โหลดใหม่ใช่ไหม</translation> <translation id="6347953390226388422">{count,plural, =1{ระบบจะลบที่อยู่นี้ออกจากบัญชี Google (<ph name="USER_EMAIL" />) และจากอุปกรณ์เครื่องนี้}other{ระบบจะลบที่อยู่เหล่านี้ออกจากบัญชี Google (<ph name="USER_EMAIL" />) และจากอุปกรณ์เครื่องนี้}}</translation> <translation id="634878792104344809">ซิงค์รหัสผ่าน ประวัติการเข้าชม และอื่นๆ ในทุกอุปกรณ์</translation> +<translation id="6348855835728304880">เข้าถึงรหัสผ่านใน Chrome และอีกมากมายจากแอปอื่นๆ ในอุปกรณ์นี้</translation> <translation id="6355820205320395730">รหัสผ่านที่ไม่รัดกุมนั้นคาดเดาได้ง่าย ตรวจสอบว่าคุณสร้างรหัสผ่านที่รัดกุม <ph name="BEGIN_LINK" />ดูเคล็ดลับความปลอดภัยเพิ่มเติม<ph name="END_LINK" /></translation> <translation id="6361848730467328243">ติดตาม <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">ไม่มีแท็บที่ไม่ระบุตัวตน</translation> @@ -821,7 +820,6 @@ ข้อมูลของคุณได้รับการเข้ารหัสด้วยรหัสผ่านการซิงค์เมื่อวันที่ <ph name="TIME" /> โปรดป้อนรหัสผ่านเพื่อเริ่มซิงค์</translation> <translation id="6418346271604475326">กำลังเตรียม PDF</translation> -<translation id="6421095165635308">{count,plural, =1{บันทึกบุ๊กมาร์กไปยัง {title} ในบัญชีของคุณ {email} แล้ว}other{บันทึกบุ๊กมาร์กไปยัง {title} ในบัญชีของคุณ {email} แล้ว}}</translation> <translation id="6429213933892582367">เปิดตัวเลือกรหัสผ่าน</translation> <translation id="6434591244308415567">เกิดข้อผิดพลาด โปรดลองอีกครั้งในภายหลัง</translation> <translation id="6435236283694032571">เพิ่มไปยังเรื่องรออ่าน</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">สำรวจฟีเจอร์และเคล็ดลับใหม่ๆ ใน "มีอะไรใหม่"</translation> <translation id="7223102419539744003">ปิดแท็บ</translation> <translation id="722454870747268814">แท็บที่ไม่ระบุตัวตนใหม่</translation> +<translation id="723787869754590019">ใช้ Chrome สำหรับการป้อนข้อความอัตโนมัติ</translation> <translation id="7265758999917665941">ไม่จดจำสำหรับเว็บไซต์นี้</translation> <translation id="7272437679830969316">ยืนยันตัวตนของคุณไม่ได้ คัดลอกรหัสผ่านไม่สำเร็จ</translation> <translation id="7291368939935408496">กำลังเตรียมรหัสผ่าน...</translation> @@ -1155,12 +1154,14 @@ <translation id="8663764600409216912">คุณใช้รหัสผ่านที่คาดเดาได้ยาก</translation> <translation id="8668210798914567634">หน้านี้ได้รับการบันทึกลงในรายการที่จะอ่านแล้ว</translation> <translation id="8680787084697685621">รายละเอียดการลงชื่อเข้าใช้บัญชีเก่าเกินไป</translation> +<translation id="868773710103052534">เรียบร้อยแล้ว</translation> <translation id="8693663554456874301">{count,plural, =1{ปิดแท็บ}other{ปิดแท็บ}}</translation> <translation id="8703536910991780768">คุณใช้รหัสผ่านที่รัดกุม</translation> <translation id="8706588385081740091">รหัสผ่าน</translation> <translation id="8717864919010420084">คัดลอกลิงก์</translation> <translation id="8721297211384281569">เมนูเครื่องมือ</translation> <translation id="8725066075913043281">ลองอีกครั้ง</translation> +<translation id="8727043961453758442">ใช้ประโยชน์สูงสุดจาก Chrome</translation> <translation id="8730621377337864115">เสร็จสิ้น</translation> <translation id="8731388423028622182">คุณออกจากระบบบัญชี <ph name="USER_NAME" /> ในขั้นตอนการรีเซ็ต iPhone แตะ "ต่อไป" ด้านล่างเพื่อลงชื่อเข้าใช้</translation> <translation id="87371078663613140">สํารวจตัวเลือกในแถบเมนู</translation> @@ -1207,9 +1208,9 @@ <translation id="8974714402877957201">1. เปิดการตั้งค่า iPad</translation> <translation id="8976382372951310360">ความช่วยเหลือ</translation> <translation id="8976414606286374109">บันทึกบัตรในบัญชี Google ของคุณแล้ว</translation> -<translation id="8978059030508051916">{count,plural, =0{ไม่มีรหัสผ่านที่ถูกละเมิด}=1{มีรหัสผ่านที่ถูกละเมิด {count} รหัส}other{มีรหัสผ่านที่ถูกละเมิด {count} รหัส}}</translation> <translation id="8981454092730389528">ส่วนควบคุมกิจกรรมของ Google</translation> <translation id="8985320356172329008">ลงชื่อเข้าใช้ Google ด้วย</translation> +<translation id="8986567980592931173">ลงชื่อเข้าใช้ด้วยบัญชี Google เพื่อซิงค์รหัสผ่าน ประวัติการเข้าชม และอื่นๆ</translation> <translation id="8998289560386111590">ใช้ไม่ได้ในอุปกรณ์ของคุณ</translation> <translation id="9000089900434778519">เครื่องมือค้นหาของคุณคือ <ph name="DSE_NAME" /> ดูวิธีลบประวัติการค้นหา (หากมี) ของเครื่องมือค้นหาที่คุณใช้</translation> <translation id="9008201768610948239">ไม่สนใจ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb index 335d87a..b90c8de 100644 --- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -217,7 +217,6 @@ <translation id="2482878487686419369">Bildirimler</translation> <translation id="2496626742194544812">İlk Sekmeye Gidin</translation> <translation id="2500374554657206846">Şifre Kaydetme Seçenekleri</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> şifre yeniden kullanılıyor</translation> <translation id="2523363575747517183">Bu web sitesi sürekli başka bir uygulama açmaya çalışıyor.</translation> <translation id="2529021024822217800">Tümünü Aç</translation> <translation id="2547458583188611426">Senkronizasyon çalışmıyor. Senkronizasyonu başlatmak için parolanızı girin.</translation> @@ -389,7 +388,6 @@ <translation id="3581564640715911333">Diğer dillerdeki sayfaları çevirmeyi öner</translation> <translation id="3588820906588687999">Resmi Yeni Sekmede Aç</translation> <translation id="3595252146048399851">Neyin senkronize edileceğini istediğiniz zaman <ph name="BEGIN_LINK" />ayarlardan<ph name="END_LINK" /> seçebilirsiniz. Google, geçmişinize dayalı olarak Arama'yı ve diğer hizmetleri kişiselleştirebilir.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} zayıf şifre}other{{COUNT} zayıf şifre}}</translation> <translation id="3603009562372709545">Bağlantı URL'sini kopyala</translation> <translation id="3607167657931203000">Verileri Otomatik Doldur</translation> <translation id="3608008480985212611">Tercihlerinizi yönetmek için oturum açın.</translation> @@ -435,7 +433,6 @@ <translation id="3928666092801078803">Verilerimi birleştir</translation> <translation id="3929457972718048006">Adresler</translation> <translation id="3943492037546055397">Şifreler</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} Zayıf Şifre}other{{count} Zayıf Şifre}}</translation> <translation id="3959736869653157332">Menü → Yeni Gizli Sekme</translation> <translation id="3967822245660637423">İndirme tamamlandı</translation> <translation id="3968505803272650567">İlgi Alanlarını Yönet</translation> @@ -772,7 +769,6 @@ <translation id="6184086493125982861">Sekmeleri Göster</translation> <translation id="6187302354554850004">Son senkronizasyon tarihi: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Okunmamış girişler</translation> -<translation id="6193424046394092997">{count,plural, =1{Yer işareti {title} klasörüne eklendi}other{Yer işareti {title} klasörüne eklendi}}</translation> <translation id="6196207969502475924">Sesli Arama</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} Sekmeyi Kapat}other{{COUNT} Sekmeyi Kapat}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> gün veya daha uzun süre boyunca kullanılmayan sekmeler buraya taşınır. İstediğiniz zaman bunu <ph name="BEGIN_LINK" />ayarlardan<ph name="END_LINK" /> değiştirebilirsiniz.</translation> @@ -821,7 +817,6 @@ Verileriniz <ph name="TIME" /> tarihinde senkronizasyon parolanızla şifrelendi. Senkronizasyonu başlatmak için senkronizasyon parolanızı girin.</translation> <translation id="6418346271604475326">PDF hazırlanıyor</translation> -<translation id="6421095165635308">{count,plural, =1{Yer işareti, hesabınızdaki ({email}) {title} klasörüne kaydedildi}other{Yer işaretleri, hesabınızdaki ({email}) {title} klasörüne kaydedildi}}</translation> <translation id="6429213933892582367">Şifre Seçenekleri'ni açın</translation> <translation id="6434591244308415567">Bir hata oluştu. Daha sonra tekrar deneyin.</translation> <translation id="6435236283694032571">Okuma Listesine Ekle</translation> @@ -1207,7 +1202,6 @@ <translation id="8974714402877957201">1. iPad ayarlarını açın</translation> <translation id="8976382372951310360">Yardım</translation> <translation id="8976414606286374109">Kartlar Google Hesabı'nıza kaydedildi.</translation> -<translation id="8978059030508051916">{count,plural, =0{Güvenliği İhlal Edilmiş Şifre Yok}=1{Güvenliği İhlal Edilmiş {count} Şifre}other{Güvenliği İhlal Edilmiş {count} Şifre}}</translation> <translation id="8981454092730389528">Google Etkinlik Kontrolleri</translation> <translation id="8985320356172329008">Google'da Şu Hesapla Oturum Açıldı:</translation> <translation id="8998289560386111590">Cihazınızda kullanılamıyor</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb index c2850308..564aa46 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Віддалити</translation> <translation id="2230173723195178503">Веб-сторінку завантажено</translation> <translation id="2239626343334228536">Очищення даних веб-перегляду…</translation> +<translation id="2242467532204595597">Тепер ви можете відкривати в Chrome посилання з повідомлень, документів і інших додатків.</translation> <translation id="22508856139286506">Закриті попередження (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Меню → Історія</translation> <translation id="2256933947031277845">Ваша організація дозволяє входити лише в певні облікові записи.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{Над клавіатурою показується {count} збережена адреса.}one{Над клавіатурою показується {count} збережена адреса.}few{Над клавіатурою показуються {count} збережені адреси.}many{Над клавіатурою показуються {count} збережених адрес.}other{Над клавіатурою показуються {count} збереженої адреси.}}</translation> <translation id="2421004566762153674">Блокуються сторонні файли cookie</translation> <translation id="2421044535038393232">Продовжити редагувати</translation> +<translation id="2423077901494354337">Тепер ви можете використовувати всі можливості Chrome на своєму пристрої.</translation> <translation id="2434405374328098816">Ви вже зберегли пароль для користувача <ph name="USERNAME" /> на веб-сайті <ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Показати пароль</translation> <translation id="2451654228769116489">Закріпити вкладку</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Сповіщення</translation> <translation id="2496626742194544812">Перейти на першу вкладку</translation> <translation id="2500374554657206846">Опції для збереження паролів</translation> -<translation id="2502415369140591438">Повторно використаних паролів: <ph name="COUNT" /></translation> <translation id="2523363575747517183">Цей веб-сайт періодично намагається відкрити інший додаток.</translation> <translation id="2529021024822217800">Відкрити всі</translation> <translation id="2547458583188611426">Синхронізація не працює. Щоб почати синхронізацію, введіть парольну фразу.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Пропозиція перекладати сторінки іншими мовами</translation> <translation id="3588820906588687999">Відкрити зображення в новій вкладці</translation> <translation id="3595252146048399851">Ви можете будь-коли вибрати дані для синхронізації в <ph name="BEGIN_LINK" />налаштуваннях<ph name="END_LINK" />. Google може персоналізувати Пошук та інші сервіси на основі вашої історії.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} ненадійний пароль}one{{COUNT} ненадійний пароль}few{{COUNT} ненадійні паролі}many{{COUNT} ненадійних паролів}other{{COUNT} ненадійного пароля}}</translation> <translation id="3603009562372709545">Копіювати URL-адресу посилання</translation> <translation id="3607167657931203000">Дані автозаповнення</translation> <translation id="3608008480985212611">Увійдіть, щоб керувати налаштуваннями.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Об’єднати мої дані</translation> <translation id="3929457972718048006">Адреси</translation> <translation id="3943492037546055397">Паролі</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} ненадійний пароль}one{{count} ненадійний пароль}few{{count} ненадійні паролі}many{{count} ненадійних паролів}other{{count} ненадійного пароля}}</translation> <translation id="3959736869653157332">Меню → Нова анонімна вкладка</translation> <translation id="3967822245660637423">Завантажено</translation> <translation id="3968505803272650567">Керувати інтересами</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">Показати вкладки</translation> <translation id="6187302354554850004">Востаннє синхрон.: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Непрочитані</translation> -<translation id="6193424046394092997">{count,plural, =1{Закладку збережено в папці "{title}"}one{Закладки збережено в папці "{title}"}few{Закладки збережено в папці "{title}"}many{Закладки збережено в папці "{title}"}other{Закладки збережено в папці "{title}"}}</translation> <translation id="6196207969502475924">Голосовий пошук</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Закрити {COUNT} вкладку}one{Закрити {COUNT} вкладку}few{Закрити {COUNT} вкладки}many{Закрити {COUNT} вкладок}other{Закрити {COUNT} вкладки}}</translation> <translation id="6210079381482819663">Сюди переміщуються вкладки, які не використовуються принаймні <ph name="THRESHOLD" /> дн. Параметри функції можна будь-коли змінити в <ph name="BEGIN_LINK" />налаштуваннях<ph name="END_LINK" />.</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">Почати нове завантаження?</translation> <translation id="6347953390226388422">{count,plural, =1{Вибрану адресу буде видалено з вашого облікового запису Google (<ph name="USER_EMAIL" />) і цього пристрою.}one{Вибрані адреси буде видалено з вашого облікового запису Google (<ph name="USER_EMAIL" />) і цього пристрою.}few{Вибрані адреси буде видалено з вашого облікового запису Google (<ph name="USER_EMAIL" />) і цього пристрою.}many{Вибрані адреси буде видалено з вашого облікового запису Google (<ph name="USER_EMAIL" />) і цього пристрою.}other{Вибрані адреси буде видалено з вашого облікового запису Google (<ph name="USER_EMAIL" />) і цього пристрою.}}</translation> <translation id="634878792104344809">Синхронізуйте паролі, історію й інші дані між усіма своїми пристроями</translation> +<translation id="6348855835728304880">Автоматично заповнюйте паролі Chrome і не тільки в інших додатках на цьому пристрої.</translation> <translation id="6355820205320395730">Ненадійні паролі можна легко вгадати, тому переконайтеся, що ваші є безпечними. <ph name="BEGIN_LINK" />Перегляньте інші поради щодо безпеки.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Підписатися на сайт <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Немає анонімних вкладок</translation> @@ -821,7 +820,6 @@ Ваші дані було зашифровано <ph name="TIME" /> за допомогою парольної фрази для синхронізації. Введіть її, щоб почати синхронізацію.</translation> <translation id="6418346271604475326">Підготовка PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Закладку збережено в папці "{title}" у вашому обліковому записі ({email})}one{Закладки збережено в папці "{title}" у вашому обліковому записі ({email})}few{Закладки збережено в папці "{title}" у вашому обліковому записі ({email})}many{Закладки збережено в папці "{title}" у вашому обліковому записі ({email})}other{Закладки збережено в папці "{title}" у вашому обліковому записі ({email})}}</translation> <translation id="6429213933892582367">Відкрийте розділ "Параметри паролів"</translation> <translation id="6434591244308415567">Сталася помилка. Спробуйте пізніше.</translation> <translation id="6435236283694032571">Додати в список читання</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">Дізнайтеся про нові функції та поради в розділі "Що нового"</translation> <translation id="7223102419539744003">Закрити вкладку</translation> <translation id="722454870747268814">Нова анонімна вкладка</translation> +<translation id="723787869754590019">Використовувати Chrome для автозаповнення</translation> <translation id="7265758999917665941">Ніколи для цього сайту</translation> <translation id="7272437679830969316">Не вдалося підтвердити особу. Пароль не скопійовано.</translation> <translation id="7291368939935408496">Готуються паролі…</translation> @@ -1025,6 +1024,7 @@ <translation id="7781011649027948662">Перекласти сторінку?</translation> <translation id="7781069478569868053">Сторінка нової вкладки</translation> <translation id="7781829728241885113">Учора</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Через 1 день}one{Через {COUNT} день}few{Через {COUNT} дні}many{Через {COUNT} днів}other{Через {COUNT} дня}}</translation> <translation id="778855399387580014">Пошук у новій вкладці Chrome.</translation> <translation id="7791543448312431591">Додати</translation> <translation id="7807060072011926525">Надано компанією Google</translation> @@ -1154,12 +1154,14 @@ <translation id="8663764600409216912">Ви використовуєте паролі, які важко вгадати</translation> <translation id="8668210798914567634">Цю сторінку збережено в списку читання.</translation> <translation id="8680787084697685621">Дані для входу в обліковий запис застаріли.</translation> +<translation id="868773710103052534">Готово</translation> <translation id="8693663554456874301">{count,plural, =1{Закрити вкладку}one{Закрити вкладки}few{Закрити вкладки}many{Закрити вкладки}other{Закрити вкладки}}</translation> <translation id="8703536910991780768">Ваші паролі надійні</translation> <translation id="8706588385081740091">Паролі</translation> <translation id="8717864919010420084">Скопіювати посилання</translation> <translation id="8721297211384281569">Меню інструментів</translation> <translation id="8725066075913043281">Повторити спробу</translation> +<translation id="8727043961453758442">Користуйтеся всіма можливостями Chrome</translation> <translation id="8730621377337864115">Готово</translation> <translation id="8731388423028622182">Ви вийшли з облікового запису <ph name="USER_NAME" />, коли було скинуто налаштування iPhone. Щоб увійти, натисніть "Продовжити" нижче.</translation> <translation id="87371078663613140">Перегляньте варіанти на панелі меню</translation> @@ -1206,9 +1208,9 @@ <translation id="8974714402877957201">1. Відкрийте Параметри на iPad</translation> <translation id="8976382372951310360">Довідка</translation> <translation id="8976414606286374109">Картки зберігаються у вашому обліковому записі Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Немає зламаних паролів}=1{{count} зламаний пароль}one{{count} зламаний пароль}few{{count} зламані паролі}many{{count} зламаних паролів}other{{count} зламаного пароля}}</translation> <translation id="8981454092730389528">Відстеження дій у Google</translation> <translation id="8985320356172329008">Ви ввійшли в обліковий запис Google як</translation> +<translation id="8986567980592931173">Увійдіть в обліковий запис Google, щоб синхронізувати паролі, історію тощо.</translation> <translation id="8998289560386111590">Недоступно на вашому пристрої</translation> <translation id="9000089900434778519">Ваша пошукова система – <ph name="DSE_NAME" />. Перегляньте її вказівки щодо того, як видалити історію пошуку (якщо вона є).</translation> <translation id="9008201768610948239">Ігнорувати</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_strings_ur.xtb index 0b72ed1..0ea712d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ur.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">زوم آؤٹ کریں</translation> <translation id="2230173723195178503">ویب صفحہ لوڈ کر دیا گیا ہے</translation> <translation id="2239626343334228536">براؤزنگ ڈیٹا صاف ہو رہا ہے...</translation> +<translation id="2242467532204595597">جب بھی آپ پیغامات، دستاویزات اور دیگر ایپس میں لنکس پر تھپتھپاتے ہیں تو Chrome استعمال کریں۔</translation> <translation id="22508856139286506">برخاست کردہ وارننگز (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">مینیو ← سرگزشت</translation> <translation id="2256933947031277845">آپ کی تنظیم آپ کو صرف مخصوص اکاؤنٹس کے ساتھ سائن ان کرنے کی اجازت دیتی ہے۔</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{آپ کے کی بورڈ کے اوپر {count} محفوظ کردہ پتہ دستیاب ہے۔}other{آپ کے کی بورڈ کے اوپر {count} محفوظ کردہ پتے دستیاب ہیں۔}}</translation> <translation id="2421004566762153674">فریق ثالث کوکیز کو مسدود کیا جا رہا ہے</translation> <translation id="2421044535038393232">ترمیم جاری رکھیں</translation> +<translation id="2423077901494354337">اب آپ اپنے آلے پر Chrome سے زیادہ سے زیادہ فائدہ اٹھائیں گے۔</translation> <translation id="2434405374328098816">آپ نے <ph name="WEBSITE" /> پر "<ph name="USERNAME" />" کے لیے پہلے ہی پاس ورڈ محفوظ کر لیا ہے</translation> <translation id="2435457462613246316">پاس ورڈ دکھائیں</translation> <translation id="2451654228769116489">ٹیب کو پن کریں</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">اطلاعات</translation> <translation id="2496626742194544812">پہلے ٹیب پر جائیں</translation> <translation id="2500374554657206846">پاس ورڈ محفوظ کرنے کے اختیارات</translation> -<translation id="2502415369140591438">دوبارہ استعمال کردہ <ph name="COUNT" /> پاس ورڈز</translation> <translation id="2523363575747517183">یہ ویب سائٹ بار بار ایک اور ایپلیکیشن کھولنے کی کوشش کر رہی ہے۔</translation> <translation id="2529021024822217800">تمام کھولیں</translation> <translation id="2547458583188611426">مطابقت پذیری کام نہیں کر رہی ہے۔ مطابقت پذیری شروع کرنے کے لیے اپنا پاس فریز درج کریں۔</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">صفحات کو دیگر زبانوں میں ترجمہ کرنے کی پیشکش کریں</translation> <translation id="3588820906588687999">تصویر نئے ٹیب میں کھولیں</translation> <translation id="3595252146048399851">آپ کسی بھی وقت اس بات کا انتخاب کر سکتے ہیں کہ <ph name="BEGIN_LINK" />ترتیبات<ph name="END_LINK" /> میں کس چیز کی مطابقت پذیری کرنی ہے۔ Google آپ کی سرگزشت کی بنیاد پر تلاش اور دیگر سروسز کو ذاتی نوعیت کا بنا سکتا ہے۔</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} کمزور پاس ورڈ}other{{COUNT} کمزور پاس ورڈز}}</translation> <translation id="3603009562372709545">لنک URL کاپی کریں</translation> <translation id="3607167657931203000">آٹو فل ڈیٹا</translation> <translation id="3608008480985212611">اپنی ترجیحات کا نظم کرنے کے لیے سائن ان کریں۔</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">میرا ڈیٹا ملائیں</translation> <translation id="3929457972718048006">پتے</translation> <translation id="3943492037546055397">پاس ورڈز</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} کمزور پاس ورڈ}other{{count} کمزور پاس ورڈز}}</translation> <translation id="3959736869653157332">مینیو ← نیا پوشیدگی ٹیب</translation> <translation id="3967822245660637423">ڈاؤن لوڈ مکمل ہوگیا ہے</translation> <translation id="3968505803272650567">دلچسپیوں کا نظم کریں</translation> @@ -611,6 +610,7 @@ <translation id="5118764316110575523">آف</translation> <translation id="5119391094379141756">Chrome منتخب کریں</translation> <translation id="5121618895923301719">آپ پہلے سے ہی اس پروڈکٹ کو ٹریک کر رہے ہیں۔ یہ صفحہ <ph name="BEGIN_LINK" />موبائل بُک مارکس<ph name="END_LINK" /> میں محفوظ ہے۔</translation> +<translation id="5126465625664020024">سائن ان کریں اور سِنک کریں</translation> <translation id="5132942445612118989">سبھی آلات پر اپنے پاس ورڈز اور سرگزشت کی مطابقت پذیری اور مزید بہت کچھ کریں</translation> <translation id="5142890110117755815">{COUNT,plural, =1{{COUNT} کمزور پاس ورڈ}other{{COUNT} کمزور پاس ورڈز}}</translation> <translation id="5149188072385105201">پاس ورڈ شامل کریں...</translation> @@ -771,7 +771,6 @@ <translation id="6184086493125982861">ٹیبز دکھائیں</translation> <translation id="6187302354554850004">آخری مطابقت پذیری: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">نہ پڑھے ہوئے</translation> -<translation id="6193424046394092997">{count,plural, =1{{title} میں بُک مارک ہو گیا}other{{title} میں بُک مارک ہو گیا}}</translation> <translation id="6196207969502475924">صوتی تلاش</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ٹیب بند کریں}other{{COUNT} ٹیبز بند کریں}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> دن یا اس سے زیادہ استعمال نہ ہونے والے ٹیبز کو یہاں منتقل کر دیا جاتا ہے۔ آپ اسے <ph name="BEGIN_LINK" />ترتیبات<ph name="END_LINK" /> میں کسی بھی وقت تبدیل کر سکتے ہیں۔</translation> @@ -801,6 +800,7 @@ <translation id="6346549652287021269">نیا ڈاؤن لوڈ شروع کریں؟</translation> <translation id="6347953390226388422">{count,plural, =1{یہ پتہ آپ کے Google اکاؤنٹ (<ph name="USER_EMAIL" />) اور اس آلے سے حذف ہو جائے گا۔}other{یہ پتے آپ کے Google اکاؤنٹ (<ph name="USER_EMAIL" />) اور اس آلے سے حذف ہو جائیں گے۔}}</translation> <translation id="634878792104344809">اپنے سبھی آلات پر اپنے پاس ورڈز، سرگزشت اور مزید کی مطابقت پذیری کریں</translation> +<translation id="6348855835728304880">اس آلے پر موجود دیگر ایپس پر اپنے Chrome پاس ورڈز اور مزید تک رسائی حاصل کریں۔</translation> <translation id="6355820205320395730">کمزور پاس ورڈز کا اندازہ لگانا آسان ہوتا ہے۔ مضبوط پاس ورڈز کی تخلیق کو یقینی بنائیں۔ <ph name="BEGIN_LINK" />سیکیورٹی کی مزید تجاویز دیکھیں۔<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> کی پیروی کریں</translation> <translation id="6362362396625799311">کوئی پوشیدگی ٹیبز نہیں ہیں</translation> @@ -820,7 +820,6 @@ آپ کے ڈیٹا کی آپ کے مطابقت پذیر پاس فریز کے ساتھ <ph name="TIME" /> پر مرموز کاری کی گئی تھی۔ مطابقت پذیری شروع کرنے کیلئے اسے درج کریں۔</translation> <translation id="6418346271604475326">PDF تیار ہو رہی ہے</translation> -<translation id="6421095165635308">{count,plural, =1{بُک مارک آپ کے اکاؤنٹ میں {title} میں محفوظ کیا گیا، {email}}other{بُک مارکس آپ کے اکاؤنٹ میں {title} میں محفوظ کئے گئے، {email}}}</translation> <translation id="6429213933892582367">پاس ورڈ کے اختیارات کھولیں</translation> <translation id="6434591244308415567">ایک خرابی پیش آ گئی۔ بعد میں دوبارہ کوشش کریں۔</translation> <translation id="6435236283694032571">پڑھنے کی فہرست میں شامل کریں</translation> @@ -953,6 +952,7 @@ <translation id="7221173315674413369">نیا کیا ہے میں نئی خصوصیات اور تجاویز دریافت کریں</translation> <translation id="7223102419539744003">ٹیب بند کریں</translation> <translation id="722454870747268814">نیا پوشیدگی ٹیب</translation> +<translation id="723787869754590019">آٹو فل کے لیے کروم استعمال کریں</translation> <translation id="7265758999917665941">اس سائٹ کیلئے کبھی نہیں</translation> <translation id="7272437679830969316">آپ کی شناخت کی توثیق نہیں کی جا سکتی۔ پاس ورڈ کاپی نہیں ہوا۔</translation> <translation id="7291368939935408496">پاسورڈز تیار کیے جا رہے ہيں...</translation> @@ -1154,12 +1154,14 @@ <translation id="8663764600409216912">آپ ایسے پاس ورڈ کا استعمال کر رہے ہیں جن کا اندازہ لگانا مشکل ہے</translation> <translation id="8668210798914567634">اس صفحہ کو آپ کی پڑھنے کی فہرست میں محفوظ کر دیا گیا ہے۔</translation> <translation id="8680787084697685621">اکاؤنٹ سائن ان کی تفصیلات پرانی ہیں۔</translation> +<translation id="868773710103052534">آپ پوری طرح سے تیار ہیں</translation> <translation id="8693663554456874301">{count,plural, =1{ٹیب بند کریں}other{ٹیبز بند کریں}}</translation> <translation id="8703536910991780768">آپ کے پاس ورڈز مضبوط لگ رہے ہیں</translation> <translation id="8706588385081740091">پاس ورڈز</translation> <translation id="8717864919010420084">لنک کاپی کریں</translation> <translation id="8721297211384281569">ٹولز مینیو</translation> <translation id="8725066075913043281">دوبارہ کوشش کریں</translation> +<translation id="8727043961453758442">Chrome سے زیادہ سے زیادہ فائدہ اٹھائیں</translation> <translation id="8730621377337864115">ہوگیا</translation> <translation id="8731388423028622182">آپ اپنے iPhone ری سیٹ کے حصے کے طور پر اپنے اکاؤنٹ <ph name="USER_NAME" /> سے سائن آؤٹ ہو گئے تھے۔ سائن ان کرنے کے لیے نیچے جاری رکھیں پر تھپتھپائیں۔</translation> <translation id="87371078663613140">مینیو بار میں موجود اختیارات کو دریافت کریں</translation> @@ -1206,9 +1208,9 @@ <translation id="8974714402877957201">1۔ iPad ترتیبات کھولیں</translation> <translation id="8976382372951310360">مدد</translation> <translation id="8976414606286374109">کارڈز آپ کے Google اکاؤنٹ میں محفوظ ہوتے ہیں۔</translation> -<translation id="8978059030508051916">{count,plural, =0{کوئی متاثرہ پاس ورڈ نہیں}=1{{count} متاثرہ پاس ورڈ}other{{count} متاثرہ پاس ورڈز}}</translation> <translation id="8981454092730389528">Google سرگرمی کنٹرولز</translation> <translation id="8985320356172329008">Google میں سائن ان ہے بطور</translation> +<translation id="8986567980592931173">اپنے پاس ورڈز، سرگزشت وغیرہ کو مطابقت پذیر بنانے کے لیے اپنے Google اکاؤنٹ کے ساتھ سائن ان کریں۔</translation> <translation id="8998289560386111590">آپ کے آلے پر دستیاب نہیں ہے</translation> <translation id="9000089900434778519">آپ کا سرچ انجن <ph name="DSE_NAME" /> ہے۔ اگر قابل اطلاق ہو تو اپنی تلاش کی سرگزشت حذف کرنے کے لیے ان کی ہدایات دیکھیں۔</translation> <translation id="9008201768610948239">نظر انداز کریں</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb index a2cf7f197..6f073e0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Bildirishnomalar</translation> <translation id="2496626742194544812">Birinchi varaqni ochish</translation> <translation id="2500374554657206846">Parollarni saqlash taklif qilinishi</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> ta parol qayta ishlatilgan</translation> <translation id="2523363575747517183">Bu sayt tinimsiz boshqa ilovani ochishga urinmoqda.</translation> <translation id="2529021024822217800">Hammasini ochish</translation> <translation id="2547458583188611426">Sinxronlash ishlamayapti. Sinxronlashni boshlash uchun kodli iborani kiriting.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Boshqa tildagi sahifalarni tarjima qilish taklif qilinsin</translation> <translation id="3588820906588687999">Tasvirni yangi tabda ochish</translation> <translation id="3595252146048399851">Nimani sinxronlashni istalgan vaqtda <ph name="BEGIN_LINK" />sozlamalar<ph name="END_LINK" /> orqali tanlash mumkin. Brauzer tarixi asosida Google Qidiruv va boshqa xizmatlarni moslashtirishi mumkin.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} ta kuchsiz parol aniqlandi}other{{COUNT} ta kuchsiz parol aniqlandi}}</translation> <translation id="3603009562372709545">URLdan nusxa olish</translation> <translation id="3607167657931203000">Avto-to‘ldirish ma’l-ri</translation> <translation id="3608008480985212611">Sozlamalarni belgilash uchun hisobga kiring.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Ma’lumotlarni birlashtirish</translation> <translation id="3929457972718048006">Manzillar</translation> <translation id="3943492037546055397">Parollar</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} ta kuchsiz parol aniqlandi}other{{count} ta kuchsiz parol aniqlandi}}</translation> <translation id="3959736869653157332">Menyu → Yangi inkognito varaq</translation> <translation id="3967822245660637423">Yuklab olindi</translation> <translation id="3968505803272650567">Qiziqishlarni sozlash</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Tablarni ko‘rsatish</translation> <translation id="6187302354554850004">Oxirgi sinxronizatsiya: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">O‘qilmagan</translation> -<translation id="6193424046394092997">{count,plural, =1{Bukmark “{title}” jildiga saqlandi}other{Bukmark “{title}” jildiga saqlandi}}</translation> <translation id="6196207969502475924">Ovozli qidiruv</translation> <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ta varaqni yopish}other{{COUNT} ta varaqni yopish}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> yoki koʻproq kun foydalanilmagan varaqlar shu yerga koʻchirildi Buni istalgan vaqtda <ph name="BEGIN_LINK" />sozlamalardan<ph name="END_LINK" /> oʻzgartirish mumkin.</translation> @@ -824,7 +820,6 @@ Ma’lumotlaringiz <ph name="TIME" /> sanasida kodli ibora bilan shifrlangan. Sinxronlashuvni boshlash uchun uni kiriting.</translation> <translation id="6418346271604475326">PDF tayyorlanmoqda</translation> -<translation id="6421095165635308">{count,plural, =1{Bukmark Google hisobingizdagi ({email}) {title} jildiga saqlandi}other{Bukmarklar Google hisobingizdagi ({email}) {title} jildiga saqlandi}}</translation> <translation id="6429213933892582367">Parol sozlamalarini oching</translation> <translation id="6434591244308415567">Xatolik yuz berdi. Keyinroq urining.</translation> <translation id="6435236283694032571">Saqlangan sahifalarga kiritish</translation> @@ -1029,6 +1024,7 @@ <translation id="7781011649027948662">Sahifa tarjima qilinsinmi?</translation> <translation id="7781069478569868053">Tezkor kirish sahifasi</translation> <translation id="7781829728241885113">Kecha</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{1 kundan keyin}other{{COUNT} kundan keyin}}</translation> <translation id="778855399387580014">Yangi Chrome sahifasida qidirish.</translation> <translation id="7791543448312431591">Qo‘shish</translation> <translation id="7807060072011926525">Google taqdim qilgan</translation> @@ -1093,6 +1089,7 @@ <translation id="8136856065410661948">Bu Chrome va Google Lensdan Apple Calendar ilovasida tadbirlar yaratish uchun ishlatiladi.</translation> <translation id="8156478151976189188">Parollar sinxronizatsiyasi ishlamayapti</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> ta hisob</translation> +<translation id="8159358225423560600">hozirgina</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Qurilmalaringiz<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Sahifani tarjima qilish</translation> @@ -1123,6 +1120,7 @@ <translation id="8393889347136007944">Varaqlar <ph name="THRESHOLD" /> kun ishlatilmadi</translation> <translation id="8407669440184693619">Bu sayt uchun hech qanday parol topilmadi</translation> <translation id="842017693807136194">Kirilgan hisob:</translation> +<translation id="8423121072346537366">Hozirgina</translation> <translation id="8425693829365242963">Parollaringiz takrorlanmagan</translation> <translation id="8428045167754449968">Shahar / tuman</translation> <translation id="8428213095426709021">Sozlamalar</translation> @@ -1210,7 +1208,6 @@ <translation id="8974714402877957201">1. iPad sozlamalarini oching</translation> <translation id="8976382372951310360">Yordam</translation> <translation id="8976414606286374109">Kartalar Google hisobingizda saqlanadi.</translation> -<translation id="8978059030508051916">{count,plural, =0{Hech qaysi parolingiz oshkor etilmagan}=1{{count} ta parol oshkor etilgan}other{{count} ta parol oshkor etilgan}}</translation> <translation id="8981454092730389528">Google hisobidagi harakatlarni kuzatish</translation> <translation id="8985320356172329008">Siz bu hisobdan kirgansiz</translation> <translation id="8986567980592931173">Parollar, tarix va boshqalarni sinxronlash uchun Google hisobingizga kiring.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb index 0d0fdcd..7940572 100644 --- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">Thông báo</translation> <translation id="2496626742194544812">Chuyển đến thẻ đầu tiên</translation> <translation id="2500374554657206846">Các tùy chọn lưu mật khẩu</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> Mật khẩu trùng lặp</translation> <translation id="2523363575747517183">Trang web này đang liên tục tìm cách mở một ứng dụng khác.</translation> <translation id="2529021024822217800">Mở tất cả</translation> <translation id="2547458583188611426">Tính năng đồng bộ hoá không hoạt động. Để bắt đầu đồng bộ hoá, hãy nhập cụm mật khẩu của bạn.</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">Đề xuất dịch trang bằng các ngôn ngữ khác</translation> <translation id="3588820906588687999">Mở ảnh trong thẻ mới</translation> <translation id="3595252146048399851">Bạn có thể chọn nội dung muốn đồng bộ hoá trong phần <ph name="BEGIN_LINK" />cài đặt<ph name="END_LINK" /> bất cứ lúc nào. Google có thể cá nhân hoá dịch vụ Tìm kiếm và các dịch vụ khác dựa trên nhật ký của bạn.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} Mật khẩu yếu}other{{COUNT} Mật khẩu yếu}}</translation> <translation id="3603009562372709545">Sao chép URL liên kết</translation> <translation id="3607167657931203000">Dữ liệu tự động điền</translation> <translation id="3608008480985212611">Đăng nhập để quản lý lựa chọn ưu tiên của bạn.</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">Kết hợp dữ liệu của tôi</translation> <translation id="3929457972718048006">Địa chỉ</translation> <translation id="3943492037546055397">Mật khẩu</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} mật khẩu yếu}other{{count} mật khẩu yếu}}</translation> <translation id="3959736869653157332">Trình đơn → Thẻ ẩn danh mới</translation> <translation id="3967822245660637423">Đã tải xuống xong</translation> <translation id="3968505803272650567">Quản lý mối quan tâm</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">Hiển thị thẻ</translation> <translation id="6187302354554850004">Đồng bộ hóa lần gần đây nhất: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Chưa đọc</translation> -<translation id="6193424046394092997">{count,plural, =1{Đã đánh dấu trang vào {title}}other{Đã đánh dấu trang vào {title}}}</translation> <translation id="6196207969502475924">Tìm kiếm bằng giọng nói</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Đóng {COUNT} thẻ}other{Đóng {COUNT} thẻ}}</translation> <translation id="6210079381482819663">Các thẻ bạn không dùng đến trong <ph name="THRESHOLD" /> ngày trở lên sẽ được chuyển đến đây. Bạn có thể thay đổi chế độ cài đặt này bất cứ lúc nào trong <ph name="BEGIN_LINK" />phần cài đặt<ph name="END_LINK" />.</translation> @@ -824,7 +820,6 @@ Dữ liệu của bạn đã được mã hóa bằng cụm mật khẩu đồng bộ hóa của bạn vào <ph name="TIME" />. Nhập cụm mật khẩu đó để bắt đầu đồng bộ hóa.</translation> <translation id="6418346271604475326">Đang chuẩn bị PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Đã lưu dấu trang vào {title} trong tài khoản {email} của bạn}other{Đã lưu dấu trang vào {title} trong tài khoản {email} của bạn}}</translation> <translation id="6429213933892582367">Mở Tuỳ chọn mật khẩu</translation> <translation id="6434591244308415567">Đã xảy ra lỗi. Hãy thử lại sau.</translation> <translation id="6435236283694032571">Thêm vào Danh sách đọc</translation> @@ -1029,6 +1024,7 @@ <translation id="7781011649027948662">Dịch trang?</translation> <translation id="7781069478569868053">Trang thẻ mới</translation> <translation id="7781829728241885113">Hôm qua</translation> +<translation id="7786246662347093005">{COUNT,plural, =1{Sau 1 ngày}other{Sau {COUNT} ngày}}</translation> <translation id="778855399387580014">Bắt đầu tìm kiếm trong thẻ Chrome mới.</translation> <translation id="7791543448312431591">Thêm</translation> <translation id="7807060072011926525">Do Google cung cấp</translation> @@ -1093,6 +1089,7 @@ <translation id="8136856065410661948">Thông tin này sẽ được dùng để tạo sự kiện trong Lịch Apple trên Chrome và Google Ống kính.</translation> <translation id="8156478151976189188">Tính năng đồng bộ hóa mật khẩu hiện không hoạt động</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> tài khoản</translation> +<translation id="8159358225423560600">vừa xong</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />Thiết bị của bạn<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">Dịch trang</translation> @@ -1123,6 +1120,7 @@ <translation id="8393889347136007944">Các thẻ mà bạn đã không sử dụng trong <ph name="THRESHOLD" /> ngày</translation> <translation id="8407669440184693619">Không tìm thấy mật khẩu nào cho trang web này</translation> <translation id="842017693807136194">Đăng nhập bằng</translation> +<translation id="8423121072346537366">Vừa xong</translation> <translation id="8425693829365242963">Các mật khẩu của bạn không trùng lặp</translation> <translation id="8428045167754449968">Thành phố/thị trấn</translation> <translation id="8428213095426709021">Cài đặt</translation> @@ -1210,7 +1208,6 @@ <translation id="8974714402877957201">1. Mở phần Cài đặt iPad</translation> <translation id="8976382372951310360">Trợ giúp</translation> <translation id="8976414606286374109">Các thẻ sẽ được lưu vào Tài khoản Google của bạn.</translation> -<translation id="8978059030508051916">{count,plural, =0{Không có mật khẩu nào bị lộ}=1{{count} mật khẩu bị lộ}other{{count} mật khẩu bị lộ}}</translation> <translation id="8981454092730389528">Kiểm soát hoạt động trên Google</translation> <translation id="8985320356172329008">Đã đăng nhập vào Google bằng</translation> <translation id="8986567980592931173">Đăng nhập bằng Tài khoản Google để đồng bộ hoá mật khẩu, nhật ký hoạt động và nhiều nội dung khác.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb index ac5167d..d5216a0e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">缩小</translation> <translation id="2230173723195178503">已加载网页</translation> <translation id="2239626343334228536">正在清除浏览数据…</translation> +<translation id="2242467532204595597">随时可以使用 Chrome 打开消息、文档和其他应用中的链接。</translation> <translation id="22508856139286506">已忽略的警告(<ph name="COUNT" /> 条)</translation> <translation id="2251686759395008410">菜单 → 历史记录</translation> <translation id="2256933947031277845">贵单位要求您只能使用特定帐号登录。</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{键盘上方显示了 {count} 个已保存的地址。}other{键盘上方显示了 {count} 个已保存的地址。}}</translation> <translation id="2421004566762153674">阻止第三方 Cookie</translation> <translation id="2421044535038393232">继续修改</translation> +<translation id="2423077901494354337">您现在可以在设备上充分利用 Chrome 了。</translation> <translation id="2434405374328098816">您已经在 <ph name="WEBSITE" /> 上保存了“<ph name="USERNAME" />”的密码</translation> <translation id="2435457462613246316">显示密码</translation> <translation id="2451654228769116489">固定标签页</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">通知</translation> <translation id="2496626742194544812">转到第一个标签页</translation> <translation id="2500374554657206846">保存密码的选项</translation> -<translation id="2502415369140591438">有 <ph name="COUNT" /> 个重复使用的密码</translation> <translation id="2523363575747517183">该网站屡次尝试打开其他应用。</translation> <translation id="2529021024822217800">全部打开</translation> <translation id="2547458583188611426">同步功能无法正常运行。若要开始同步,请输入您的口令。</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">询问是否翻译其他语言版本的网页</translation> <translation id="3588820906588687999">在新标签页中打开图片</translation> <translation id="3595252146048399851">您随时可在<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />中选择要同步的内容。Google 可能会根据您的历史记录在 Google 搜索及其他服务中为您提供个性化的体验。</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{有 {COUNT} 个安全系数低的密码}other{有 {COUNT} 个安全系数低的密码}}</translation> <translation id="3603009562372709545">复制链接网址</translation> <translation id="3607167657931203000">自动填充数据</translation> <translation id="3608008480985212611">登录后即可管理您的偏好设置。</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">合并我的数据</translation> <translation id="3929457972718048006">地址</translation> <translation id="3943492037546055397">密码</translation> -<translation id="3951717558054674026">{count,plural, =1{有 {count} 个安全系数低的密码}other{有 {count} 个安全系数低的密码}}</translation> <translation id="3959736869653157332">菜单 → 打开新的无痕式标签页</translation> <translation id="3967822245660637423">下载完毕</translation> <translation id="3968505803272650567">管理感兴趣的主题</translation> @@ -772,7 +771,6 @@ <translation id="6184086493125982861">显示标签页</translation> <translation id="6187302354554850004">上次同步时间:<ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">未读</translation> -<translation id="6193424046394092997">{count,plural, =1{已将书签添加到“{title}”}other{已将书签添加到“{title}”}}</translation> <translation id="6196207969502475924">语音搜索</translation> <translation id="6202364442240589072">{COUNT,plural, =1{关闭 {COUNT} 个标签页}other{关闭 {COUNT} 个标签页}}</translation> <translation id="6210079381482819663">连续 <ph name="THRESHOLD" /> 天或更长时间未使用的标签页会被移至此处。您随时可在<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />中更改此设置。</translation> @@ -802,6 +800,7 @@ <translation id="6346549652287021269">开始执行新的下载任务?</translation> <translation id="6347953390226388422">{count,plural, =1{这个地址将被从您的 Google 帐号 (<ph name="USER_EMAIL" />) 和此设备中删除。}other{这些地址将被从您的 Google 帐号 (<ph name="USER_EMAIL" />) 和此设备中删除。}}</translation> <translation id="634878792104344809">将您的密码、历史记录等信息同步到您的所有设备上</translation> +<translation id="6348855835728304880">在此设备上的其他应用中使用 Chrome 中保存的密码和其他信息。</translation> <translation id="6355820205320395730">安全系数低的密码容易被人猜到。请务必创建安全系数高的密码。<ph name="BEGIN_LINK" />查看更多安全提示<ph name="END_LINK" />。</translation> <translation id="6361848730467328243">关注“<ph name="DOMAIN_NAME" />”</translation> <translation id="6362362396625799311">没有无痕模式标签页</translation> @@ -821,7 +820,6 @@ 您的数据已于 <ph name="TIME" />使用您的同步密码加密。输入该密码即可开始同步。</translation> <translation id="6418346271604475326">正在准备 PDF 文件</translation> -<translation id="6421095165635308">{count,plural, =1{书签已保存到您的帐号 {email} 的 {title} 中}other{书签已保存到您的帐号 {email} 的 {title} 中}}</translation> <translation id="6429213933892582367">打开“密码选项”</translation> <translation id="6434591244308415567">发生错误,请稍后重试。</translation> <translation id="6435236283694032571">添加到阅读清单</translation> @@ -954,6 +952,7 @@ <translation id="7221173315674413369">探索“新变化”中的新功能和提示</translation> <translation id="7223102419539744003">关闭这个标签页</translation> <translation id="722454870747268814">打开新的无痕模式标签页</translation> +<translation id="723787869754590019">使用 Chrome 自动填充</translation> <translation id="7265758999917665941">一律不保存此网站的密码</translation> <translation id="7272437679830969316">无法验证您的身份。未复制密码。</translation> <translation id="7291368939935408496">正在准备密码…</translation> @@ -1090,6 +1089,7 @@ <translation id="8136856065410661948">这是为了在 Apple 日历中通过 Chrome 和 Google 智能镜头创建活动。</translation> <translation id="8156478151976189188">无法同步密码</translation> <translation id="8157532349231307196"><ph name="NUMBER_OF_ACCOUNTS" /> 个帐号</translation> +<translation id="8159358225423560600">刚刚</translation> <translation id="8179976553408161302">Enter</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />您的设备<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> <translation id="8197543752516192074">翻译网页</translation> @@ -1120,6 +1120,7 @@ <translation id="8393889347136007944"><ph name="THRESHOLD" /> 天未用过的标签页</translation> <translation id="8407669440184693619">未找到任何用于此网站的密码</translation> <translation id="842017693807136194">所用登录身份</translation> +<translation id="8423121072346537366">刚刚</translation> <translation id="8425693829365242963">您的每个密码都互不重复</translation> <translation id="8428045167754449968">市/镇</translation> <translation id="8428213095426709021">设置</translation> @@ -1153,12 +1154,14 @@ <translation id="8663764600409216912">您使用的密码不易猜中</translation> <translation id="8668210798914567634">此页面已保存到您的阅读列表。</translation> <translation id="8680787084697685621">帐号登录详细信息已过期。</translation> +<translation id="868773710103052534">大功告成!</translation> <translation id="8693663554456874301">{count,plural, =1{关闭这个标签页}other{关闭这些标签页}}</translation> <translation id="8703536910991780768">您的密码看似安全系数较高</translation> <translation id="8706588385081740091">密码</translation> <translation id="8717864919010420084">复制链接</translation> <translation id="8721297211384281569">工具菜单</translation> <translation id="8725066075913043281">重试</translation> +<translation id="8727043961453758442">充分利用 Chrome</translation> <translation id="8730621377337864115">完成</translation> <translation id="8731388423028622182">您在 iPhone 重置过程中退出了帐号 <ph name="USER_NAME" />。点按下方的“继续”即可登录。</translation> <translation id="87371078663613140">浏览菜单栏中的选项</translation> @@ -1205,9 +1208,9 @@ <translation id="8974714402877957201">1. 打开 iPad 设置</translation> <translation id="8976382372951310360">帮助</translation> <translation id="8976414606286374109">系统会将信用卡信息保存到您的 Google 帐号中。</translation> -<translation id="8978059030508051916">{count,plural, =0{没有任何已泄露的密码}=1{有 {count} 个已泄露的密码}other{有 {count} 个已泄露的密码}}</translation> <translation id="8981454092730389528">Google 活动控件</translation> <translation id="8985320356172329008">已使用以下帐号登录 Google:</translation> +<translation id="8986567980592931173">登录您的 Google 帐号即可同步您的密码、历史记录等。</translation> <translation id="8998289560386111590">在您的设备上不可用</translation> <translation id="9000089900434778519">您所用的搜索引擎是<ph name="DSE_NAME" />。请查看它的相关说明,了解如何删除您的搜索记录(若适用)。</translation> <translation id="9008201768610948239">忽略</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb index 96adcee5..b01c5662 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -178,7 +178,7 @@ <translation id="2218443599109088993">縮小</translation> <translation id="2230173723195178503">已載入網頁</translation> <translation id="2239626343334228536">正在清除瀏覽資料…</translation> -<translation id="2242467532204595597">隨時可以使用 Chrome 開啟訊息、文件和其他應用程式中的連結。</translation> +<translation id="2242467532204595597">隨時使用 Chrome 開啟訊息、文件和其他應用程式中的連結。</translation> <translation id="22508856139286506">已關閉的警告 (<ph name="COUNT" /> 個)</translation> <translation id="2251686759395008410">「選單」→「記錄」</translation> <translation id="2256933947031277845">您的機構只允許您透過特定帳戶登入。</translation> @@ -207,7 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{有 {count} 個可以用嘅地址儲存咗喺鍵盤上面。}other{有 {count} 個可以用嘅地址儲存咗喺鍵盤上面。}}</translation> <translation id="2421004566762153674">封鎖第三方 Cookie</translation> <translation id="2421044535038393232">繼續編輯</translation> -<translation id="2423077901494354337">你現在可以在裝置上充分運用 Chrome 的各項功能。</translation> +<translation id="2423077901494354337">您現可在裝置上充分運用 Chrome 的功能。</translation> <translation id="2434405374328098816">您已儲存「<ph name="USERNAME" />」在 <ph name="WEBSITE" /> 使用的密碼</translation> <translation id="2435457462613246316">顯示密碼</translation> <translation id="2451654228769116489">固定分頁</translation> @@ -219,7 +219,6 @@ <translation id="2482878487686419369">通知</translation> <translation id="2496626742194544812">前往第一個分頁</translation> <translation id="2500374554657206846">儲存密碼選項</translation> -<translation id="2502415369140591438"><ph name="COUNT" /> 個重用密碼</translation> <translation id="2523363575747517183">這個網站嘗試重覆開啟另一個應用程式。</translation> <translation id="2529021024822217800">全部開啟</translation> <translation id="2547458583188611426">同步處理無法運作。如要開始同步處理,請輸入密碼短語。</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">詢問是否將網頁內容翻譯成其他語言</translation> <translation id="3588820906588687999">在新分頁中開啟圖片</translation> <translation id="3595252146048399851">您隨時可在<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />中選擇要同步的資料。Google 可能會根據您的記錄,提供個人化「搜尋」和其他服務。</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{{COUNT} 個安全度低的密碼}other{{COUNT} 個安全度低的密碼}}</translation> <translation id="3603009562372709545">複製連結網址</translation> <translation id="3607167657931203000">自動填入資料</translation> <translation id="3608008480985212611">登入即可管理偏好設定。</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">合併我的資料</translation> <translation id="3929457972718048006">地址</translation> <translation id="3943492037546055397">密碼</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} 個安全度低的密碼}other{{count} 個安全度低的密碼}}</translation> <translation id="3959736869653157332">「選單」→「新無痕式分頁」</translation> <translation id="3967822245660637423">下載完成</translation> <translation id="3968505803272650567">管理興趣</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">顯示分頁</translation> <translation id="6187302354554850004">上次同步時間:<ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">未讀</translation> -<translation id="6193424046394092997">{count,plural, =1{已將書籤加入「{title}」}other{已將書籤加入「{title}」}}</translation> <translation id="6196207969502475924">語音搜尋</translation> <translation id="6202364442240589072">{COUNT,plural, =1{關閉 {COUNT} 個分頁}other{關閉 {COUNT} 個分頁}}</translation> <translation id="6210079381482819663">已有 <ph name="THRESHOLD" /> 天或以上未使用的分頁會移到此處。您可隨時在<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />中變更此設定。</translation> @@ -804,7 +800,7 @@ <translation id="6346549652287021269">要開始新的下載嗎?</translation> <translation id="6347953390226388422">{count,plural, =1{此地址將會從您的 Google 帳戶 (<ph name="USER_EMAIL" />) 及此裝置上刪除。}other{這些地址將會從您的 Google 帳戶 (<ph name="USER_EMAIL" />) 及此裝置上刪除。}}</translation> <translation id="634878792104344809">將所有裝置上的密碼、記錄及其他設定保持同步</translation> -<translation id="6348855835728304880">這部裝置的其他應用程式也能使用儲存在 Chrome 中的密碼和其他資訊。</translation> +<translation id="6348855835728304880">此裝置的其他應用程式亦可使用儲存在 Chrome 中的密碼和其他資料。</translation> <translation id="6355820205320395730">安全性弱的密碼很容易被猜到。請務必設定安全度高的密碼。<ph name="BEGIN_LINK" />查看更多安全提示。<ph name="END_LINK" /></translation> <translation id="6361848730467328243">追蹤 <ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">沒有已開啟的無痕式分頁</translation> @@ -824,7 +820,6 @@ 您已於 <ph name="TIME" />使用同步密碼短語加密資料,請輸入密碼短語開始同步資料。</translation> <translation id="6418346271604475326">正在準備 PDF</translation> -<translation id="6421095165635308">{count,plural, =1{書籤已儲存至帳戶 ({email}) 中的「{title}」}other{書籤已儲存至帳戶 ({email}) 中的「{title}」}}</translation> <translation id="6429213933892582367">開啟 [密碼選項]</translation> <translation id="6434591244308415567">發生錯誤,請稍後再試。</translation> <translation id="6435236283694032571">加入閱讀清單</translation> @@ -1164,7 +1159,7 @@ <translation id="8717864919010420084">複製連結</translation> <translation id="8721297211384281569">工具選單</translation> <translation id="8725066075913043281">再試一次</translation> -<translation id="8727043961453758442">充分運用 Chrome 的各項功能</translation> +<translation id="8727043961453758442">充分運用 Chrome 的功能</translation> <translation id="8730621377337864115">完成</translation> <translation id="8731388423028622182">您已在重設 iPhone 時登出帳戶 (<ph name="USER_NAME" />),輕按下方的 [繼續] 即可登入。</translation> <translation id="87371078663613140">瀏覽選單列中的選項</translation> @@ -1211,10 +1206,9 @@ <translation id="8974714402877957201">1. 開啟 iPad 的「設定」</translation> <translation id="8976382372951310360">說明</translation> <translation id="8976414606286374109">信用卡會儲存至您的 Google 帳戶。</translation> -<translation id="8978059030508051916">{count,plural, =0{沒有被盜用的密碼}=1{{count} 個被盜用的密碼}other{{count} 個被盜用的密碼}}</translation> <translation id="8981454092730389528">Google 活動控制項</translation> <translation id="8985320356172329008">已使用下列帳戶登入 Google:</translation> -<translation id="8986567980592931173">登入 Google 帳戶就能同步處理密碼、歷史記錄等等。</translation> +<translation id="8986567980592931173">登入 Google 帳戶便可同步處理密碼、記錄等等。</translation> <translation id="8998289560386111590">此功能無法在您的裝置上使用</translation> <translation id="9000089900434778519">您的搜尋引擎是「<ph name="DSE_NAME" />」。建議您查看搜尋引擎的搜尋記錄刪除指示 (如有)。</translation> <translation id="9008201768610948239">略過</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb index a85a331..8a1fa82 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -219,7 +219,6 @@ <translation id="2482878487686419369">通知</translation> <translation id="2496626742194544812">前往第一個分頁</translation> <translation id="2500374554657206846">儲存密碼的選項</translation> -<translation id="2502415369140591438">有 <ph name="COUNT" /> 組重複使用的密碼</translation> <translation id="2523363575747517183">這個網站不斷嘗試開啟其他應用程式。</translation> <translation id="2529021024822217800">全部開啟</translation> <translation id="2547458583188611426">目前未同步資料。如要開始同步,請輸入通關密語。</translation> @@ -391,7 +390,6 @@ <translation id="3581564640715911333">詢問是否要將網頁內容翻譯成其他語言</translation> <translation id="3588820906588687999">在新分頁中開啟圖片</translation> <translation id="3595252146048399851">你隨時可以在<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />中選擇要同步處理的資料。Google 可能會根據你的歷史記錄在 Google 搜尋等其他服務中提供個人化體驗。</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{有 {COUNT} 組低強度密碼}other{有 {COUNT} 組低強度密碼}}</translation> <translation id="3603009562372709545">複製連結網址</translation> <translation id="3607167657931203000">自動填入資料</translation> <translation id="3608008480985212611">如要管理偏好設定,請登入帳戶。</translation> @@ -437,7 +435,6 @@ <translation id="3928666092801078803">合併我的資料</translation> <translation id="3929457972718048006">地址</translation> <translation id="3943492037546055397">密碼</translation> -<translation id="3951717558054674026">{count,plural, =1{{count} 組密碼的強度太低}other{{count} 組密碼的強度太低}}</translation> <translation id="3959736869653157332">「選單」→「新增無痕分頁」</translation> <translation id="3967822245660637423">下載完成</translation> <translation id="3968505803272650567">管理興趣喜好</translation> @@ -774,7 +771,6 @@ <translation id="6184086493125982861">顯示分頁</translation> <translation id="6187302354554850004">上次同步處理時間:<ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">未讀取</translation> -<translation id="6193424046394092997">{count,plural, =1{已將書籤加入「{title}」}other{已將書籤加入「{title}」}}</translation> <translation id="6196207969502475924">語音搜尋</translation> <translation id="6202364442240589072">{COUNT,plural, =1{關閉 {COUNT} 個分頁}other{關閉 {COUNT} 個分頁}}</translation> <translation id="6210079381482819663"><ph name="THRESHOLD" /> 天以上未使用的分頁會移到這裡。你隨時可以前往<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />進行變更。</translation> @@ -824,7 +820,6 @@ 您已在 <ph name="TIME" />使用同步通關密語對資料進行加密,請輸入通關密語開始進行同步。</translation> <translation id="6418346271604475326">正在準備 PDF</translation> -<translation id="6421095165635308">{count,plural, =1{書籤已儲存到帳戶 ({email}) 中的「{title}」}other{書籤已儲存到帳戶 ({email}) 中的「{title}」}}</translation> <translation id="6429213933892582367">開啟「密碼選項」</translation> <translation id="6434591244308415567">發生錯誤,請稍後再試。</translation> <translation id="6435236283694032571">加入閱讀清單</translation> @@ -1213,7 +1208,6 @@ <translation id="8974714402877957201">1. 開啟 iPad 的 [設定]</translation> <translation id="8976382372951310360">說明</translation> <translation id="8976414606286374109">信用卡會儲存至你的 Google 帳戶。</translation> -<translation id="8978059030508051916">{count,plural, =0{沒有任何密碼外洩}=1{{count} 組密碼外洩}other{{count} 組密碼外洩}}</translation> <translation id="8981454092730389528">Google 活動控制項</translation> <translation id="8985320356172329008">已使用下列帳戶登入 Google:</translation> <translation id="8986567980592931173">登入 Google 帳戶就能同步處理密碼、歷史記錄等等。</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb index 6f96abb..4f7f461 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -178,6 +178,7 @@ <translation id="2218443599109088993">Hlehlisa isithombe</translation> <translation id="2230173723195178503">Ikhasi lewebhu lilayishiwe</translation> <translation id="2239626343334228536">Isula idatha yokuphequlula...</translation> +<translation id="2242467532204595597">Sebenzisa i-Chrome noma nini uma uthepha amalinki kumilayezo, amadokhumenti, namanye ama-app.</translation> <translation id="22508856139286506">Izexwayiso Ezichithiwe (<ph name="COUNT" />)</translation> <translation id="2251686759395008410">Imenyu → Umlando</translation> <translation id="2256933947031277845">Inhlangano yakho ikuvumela ukube ungene ngemvume ngama-akhawunti athile kuphela.</translation> @@ -206,6 +207,7 @@ <translation id="2411749908844615428">{count,plural, =1{Ikheli eli-{count} elilondoloziwe litholakala ngaphezu kwekhibhodi yakho.}one{Amakheli angu-{count} alondoloziwe atholakala ngaphezu kwekhibhodi yakho.}other{Amakheli angu-{count} alondoloziwe atholakala ngaphezu kwekhibhodi yakho.}}</translation> <translation id="2421004566762153674">Ivimba amakhukhi enkampani yangaphandle</translation> <translation id="2421044535038393232">Qhubeka nokuhlela</translation> +<translation id="2423077901494354337">Manje uzozuza okuningi ku-Chrome kudivayisi yakho.</translation> <translation id="2434405374328098816">Usuyilondolozile kakade iphasiwedi ka-"<ph name="USERNAME" />" ku-<ph name="WEBSITE" /></translation> <translation id="2435457462613246316">Bonisa iphasiwedi</translation> <translation id="2451654228769116489">Phina ithebhu</translation> @@ -217,7 +219,6 @@ <translation id="2482878487686419369">Izaziso</translation> <translation id="2496626742194544812">Iya Kuthebhu Yokuqala</translation> <translation id="2500374554657206846">Izinketho zokulondoloza iphasiwedi</translation> -<translation id="2502415369140591438">Amaphasiwedi asetshenziswe kabusha angu-<ph name="COUNT" /></translation> <translation id="2523363575747517183">Le webhusayithi izama kaningi ukuvula olunye uhlelo lokusebenza.</translation> <translation id="2529021024822217800">Vula konke</translation> <translation id="2547458583188611426">Ukuvumelanisa akusebenzi. Ukuze uqale ukuvumelanisa, faka umushwana wakho wokungena.</translation> @@ -389,7 +390,6 @@ <translation id="3581564640715911333">Nikeza ngokuhumusha amakhasi ngezinye izilimi</translation> <translation id="3588820906588687999">Vula isithombe kuthebhu entsha</translation> <translation id="3595252146048399851">Ungahlala ukhetha ukuthi yini ezovunyelaniswa <ph name="BEGIN_LINK" />kumasethingi<ph name="END_LINK" />. I-Google ingase iqondanise nomuntu siqu i-Search namanye amasevisi ngokususelwe emlandweni wakho.</translation> -<translation id="3595588371156514964">{COUNT,plural, =1{Iphasiwedi engaqinile e-{COUNT}}one{Amaphasiwedi angaqinile angu-{COUNT}}other{Amaphasiwedi angaqinile angu-{COUNT}}}</translation> <translation id="3603009562372709545">Kopisha i-URL yesixhumanisi</translation> <translation id="3607167657931203000">Gcwalisa ngokuzenzakalela idatha</translation> <translation id="3608008480985212611">Ngena ngemvume ukuze uphathe okuncanyelwayo kwakho.</translation> @@ -435,7 +435,6 @@ <translation id="3928666092801078803">Hlanganisa idatha yami</translation> <translation id="3929457972718048006">Amakheli</translation> <translation id="3943492037546055397">Amaphasiwedi</translation> -<translation id="3951717558054674026">{count,plural, =1{Iphasiwedi Engaqinile e-{count}}one{Amaphasiwedi Angaqinile angu-{count}}other{Amaphasiwedi Angaqinile angu-{count}}}</translation> <translation id="3959736869653157332">Imenyu → Ithebhu ye-Incognito Entsha</translation> <translation id="3967822245660637423">Ukulanda kuqedile</translation> <translation id="3968505803272650567">Phatha ongaba nentshisekelo kukho</translation> @@ -611,6 +610,7 @@ <translation id="5118764316110575523">Valiwe</translation> <translation id="5119391094379141756">Khetha i-Chrome</translation> <translation id="5121618895923301719">Ulandelela kakade lo mkhiqizo. Leli khasi lilondolozwe <ph name="BEGIN_LINK" />Kumabhukhimakhi Eselula<ph name="END_LINK" />.</translation> +<translation id="5126465625664020024">Ngena ngemvume futhi Uvumelanise</translation> <translation id="5132942445612118989">Vumelanisa amaphasiwedi akho, umlando nokuningi kuwo wonke amadivayisi</translation> <translation id="5142890110117755815">{COUNT,plural, =1{Iphasiwedi Engaqinile e-{COUNT}}one{Amaphasiwedi Angaqinile angu-{COUNT}}other{Amaphasiwedi Angaqinile angu-{COUNT}}}</translation> <translation id="5149188072385105201">Engeza iphasiwedi...</translation> @@ -771,7 +771,6 @@ <translation id="6184086493125982861">Bonisa amthebhu</translation> <translation id="6187302354554850004">Ukugcina ukuvumelanisa: <ph name="LAST_USED_TIME" /></translation> <translation id="6189413832092199491">Akufundiwe</translation> -<translation id="6193424046394092997">{count,plural, =1{Kubekwe amabhukhimakhi ku-{title}}one{Kubekwe amabhukhimakhi ku-{title}}other{Kubekwe amabhukhimakhi ku-{title}}}</translation> <translation id="6196207969502475924">Usesho lwezwi</translation> <translation id="6202364442240589072">{COUNT,plural, =1{Vala ithebhu engu-{COUNT}}one{Vala amathebhu angu-{COUNT}}other{Vala amathebhu angu-{COUNT}}}</translation> <translation id="6210079381482819663">Amathebhu awasetshenzisiwe ezinsukwini ezingu-<ph name="THRESHOLD" /> noma ngaphezulu ahanjiswa lapha. Ungashintsha lokhu noma kunini kokuthi <ph name="BEGIN_LINK" />amasethingi<ph name="END_LINK" />.</translation> @@ -801,6 +800,7 @@ <translation id="6346549652287021269">Qala ukulanda okusha?</translation> <translation id="6347953390226388422">{count,plural, =1{Leli kheli lizosulwa ku-Google Account yakho (<ph name="USER_EMAIL" />) nakule divayisi.}one{Lamakheli azosulwa ku-Google Account yakho (<ph name="USER_EMAIL" />) nakule divayisi.}other{Lamakheli azosulwa ku-Google Account yakho (<ph name="USER_EMAIL" />) nakule divayisi.}}</translation> <translation id="634878792104344809">Vumelanisa amaphasiwedi akho, umlando, nokuningi kuwo wonke amadivayisi akho</translation> +<translation id="6348855835728304880">Finyelela amaphasiwedi akho e-Chrome nokuningi kuwo wonke amanye ama-app kule divayisi.</translation> <translation id="6355820205320395730">Amaphasiwedi angaqinile aqageleka kalula. Qinisekisa ukuthi usungula iphasiwedi eqinile. <ph name="BEGIN_LINK" />Bona amathiphu amaningi okuvikeleka.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Landela i-<ph name="DOMAIN_NAME" /></translation> <translation id="6362362396625799311">Awekho Amathebhu e-Incognito</translation> @@ -820,7 +820,6 @@ Idatha yakho ibethelwe ngomushwana wokungena wakho ngo-<ph name="TIME" />. Yifake ukuze uqale ukuvumelanisa.</translation> <translation id="6418346271604475326">Ilungisela i-PDF</translation> -<translation id="6421095165635308">{count,plural, =1{Ibhukhimakhi elondolozwe ku-{title} ku-akhawunti yakho, {email}}one{Amabhukhimakhi alondolozwe ku-{title} ku-akhawunti yakho, {email}}other{Amabhukhimakhi alondolozwe ku-{title} ku-akhawunti yakho, {email}}}</translation> <translation id="6429213933892582367">Vula Ongakukhetha Kwephasiwedi</translation> <translation id="6434591244308415567">Kuvele iphutha. Zama futhi ngemuva kwesikhathi.</translation> <translation id="6435236283694032571">Engeza ohlwini lokufunda</translation> @@ -953,6 +952,7 @@ <translation id="7221173315674413369">Hlola izakhi ezintsha namathiphu kokuthi Yini Entsha</translation> <translation id="7223102419539744003">Vala Ithebhu</translation> <translation id="722454870747268814">Ithebhu entsha ye-Incognito</translation> +<translation id="723787869754590019">Sebenzisa i-Chrome ukuze Ugcwalise Ngokuzenzakalelayo</translation> <translation id="7265758999917665941">Ungalokothi kuleli sayithi</translation> <translation id="7272437679830969316">Ayikwazi ukuqinisekisa ubunikazi bakho. Iphasiwedi ayikopishiwe.</translation> <translation id="7291368939935408496">Ilungiselela amaphasiwedi...</translation> @@ -1154,12 +1154,14 @@ <translation id="8663764600409216912">Usebenzisa amaphasiwedi abukeka enzima ukuwaqagela</translation> <translation id="8668210798914567634">Leli khasi lilondolozwe kuhlu lwakho lokufunda.</translation> <translation id="8680787084697685621">Imininingwane yokungena ngemvume ye-akhawunti ingaphandle kwedethi.</translation> +<translation id="868773710103052534">Usumi ngomumo</translation> <translation id="8693663554456874301">{count,plural, =1{Vala Ithebhu}one{Vala Amathebhu}other{Vala Amathebhu}}</translation> <translation id="8703536910991780768">Amaphasiwedi Akho abukeka Eqinile</translation> <translation id="8706588385081740091">Amaphasiwedi</translation> <translation id="8717864919010420084">Kopisha isixhumanisi</translation> <translation id="8721297211384281569">Imenyu yamathuluzi</translation> <translation id="8725066075913043281">Zama futhi</translation> +<translation id="8727043961453758442">Zuza okuningi ku-Chrome</translation> <translation id="8730621377337864115">Kwenziwe</translation> <translation id="8731388423028622182">Ukhishwe ngemvume ku-akhawunti yakho ye-<ph name="USER_NAME" /> njengengxenye yokusetha kabusha i-iPhone yakho. Thepha okuthi qhubeka ngezansi ukuze ungene ngemvume.</translation> <translation id="87371078663613140">Hlola izinketho kubha yemenyu</translation> @@ -1206,9 +1208,9 @@ <translation id="8974714402877957201">1. Vula Amasethingi we-iPad</translation> <translation id="8976382372951310360">Usizo</translation> <translation id="8976414606286374109">Amakhadi alondolozwa ku-akhawunti yakho ye-Google.</translation> -<translation id="8978059030508051916">{count,plural, =0{Awekho amaphasiwedi Onakalisiwe}=1{Iphasiwedi Eyonakalisiwe e-{count}}one{Amaphasiwedi Onakalisiwe angu-{count}}other{Amaphasiwedi Onakalisiwe angu-{count}}}</translation> <translation id="8981454092730389528">Izilawuli zomsebenzi we-Google</translation> <translation id="8985320356172329008">Ingene ngemvume ku-Google njengo-</translation> +<translation id="8986567980592931173">Ngena ngemvume nge-Google Accout yakho ukuze uvumelanise amaphasiwedi akho, umlando, nokuningi.</translation> <translation id="8998289560386111590">Ayitholakali kudivayisi yakho</translation> <translation id="9000089900434778519">Injini yakho yokusesha iyi-<ph name="DSE_NAME" />. Bona imiyalelo yabo yokusula umlando wakho wosesho, uma kusebenza.</translation> <translation id="9008201768610948239">Ziba</translation>
diff --git a/ios/chrome/browser/autofill/BUILD.gn b/ios/chrome/browser/autofill/BUILD.gn index 70bd286..7ae441e5 100644 --- a/ios/chrome/browser/autofill/BUILD.gn +++ b/ios/chrome/browser/autofill/BUILD.gn
@@ -57,9 +57,9 @@ "//ios/chrome/browser/history", "//ios/chrome/browser/paths", "//ios/chrome/browser/shared/ui/util:util_swift", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/signin", "//ios/chrome/browser/sync", - "//ios/chrome/browser/ui/image_util", "//ios/chrome/browser/webdata_services", "//ios/web/common", "//ios/web/public/js_messaging",
diff --git a/ios/chrome/browser/shared/ui/elements/BUILD.gn b/ios/chrome/browser/shared/ui/elements/BUILD.gn index eef27dc7..87b49a18 100644 --- a/ios/chrome/browser/shared/ui/elements/BUILD.gn +++ b/ios/chrome/browser/shared/ui/elements/BUILD.gn
@@ -5,6 +5,8 @@ source_set("elements") { configs += [ "//build/config/compiler:enable_arc" ] sources = [ + "crossfade_label.h", + "crossfade_label.mm", "extended_touch_target_button.h", "extended_touch_target_button.mm", "fade_truncating_label+private.h", @@ -67,6 +69,7 @@ sources = [ "activity_overlay_coordinator_unittest.mm", "chrome_activity_overlay_coordinator_unittest.mm", + "crossfade_label_unittest.mm", "fade_truncating_label_unittest.mm", "text_field_configuration_unittest.mm", "windowed_container_view_unittest.mm", @@ -80,6 +83,7 @@ "//ios/chrome/browser/browser_state:test_support", "//ios/chrome/browser/main:test_support", "//ios/chrome/browser/shared/public/features", + "//ios/chrome/common/ui/colors", "//ios/chrome/test:test_support", "//testing/gtest", "//third_party/ocmock",
diff --git a/ios/chrome/browser/shared/ui/elements/crossfade_label.h b/ios/chrome/browser/shared/ui/elements/crossfade_label.h new file mode 100644 index 0000000..9204c529 --- /dev/null +++ b/ios/chrome/browser/shared/ui/elements/crossfade_label.h
@@ -0,0 +1,44 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_SHARED_UI_ELEMENTS_CROSSFADE_LABEL_H_ +#define IOS_CHROME_BROWSER_SHARED_UI_ELEMENTS_CROSSFADE_LABEL_H_ + +#import <UIKit/UIKit.h> + +// Label that provides the ability to crossfade with an overlaid (nearly) +// identical label, to allow animating attributes that are not normally +// animatable (for example: textColor or even text attributes like +// strikethrough). +// +// Example usage: +// [crossfadeLabel setUpCrossfadeWithTextColor:greenColor +// attributedText:attributedTextForCrossfade]; +// [UIView animateWithDuration:1.0 +// animations:^{ +// [crossfadeLabel crossfade]; +// } +// completion:^(BOOL finished) { +// [crossfadeLabel cleanupAfterCrossfade]; +// }]; +// +@interface CrossfadeLabel : UILabel + +// Creates a copy of this label and applies the given `textColor` and +// `attributedText` to the copy, and sets the alpha of the copy to 0. The copy +// is added to the superview to prepare for the crossfade. +- (void)setUpCrossfadeWithTextColor:(UIColor*)textColor + attributedText:(NSAttributedString*)attributedText; + +// Changes the alpha of this label and its copy, in order to perform the +// crossfade. Should be called in the `animations` block of a UIView animation. +- (void)crossfade; + +// Cleans up the copy used to perform the crossfade. Should be called in the +// completion block of a UIView animation. +- (void)cleanupAfterCrossfade; + +@end + +#endif // IOS_CHROME_BROWSER_SHARED_UI_ELEMENTS_CROSSFADE_LABEL_H_
diff --git a/ios/chrome/browser/shared/ui/elements/crossfade_label.mm b/ios/chrome/browser/shared/ui/elements/crossfade_label.mm new file mode 100644 index 0000000..517cf3a --- /dev/null +++ b/ios/chrome/browser/shared/ui/elements/crossfade_label.mm
@@ -0,0 +1,55 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/shared/ui/elements/crossfade_label.h" + +#import "base/check.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@implementation CrossfadeLabel { + // The label that will be overlayed on top in order to perform the crossfade. + UILabel* _overlay; +} + +- (void)setUpCrossfadeWithTextColor:(UIColor*)textColor + attributedText:(NSAttributedString*)attributedText { + CHECK(self.superview); + _overlay = [[UILabel alloc] initWithFrame:self.frame]; + + // Copy over various attributes, so that the overlay will render the same as + // this label. + _overlay.font = self.font; + _overlay.numberOfLines = self.numberOfLines; + _overlay.lineBreakMode = self.lineBreakMode; + + // Set the modified properties, if given. + _overlay.attributedText = + attributedText ? attributedText : self.attributedText; + _overlay.textColor = textColor ? textColor : self.textColor; + + // Add the overlay to the superview in an initially hidden way. + _overlay.alpha = 0; + [self.superview addSubview:_overlay]; +} + +- (void)crossfade { + self.alpha = 0; + _overlay.alpha = 1; +} + +- (void)cleanupAfterCrossfade { + // Copy over a few attributes that may have changed. + self.attributedText = _overlay.attributedText; + self.textColor = _overlay.textColor; + + // Show this label again and remove the overlay. + self.alpha = 1; + [_overlay removeFromSuperview]; + _overlay = nil; +} + +@end
diff --git a/ios/chrome/browser/shared/ui/elements/crossfade_label_unittest.mm b/ios/chrome/browser/shared/ui/elements/crossfade_label_unittest.mm new file mode 100644 index 0000000..179b153 --- /dev/null +++ b/ios/chrome/browser/shared/ui/elements/crossfade_label_unittest.mm
@@ -0,0 +1,74 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/shared/ui/elements/crossfade_label.h" + +#import "base/test/ios/wait_util.h" +#import "ios/chrome/common/ui/colors/semantic_color_names.h" +#import "testing/platform_test.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +using base::test::ios::WaitUntilConditionOrTimeout; + +namespace { +constexpr NSString* kTestText = @"Test Text"; +} + +class CrossfadeLabelTest : public PlatformTest { + public: + CrossfadeLabelTest() { + _view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; + _label = [[CrossfadeLabel alloc] init]; + _label.text = kTestText; + [_view addSubview:_label]; + } + + protected: + UIView* _view; + CrossfadeLabel* _label; +}; + +// Tests the crossfade by calling `crossfadeSetup:`, `crossfadeAnimation`, and +// `crossfadeCleanup`, ensuring the color and opacity are correct at each step. +TEST_F(CrossfadeLabelTest, testCrossfade) { + UIColor* black = [UIColor colorNamed:kSolidBlackColor]; + UIColor* green = [UIColor colorNamed:kGreenColor]; + + EXPECT_EQ(_view.subviews.count, 1ul); + + _label.textColor = black; + + [_label setUpCrossfadeWithTextColor:green attributedText:nil]; + + EXPECT_EQ(_label.textColor, black); + EXPECT_EQ(_label.alpha, 1); + EXPECT_EQ(_view.subviews.count, 2ul); + + __block int steps_completed = 0; + [UIView animateWithDuration:0.01 + animations:^{ + [_label crossfade]; + EXPECT_EQ(_label.textColor, black); + EXPECT_EQ(_label.alpha, 0); + steps_completed++; + } + completion:^(BOOL finished) { + [_label cleanupAfterCrossfade]; + EXPECT_EQ(_label.textColor, green); + EXPECT_EQ(_label.alpha, 1); + EXPECT_EQ(_view.subviews.count, 1ul); + steps_completed++; + }]; + + // Wait for animation to complete. + auto wait_condition = ^{ + return steps_completed == 2; + }; + bool completed = + WaitUntilConditionOrTimeout(base::Seconds(0.5), wait_condition); + EXPECT_TRUE(completed); +}
diff --git a/ios/chrome/browser/shared/ui/util/BUILD.gn b/ios/chrome/browser/shared/ui/util/BUILD.gn index 87c8c4e..c72c59f 100644 --- a/ios/chrome/browser/shared/ui/util/BUILD.gn +++ b/ios/chrome/browser/shared/ui/util/BUILD.gn
@@ -53,7 +53,7 @@ "//ios/chrome/browser/flags:system_flags", "//ios/chrome/browser/shared/public/features", "//ios/chrome/browser/shared/ui/symbols", - "//ios/chrome/browser/ui/image_util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/common:button_config", "//ios/chrome/common:timing", "//ios/chrome/common/ui/util",
diff --git a/ios/chrome/browser/ui/image_util/BUILD.gn b/ios/chrome/browser/shared/ui/util/image/BUILD.gn similarity index 95% rename from ios/chrome/browser/ui/image_util/BUILD.gn rename to ios/chrome/browser/shared/ui/util/image/BUILD.gn index 968f735f..6f082e4 100644 --- a/ios/chrome/browser/ui/image_util/BUILD.gn +++ b/ios/chrome/browser/shared/ui/util/image/BUILD.gn
@@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -source_set("image_util") { +source_set("image") { sources = [ "image_util.h", "image_util.mm", @@ -20,7 +20,7 @@ "image_saver.mm", ] deps = [ - ":image_util", + ":image", "//base", "//components/image_fetcher/core", "//components/image_fetcher/ios",
diff --git a/ios/chrome/browser/ui/image_util/OWNERS b/ios/chrome/browser/shared/ui/util/image/OWNERS similarity index 100% rename from ios/chrome/browser/ui/image_util/OWNERS rename to ios/chrome/browser/shared/ui/util/image/OWNERS
diff --git a/ios/chrome/browser/ui/image_util/image_copier.h b/ios/chrome/browser/shared/ui/util/image/image_copier.h similarity index 78% rename from ios/chrome/browser/ui/image_util/image_copier.h rename to ios/chrome/browser/shared/ui/util/image/image_copier.h index d8051b8..af99eaa 100644 --- a/ios/chrome/browser/ui/image_util/image_copier.h +++ b/ios/chrome/browser/shared/ui/util/image/image_copier.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 IOS_CHROME_BROWSER_UI_IMAGE_UTIL_IMAGE_COPIER_H_ -#define IOS_CHROME_BROWSER_UI_IMAGE_UTIL_IMAGE_COPIER_H_ +#ifndef IOS_CHROME_BROWSER_SHARED_UI_UTIL_IMAGE_IMAGE_COPIER_H_ +#define IOS_CHROME_BROWSER_SHARED_UI_UTIL_IMAGE_IMAGE_COPIER_H_ #import <UIKit/UIKit.h> @@ -13,7 +13,7 @@ namespace web { struct Referrer; class WebState; -} +} // namespace web // Object copying images to the system's pasteboard. @interface ImageCopier : NSObject @@ -31,4 +31,4 @@ @end -#endif // IOS_CHROME_BROWSER_UI_IMAGE_UTIL_IMAGE_COPIER_H_ +#endif // IOS_CHROME_BROWSER_SHARED_UI_UTIL_IMAGE_IMAGE_COPIER_H_
diff --git a/ios/chrome/browser/ui/image_util/image_copier.mm b/ios/chrome/browser/shared/ui/util/image/image_copier.mm similarity index 98% rename from ios/chrome/browser/ui/image_util/image_copier.mm rename to ios/chrome/browser/shared/ui/util/image/image_copier.mm index 27fc472..c77c3cb3 100644 --- a/ios/chrome/browser/ui/image_util/image_copier.mm +++ b/ios/chrome/browser/shared/ui/util/image/image_copier.mm
@@ -12,8 +12,8 @@ #import "components/strings/grit/components_strings.h" #import "ios/chrome/browser/main/browser.h" #import "ios/chrome/browser/shared/coordinator/alert/alert_coordinator.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/shared/ui/util/pasteboard_util.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/browser/web/image_fetch/image_fetch_tab_helper.h" #import "ios/chrome/grit/ios_strings.h" #import "ios/web/public/thread/web_task_traits.h"
diff --git a/ios/chrome/browser/ui/image_util/image_saver.h b/ios/chrome/browser/shared/ui/util/image/image_saver.h similarity index 80% rename from ios/chrome/browser/ui/image_util/image_saver.h rename to ios/chrome/browser/shared/ui/util/image/image_saver.h index d304ef4..a9681d3 100644 --- a/ios/chrome/browser/ui/image_util/image_saver.h +++ b/ios/chrome/browser/shared/ui/util/image/image_saver.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 IOS_CHROME_BROWSER_UI_IMAGE_UTIL_IMAGE_SAVER_H_ -#define IOS_CHROME_BROWSER_UI_IMAGE_UTIL_IMAGE_SAVER_H_ +#ifndef IOS_CHROME_BROWSER_SHARED_UI_UTIL_IMAGE_IMAGE_SAVER_H_ +#define IOS_CHROME_BROWSER_SHARED_UI_UTIL_IMAGE_IMAGE_SAVER_H_ #import <UIKit/UIKit.h> @@ -14,7 +14,7 @@ namespace web { class WebState; struct Referrer; -} +} // namespace web // Object saving images to the system's album. @interface ImageSaver : NSObject @@ -32,4 +32,4 @@ @end -#endif // IOS_CHROME_BROWSER_UI_IMAGE_UTIL_IMAGE_SAVER_H_ +#endif // IOS_CHROME_BROWSER_SHARED_UI_UTIL_IMAGE_IMAGE_SAVER_H_
diff --git a/ios/chrome/browser/ui/image_util/image_saver.mm b/ios/chrome/browser/shared/ui/util/image/image_saver.mm similarity index 97% rename from ios/chrome/browser/ui/image_util/image_saver.mm rename to ios/chrome/browser/shared/ui/util/image/image_saver.mm index 3ab033f5..f157729 100644 --- a/ios/chrome/browser/ui/image_util/image_saver.mm +++ b/ios/chrome/browser/shared/ui/util/image/image_saver.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/image_util/image_saver.h" +#import "ios/chrome/browser/shared/ui/util/image/image_saver.h" #import <Photos/Photos.h> @@ -17,7 +17,7 @@ #import "components/strings/grit/components_strings.h" #import "ios/chrome/browser/main/browser.h" #import "ios/chrome/browser/shared/coordinator/alert/alert_coordinator.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/web/image_fetch/image_fetch_tab_helper.h" #import "ios/chrome/grit/ios_chromium_strings.h" #import "ios/chrome/grit/ios_strings.h" @@ -58,8 +58,9 @@ __weak ImageSaver* weakSelf = self; tabHelper->GetImageData(url, referrer, ^(NSData* data) { ImageSaver* strongSelf = weakSelf; - if (!strongSelf) + if (!strongSelf) { return; + } if (data.length == 0) { [strongSelf displayPrivacyErrorAlertOnMainQueue:
diff --git a/ios/chrome/browser/ui/image_util/image_util.h b/ios/chrome/browser/shared/ui/util/image/image_util.h similarity index 83% rename from ios/chrome/browser/ui/image_util/image_util.h rename to ios/chrome/browser/shared/ui/util/image/image_util.h index 1637853..f3d47f5 100644 --- a/ios/chrome/browser/ui/image_util/image_util.h +++ b/ios/chrome/browser/shared/ui/util/image/image_util.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 IOS_CHROME_BROWSER_UI_IMAGE_UTIL_IMAGE_UTIL_H_ -#define IOS_CHROME_BROWSER_UI_IMAGE_UTIL_IMAGE_UTIL_H_ +#ifndef IOS_CHROME_BROWSER_SHARED_UI_UTIL_IMAGE_IMAGE_UTIL_H_ +#define IOS_CHROME_BROWSER_SHARED_UI_UTIL_IMAGE_IMAGE_UTIL_H_ #import <CoreGraphics/CoreGraphics.h> #import <Foundation/Foundation.h> @@ -31,4 +31,4 @@ // is nil, empty, or cannot be recognized, nil will be returned. NSString* GetImageUTIFromData(NSData* data); -#endif // IOS_CHROME_BROWSER_UI_IMAGE_UTIL_IMAGE_UTIL_H_ +#endif // IOS_CHROME_BROWSER_SHARED_UI_UTIL_IMAGE_IMAGE_UTIL_H_
diff --git a/ios/chrome/browser/ui/image_util/image_util.mm b/ios/chrome/browser/shared/ui/util/image/image_util.mm similarity index 95% rename from ios/chrome/browser/ui/image_util/image_util.mm rename to ios/chrome/browser/shared/ui/util/image/image_util.mm index 57af0325..c821fb2 100644 --- a/ios/chrome/browser/ui/image_util/image_util.mm +++ b/ios/chrome/browser/shared/ui/util/image/image_util.mm
@@ -5,7 +5,7 @@ #import <UIKit/UIKit.h> #import <UniformTypeIdentifiers/UniformTypeIdentifiers.h> -#import "ios/chrome/browser/ui/image_util/image_util.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ui/gfx/color_analysis.h" #import "ui/gfx/image/image.h" @@ -22,7 +22,7 @@ NSString* kImageExtensionICO = @"ico"; NSString* kImageExtensionWebP = @"webp"; -} +} // namespace UIColor* DominantColorForImage(const gfx::Image& image, CGFloat opacity) { SkColor color = color_utils::CalculateKMeanColorOfBitmap(*image.ToSkBitmap()); @@ -35,8 +35,9 @@ UIImage* StretchableImageNamed(NSString* name) { UIImage* image = [UIImage imageNamed:name]; - if (!image) + if (!image) { return nil; + } // Returns a copy of `image` configured to stretch at the center pixel. CGFloat half_width = floor(image.size.width / 2.0); CGFloat half_height = floor(image.size.height / 2.0); @@ -47,8 +48,9 @@ // https://en.wikipedia.org/wiki/List_of_file_signatures NSString* GetImageExtensionFromData(NSData* data) { - if (!data || data.length < 16) + if (!data || data.length < 16) { return nil; + } const char* pdata = static_cast<const char*>(data.bytes); switch (pdata[0]) {
diff --git a/ios/chrome/browser/shared/ui/util/pasteboard_util.mm b/ios/chrome/browser/shared/ui/util/pasteboard_util.mm index ab786a4..a0bebaf 100644 --- a/ios/chrome/browser/shared/ui/util/pasteboard_util.mm +++ b/ios/chrome/browser/shared/ui/util/pasteboard_util.mm
@@ -11,7 +11,7 @@ #import "base/strings/sys_string_conversions.h" #import "components/open_from_clipboard/clipboard_async_wrapper_ios.h" #import "ios/chrome/browser/shared/public/features/features.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "net/base/mac/url_conversions.h" #import "url/gurl.h"
diff --git a/ios/chrome/browser/signin/authentication_service.mm b/ios/chrome/browser/signin/authentication_service.mm index ccb7eae..6c399c5d 100644 --- a/ios/chrome/browser/signin/authentication_service.mm +++ b/ios/chrome/browser/signin/authentication_service.mm
@@ -414,7 +414,7 @@ // badge in settings screen) check the sync auth error state. Sync // needs to be kicked off so that it resets the auth error quickly once // `identity` is reauthenticated. - sync_service_->GetUserSettings()->SetSyncRequested(true); + sync_service_->GetUserSettings()->SetSyncRequested(); } void AuthenticationService::SignOut(
diff --git a/ios/chrome/browser/signin/authentication_service_unittest.mm b/ios/chrome/browser/signin/authentication_service_unittest.mm index 9c93a89..6a1d8c4 100644 --- a/ios/chrome/browser/signin/authentication_service_unittest.mm +++ b/ios/chrome/browser/signin/authentication_service_unittest.mm
@@ -735,8 +735,7 @@ // Grant Sync consent. EXPECT_CALL(*sync_setup_service_mock(), PrepareForFirstSyncSetup).Times(1); - EXPECT_CALL(*mock_sync_service()->GetMockUserSettings(), - SetSyncRequested(true)); + EXPECT_CALL(*mock_sync_service()->GetMockUserSettings(), SetSyncRequested()); authentication_service()->GrantSyncConsent(identity(0)); EXPECT_NSEQ(identity(0), authentication_service()->GetPrimaryIdentity(
diff --git a/ios/chrome/browser/snapshots/BUILD.gn b/ios/chrome/browser/snapshots/BUILD.gn index 7797e57..8d3f3678 100644 --- a/ios/chrome/browser/snapshots/BUILD.gn +++ b/ios/chrome/browser/snapshots/BUILD.gn
@@ -76,7 +76,7 @@ "//ios/chrome/browser/main:public", "//ios/chrome/browser/main:test_support", "//ios/chrome/browser/shared/ui/util", - "//ios/chrome/browser/ui/image_util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/web", "//ios/web/public/test", "//ios/web/public/test/fakes:fakes",
diff --git a/ios/chrome/browser/snapshots/snapshot_tab_helper_unittest.mm b/ios/chrome/browser/snapshots/snapshot_tab_helper_unittest.mm index 8959457..57cca18 100644 --- a/ios/chrome/browser/snapshots/snapshot_tab_helper_unittest.mm +++ b/ios/chrome/browser/snapshots/snapshot_tab_helper_unittest.mm
@@ -6,10 +6,10 @@ #import "base/files/scoped_temp_dir.h" #import "base/run_loop.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" #import "ios/chrome/browser/snapshots/fake_snapshot_generator_delegate.h" #import "ios/chrome/browser/snapshots/snapshot_cache.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/web/public/test/fakes/fake_web_state.h" #import "ios/web/public/test/web_task_environment.h" #import "testing/gtest/include/gtest/gtest.h"
diff --git a/ios/chrome/browser/sync/sync_setup_service.cc b/ios/chrome/browser/sync/sync_setup_service.cc index 2a88ee64..68ed0b1 100644 --- a/ios/chrome/browser/sync/sync_setup_service.cc +++ b/ios/chrome/browser/sync/sync_setup_service.cc
@@ -123,19 +123,6 @@ return sync_service_->CanSyncFeatureStart(); } -void SyncSetupService::SetSyncEnabled(bool sync_enabled) { - if (!sync_blocker_) - sync_blocker_ = sync_service_->GetSetupInProgressHandle(); - if (!sync_enabled) { - UMA_HISTOGRAM_ENUMERATION("Sync.StopSource", syncer::CHROME_SYNC_SETTINGS, - syncer::STOP_SOURCE_LIMIT); - } - sync_service_->GetUserSettings()->SetSyncRequested(sync_enabled); - - if (sync_enabled && GetPreferredDataTypes().Empty()) - SetSyncingAllDataTypes(true); -} - bool SyncSetupService::IsEncryptEverythingEnabled() const { return sync_service_->GetUserSettings()->IsEncryptEverythingEnabled(); }
diff --git a/ios/chrome/browser/sync/sync_setup_service.h b/ios/chrome/browser/sync/sync_setup_service.h index dd08074b..4b6bccd 100644 --- a/ios/chrome/browser/sync/sync_setup_service.h +++ b/ios/chrome/browser/sync/sync_setup_service.h
@@ -51,11 +51,6 @@ virtual bool IsSyncRequested() const; // Returns whether Sync-the-transport can start the Sync feature. virtual bool CanSyncFeatureStart() const; - // Enables or disables sync. Changes won't take effect in the sync backend - // before the next call to `CommitChanges`. - // TODO(crbug.com/1291946): This is only used in sync_test_util.mm; inline it - // there. - virtual void SetSyncEnabled(bool sync_enabled); // Returns all currently enabled datatypes. syncer::ModelTypeSet GetPreferredDataTypes() const;
diff --git a/ios/chrome/browser/ui/authentication/signed_in_accounts/BUILD.gn b/ios/chrome/browser/ui/authentication/signed_in_accounts/BUILD.gn index f3c6b8a..db90d02c 100644 --- a/ios/chrome/browser/ui/authentication/signed_in_accounts/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/signed_in_accounts/BUILD.gn
@@ -23,10 +23,10 @@ "//ios/chrome/browser/shared/public/features", "//ios/chrome/browser/shared/ui/table_view", "//ios/chrome/browser/shared/ui/util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/signin", "//ios/chrome/browser/signin:system_identity", "//ios/chrome/browser/ui/authentication/cells", - "//ios/chrome/browser/ui/image_util", "//ios/chrome/common:button_config", "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util",
diff --git a/ios/chrome/browser/ui/authentication/signed_in_accounts/signed_in_accounts_presentation_controller.mm b/ios/chrome/browser/ui/authentication/signed_in_accounts/signed_in_accounts_presentation_controller.mm index a4a3f8d5..f829927 100644 --- a/ios/chrome/browser/ui/authentication/signed_in_accounts/signed_in_accounts_presentation_controller.mm +++ b/ios/chrome/browser/ui/authentication/signed_in_accounts/signed_in_accounts_presentation_controller.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/authentication/signed_in_accounts/signed_in_accounts_presentation_controller.h" #import "ios/chrome/browser/shared/ui/util/accessibility_close_menu_button.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn index d5ee913..d86c7d8 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn
@@ -25,6 +25,7 @@ "//ios/chrome/browser/shared/coordinator/alert", "//ios/chrome/browser/shared/public/commands", "//ios/chrome/browser/shared/ui/util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/signin", "//ios/chrome/browser/signin:system_identity", "//ios/chrome/browser/ui/authentication", @@ -32,7 +33,6 @@ "//ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser", "//ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_default_account", "//ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet", - "//ios/chrome/browser/ui/image_util", "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", "//ui/base",
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/BUILD.gn index 69bc628..ccf72f9 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/BUILD.gn
@@ -21,10 +21,10 @@ "//ios/chrome/browser/browser_state", "//ios/chrome/browser/main:public", "//ios/chrome/browser/shared/ui/util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/signin", "//ios/chrome/browser/ui/authentication/signin:signin_protected", "//ios/chrome/browser/ui/authentication/signin/consistency_promo_signin:layout", - "//ios/chrome/browser/ui/image_util", "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", ]
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/consistency_sheet_presentation_controller.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/consistency_sheet_presentation_controller.mm index 92f8058..38fb6638 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/consistency_sheet_presentation_controller.mm +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/consistency_sheet_presentation_controller.mm
@@ -6,10 +6,10 @@ #import "base/check_op.h" #import "ios/chrome/browser/shared/ui/util/accessibility_close_menu_button.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" #import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/consistency_sheet_constants.h" #import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_sheet/consistency_sheet_navigation_controller.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_mediator.mm b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_mediator.mm index 7c8d89af..b3b3087 100644 --- a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_mediator.mm +++ b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_mediator.mm
@@ -111,7 +111,7 @@ // We need to set Sync requested in order to display the preferences // correctly and differentiate the special state where the user is // signed in, but the sync feature can't start yet. - self.syncService->GetUserSettings()->SetSyncRequested(true); + self.syncService->GetUserSettings()->SetSyncRequested(); } else { [self.delegate userSigninMediatorSigninFailed]; }
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.mm b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.mm index ff38ea1..6595add3 100644 --- a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.mm +++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.mm
@@ -193,7 +193,7 @@ // Sync has to be set as requested in order to display the preferences // correctly and differentiate the special state where the user is signed // in, but the sync feature can't start yet. - _syncService->GetUserSettings()->SetSyncRequested(true); + _syncService->GetUserSettings()->SetSyncRequested(); } else { // TODO(crbug.com/1254359): Dedupe duplicated code, here and in // user_signin_mediator.
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn index 176b380..00ff6ce5f 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/BUILD.gn
@@ -54,9 +54,9 @@ "//ios/chrome/browser/shared/ui/list_model", "//ios/chrome/browser/shared/ui/table_view:styler", "//ios/chrome/browser/shared/ui/util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/ui/authentication/cells", "//ios/chrome/browser/ui/authentication/views", - "//ios/chrome/browser/ui/image_util", "//ios/chrome/browser/ui/resources:menu_shadow", "//ios/chrome/common", "//ios/chrome/common/ui/colors",
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_presentation_controller.mm b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_presentation_controller.mm index 09a83daa..e85bd39 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_presentation_controller.mm +++ b/ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_presentation_controller.mm
@@ -5,8 +5,8 @@ #import "ios/chrome/browser/ui/authentication/unified_consent/identity_chooser/identity_chooser_presentation_controller.h" #import "ios/chrome/browser/shared/ui/util/accessibility_close_menu_button.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/bookmarks/editor/BUILD.gn b/ios/chrome/browser/ui/bookmarks/editor/BUILD.gn index 0ece3248..0c48fb25 100644 --- a/ios/chrome/browser/ui/bookmarks/editor/BUILD.gn +++ b/ios/chrome/browser/ui/bookmarks/editor/BUILD.gn
@@ -63,13 +63,13 @@ "//ios/chrome/browser/shared/ui/table_view:styler", "//ios/chrome/browser/shared/ui/table_view:utils", "//ios/chrome/browser/shared/ui/table_view:views", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/ui/bookmarks:constants", "//ios/chrome/browser/ui/bookmarks:core", "//ios/chrome/browser/ui/bookmarks:utils", "//ios/chrome/browser/ui/bookmarks/cells", "//ios/chrome/browser/ui/bookmarks/folder_chooser", "//ios/chrome/browser/ui/bookmarks/folder_editor", - "//ios/chrome/browser/ui/image_util", "//ios/chrome/browser/ui/keyboard", "//ios/chrome/common/ui/util", "//ui/base",
diff --git a/ios/chrome/browser/ui/bookmarks/editor/bookmarks_editor_view_controller.mm b/ios/chrome/browser/ui/bookmarks/editor/bookmarks_editor_view_controller.mm index 8229c52..475d68bc 100644 --- a/ios/chrome/browser/ui/bookmarks/editor/bookmarks_editor_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/editor/bookmarks_editor_view_controller.mm
@@ -25,6 +25,7 @@ #import "ios/chrome/browser/shared/ui/table_view/cells/table_view_text_header_footer_item.h" #import "ios/chrome/browser/shared/ui/table_view/chrome_table_view_styler.h" #import "ios/chrome/browser/shared/ui/table_view/table_view_utils.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/shared/ui/util/rtl_geometry.h" #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_mediator.h" @@ -33,7 +34,6 @@ #import "ios/chrome/browser/ui/bookmarks/cells/bookmark_parent_folder_item.h" #import "ios/chrome/browser/ui/bookmarks/cells/bookmark_text_field_item.h" #import "ios/chrome/browser/ui/bookmarks/editor/bookmarks_editor_mutator.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/browser/ui/keyboard/UIKeyCommand+Chrome.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h"
diff --git a/ios/chrome/browser/ui/bookmarks/folder_editor/BUILD.gn b/ios/chrome/browser/ui/bookmarks/folder_editor/BUILD.gn index 7a2fba6..c9bd1f1 100644 --- a/ios/chrome/browser/ui/bookmarks/folder_editor/BUILD.gn +++ b/ios/chrome/browser/ui/bookmarks/folder_editor/BUILD.gn
@@ -70,12 +70,12 @@ "//ios/chrome/browser/shared/ui/table_view:table_view", "//ios/chrome/browser/shared/ui/table_view:utils", "//ios/chrome/browser/shared/ui/table_view:views", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/sync", "//ios/chrome/browser/ui/bookmarks:constants", "//ios/chrome/browser/ui/bookmarks:core", "//ios/chrome/browser/ui/bookmarks:utils", "//ios/chrome/browser/ui/bookmarks/cells", - "//ios/chrome/browser/ui/image_util", "//ios/chrome/browser/ui/keyboard", "//ios/chrome/common/ui/util", "//ui/base",
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn b/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn index cec0f16..f2d8077 100644 --- a/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn +++ b/ios/chrome/browser/ui/content_suggestions/cells/BUILD.gn
@@ -39,13 +39,13 @@ "//ios/chrome/browser/shared/public/features", "//ios/chrome/browser/shared/ui/symbols", "//ios/chrome/browser/shared/ui/util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/ui/content_suggestions:constants", "//ios/chrome/browser/ui/content_suggestions:content_suggestions_constant", "//ios/chrome/browser/ui/content_suggestions:content_suggestions_ui_util", "//ios/chrome/browser/ui/content_suggestions:feature_flags", "//ios/chrome/browser/ui/content_suggestions:public", "//ios/chrome/browser/ui/content_suggestions/identifier", - "//ios/chrome/browser/ui/image_util", "//ios/chrome/browser/ui/resources:module_shadow", "//ios/chrome/common:string_util", "//ios/chrome/common:timing",
diff --git a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_module_container.mm b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_module_container.mm index 6ec81e3..ed523d0 100644 --- a/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_module_container.mm +++ b/ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_module_container.mm
@@ -4,10 +4,10 @@ #import "ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_module_container.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_cells_constants.h" #import "ios/chrome/browser/ui/content_suggestions/cells/content_suggestions_tile_layout_util.h" #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h b/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h index dbb6064..398b9a51 100644 --- a/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h +++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h
@@ -18,20 +18,6 @@ INCOGNITO_PANEL, }; -// Type of content displayed when a NTP is opened, for UMA report. It should be -// treated as append-only. -// These match tools/metrics/histograms/enums.xml. -typedef NS_ENUM(NSUInteger, IOSNTPImpression) { - // The NTP only displays the local suggestions. - LOCAL_SUGGESTIONS = 0, - // The NTP displays local and remote suggestions. - REMOTE_SUGGESTIONS = 1, - // The NTP displays local suggestions and remote suggestions are collapsed. - REMOTE_COLLAPSED = 2, - // Add new enum above COUNT. - COUNT -}; - // Returns the accessibility identifier used by the fake omnibox. NSString* FakeOmniboxAccessibilityID();
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_metrics.h b/ios/chrome/browser/ui/content_suggestions/ntp_home_metrics.h index 742e42b..1a394727 100644 --- a/ios/chrome/browser/ui/content_suggestions/ntp_home_metrics.h +++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_metrics.h
@@ -14,15 +14,6 @@ namespace web { class WebState; } - -namespace ntp_home { - -// Records an NTP impression of type `impression_type`. -void RecordNTPImpression(ntp_home::IOSNTPImpression impression_type); -// Records when an NTP impression has occurred for Tile Ablation. -void NTPImpressionHasOccurred(); -} // namespace ntp_home - // These values are persisted to IOS.ContentSuggestions.ActionOn* histograms. // Entries should not be renumbered and numeric values should never be reused. enum class IOSContentSuggestionsActionType { @@ -35,15 +26,6 @@ kMaxValue = kTrendingQuery, }; -// These values are persisted to IOS.NTP.OverscrollAction histograms. -// Entries should not be renumbered and numeric values should never be reused. -enum class OverscrollActionType { - kOpenedNewTab = 0, - kPullToRefresh = 1, - kCloseTab = 2, - kMaxValue = kCloseTab, -}; - // Metrics recorder for the action used to potentially leave the NTP. @interface NTPHomeMetrics : NSObject @@ -60,9 +42,6 @@ - (void)recordContentSuggestionsActionForType: (IOSContentSuggestionsActionType)type; -// Records an Overscroll user action of type: `type`. -- (void)recordOverscrollActionForType:(OverscrollActionType)type; - @end #endif // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_NTP_HOME_METRICS_H_
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_metrics.mm b/ios/chrome/browser/ui/content_suggestions/ntp_home_metrics.mm index b578140f..f4236e2 100644 --- a/ios/chrome/browser/ui/content_suggestions/ntp_home_metrics.mm +++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_metrics.mm
@@ -16,47 +16,6 @@ #error "This file requires ARC support." #endif -namespace ntp_home { - -// Records when an NTP impression has occurred for purposes of Tile Ablation. -void NTPImpressionHasOccurred() { - base::Time now = base::Time::Now(); - NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; - if ([defaults boolForKey:kDoneWithTileAblationKey]) { - return; - } - // Find/Set first NTP impression ever. - NSDate* firstImpressionRecordedTileAblationExperiment = - base::mac::ObjCCast<NSDate>( - [defaults objectForKey:kFirstImpressionRecordedTileAblationKey]); - int impressions = [defaults integerForKey:kNumberOfNTPImpressionsRecordedKey]; - // Record first NTP impression. - if (firstImpressionRecordedTileAblationExperiment == nil) { - [defaults setObject:now.ToNSDate() - forKey:kFirstImpressionRecordedTileAblationKey]; - [defaults setObject:now.ToNSDate() forKey:kLastNTPImpressionRecordedKey]; - [defaults setInteger:1 forKey:kNumberOfNTPImpressionsRecordedKey]; - return; - } - NSDate* lastImpressionTileAblation = base::mac::ObjCCast<NSDate>( - [defaults objectForKey:kLastNTPImpressionRecordedKey]); - // Check when the last impression happened. - if (now - base::Time::FromNSDate(lastImpressionTileAblation) >= - base::Minutes(kTileAblationImpressionThresholdMinutes)) { - // Count impression for MVT/Shortcuts Experiment. - [defaults setObject:now.ToNSDate() forKey:kLastNTPImpressionRecordedKey]; - [defaults setInteger:impressions + 1 - forKey:kNumberOfNTPImpressionsRecordedKey]; - } -} - -void RecordNTPImpression(IOSNTPImpression impression_type) { - UMA_HISTOGRAM_ENUMERATION("IOS.NTP.Impression", impression_type, COUNT); - NTPImpressionHasOccurred(); -} - -} // namespace ntp_home - @interface NTPHomeMetrics () @property(nonatomic, assign) ChromeBrowserState* browserState; @end @@ -90,8 +49,4 @@ } } -- (void)recordOverscrollActionForType:(OverscrollActionType)type { - UMA_HISTOGRAM_ENUMERATION("IOS.NTP.OverscrollAction", type); -} - @end
diff --git a/ios/chrome/browser/ui/context_menu/BUILD.gn b/ios/chrome/browser/ui/context_menu/BUILD.gn index a825ca62a..ee09e33 100644 --- a/ios/chrome/browser/ui/context_menu/BUILD.gn +++ b/ios/chrome/browser/ui/context_menu/BUILD.gn
@@ -26,8 +26,8 @@ "//ios/chrome/browser/shared/public/features", "//ios/chrome/browser/shared/ui/util", "//ios/chrome/browser/shared/ui/util:url_with_title", + "//ios/chrome/browser/shared/ui/util/image:web", "//ios/chrome/browser/ui/context_menu/link_preview", - "//ios/chrome/browser/ui/image_util:web", "//ios/chrome/browser/ui/incognito_reauth:incognito_reauth_commands", "//ios/chrome/browser/ui/incognito_reauth:incognito_reauth_scene_agent", "//ios/chrome/browser/ui/lens:lens_availability",
diff --git a/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.mm b/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.mm index 41a80c1..6bcee3ca 100644 --- a/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.mm +++ b/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.mm
@@ -26,11 +26,11 @@ #import "ios/chrome/browser/shared/public/commands/reading_list_add_command.h" #import "ios/chrome/browser/shared/public/commands/search_image_with_lens_command.h" #import "ios/chrome/browser/shared/public/features/features.h" +#import "ios/chrome/browser/shared/ui/util/image/image_copier.h" +#import "ios/chrome/browser/shared/ui/util/image/image_saver.h" #import "ios/chrome/browser/shared/ui/util/pasteboard_util.h" #import "ios/chrome/browser/shared/ui/util/url_with_title.h" #import "ios/chrome/browser/ui/context_menu/context_menu_utils.h" -#import "ios/chrome/browser/ui/image_util/image_copier.h" -#import "ios/chrome/browser/ui/image_util/image_saver.h" #import "ios/chrome/browser/ui/incognito_reauth/incognito_reauth_commands.h" #import "ios/chrome/browser/ui/incognito_reauth/incognito_reauth_scene_agent.h" #import "ios/chrome/browser/ui/lens/lens_availability.h"
diff --git a/ios/chrome/browser/ui/find_bar/BUILD.gn b/ios/chrome/browser/ui/find_bar/BUILD.gn index fa93ff40..a9bd819 100644 --- a/ios/chrome/browser/ui/find_bar/BUILD.gn +++ b/ios/chrome/browser/ui/find_bar/BUILD.gn
@@ -32,7 +32,7 @@ "//ios/chrome/browser/shared/public/commands", "//ios/chrome/browser/shared/public/features", "//ios/chrome/browser/shared/ui/util", - "//ios/chrome/browser/ui/image_util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/ui/keyboard", "//ios/chrome/browser/ui/presenters", "//ios/chrome/browser/ui/resources:menu_shadow",
diff --git a/ios/chrome/browser/ui/find_bar/find_bar_controller_ios.mm b/ios/chrome/browser/ui/find_bar/find_bar_controller_ios.mm index 7c9eca1..4c1b041e 100644 --- a/ios/chrome/browser/ui/find_bar/find_bar_controller_ios.mm +++ b/ios/chrome/browser/ui/find_bar/find_bar_controller_ios.mm
@@ -14,12 +14,12 @@ #import "ios/chrome/browser/find_in_page/find_in_page_model.h" #import "ios/chrome/browser/shared/public/commands/browser_commands.h" #import "ios/chrome/browser/shared/public/commands/find_in_page_commands.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/shared/ui/util/rtl_geometry.h" #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" #import "ios/chrome/browser/ui/find_bar/find_bar_constants.h" #import "ios/chrome/browser/ui/find_bar/find_bar_view.h" #import "ios/chrome/browser/ui/find_bar/find_bar_view_controller.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/util/constraints_ui_util.h" #import "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/ntp/metrics/BUILD.gn b/ios/chrome/browser/ui/ntp/metrics/BUILD.gn index 40917b4..cbd06d17 100644 --- a/ios/chrome/browser/ui/ntp/metrics/BUILD.gn +++ b/ios/chrome/browser/ui/ntp/metrics/BUILD.gn
@@ -16,6 +16,8 @@ "feed_session_recorder.mm", "metrics.h", "metrics.mm", + "new_tab_page_metrics_recorder.h", + "new_tab_page_metrics_recorder.mm", ] deps = [ "//base", @@ -26,6 +28,8 @@ "//ios/chrome/browser/discover_feed:constants", "//ios/chrome/browser/discover_feed:discover_feed_refresher", "//ios/chrome/browser/ntp:features", + "//ios/chrome/browser/ui/content_suggestions:constants", + "//ios/chrome/browser/ui/content_suggestions:content_suggestions_constant", "//ios/chrome/browser/ui/content_suggestions:metrics", "//ios/chrome/browser/ui/favicon", "//ios/chrome/browser/ui/ntp",
diff --git a/ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.h b/ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.h new file mode 100644 index 0000000..d640f69 --- /dev/null +++ b/ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.h
@@ -0,0 +1,46 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_NTP_METRICS_NEW_TAB_PAGE_METRICS_RECORDER_H_ +#define IOS_CHROME_BROWSER_UI_NTP_METRICS_NEW_TAB_PAGE_METRICS_RECORDER_H_ + +#import "base/mac/foundation_util.h" + +namespace base { +class TimeDelta; +} + +// The feed visibility when an NTP impression is logged. +// These match tools/metrics/histograms/enums.xml. +enum class IOSNTPImpressionType { + kFeedDisabled = 0, + kFeedVisible = 1, + kFeedCollapsed = 2, + kMaxValue = kFeedCollapsed, +}; + +// These values are persisted to IOS.NTP.OverscrollAction histograms. +// Entries should not be renumbered and numeric values should never be reused. +enum class OverscrollActionType { + kOpenedNewTab = 0, + kPullToRefresh = 1, + kCloseTab = 2, + kMaxValue = kCloseTab, +}; + +// Metrics recorder for the new tab page. +@interface NewTabPageMetricsRecorder : NSObject + +// Logs a metric for the "Return to Recent Tab" tile being shown. +- (void)recordTimeSpentInNTP:(base::TimeDelta)timeSpent; + +// Logs a metric with the feed visibility when the NTP is shown. +- (void)recordNTPImpression:(IOSNTPImpressionType)impressionType; + +// Logs a metric for an overscroll action on the NTP. +- (void)recordOverscrollActionForType:(OverscrollActionType)type; + +@end + +#endif // IOS_CHROME_BROWSER_UI_NTP_METRICS_NEW_TAB_PAGE_METRICS_RECORDER_H_
diff --git a/ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.mm b/ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.mm new file mode 100644 index 0000000..750491c --- /dev/null +++ b/ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.mm
@@ -0,0 +1,72 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.h" + +#import "base/mac/foundation_util.h" +#import "base/metrics/histogram_functions.h" +#import "base/metrics/histogram_macros.h" +#import "base/metrics/user_metrics.h" +#import "base/metrics/user_metrics_action.h" +#import "base/time/time.h" +#import "ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h" +#import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@implementation NewTabPageMetricsRecorder + +#pragma mark - Public + +- (void)recordTimeSpentInNTP:(base::TimeDelta)timeSpent { + UmaHistogramMediumTimes("NewTabPage.TimeSpent", timeSpent); +} + +- (void)recordNTPImpression:(IOSNTPImpressionType)impressionType { + UMA_HISTOGRAM_ENUMERATION("IOS.NTP.Impression", impressionType, + IOSNTPImpressionType::kMaxValue); + [self recordImpressionForTileAblation]; +} + +- (void)recordOverscrollActionForType:(OverscrollActionType)type { + UMA_HISTOGRAM_ENUMERATION("IOS.NTP.OverscrollAction", type); +} + +#pragma mark - Private + +// Records an NTP impression for the tile ablation retention feature. +- (void)recordImpressionForTileAblation { + base::Time now = base::Time::Now(); + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + if ([defaults boolForKey:kDoneWithTileAblationKey]) { + return; + } + // Find/Set first NTP impression ever. + NSDate* firstImpressionRecordedTileAblationExperiment = + base::mac::ObjCCast<NSDate>( + [defaults objectForKey:kFirstImpressionRecordedTileAblationKey]); + int impressions = [defaults integerForKey:kNumberOfNTPImpressionsRecordedKey]; + // Record first NTP impression. + if (firstImpressionRecordedTileAblationExperiment == nil) { + [defaults setObject:now.ToNSDate() + forKey:kFirstImpressionRecordedTileAblationKey]; + [defaults setObject:now.ToNSDate() forKey:kLastNTPImpressionRecordedKey]; + [defaults setInteger:1 forKey:kNumberOfNTPImpressionsRecordedKey]; + return; + } + NSDate* lastImpressionTileAblation = base::mac::ObjCCast<NSDate>( + [defaults objectForKey:kLastNTPImpressionRecordedKey]); + // Check when the last impression happened. + if (now - base::Time::FromNSDate(lastImpressionTileAblation) >= + base::Minutes(kTileAblationImpressionThresholdMinutes)) { + // Count impression for MVT/Shortcuts Experiment. + [defaults setObject:now.ToNSDate() forKey:kLastNTPImpressionRecordedKey]; + [defaults setInteger:impressions + 1 + forKey:kNumberOfNTPImpressionsRecordedKey]; + } +} + +@end
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm b/ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm index e887b4e2..03cbe73 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm +++ b/ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm
@@ -85,6 +85,7 @@ #import "ios/chrome/browser/ui/ntp/incognito/incognito_view_controller.h" #import "ios/chrome/browser/ui/ntp/metrics/feed_metrics_constants.h" #import "ios/chrome/browser/ui/ntp/metrics/feed_metrics_recorder.h" +#import "ios/chrome/browser/ui/ntp/metrics/new_tab_page_metrics_recorder.h" #import "ios/chrome/browser/ui/ntp/new_tab_page_component_factory_protocol.h" #import "ios/chrome/browser/ui/ntp/new_tab_page_content_delegate.h" #import "ios/chrome/browser/ui/ntp/new_tab_page_coordinator+private.h" @@ -259,8 +260,13 @@ componentFactory; // Recorder for the metrics related to the NTP. +// TODO(crbug.com/1431193): Merge this with NewTabPageMetricsRecorder and +// ContentSuggestionsMetricsRecorder. @property(nonatomic, strong) NTPHomeMetrics* NTPMetrics; +// Recorder for new tab page metrics. +@property(nonatomic, strong) NewTabPageMetricsRecorder* NTPMetricsRecorder; + @end @implementation NewTabPageCoordinator @@ -399,6 +405,9 @@ [self.feedTopSectionCoordinator stop]; self.feedTopSectionCoordinator = nil; + self.NTPMetrics = nil; + self.NTPMetricsRecorder = nil; + if (self.feedSignInPromoCoordinator) { [self.feedSignInPromoCoordinator stop]; self.feedSignInPromoCoordinator = nil; @@ -620,6 +629,7 @@ self.NTPMetrics = [[NTPHomeMetrics alloc] initWithBrowserState:browser->GetBrowserState()]; self.NTPMetrics.webState = self.webState; + self.NTPMetricsRecorder = [[NewTabPageMetricsRecorder alloc] init]; } #pragma mark - Configurators @@ -1231,7 +1241,7 @@ id<ApplicationCommands> applicationCommandsHandler = HandlerForProtocol( self.browser->GetCommandDispatcher(), ApplicationCommands); [applicationCommandsHandler openURLInNewTab:[OpenNewTabCommand command]]; - [self.NTPMetrics + [self.NTPMetricsRecorder recordOverscrollActionForType:OverscrollActionType::kOpenedNewTab]; } @@ -1240,13 +1250,13 @@ HandlerForProtocol(self.browser->GetCommandDispatcher(), BrowserCoordinatorCommands); [browserCoordinatorCommandsHandler closeCurrentTab]; - [self.NTPMetrics + [self.NTPMetricsRecorder recordOverscrollActionForType:OverscrollActionType::kCloseTab]; } - (void)overscrollActionRefresh:(OverscrollActionsController*)controller { [self reload]; - [self.NTPMetrics + [self.NTPMetricsRecorder recordOverscrollActionForType:OverscrollActionType::kPullToRefresh]; } @@ -1443,17 +1453,20 @@ self.didAppearTime = base::TimeTicks::Now(); if ([self isFeedHeaderVisible]) { if ([self.feedExpandedPref value]) { - ntp_home::RecordNTPImpression(ntp_home::REMOTE_SUGGESTIONS); + [self.NTPMetricsRecorder + recordNTPImpression:IOSNTPImpressionType::kFeedVisible]; } else { - ntp_home::RecordNTPImpression(ntp_home::REMOTE_COLLAPSED); + [self.NTPMetricsRecorder + recordNTPImpression:IOSNTPImpressionType::kFeedCollapsed]; } } else { - ntp_home::RecordNTPImpression(ntp_home::LOCAL_SUGGESTIONS); + [self.NTPMetricsRecorder + recordNTPImpression:IOSNTPImpressionType::kFeedDisabled]; } } else { if (!self.didAppearTime.is_null()) { - UmaHistogramMediumTimes("NewTabPage.TimeSpent", - base::TimeTicks::Now() - self.didAppearTime); + [self.NTPMetricsRecorder + recordTimeSpentInNTP:base::TimeTicks::Now() - self.didAppearTime]; self.didAppearTime = base::TimeTicks(); } }
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/BUILD.gn b/ios/chrome/browser/ui/passwords/bottom_sheet/BUILD.gn index ba1fa86..7bda88e 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/BUILD.gn +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/BUILD.gn
@@ -48,6 +48,9 @@ "//components/autofill/ios/browser", "//components/autofill/ios/form_util", "//ios/chrome/browser/autofill", + "//ios/chrome/browser/browser_state:test_support", + "//ios/chrome/browser/favicon", + "//ios/chrome/browser/history", "//ios/chrome/browser/web_state_list", "//ios/chrome/browser/web_state_list:test_support", "//ios/web/public/test",
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.mm b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.mm index c274ab3..95ee598d 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.mm +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.mm
@@ -33,11 +33,12 @@ delegate:(id<PasswordControllerDelegate>)delegate { self = [super initWithBaseViewController:viewController browser:browser]; if (self) { - self.viewController = [[PasswordSuggestionBottomSheetViewController alloc] - initWithFaviconLoader:IOSChromeFaviconLoaderFactory::GetForBrowserState( - browser->GetBrowserState())]; + self.viewController = + [[PasswordSuggestionBottomSheetViewController alloc] init]; self.mediator = [[PasswordSuggestionBottomSheetMediator alloc] initWithWebStateList:browser->GetWebStateList() + faviconLoader:IOSChromeFaviconLoaderFactory::GetForBrowserState( + browser->GetBrowserState()) params:params]; self.viewController.delegate = self.mediator;
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_delegate.h b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_delegate.h index 9e06f78..46444ba5 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_delegate.h +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_delegate.h
@@ -7,6 +7,8 @@ #import <Foundation/Foundation.h> +#import "ios/chrome/browser/favicon/favicon_loader.h" + // Delegate for the passwords bottom sheet. @protocol PasswordSuggestionBottomSheetDelegate @@ -18,6 +20,11 @@ // after the bottom sheet has been dismissed. - (void)refocus; +// Loads the favicon associated with the provided index path. +// Defaults to the globe symbol if no URL is found. +- (void)loadFaviconAtIndexPath:(NSIndexPath*)indexPath + faviconBlockHandler:(FaviconLoader::FaviconAttributesCompletionBlock) + faviconLoadedBlock; @end #endif // IOS_CHROME_BROWSER_UI_PASSWORDS_BOTTOM_SHEET_PASSWORD_SUGGESTION_BOTTOM_SHEET_DELEGATE_H_
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.h b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.h index 2db102f..c651fe0 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.h +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.h
@@ -11,6 +11,7 @@ struct FormActivityParams; } // namespace autofill +class FaviconLoader; class WebStateList; @protocol PasswordSuggestionBottomSheetConsumer; @@ -22,6 +23,7 @@ : NSObject <PasswordSuggestionBottomSheetDelegate> - (instancetype)initWithWebStateList:(WebStateList*)webStateList + faviconLoader:(FaviconLoader*)faviconLoader params: (const autofill::FormActivityParams&)params;
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.mm b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.mm index 691f8b1..3ad7aa37 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.mm +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.mm
@@ -5,14 +5,18 @@ #import "ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.h" #import "base/memory/raw_ptr.h" +#import "base/strings/sys_string_conversions.h" #import "components/autofill/ios/form_util/form_activity_params.h" #import "ios/chrome/browser/autofill/bottom_sheet/bottom_sheet_tab_helper.h" #import "ios/chrome/browser/autofill/form_input_suggestions_provider.h" #import "ios/chrome/browser/autofill/form_suggestion_tab_helper.h" +#import "ios/chrome/browser/shared/ui/symbols/symbols.h" #import "ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_consumer.h" #import "ios/chrome/browser/web_state_list/active_web_state_observation_forwarder.h" #import "ios/chrome/browser/web_state_list/web_state_list.h" #import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h" +#import "ios/chrome/common/ui/favicon/favicon_attributes.h" +#import "ios/chrome/common/ui/favicon/favicon_constants.h" #import "ios/web/public/js_messaging/web_frame_util.h" #import "ios/web/public/web_state.h" #import "ios/web/public/web_state_observer_bridge.h" @@ -30,6 +34,9 @@ // List of suggestions in the bottom sheet. @property(nonatomic, strong) NSArray<FormSuggestion*>* suggestions; +// Default globe favicon when no favicon is available. +@property(nonatomic, readonly) FaviconAttributes* defaultGlobeIconAttributes; + @end @implementation PasswordSuggestionBottomSheetMediator { @@ -44,14 +51,22 @@ // Web Frame associated with this bottom sheet. std::string _frameId; + + // FaviconLoader is a keyed service that uses LargeIconService to retrieve + // favicon images. + raw_ptr<FaviconLoader> _faviconLoader; } +@synthesize defaultGlobeIconAttributes = _defaultGlobeIconAttributes; + - (instancetype)initWithWebStateList:(WebStateList*)webStateList + faviconLoader:(FaviconLoader*)faviconLoader params: (const autofill::FormActivityParams&)params { if (self = [super init]) { _needsRefocus = true; _frameId = params.frame_id; + _faviconLoader = faviconLoader; _webStateList = webStateList; web::WebState* activeWebState = _webStateList->GetActiveWebState(); @@ -86,6 +101,7 @@ } - (void)disconnect { + _faviconLoader = nullptr; _webStateList = nullptr; _forwarder = nullptr; _observer = nullptr; @@ -121,6 +137,21 @@ } } +- (void)loadFaviconAtIndexPath:(NSIndexPath*)indexPath + faviconBlockHandler:(FaviconLoader::FaviconAttributesCompletionBlock) + faviconLoadedBlock { + CHECK(_faviconLoader); + // Try loading the url's favicon. + GURL URL(base::SysNSStringToUTF8([self descriptionAtRow:indexPath.row])); + if (!URL.is_empty()) { + _faviconLoader->FaviconForPageUrl( + URL, kDesiredMediumFaviconSizePt, kMinFaviconSizePt, + /*fallback_to_google_server=*/NO, faviconLoadedBlock); + } else { + faviconLoadedBlock([self defaultGlobeIconAttributes]); + } +} + #pragma mark - WebStateListObserver - (void)webStateList:(WebStateList*)webStateList @@ -162,4 +193,24 @@ [self.consumer dismiss]; } +#pragma mark - Private + +// Returns the display description at a given row in the table view. +- (NSString*)descriptionAtRow:(NSInteger)row { + FormSuggestion* formSuggestion = [self.suggestions objectAtIndex:row]; + return formSuggestion.displayDescription; +} + +// Returns the default favicon attributes after making sure they are +// initialized. +- (FaviconAttributes*)defaultGlobeIconAttributes { + if (!_defaultGlobeIconAttributes) { + _defaultGlobeIconAttributes = [FaviconAttributes + attributesWithImage:DefaultSymbolWithPointSize( + kGlobeAmericasSymbol, + kDesiredMediumFaviconSizePt)]; + } + return _defaultGlobeIconAttributes; +} + @end
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator_unittest.mm b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator_unittest.mm index e93c9b2a..c30ac35 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator_unittest.mm +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator_unittest.mm
@@ -8,6 +8,11 @@ #import "components/autofill/ios/browser/form_suggestion_provider.h" #import "components/autofill/ios/form_util/form_activity_params.h" #import "ios/chrome/browser/autofill/form_suggestion_tab_helper.h" +#import "ios/chrome/browser/browser_state/test_chrome_browser_state.h" +#import "ios/chrome/browser/favicon/favicon_service_factory.h" +#import "ios/chrome/browser/favicon/ios_chrome_favicon_loader_factory.h" +#import "ios/chrome/browser/favicon/ios_chrome_large_icon_service_factory.h" +#import "ios/chrome/browser/history/history_service_factory.h" #import "ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_consumer.h" #import "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.h" #import "ios/chrome/browser/web_state_list/web_state_list.h" @@ -146,12 +151,26 @@ protected: PasswordSuggestionBottomSheetMediatorTest() : test_web_state_(std::make_unique<web::FakeWebState>()), - web_state_list_(&web_state_list_delegate_) {} + web_state_list_(&web_state_list_delegate_), + chrome_browser_state_(TestChromeBrowserState::Builder().Build()) {} void SetUp() override { GURL url("http://foo.com"); test_web_state_->SetCurrentURL(url); + TestChromeBrowserState::Builder builder; + builder.AddTestingFactory(ios::FaviconServiceFactory::GetInstance(), + ios::FaviconServiceFactory::GetDefaultFactory()); + builder.AddTestingFactory( + IOSChromeLargeIconServiceFactory::GetInstance(), + IOSChromeLargeIconServiceFactory::GetDefaultFactory()); + builder.AddTestingFactory( + IOSChromeFaviconLoaderFactory::GetInstance(), + IOSChromeFaviconLoaderFactory::GetDefaultFactory()); + builder.AddTestingFactory(ios::HistoryServiceFactory::GetInstance(), + ios::HistoryServiceFactory::GetDefaultFactory()); + chrome_browser_state_ = builder.Build(); + consumer_ = OCMProtocolMock(@protocol(PasswordSuggestionBottomSheetConsumer)); @@ -177,6 +196,8 @@ mediator_ = [[PasswordSuggestionBottomSheetMediator alloc] initWithWebStateList:&web_state_list_ + faviconLoader:IOSChromeFaviconLoaderFactory::GetForBrowserState( + chrome_browser_state_.get()) params:params_]; } @@ -191,6 +212,7 @@ std::unique_ptr<web::FakeWebState> test_web_state_; FakeWebStateListDelegate web_state_list_delegate_; WebStateList web_state_list_; + std::unique_ptr<TestChromeBrowserState> chrome_browser_state_; id consumer_; NSArray<id<FormSuggestionProvider>>* suggestion_providers_; autofill::FormActivityParams params_;
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.h b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.h index f8d1314..533328f 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.h +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.h
@@ -9,8 +9,6 @@ #import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_action_handler.h" #import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h" -class FaviconLoader; - @protocol PasswordControllerDelegate; @protocol PasswordSuggestionBottomSheetDelegate; @@ -21,7 +19,7 @@ : ConfirmationAlertViewController <PasswordSuggestionBottomSheetConsumer> // Initialize with the favicon loader. -- (instancetype)initWithFaviconLoader:(FaviconLoader*)faviconLoader; +- (instancetype)init; // The delegate for the bottom sheet view controller. @property(nonatomic, strong) id<PasswordSuggestionBottomSheetDelegate> delegate;
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.mm b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.mm index 064b0f1b..e1fd886 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.mm +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.mm
@@ -6,9 +6,7 @@ #import "base/mac/foundation_util.h" #import "base/memory/raw_ptr.h" -#import "base/strings/sys_string_conversions.h" #import "components/autofill/ios/browser/form_suggestion.h" -#import "ios/chrome/browser/favicon/favicon_loader.h" #import "ios/chrome/browser/passwords/password_controller_delegate.h" #import "ios/chrome/browser/shared/ui/symbols/symbols.h" #import "ios/chrome/browser/shared/ui/table_view/cells/table_view_url_item.h" @@ -19,7 +17,6 @@ #import "ios/chrome/browser/ui/settings/password/create_password_manager_title_view.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/favicon/favicon_attributes.h" -#import "ios/chrome/common/ui/favicon/favicon_constants.h" #import "ios/chrome/common/ui/favicon/favicon_view.h" #import "ios/chrome/grit/ios_strings.h" #import "ui/base/l10n/l10n_util_mac.h" @@ -74,24 +71,15 @@ // List of suggestions in the bottom sheet // The property is defined by PasswordSuggestionBottomSheetConsumer protocol. NSArray<FormSuggestion*>* _suggestions; - - // FaviconLoader is a keyed service that uses LargeIconService to retrieve - // favicon images. - raw_ptr<FaviconLoader> _faviconLoader; } -// Temporary favicon to load for now. -@property(nonatomic, strong) FaviconAttributes* defaultWorldIconAttributes; - @end @implementation PasswordSuggestionBottomSheetViewController -- (instancetype)initWithFaviconLoader:(FaviconLoader*)faviconLoader { +- (instancetype)init { self = [super init]; if (self) { - _faviconLoader = faviconLoader; - [self setUpBottomSheet]; } return self; @@ -317,29 +305,26 @@ // Defaults to the globe symbol if no URL is associated with the cell. - (void)loadFaviconAtIndexPath:(NSIndexPath*)indexPath forCell:(UITableViewCell*)cell { - CHECK(_faviconLoader); - // Try loading the url's favicon. - GURL url(base::SysNSStringToUTF8([self descriptionAtRow:indexPath.row])); - if (!url.is_empty()) { - __weak __typeof(self) weakSelf = self; - auto faviconLoadedBlock = ^(FaviconAttributes* attributes) { - [weakSelf configureFaviconAttributes:attributes forCell:cell]; - }; + TableViewItem* item = + [_tableViewController.tableViewModel itemAtIndexPath:indexPath]; + DCHECK(item); + DCHECK(cell); - _faviconLoader->FaviconForPageUrl( - url, kDesiredMediumFaviconSizePt, kMinFaviconSizePt, - /*fallback_to_google_server=*/NO, faviconLoadedBlock); - } else { - [self configureFaviconAttributes:[self defaultWorldIconAttributes] - forCell:cell]; - } -} - -// Sets favicon attributes for the provided cell. -- (void)configureFaviconAttributes:(FaviconAttributes*)attributes - forCell:(UITableViewCell*)cell { + TableViewURLItem* URLItem = base::mac::ObjCCastStrict<TableViewURLItem>(item); TableViewURLCell* URLCell = base::mac::ObjCCastStrict<TableViewURLCell>(cell); - [URLCell.faviconView configureWithAttributes:attributes]; + + NSString* itemIdentifier = URLItem.uniqueIdentifier; + + auto faviconLoadedBlock = ^(FaviconAttributes* attributes) { + // Only set favicon if the cell hasn't been reused. + if ([URLCell.cellUniqueIdentifier isEqualToString:itemIdentifier]) { + DCHECK(attributes); + [URLCell.faviconView configureWithAttributes:attributes]; + } + }; + + [self.delegate loadFaviconAtIndexPath:indexPath + faviconBlockHandler:faviconLoadedBlock]; } // Sets the password bottom sheet's table view to full height. @@ -354,27 +339,6 @@ [self.delegate didSelectSuggestion:_row]; } -// Returns the default globe symbol -- (UIImage*)globeIcon { - if (@available(iOS 15, *)) { - return DefaultSymbolWithPointSize(kGlobeAmericasSymbol, - kDesiredMediumFaviconSizePt); - } else { - return DefaultSymbolWithPointSize(kGlobeSymbol, - kDesiredMediumFaviconSizePt); - } -} - -// Returns the default favicon attributes after making sure they are -// initialized. -- (FaviconAttributes*)defaultWorldIconAttributes { - if (!_defaultWorldIconAttributes) { - _defaultWorldIconAttributes = - [FaviconAttributes attributesWithImage:[self globeIcon]]; - } - return _defaultWorldIconAttributes; -} - - (CGFloat)rowHeight { // TODO(crbug.com/1422350): The row height below must be dynamic for // accessibility.
diff --git a/ios/chrome/browser/ui/popup_menu/public/BUILD.gn b/ios/chrome/browser/ui/popup_menu/public/BUILD.gn index e7c66b1a..49e26e1a 100644 --- a/ios/chrome/browser/ui/popup_menu/public/BUILD.gn +++ b/ios/chrome/browser/ui/popup_menu/public/BUILD.gn
@@ -29,7 +29,7 @@ "//ios/chrome/browser/shared/ui/table_view", "//ios/chrome/browser/shared/ui/table_view:styler", "//ios/chrome/browser/shared/ui/util", - "//ios/chrome/browser/ui/image_util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/ui/keyboard", "//ios/chrome/browser/ui/popup_menu:metrics_protocols", "//ios/chrome/browser/ui/popup_menu/cells",
diff --git a/ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller.mm b/ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller.mm index ea2bb6c..01a81c15 100644 --- a/ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller.mm +++ b/ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller.mm
@@ -7,7 +7,7 @@ #import "base/metrics/user_metrics.h" #import "base/metrics/user_metrics_action.h" #import "ios/chrome/browser/shared/ui/util/accessibility_close_menu_button.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/ui/keyboard/UIKeyCommand+Chrome.h" #import "ios/chrome/browser/ui/popup_menu/public/popup_menu_ui_constants.h" #import "ios/chrome/browser/ui/popup_menu/public/popup_menu_view_controller_delegate.h"
diff --git a/ios/chrome/browser/ui/price_notifications/cells/price_notifications_track_button.mm b/ios/chrome/browser/ui/price_notifications/cells/price_notifications_track_button.mm index 948bc19..259c944 100644 --- a/ios/chrome/browser/ui/price_notifications/cells/price_notifications_track_button.mm +++ b/ios/chrome/browser/ui/price_notifications/cells/price_notifications_track_button.mm
@@ -10,6 +10,7 @@ #import "ios/chrome/browser/ui/price_notifications/price_notifications_constants.h" #import "ios/chrome/common/button_configuration_util.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" +#import "ios/chrome/common/ui/util/sdk_forward_declares.h" #import "ios/chrome/grit/ios_strings.h" #import "ui/base/l10n/l10n_util_mac.h" @@ -26,31 +27,54 @@ - (instancetype)init { self = [super init]; if (self) { - self.titleLabel.font = - [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; - [self.titleLabel setLineBreakMode:NSLineBreakByTruncatingTail]; - [self setTitleColor:[UIColor colorNamed:kSolidButtonTextColor] - forState:UIControlStateNormal]; - self.backgroundColor = [UIColor colorNamed:kBlueColor]; - self.accessibilityIdentifier = - kPriceNotificationsListItemTrackButtonIdentifier; - [self setTitle:l10n_util::GetNSString( - IDS_IOS_PRICE_NOTIFICATIONS_PRICE_TRACK_TRACK_BUTTON) - forState:UIControlStateNormal]; - // TODO(crbug.com/1418068): Simplify after minimum version required is >= // iOS 15. size_t horizontalPadding = [self horizontalPadding]; if (base::ios::IsRunningOnIOS15OrLater() && IsUIButtonConfigurationEnabled()) { if (@available(iOS 15, *)) { - UIButtonConfiguration* buttonConfiguration = self.configuration; + UIButtonConfiguration* buttonConfiguration = + [UIButtonConfiguration plainButtonConfiguration]; buttonConfiguration.contentInsets = NSDirectionalEdgeInsetsMake( kTrackButtonTopPadding, horizontalPadding, kTrackButtonTopPadding, horizontalPadding); + + // Customize title string. + NSMutableParagraphStyle* style = [[NSMutableParagraphStyle alloc] init]; + UIFont* font = + [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; + [style setLineBreakMode:NSLineBreakByTruncatingTail]; + NSDictionary* attributes = @{ + NSParagraphStyleAttributeName : style, + NSFontAttributeName : font + }; + NSMutableAttributedString* string = [[NSMutableAttributedString alloc] + initWithString: + l10n_util::GetNSString( + IDS_IOS_PRICE_NOTIFICATIONS_PRICE_TRACK_TRACK_BUTTON)]; + [string addAttributes:attributes range:NSMakeRange(0, string.length)]; + buttonConfiguration.attributedTitle = string; + + buttonConfiguration.baseForegroundColor = UIColor.whiteColor; + buttonConfiguration.background.backgroundColor = + [UIColor colorNamed:kBlueColor]; + buttonConfiguration.cornerStyle = + UIButtonConfigurationCornerStyleCapsule; + buttonConfiguration.titleLineBreakMode = NSLineBreakByTruncatingTail; self.configuration = buttonConfiguration; } } else { + self.titleLabel.font = + [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; + [self.titleLabel setLineBreakMode:NSLineBreakByTruncatingTail]; + [self setTitleColor:[UIColor colorNamed:kSolidButtonTextColor] + forState:UIControlStateNormal]; + self.backgroundColor = [UIColor colorNamed:kBlueColor]; + self.accessibilityIdentifier = + kPriceNotificationsListItemTrackButtonIdentifier; + [self setTitle:l10n_util::GetNSString( + IDS_IOS_PRICE_NOTIFICATIONS_PRICE_TRACK_TRACK_BUTTON) + forState:UIControlStateNormal]; UIEdgeInsets contentEdgeInsets = UIEdgeInsetsMake(kTrackButtonTopPadding, horizontalPadding, kTrackButtonTopPadding, horizontalPadding);
diff --git a/ios/chrome/browser/ui/settings/sync/utils/sync_fake_server_egtest.mm b/ios/chrome/browser/ui/settings/sync/utils/sync_fake_server_egtest.mm index 1207d7e..fcb2e60 100644 --- a/ios/chrome/browser/ui/settings/sync/utils/sync_fake_server_egtest.mm +++ b/ios/chrome/browser/ui/settings/sync/utils/sync_fake_server_egtest.mm
@@ -158,27 +158,6 @@ [BookmarkEarlGrey verifyBookmarksWithTitle:@"hoo" expectedCount:1]; } -// Tests that the local cache guid does not change when sync is restarted. -- (void)testSyncCheckSameCacheGuid_SyncRestarted { - // Sign in the fake identity. - FakeSystemIdentity* fakeIdentity = [FakeSystemIdentity fakeIdentity1]; - [SigninEarlGrey addFakeIdentity:fakeIdentity]; - [SigninEarlGreyUI signinWithFakeIdentity:fakeIdentity]; - [ChromeEarlGrey - waitForSyncTransportStateActiveWithTimeout:kSyncOperationTimeout]; - - // Store the original guid, then restart sync. - std::string original_guid = [ChromeEarlGrey syncCacheGUID]; - [ChromeEarlGrey stopSync]; - [ChromeEarlGrey startSync]; - - // Verify the guid did not change. - [ChromeEarlGrey - waitForSyncTransportStateActiveWithTimeout:kSyncOperationTimeout]; - GREYAssertEqual([ChromeEarlGrey syncCacheGUID], original_guid, - @"Stored guid doesn't match current value"); -} - // Tests that the local cache guid changes when the user signs out and then // signs back in with the same account. - (void)testSyncCheckDifferentCacheGuid_SignOutAndSignIn { @@ -204,39 +183,6 @@ @"guid didn't change after user signed out and signed back in"); } -// Tests that the local cache guid does not change when sync is restarted, if -// a user previously signed out and back in. -// Test for http://crbug.com/413611 . -- (void)testSyncCheckSameCacheGuid_SyncRestartedAfterSignOutAndSignIn { - // Sign in a fake idenitty. - FakeSystemIdentity* fakeIdentity = [FakeSystemIdentity fakeIdentity1]; - [SigninEarlGrey addFakeIdentity:fakeIdentity]; - [SigninEarlGreyUI signinWithFakeIdentity:fakeIdentity]; - [ChromeEarlGrey - waitForSyncTransportStateActiveWithTimeout:kSyncOperationTimeout]; - - [SigninEarlGrey verifySignedInWithFakeIdentity:fakeIdentity]; - [SigninEarlGrey signOut]; - [ChromeEarlGrey waitForSyncEngineInitialized:NO - syncTimeout:kSyncOperationTimeout]; - - // Sign the user back in. - [SigninEarlGreyUI signinWithFakeIdentity:fakeIdentity]; - [ChromeEarlGrey - waitForSyncTransportStateActiveWithTimeout:kSyncOperationTimeout]; - - // Record the initial guid, before restarting sync. - std::string original_guid = [ChromeEarlGrey syncCacheGUID]; - [ChromeEarlGrey stopSync]; - [ChromeEarlGrey startSync]; - - // Verify the guid did not change after restarting sync. - [ChromeEarlGrey - waitForSyncTransportStateActiveWithTimeout:kSyncOperationTimeout]; - GREYAssertEqual([ChromeEarlGrey syncCacheGUID], original_guid, - @"Stored guid doesn't match current value"); -} - // Tests that autofill profile injected in FakeServer gets synced to client. - (void)testSyncDownloadAutofillProfile { const std::string kGuid = "2340E83B-5BEE-4560-8F95-5914EF7F539E";
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/pinned_tabs_view_controller.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/pinned_tabs_view_controller.mm index ae8d4b6..660cbcd 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/pinned_tabs_view_controller.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/pinned_tabs/pinned_tabs_view_controller.mm
@@ -11,6 +11,7 @@ #import "base/metrics/histogram_functions.h" #import "base/notreached.h" #import "base/numerics/safe_conversions.h" +#import "ios/chrome/browser/shared/ui/util/rtl_geometry.h" #import "ios/chrome/browser/tabs/features.h" #import "ios/chrome/browser/ui/tab_switcher/tab_collection_drag_drop_handler.h" #import "ios/chrome/browser/ui/tab_switcher/tab_collection_drag_drop_metrics.h" @@ -790,6 +791,12 @@ label.textColor = [UIColor colorNamed:kTextPrimaryColor]; label.text = l10n_util::GetNSString(IDS_IOS_PINNED_TABS_DRAG_TO_PIN_LABEL); label.translatesAutoresizingMaskIntoConstraints = NO; + + // Mirror the label for RTL (see crbug.com/1426256). + if (base::i18n::IsRTL()) { + label.transform = CGAffineTransformScale(label.transform, -1, 1); + } + [_dropOverlayView addSubview:label]; AddSameConstraints(_dropOverlayView, self.collectionView.backgroundView);
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_strip/BUILD.gn b/ios/chrome/browser/ui/tab_switcher/tab_strip/BUILD.gn index 056b1d9..5e01f4a 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_strip/BUILD.gn +++ b/ios/chrome/browser/ui/tab_switcher/tab_strip/BUILD.gn
@@ -40,7 +40,7 @@ "//ios/chrome/browser/shared/public/features", "//ios/chrome/browser/shared/ui/symbols", "//ios/chrome/browser/shared/ui/util", - "//ios/chrome/browser/ui/image_util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/ui/tab_switcher", "//ios/chrome/browser/ui/tab_switcher:tab_utils", "//ios/chrome/browser/url",
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_cell.mm b/ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_cell.mm index 55e8642..dd59843 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_cell.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_cell.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/tab_switcher/tab_strip/tab_strip_cell.h" #import "ios/chrome/browser/shared/ui/symbols/symbols.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/tabs/BUILD.gn b/ios/chrome/browser/ui/tabs/BUILD.gn index 76b12c2a..d9497d82 100644 --- a/ios/chrome/browser/ui/tabs/BUILD.gn +++ b/ios/chrome/browser/ui/tabs/BUILD.gn
@@ -50,13 +50,13 @@ "//ios/chrome/browser/shared/ui/elements", "//ios/chrome/browser/shared/ui/symbols", "//ios/chrome/browser/shared/ui/util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/snapshots", "//ios/chrome/browser/tabs:features", "//ios/chrome/browser/ui/bookmarks", "//ios/chrome/browser/ui/bubble", "//ios/chrome/browser/ui/fullscreen", "//ios/chrome/browser/ui/gestures", - "//ios/chrome/browser/ui/image_util", "//ios/chrome/browser/ui/menu", "//ios/chrome/browser/ui/popup_menu/public", "//ios/chrome/browser/ui/tab_switcher:tab_utils",
diff --git a/ios/chrome/browser/ui/tabs/tab_view.mm b/ios/chrome/browser/ui/tabs/tab_view.mm index 9ff872c7..ac7dca4 100644 --- a/ios/chrome/browser/ui/tabs/tab_view.mm +++ b/ios/chrome/browser/ui/tabs/tab_view.mm
@@ -13,9 +13,9 @@ #import "ios/chrome/browser/shared/public/features/features.h" #import "ios/chrome/browser/shared/ui/elements/fade_truncating_label.h" #import "ios/chrome/browser/shared/ui/symbols/symbols.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/shared/ui/util/rtl_geometry.h" #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/common/button_configuration_util.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" #import "ios/chrome/common/ui/elements/highlight_button.h"
diff --git a/ios/chrome/browser/ui/toolbar/accessory/BUILD.gn b/ios/chrome/browser/ui/toolbar/accessory/BUILD.gn index 62a6d4b..1d50cae 100644 --- a/ios/chrome/browser/ui/toolbar/accessory/BUILD.gn +++ b/ios/chrome/browser/ui/toolbar/accessory/BUILD.gn
@@ -14,7 +14,7 @@ "//base", "//base:i18n", "//ios/chrome/browser/shared/ui/util", - "//ios/chrome/browser/ui/image_util", + "//ios/chrome/browser/shared/ui/util/image", "//ios/chrome/browser/ui/presenters", "//ios/chrome/browser/ui/toolbar/public:constants", "//ios/chrome/common/ui/colors",
diff --git a/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.mm b/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.mm index 83b7cbb..c357fe7e 100644 --- a/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.mm +++ b/ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_presenter.mm
@@ -6,10 +6,10 @@ #import "base/i18n/rtl.h" #import "base/logging.h" +#import "ios/chrome/browser/shared/ui/util/image/image_util.h" #import "ios/chrome/browser/shared/ui/util/layout_guide_names.h" #import "ios/chrome/browser/shared/ui/util/named_guide.h" #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" -#import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/browser/ui/presenters/contained_presenter_delegate.h" #import "ios/chrome/browser/ui/toolbar/accessory/toolbar_accessory_constants.h" #import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h"
diff --git a/ios/chrome/common/ui/util/BUILD.gn b/ios/chrome/common/ui/util/BUILD.gn index f59faa53..fcf17cb 100644 --- a/ios/chrome/common/ui/util/BUILD.gn +++ b/ios/chrome/common/ui/util/BUILD.gn
@@ -17,6 +17,7 @@ "device_util.mm", "pointer_interaction_util.h", "pointer_interaction_util.mm", + "sdk_forward_declares.h", "text_view_util.h", "text_view_util.mm", "ui_util.h",
diff --git a/ios/chrome/common/ui/util/sdk_forward_declares.h b/ios/chrome/common/ui/util/sdk_forward_declares.h new file mode 100644 index 0000000..a37fed1 --- /dev/null +++ b/ios/chrome/common/ui/util/sdk_forward_declares.h
@@ -0,0 +1,25 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_COMMON_UI_UTIL_SDK_FORWARD_DECLARES_H_ +#define IOS_CHROME_COMMON_UI_UTIL_SDK_FORWARD_DECLARES_H_ + +#import <UIKit/UIKit.h> + +// TODO(crbug.com/1432568): Remove category when property no longer needs to be +// forward declared. +// titleLineBreakMode has existed since iOS 15 with the implementation of +// UIButtonConfiguration. It was only recently exposed in the iOS 16.3 SDK. +// Until this property is exposed for all supported versions, we should forward +// declare this property for versions that don't have the property exposed. +// This property always exists at runtime in iOS 15.0+. +@interface UIButtonConfiguration (ForwardDeclare) + +#if !defined(__IPHONE_16_3) || __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_16_3 +@property(nonatomic, readwrite) NSLineBreakMode titleLineBreakMode; +#endif + +@end + +#endif // IOS_CHROME_COMMON_UI_UTIL_SDK_FORWARD_DECLARES_H_
diff --git a/ios/chrome/test/app/BUILD.gn b/ios/chrome/test/app/BUILD.gn index 87be5f5c..e976fad 100644 --- a/ios/chrome/test/app/BUILD.gn +++ b/ios/chrome/test/app/BUILD.gn
@@ -82,6 +82,7 @@ "//ios/chrome/browser/tabs", "//ios/chrome/browser/ui/authentication", "//ios/chrome/browser/ui/authentication/cells", + "//ios/chrome/browser/ui/bookmarks:core", "//ios/chrome/browser/ui/browser_view", "//ios/chrome/browser/ui/main", "//ios/chrome/browser/ui/settings",
diff --git a/ios/chrome/test/app/bookmarks_test_util.mm b/ios/chrome/test/app/bookmarks_test_util.mm index fe71bfe5..a3f92b1 100644 --- a/ios/chrome/test/app/bookmarks_test_util.mm +++ b/ios/chrome/test/app/bookmarks_test_util.mm
@@ -7,6 +7,8 @@ #import "components/bookmarks/browser/bookmark_model.h" #import "ios/chrome/browser/bookmarks/bookmarks_utils.h" #import "ios/chrome/browser/bookmarks/local_or_syncable_bookmark_model_factory.h" +#import "ios/chrome/browser/browser_state/chrome_browser_state.h" +#import "ios/chrome/browser/ui/bookmarks/bookmark_path_cache.h" #import "ios/chrome/test/app/chrome_test_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -24,6 +26,8 @@ bool ClearBookmarks() { ChromeBrowserState* browserState = GetOriginalBrowserState(); + [BookmarkPathCache + clearBookmarkTopMostRowCacheWithPrefService:browserState->GetPrefs()]; bookmarks::BookmarkModel* bookmarkModel = ios::LocalOrSyncableBookmarkModelFactory::GetForBrowserState( browserState);
diff --git a/ios/chrome/test/app/sync_test_util.h b/ios/chrome/test/app/sync_test_util.h index f420e3a..433bc06 100644 --- a/ios/chrome/test/app/sync_test_util.h +++ b/ios/chrome/test/app/sync_test_util.h
@@ -30,12 +30,6 @@ // real one. Must only be called if `IsFakeSyncServerSetUp()` is true. void TearDownFakeSyncServer(); -// Starts the sync server. The server should not be running when calling this. -void StartSync(); - -// Stops the sync server. The server should be running when calling this. -void StopSync(); - // Triggers a sync cycle for a `type`. void TriggerSyncCycle(syncer::ModelType type);
diff --git a/ios/chrome/test/app/sync_test_util.mm b/ios/chrome/test/app/sync_test_util.mm index a4e86e0..42ffb1d 100644 --- a/ios/chrome/test/app/sync_test_util.mm +++ b/ios/chrome/test/app/sync_test_util.mm
@@ -42,8 +42,6 @@ #import "ios/chrome/browser/history/history_service_factory.h" #import "ios/chrome/browser/sync/device_info_sync_service_factory.h" #import "ios/chrome/browser/sync/sync_service_factory.h" -#import "ios/chrome/browser/sync/sync_setup_service.h" -#import "ios/chrome/browser/sync/sync_setup_service_factory.h" #import "ios/chrome/test/app/chrome_test_util.h" #import "testing/gtest/include/gtest/gtest.h" @@ -102,26 +100,6 @@ OverrideSyncNetwork(syncer::CreateHttpPostProviderFactory()); } -void StartSync() { - ChromeBrowserState* browser_state = - chrome_test_util::GetOriginalBrowserState(); - SyncSetupService* sync_setup_service = - SyncSetupServiceFactory::GetForBrowserState(browser_state); - DCHECK(!sync_setup_service->IsSyncRequested()); - sync_setup_service->SetSyncEnabled(true); - sync_setup_service->CommitSyncChanges(); -} - -void StopSync() { - ChromeBrowserState* browser_state = - chrome_test_util::GetOriginalBrowserState(); - SyncSetupService* sync_setup_service = - SyncSetupServiceFactory::GetForBrowserState(browser_state); - DCHECK(sync_setup_service->IsSyncRequested()); - sync_setup_service->SetSyncEnabled(false); - sync_setup_service->CommitSyncChanges(); -} - void TriggerSyncCycle(syncer::ModelType type) { ChromeBrowserState* browser_state = chrome_test_util::GetOriginalBrowserState();
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.h b/ios/chrome/test/earl_grey/chrome_earl_grey.h index 29a2133..107cf71 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey.h +++ b/ios/chrome/test/earl_grey/chrome_earl_grey.h
@@ -174,12 +174,6 @@ // Signs in with `identity` without sync consent. - (void)signInWithoutSyncWithIdentity:(FakeSystemIdentity*)identity; -// Starts the sync server. The server should not be running when calling this. -- (void)startSync; - -// Stops the sync server. The server should be running when calling this. -- (void)stopSync; - // Injects user demographics into the fake sync server. `rawBirthYear` is the // true birth year, pre-noise, and the gender corresponds to the proto enum // UserDemographicsProto::Gender.
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.mm b/ios/chrome/test/earl_grey/chrome_earl_grey.mm index 57032ae..c0e3486 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey.mm
@@ -754,14 +754,6 @@ [ChromeEarlGreyAppInterface signInWithoutSyncWithIdentity:identity]; } -- (void)startSync { - [ChromeEarlGreyAppInterface startSync]; -} - -- (void)stopSync { - [ChromeEarlGreyAppInterface stopSync]; -} - - (void) addUserDemographicsToSyncServerWithBirthYear:(int)rawBirthYear gender:
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h index 9236fa21..e0ecc79 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h +++ b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h
@@ -343,12 +343,6 @@ // Signs in with `identity` without sync consent. + (void)signInWithoutSyncWithIdentity:(FakeSystemIdentity*)identity; -// Starts the sync server. The server should not be running when calling this. -+ (void)startSync; - -// Stops the sync server. The server should be running when calling this. -+ (void)stopSync; - // Waits for sync engine to be initialized or not. It doesn't necessarily mean // that data types are configured and ready to use. See // SyncService::IsEngineInitialized() for details. If not succeeded a GREYAssert
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm index b39431a..24902f6 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm
@@ -880,14 +880,6 @@ chrome_test_util::ClearSyncServerData(); } -+ (void)startSync { - chrome_test_util::StartSync(); -} - -+ (void)stopSync { - chrome_test_util::StopSync(); -} - + (NSError*)waitForSyncEngineInitialized:(BOOL)isInitialized syncTimeout:(base::TimeDelta)timeout { bool success = WaitUntilConditionOrTimeout(timeout, ^{
diff --git a/ios/chrome/test/earl_grey2/smoke_egtest.mm b/ios/chrome/test/earl_grey2/smoke_egtest.mm index d85ad527..f0df3e7 100644 --- a/ios/chrome/test/earl_grey2/smoke_egtest.mm +++ b/ios/chrome/test/earl_grey2/smoke_egtest.mm
@@ -170,14 +170,6 @@ waitForSufficientlyVisibleElementWithMatcher:chrome_test_util::Omnibox()]; } -// Tests sync server converted helpers in chrome_earl_grey.h. -- (void)testSyncServerHelpers { - [ChromeEarlGrey startSync]; - [ChromeEarlGrey waitForSyncEngineInitialized:NO - syncTimeout:base::Seconds(10)]; - [ChromeEarlGrey clearSyncServerData]; -} - // Tests executeJavaScript:error: in chrome_earl_grey.h - (void)testExecuteJavaScript { base::Value result = [ChromeEarlGrey evaluateJavaScript:@"0"];
diff --git a/ios/components/security_interstitials/safe_browsing/safe_browsing_query_manager_unittest.mm b/ios/components/security_interstitials/safe_browsing/safe_browsing_query_manager_unittest.mm index ebe69e7f..7f564c7 100644 --- a/ios/components/security_interstitials/safe_browsing/safe_browsing_query_manager_unittest.mm +++ b/ios/components/security_interstitials/safe_browsing/safe_browsing_query_manager_unittest.mm
@@ -78,7 +78,7 @@ : public testing::TestWithParam<network::mojom::RequestDestination> { protected: SafeBrowsingQueryManagerTest() - : task_environment_(web::WebTaskEnvironment::IO_MAINLOOP), + : task_environment_(web::WebTaskEnvironment::REAL_IO_THREAD), browser_state_(new web::FakeBrowserState()), web_state_(std::make_unique<web::FakeWebState>()), http_method_("GET"),
diff --git a/ios/components/webui/sync_internals/sync_internals_message_handler.mm b/ios/components/webui/sync_internals/sync_internals_message_handler.mm index 66e960ff..1f1419553 100644 --- a/ios/components/webui/sync_internals/sync_internals_message_handler.mm +++ b/ios/components/webui/sync_internals/sync_internals_message_handler.mm
@@ -190,7 +190,7 @@ return; } - service->GetUserSettings()->SetSyncRequested(true); + service->GetUserSettings()->SetSyncRequested(); // If the service was previously stopped with CLEAR_DATA, then the // "first-setup-complete" bit was also cleared, and now the service wouldn't // fully start up. So set that too. @@ -207,7 +207,7 @@ return; } - service->GetUserSettings()->SetSyncRequested(false); + service->GetUserSettings()->ClearSyncRequested(); } void SyncInternalsMessageHandler::HandleRequestStopClearData(
diff --git a/ios/web_view/test/web_view_autofill_inttest.mm b/ios/web_view/test/web_view_autofill_inttest.mm index 1cf5cb12..ef6cb7e 100644 --- a/ios/web_view/test/web_view_autofill_inttest.mm +++ b/ios/web_view/test/web_view_autofill_inttest.mm
@@ -98,7 +98,6 @@ // that form. [[nodiscard]] bool LoadTestPage() { std::string html = base::SysNSStringToUTF8(kTestFormHtml); - main_frame_id_ = nil; GURL url = GetUrlForPageWithHtmlBody(html); [[autofill_controller_delegate_ expect] autofillController:autofill_controller_ @@ -138,14 +137,14 @@ return !error; } - NSArray<CWVAutofillSuggestion*>* FetchSuggestions() { + NSArray<CWVAutofillSuggestion*>* FetchSuggestions(NSString* main_frame_id) { __block bool suggestions_fetched = false; __block NSArray<CWVAutofillSuggestion*>* fetched_suggestions = nil; [autofill_controller_ fetchSuggestionsForFormWithName:kTestFormName fieldIdentifier:kTestAddressFieldID fieldType:kTestFieldType - frameID:GetMainFrameId() + frameID:main_frame_id completionHandler:^( NSArray<CWVAutofillSuggestion*>* suggestions) { fetched_suggestions = suggestions; @@ -158,12 +157,8 @@ } NSString* GetMainFrameId() { - if (main_frame_id_) { - return main_frame_id_; - } NSString* main_frame_id_script = @"__gCrWeb.message.getFrameId();"; - main_frame_id_ = test::EvaluateJavaScript(web_view_, main_frame_id_script); - return main_frame_id_; + return test::EvaluateJavaScript(web_view_, main_frame_id_script); } bool WaitUntilPageLoaded() { @@ -180,7 +175,6 @@ CWVAutofillController* autofill_controller_; id autofill_controller_delegate_ = nil; id<CWVNavigationDelegate> navigation_delegate_ = nil; - NSString* main_frame_id_ = nil; UIView* dummy_super_view_ = nil; }; @@ -295,13 +289,18 @@ ASSERT_TRUE(LoadTestPage()); + __block NSString* main_frame_id = nil; + // The input element needs to be focused before suggestions can be fetched. [[autofill_controller_delegate_ expect] autofillController:autofill_controller_ didFocusOnFieldWithIdentifier:kTestAddressFieldID fieldType:kTestFieldType formName:kTestFormName - frameID:[OCMArg any] + frameID:[OCMArg checkWithBlock:^BOOL(id frameId) { + main_frame_id = frameId; + return frameId != nil; + }] value:[OCMArg any] userInitiated:YES]; NSString* focus_script = @@ -313,12 +312,13 @@ [autofill_controller_delegate_ verifyWithDelay:kWaitForActionTimeout.InSecondsF()]; - NSArray<CWVAutofillSuggestion*>* fetched_suggestions = FetchSuggestions(); + NSArray<CWVAutofillSuggestion*>* fetched_suggestions = + FetchSuggestions(main_frame_id); ASSERT_EQ(1U, fetched_suggestions.count); CWVAutofillSuggestion* fetched_suggestion = fetched_suggestions.firstObject; EXPECT_NSEQ(kTestAddressFieldValue, fetched_suggestion.value); EXPECT_NSEQ(kTestFormName, fetched_suggestion.formName); - EXPECT_NSEQ(GetMainFrameId(), fetched_suggestion.frameID); + EXPECT_NSEQ(main_frame_id, fetched_suggestion.frameID); [autofill_controller_ acceptSuggestion:fetched_suggestion completionHandler:nil]; @@ -339,7 +339,7 @@ ASSERT_FALSE(filled_error); [autofill_controller_ clearFormWithName:kTestFormName fieldIdentifier:kTestAddressFieldID - frameID:GetMainFrameId() + frameID:main_frame_id completionHandler:nil]; NSString* cleared_script = [NSString stringWithFormat:@"document.getElementById('%@').value",
diff --git a/media/capture/video/mac/uvc_control_mac.h b/media/capture/video/mac/uvc_control_mac.h index fd60b65..7ff59a74 100644 --- a/media/capture/video/mac/uvc_control_mac.h +++ b/media/capture/video/mac/uvc_control_mac.h
@@ -12,6 +12,7 @@ #include "base/logging.h" #include "base/mac/scoped_ioplugininterface.h" #include "base/strings/string_piece.h" +#include "base/trace_event/trace_event.h" #include "media/capture/capture_export.h" #include "media/capture/mojom/image_capture_types.h" @@ -135,6 +136,8 @@ void SetControlCurrent(int control_selector, ValueType value, base::StringPiece control_name) const { + TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "UvcControl::SetControlCurrent", "control_name", control_name); CHECK(interface_); IOUSBDevRequest command = CreateEmptyCommand(uvc::kVcRequestCodeSetCur, kUSBOut, control_selector, @@ -154,6 +157,9 @@ int control_selector, ValueType* result, base::StringPiece control_name) const { + TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "UvcControl::SendControlRequest", "request_code", request_code, + "control_name", control_name); CHECK(interface_); IOUSBDevRequest command = CreateEmptyCommand( request_code, kUSBIn, control_selector, sizeof(ValueType));
diff --git a/media/capture/video/mac/uvc_control_mac.mm b/media/capture/video/mac/uvc_control_mac.mm index 2752181..f74b6d768 100644 --- a/media/capture/video/mac/uvc_control_mac.mm +++ b/media/capture/video/mac/uvc_control_mac.mm
@@ -212,6 +212,9 @@ } UvcControl::UvcControl(std::string device_model, int descriptor_subtype) { + TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "UvcControl::CreateUvcControl", "device_model", device_model, + "descriptor_subtype", descriptor_subtype); interface_ = OpenVideoClassSpecificControlInterface( device_model, descriptor_subtype, &unit_id_); }
diff --git a/media/capture/video/mac/video_capture_device_mac.mm b/media/capture/video/mac/video_capture_device_mac.mm index 74e310ed..2c875d1 100644 --- a/media/capture/video/mac/video_capture_device_mac.mm +++ b/media/capture/video/mac/video_capture_device_mac.mm
@@ -228,6 +228,8 @@ } void VideoCaptureDeviceMac::GetPhotoState(GetPhotoStateCallback callback) { + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "VideoCaptureDeviceMac::GetPhotoState"); DCHECK(task_runner_->BelongsToCurrentThread()); auto photo_state = mojo::CreateEmptyPhotoState(); @@ -338,6 +340,8 @@ void VideoCaptureDeviceMac::SetPhotoOptions(mojom::PhotoSettingsPtr settings, SetPhotoOptionsCallback callback) { + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "VideoCaptureDeviceMac::SetPhotoOptions"); DCHECK(task_runner_->BelongsToCurrentThread()); // Drop |callback| and return if there are any unsupported |settings|. // TODO(mcasas): centralise checks elsewhere, https://crbug.com/724285. @@ -587,6 +591,8 @@ // static VideoCaptureControlSupport VideoCaptureDeviceMac::GetControlSupport( const std::string& device_model) { + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "VideoCaptureDeviceMac::GetControlSupport"); VideoCaptureControlSupport control_support; UvcControl uvc(device_model, uvc::kVcInputTerminal);
diff --git a/media/mojo/services/media_foundation_renderer_wrapper.h b/media/mojo/services/media_foundation_renderer_wrapper.h index 5eb4232..c1738c1 100644 --- a/media/mojo/services/media_foundation_renderer_wrapper.h +++ b/media/mojo/services/media_foundation_renderer_wrapper.h
@@ -88,7 +88,7 @@ std::vector<MediaFoundationFrameInfo> frame_textures, const gfx::Size& texture_size); - raw_ptr<mojom::FrameInterfaceFactory> frame_interfaces_; + raw_ptr<mojom::FrameInterfaceFactory, DanglingUntriaged> frame_interfaces_; std::unique_ptr<MediaFoundationRenderer> renderer_; mojo::Receiver<MediaFoundationRendererExtension> renderer_extension_receiver_; mojo::Remote<media::mojom::MediaFoundationRendererClientExtension>
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins index b1839b5e..e39adae 100644 --- a/net/http/transport_security_state_static.pins +++ b/net/http/transport_security_state_static.pins
@@ -43,9 +43,9 @@ # hash function for preloaded entries again (we have already done so once). # -# Last updated: 2023-04-12 12:57 UTC +# Last updated: 2023-04-13 12:54 UTC PinsListTimestamp -1681304243 +1681390459 TestSPKI sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/pdf/pdfium/pdfium_font_linux.cc b/pdf/pdfium/pdfium_font_linux.cc index c05c2b4a..bdc890f 100644 --- a/pdf/pdfium/pdfium_font_linux.cc +++ b/pdf/pdfium/pdfium_font_linux.cc
@@ -49,15 +49,15 @@ // defaults to the direct interface, which is not suitable, as it does not // provide MatchFontWithFallback(). This only happens in unit tests, so just // refuse to map fonts there. - auto* fci = SkFontConfigInterface::RefGlobal().get(); - if (fci == SkFontConfigInterface::GetSingletonDirectInterface()) + sk_sp<SkFontConfigInterface> fci = SkFontConfigInterface::RefGlobal(); + if (fci.get() == SkFontConfigInterface::GetSingletonDirectInterface()) return nullptr; auto font_file = std::make_unique<base::File>(); // In RendererBlinkPlatform, SkFontConfigInterface::SetGlobal() only ever // sets the global to a FontLoader. Thus it is safe to assume the returned // result is just that. - auto* font_loader = reinterpret_cast<font_service::FontLoader*>(fci); + auto* font_loader = reinterpret_cast<font_service::FontLoader*>(fci.get()); font_loader->MatchFontWithFallback( desc.family.Utf8(), desc.weight >= blink::WebFontDescription::kWeightBold, desc.italic,
diff --git a/remoting/resources/remoting_strings_hi.xtb b/remoting/resources/remoting_strings_hi.xtb index 0d87c99b..2c9884b 100644 --- a/remoting/resources/remoting_strings_hi.xtb +++ b/remoting/resources/remoting_strings_hi.xtb
@@ -46,7 +46,7 @@ <translation id="3106379468611574572">दूरस्थ कंप्यूटर, कनेक्शन अनुरोधों के लिए प्रतिक्रिया नहीं दे रहा है. कृपया सत्यापित करें कि यह ऑनलाइन है और फिर से प्रयास करें.</translation> <translation id="3150823315463303127">होस्ट, नीति को पढ़ने में विफल रहा.</translation> <translation id="3171922709365450819">इस क्लाइंट के ज़रिए यह डिवाइस इसलिए काम नहीं करता है क्योंकि इसे तृतीय पक्ष प्रमाणीकरण चाहिए.</translation> -<translation id="3197730452537982411">दूरस्थ डेस्कटॉप</translation> +<translation id="3197730452537982411">रिमोट डेस्कटॉप</translation> <translation id="324272851072175193">ये निर्देश ईमेल करें</translation> <translation id="3305934114213025800"><ph name="PRODUCT_NAME" /> बदलाव करना चाहता है.</translation> <translation id="3339299787263251426">इंटरनेट की मदद से अपना कंप्यूटर सुरक्षित रूप से ऐक्सेस करें</translation>
diff --git a/services/audio/sync_mixing_graph_input.h b/services/audio/sync_mixing_graph_input.h index 48e54c5..ca0d7a4 100644 --- a/services/audio/sync_mixing_graph_input.h +++ b/services/audio/sync_mixing_graph_input.h
@@ -52,7 +52,7 @@ void Render(int fifo_frame_delay, media::AudioBus* audio_bus); // Pointer to the mixing graph to which the input belongs. - const raw_ptr<MixingGraph> graph_; + const raw_ptr<MixingGraph, DanglingUntriaged> graph_; // Channel layout, sample rate and number of frames of the input. const media::AudioParameters params_;
diff --git a/services/cert_verifier/cert_verifier_service_factory_unittest.cc b/services/cert_verifier/cert_verifier_service_factory_unittest.cc index 9cb322289..7913eed 100644 --- a/services/cert_verifier/cert_verifier_service_factory_unittest.cc +++ b/services/cert_verifier/cert_verifier_service_factory_unittest.cc
@@ -93,7 +93,6 @@ mojo::Receiver<mojom::CertVerifierServiceClient> client_; }; -// TODO(mattm): update the pre-existing tests to use Verify() helper. std::tuple<int, net::CertVerifyResult> Verify( const mojo::Remote<mojom::CertVerifierService>& cv_service_remote, scoped_refptr<net::X509Certificate> cert, @@ -168,26 +167,10 @@ cv_service_client.InitWithNewPipeAndPassRemote(), std::move(cv_creation_params)); - base::RunLoop request_completed_run_loop; - DummyCVServiceRequest dummy_cv_service_req( - request_completed_run_loop.QuitClosure()); - mojo::Receiver<mojom::CertVerifierRequest> dummy_cv_service_req_receiver( - &dummy_cv_service_req); - - auto net_log(net::NetLogWithSource::Make( - net::NetLog::Get(), net::NetLogSourceType::CERT_VERIFIER_JOB)); - cv_service_remote->Verify( - net::CertVerifier::RequestParams(test_cert, "www.example.com", 0, - /*ocsp_response=*/std::string(), - /*sct_list=*/std::string()), - static_cast<uint32_t>(net_log.source().type), net_log.source().id, - net_log.source().start_time, - dummy_cv_service_req_receiver.BindNewPipeAndPassRemote()); - - request_completed_run_loop.Run(); - ASSERT_EQ(dummy_cv_service_req.net_error, net::ERR_CERT_AUTHORITY_INVALID); - ASSERT_TRUE(dummy_cv_service_req.result.cert_status & - net::CERT_STATUS_AUTHORITY_INVALID); + auto [net_error, result] = + Verify(cv_service_remote, test_cert, "www.example.com"); + ASSERT_EQ(net_error, net::ERR_CERT_AUTHORITY_INVALID); + ASSERT_TRUE(result.cert_status & net::CERT_STATUS_AUTHORITY_INVALID); } #if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED) @@ -236,25 +219,9 @@ cv_service_client.client_.BindNewPipeAndPassRemote(), std::move(cv_creation_params)); - base::RunLoop request_completed_run_loop; - DummyCVServiceRequest dummy_cv_service_req( - request_completed_run_loop.QuitClosure()); - mojo::Receiver<mojom::CertVerifierRequest> dummy_cv_service_req_receiver( - &dummy_cv_service_req); - - auto net_log(net::NetLogWithSource::Make( - net::NetLog::Get(), net::NetLogSourceType::CERT_VERIFIER_JOB)); - cv_service_remote->Verify( - net::CertVerifier::RequestParams(leaf->GetX509Certificate(), - "www.example.com", 0, - /*ocsp_response=*/std::string(), - /*sct_list=*/std::string()), - static_cast<uint32_t>(net_log.source().type), net_log.source().id, - net_log.source().start_time, - dummy_cv_service_req_receiver.BindNewPipeAndPassRemote()); - - request_completed_run_loop.Run(); - ASSERT_EQ(dummy_cv_service_req.net_error, net::OK); + auto [net_error, result] = + Verify(cv_service_remote, leaf->GetX509Certificate(), "www.example.com"); + ASSERT_EQ(net_error, net::OK); // Update happened before the CertVerifier was created, no change observers // should have been notified. EXPECT_EQ(cv_service_client.changed_count_, 0u); @@ -288,27 +255,10 @@ // Try request, it should fail because we haven't updated the Root Store yet. { - base::RunLoop request_completed_run_loop; - DummyCVServiceRequest dummy_cv_service_req( - request_completed_run_loop.QuitClosure()); - mojo::Receiver<mojom::CertVerifierRequest> dummy_cv_service_req_receiver( - &dummy_cv_service_req); - - auto net_log(net::NetLogWithSource::Make( - net::NetLog::Get(), net::NetLogSourceType::CERT_VERIFIER_JOB)); - cv_service_remote->Verify( - net::CertVerifier::RequestParams(leaf->GetX509Certificate(), - "www.example.com", 0, - /*ocsp_response=*/std::string(), - /*sct_list=*/std::string()), - static_cast<uint32_t>(net_log.source().type), net_log.source().id, - net_log.source().start_time, - dummy_cv_service_req_receiver.BindNewPipeAndPassRemote()); - - request_completed_run_loop.Run(); - ASSERT_EQ(dummy_cv_service_req.net_error, net::ERR_CERT_AUTHORITY_INVALID); - ASSERT_TRUE(dummy_cv_service_req.result.cert_status & - net::CERT_STATUS_AUTHORITY_INVALID); + auto [net_error, result] = Verify( + cv_service_remote, leaf->GetX509Certificate(), "www.example.com"); + ASSERT_EQ(net_error, net::ERR_CERT_AUTHORITY_INVALID); + ASSERT_TRUE(result.cert_status & net::CERT_STATUS_AUTHORITY_INVALID); } // No updates should have happened yet. EXPECT_EQ(cv_service_client.changed_count_, 0u); @@ -334,24 +284,9 @@ // Try request, it should succeed. { - base::RunLoop request_completed_run_loop; - DummyCVServiceRequest dummy_cv_service_req( - request_completed_run_loop.QuitClosure()); - mojo::Receiver<mojom::CertVerifierRequest> dummy_cv_service_req_receiver( - &dummy_cv_service_req); - auto net_log(net::NetLogWithSource::Make( - net::NetLog::Get(), net::NetLogSourceType::CERT_VERIFIER_JOB)); - cv_service_remote->Verify( - net::CertVerifier::RequestParams(leaf->GetX509Certificate(), - "www.example.com", 0, - /*ocsp_response=*/std::string(), - /*sct_list=*/std::string()), - static_cast<uint32_t>(net_log.source().type), net_log.source().id, - net_log.source().start_time, - dummy_cv_service_req_receiver.BindNewPipeAndPassRemote()); - - request_completed_run_loop.Run(); - ASSERT_EQ(dummy_cv_service_req.net_error, net::OK); + auto [net_error, result] = Verify( + cv_service_remote, leaf->GetX509Certificate(), "www.example.com"); + ASSERT_EQ(net_error, net::OK); } // Update should have been notified. @@ -402,28 +337,11 @@ cv_service_client.client_.BindNewPipeAndPassRemote(), std::move(cv_creation_params)); - base::RunLoop request_completed_run_loop; - DummyCVServiceRequest dummy_cv_service_req( - request_completed_run_loop.QuitClosure()); - mojo::Receiver<mojom::CertVerifierRequest> dummy_cv_service_req_receiver( - &dummy_cv_service_req); - - auto net_log(net::NetLogWithSource::Make( - net::NetLog::Get(), net::NetLogSourceType::CERT_VERIFIER_JOB)); - cv_service_remote->Verify( - net::CertVerifier::RequestParams(leaf->GetX509Certificate(), - "www.example.com", 0, - /*ocsp_response=*/std::string(), - /*sct_list=*/std::string()), - static_cast<uint32_t>(net_log.source().type), net_log.source().id, - net_log.source().start_time, - dummy_cv_service_req_receiver.BindNewPipeAndPassRemote()); - - request_completed_run_loop.Run(); + auto [net_error, result] = + Verify(cv_service_remote, leaf->GetX509Certificate(), "www.example.com"); // Request should result in error because root store update was ignored. - ASSERT_EQ(dummy_cv_service_req.net_error, net::ERR_CERT_AUTHORITY_INVALID); - ASSERT_TRUE(dummy_cv_service_req.result.cert_status & - net::CERT_STATUS_AUTHORITY_INVALID); + ASSERT_EQ(net_error, net::ERR_CERT_AUTHORITY_INVALID); + ASSERT_TRUE(result.cert_status & net::CERT_STATUS_AUTHORITY_INVALID); // Update was ignored, so no change observers should have been notified. EXPECT_EQ(cv_service_client.changed_count_, 0u); } @@ -473,26 +391,10 @@ // Initial request should succeed. { - base::RunLoop request_completed_run_loop; - DummyCVServiceRequest dummy_cv_service_req( - request_completed_run_loop.QuitClosure()); - mojo::Receiver<mojom::CertVerifierRequest> dummy_cv_service_req_receiver( - &dummy_cv_service_req); - - auto net_log(net::NetLogWithSource::Make( - net::NetLog::Get(), net::NetLogSourceType::CERT_VERIFIER_JOB)); - cv_service_remote->Verify( - net::CertVerifier::RequestParams(leaf->GetX509Certificate(), - "www.example.com", 0, - /*ocsp_response=*/std::string(), - /*sct_list=*/std::string()), - static_cast<uint32_t>(net_log.source().type), net_log.source().id, - net_log.source().start_time, - dummy_cv_service_req_receiver.BindNewPipeAndPassRemote()); - - request_completed_run_loop.Run(); + auto [net_error, result] = Verify( + cv_service_remote, leaf->GetX509Certificate(), "www.example.com"); // Request should be OK. - ASSERT_EQ(dummy_cv_service_req.net_error, net::OK); + ASSERT_EQ(net_error, net::OK); } // Create updated Chrome Root Store with an invalid cert; update should be @@ -517,26 +419,10 @@ } { - base::RunLoop request_completed_run_loop; - DummyCVServiceRequest dummy_cv_service_req( - request_completed_run_loop.QuitClosure()); - mojo::Receiver<mojom::CertVerifierRequest> dummy_cv_service_req_receiver( - &dummy_cv_service_req); - - auto net_log(net::NetLogWithSource::Make( - net::NetLog::Get(), net::NetLogSourceType::CERT_VERIFIER_JOB)); - cv_service_remote->Verify( - net::CertVerifier::RequestParams(leaf->GetX509Certificate(), - "www.example.com", 0, - /*ocsp_response=*/std::string(), - /*sct_list=*/std::string()), - static_cast<uint32_t>(net_log.source().type), net_log.source().id, - net_log.source().start_time, - dummy_cv_service_req_receiver.BindNewPipeAndPassRemote()); - - request_completed_run_loop.Run(); + auto [net_error, result] = Verify( + cv_service_remote, leaf->GetX509Certificate(), "www.example.com"); // Request should be OK because root store update was ignored. - ASSERT_EQ(dummy_cv_service_req.net_error, net::OK); + ASSERT_EQ(net_error, net::OK); } // Clear all certs from the proto @@ -555,26 +441,10 @@ } { - base::RunLoop request_completed_run_loop; - DummyCVServiceRequest dummy_cv_service_req( - request_completed_run_loop.QuitClosure()); - mojo::Receiver<mojom::CertVerifierRequest> dummy_cv_service_req_receiver( - &dummy_cv_service_req); - - auto net_log(net::NetLogWithSource::Make( - net::NetLog::Get(), net::NetLogSourceType::CERT_VERIFIER_JOB)); - cv_service_remote->Verify( - net::CertVerifier::RequestParams(leaf->GetX509Certificate(), - "www.example.com", 0, - /*ocsp_response=*/std::string(), - /*sct_list=*/std::string()), - static_cast<uint32_t>(net_log.source().type), net_log.source().id, - net_log.source().start_time, - dummy_cv_service_req_receiver.BindNewPipeAndPassRemote()); - - request_completed_run_loop.Run(); + auto [net_error, result] = Verify( + cv_service_remote, leaf->GetX509Certificate(), "www.example.com"); // Request should be OK because root store update was ignored. - ASSERT_EQ(dummy_cv_service_req.net_error, net::OK); + ASSERT_EQ(net_error, net::OK); } // Update was ignored, so no change observers should have been notified. EXPECT_EQ(cv_service_client.changed_count_, 0u);
diff --git a/services/network/host_resolver.h b/services/network/host_resolver.h index 84daf18..b75be348 100644 --- a/services/network/host_resolver.h +++ b/services/network/host_resolver.h
@@ -86,7 +86,7 @@ std::set<std::unique_ptr<HostResolverMdnsListener>, base::UniquePtrComparator> listeners_; - const raw_ptr<net::HostResolver> internal_resolver_; + const raw_ptr<net::HostResolver, DanglingUntriaged> internal_resolver_; const raw_ptr<net::NetLog> net_log_; base::WeakPtrFactory<HostResolver> weak_factory_{this};
diff --git a/services/network/web_bundle/web_bundle_url_loader_factory.h b/services/network/web_bundle/web_bundle_url_loader_factory.h index abbd242..eafd8685 100644 --- a/services/network/web_bundle/web_bundle_url_loader_factory.h +++ b/services/network/web_bundle/web_bundle_url_loader_factory.h
@@ -118,7 +118,8 @@ mojo::Remote<mojom::DevToolsObserver> devtools_observer_; absl::optional<std::string> devtools_request_id_; const CrossOriginEmbedderPolicy cross_origin_embedder_policy_; - raw_ptr<mojom::CrossOriginEmbedderPolicyReporter> coep_reporter_; + raw_ptr<mojom::CrossOriginEmbedderPolicyReporter, DanglingUntriaged> + coep_reporter_; std::unique_ptr<BundleDataSource> source_; mojo::Remote<web_package::mojom::WebBundleParser> parser_; web_package::mojom::BundleMetadataPtr metadata_;
diff --git a/storage/browser/quota/quota_task.h b/storage/browser/quota/quota_task.h index 6e2aa7e..0ec50f65 100644 --- a/storage/browser/quota/quota_task.h +++ b/storage/browser/quota/quota_task.h
@@ -62,7 +62,7 @@ void Abort(); - raw_ptr<QuotaTaskObserver> observer_; + raw_ptr<QuotaTaskObserver, DanglingUntriaged> observer_; const scoped_refptr<base::SingleThreadTaskRunner> original_task_runner_; bool delete_scheduled_; };
diff --git a/testing/buildbot/chromium.angle.json b/testing/buildbot/chromium.angle.json index b46514f1..ff2353e 100644 --- a/testing/buildbot/chromium.angle.json +++ b/testing/buildbot/chromium.angle.json
@@ -604,9 +604,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -630,9 +630,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -655,7 +655,7 @@ "--expected-vendor-id", "1002", "--expected-device-id", - "6821" + "67ef" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { @@ -674,9 +674,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -693,7 +693,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --enable-features=EGLDualGPURendering,ForceHighPerformanceGPUForWebGL", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=gl --use-cmd-decoder=passthrough --force_high_performance_gpu", "--webgl-conformance-version=2.0.1", "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json", "--jobs=4" @@ -702,6 +702,49 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, + "name": "webgl2_conformance_gl_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 20 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgl2_conformance", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu", + "--webgl-conformance-version=2.0.1", + "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json", + "--jobs=4", + "--enable-metal-debug-layers" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, "name": "webgl2_conformance_metal_passthrough_tests", "resultdb": { "enable": true, @@ -715,9 +758,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -756,9 +799,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -776,9 +819,10 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --enable-features=EGLDualGPURendering,ForceHighPerformanceGPUForWebGL", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu", "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl_conformance_tests_output.json", - "--jobs=4" + "--jobs=4", + "--enable-metal-debug-layers" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { @@ -797,9 +841,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -838,9 +882,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ],
diff --git a/testing/buildbot/chromium.dawn.json b/testing/buildbot/chromium.dawn.json index 2727efa..05e54b9 100644 --- a/testing/buildbot/chromium.dawn.json +++ b/testing/buildbot/chromium.dawn.json
@@ -2158,9 +2158,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2186,9 +2186,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2214,9 +2214,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2242,9 +2242,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2269,9 +2269,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2294,9 +2294,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2327,9 +2327,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2352,9 +2352,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2393,9 +2393,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2405,6 +2405,125 @@ }, { "args": [ + "--flag-specific=webgpu-with-backend-validation", + "--timeout-ms=30000", + "--initialize-webgpu-adapter-at-startup-timeout-ms=60000", + "--platform=mac-mac11", + "--git-revision=${got_revision}" + ], + "isolate_name": "webgpu_blink_web_tests", + "merge": { + "args": [ + "--verbose" + ], + "script": "//third_party/blink/tools/merge_web_test_results.py" + }, + "name": "webgpu_blink_web_tests_with_backend_validation", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://:webgpu_blink_web_tests/" + }, + { + "args": [ + "webgpu_cts", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", + "--jobs=4" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgpu_cts_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 14 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgpu_cts", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", + "--enable-dawn-backend-validation", + "--jobs=4" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgpu_cts_with_validation_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 14 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ "--flag-specific=webgpu-swiftshader", "--initialize-webgpu-adapter-at-startup-timeout-ms=60000", "--platform=mac-mac11", @@ -2432,9 +2551,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2472,9 +2591,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2511,9 +2630,51 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgpu_cts", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", + "--use-webgpu-adapter=swiftshader", + "--test-filter=*web_platform*", + "--enable-dawn-backend-validation", + "--jobs=4" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgpu_swiftshader_web_platform_cts_with_validation_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4145,9 +4306,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4173,9 +4334,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4201,9 +4362,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4229,9 +4390,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4256,9 +4417,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4281,9 +4442,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4314,9 +4475,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4339,9 +4500,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4380,9 +4541,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4392,6 +4553,125 @@ }, { "args": [ + "--flag-specific=webgpu-with-backend-validation", + "--timeout-ms=30000", + "--initialize-webgpu-adapter-at-startup-timeout-ms=60000", + "--platform=mac-mac11", + "--git-revision=${got_revision}" + ], + "isolate_name": "webgpu_blink_web_tests", + "merge": { + "args": [ + "--verbose" + ], + "script": "//third_party/blink/tools/merge_web_test_results.py" + }, + "name": "webgpu_blink_web_tests_with_backend_validation", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://:webgpu_blink_web_tests/" + }, + { + "args": [ + "webgpu_cts", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", + "--jobs=4" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgpu_cts_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 14 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgpu_cts", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", + "--enable-dawn-backend-validation", + "--jobs=4" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgpu_cts_with_validation_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 14 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ "--flag-specific=webgpu-swiftshader", "--initialize-webgpu-adapter-at-startup-timeout-ms=60000", "--platform=mac-mac11", @@ -4419,9 +4699,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4459,9 +4739,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -4498,9 +4778,51 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgpu_cts", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", + "--use-webgpu-adapter=swiftshader", + "--test-filter=*web_platform*", + "--enable-dawn-backend-validation", + "--jobs=4" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgpu_swiftshader_web_platform_cts_with_validation_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ],
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json index 4c0aef21..33219de 100644 --- a/testing/buildbot/chromium.gpu.fyi.json +++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -12064,9 +12064,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12094,9 +12094,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12122,9 +12122,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12148,9 +12148,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12173,9 +12173,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12195,9 +12195,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12221,9 +12221,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12261,9 +12261,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12299,9 +12299,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12337,9 +12337,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12360,7 +12360,7 @@ "--expected-vendor-id", "1002", "--expected-device-id", - "6821" + "67ef" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { @@ -12379,9 +12379,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12426,9 +12426,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12464,9 +12464,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12511,9 +12511,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12550,9 +12550,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12588,9 +12588,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -12626,1202 +12626,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "webgl1_conformance", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=gl --use-cmd-decoder=passthrough --force_high_performance_gpu", - "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl_conformance_tests_output.json", - "--jobs=4" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "webgl_conformance_gl_passthrough_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 2 - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "webgl1_conformance", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=swiftshader --use-cmd-decoder=passthrough --force_high_performance_gpu", - "--test-filter=conformance/rendering/gl-drawelements.html", - "--jobs=4" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "webgl_conformance_swangle_passthrough_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - } - ] - }, - "Mac FYI Retina Debug (AMD)": { - "gtest_tests": [ - { - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "angle_unittests", - "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/", - "use_isolated_scripts_api": true - }, - { - "args": [ - "--use-cmd-decoder=passthrough", - "--use-gl=angle", - "--use-gpu-in-tests" - ], - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "name": "gl_tests_passthrough", - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 2 - }, - "test": "gl_tests", - "test_id_prefix": "ninja://gpu:gl_tests/" - }, - { - "args": [ - "--use-gpu-in-tests" - ], - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "gl_unittests", - "test_id_prefix": "ninja://ui/gl:gl_unittests/" - }, - { - "args": [ - "--use-gpu-in-tests" - ], - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "gles2_conform_test", - "test_id_prefix": "ninja://gpu/gles2_conform_support:gles2_conform_test/" - }, - { - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "gpu_unittests", - "test_id_prefix": "ninja://gpu:gpu_unittests/" - }, - { - "args": [ - "--gtest_filter=*Detection*", - "--use-gpu-in-tests" - ], - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "services_unittests", - "test_id_prefix": "ninja://services:services_unittests/" - } - ], - "isolated_scripts": [ - { - "args": [ - "context_lost", - "--show-stdout", - "--browser=debug", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "context_lost_passthrough_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "gpu_process", - "--show-stdout", - "--browser=debug", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "gpu_process_launch_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "hardware_accelerated_feature", - "--show-stdout", - "--browser=debug", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "hardware_accelerated_feature_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "info_collection", - "--show-stdout", - "--browser=debug", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", - "--expected-vendor-id", - "1002", - "--expected-device-id", - "6821" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "info_collection_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "maps", - "--show-stdout", - "--browser=debug", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", - "--dont-restore-color-profile-after-test", - "--test-machine-name", - "${buildername}", - "--git-revision=${got_revision}" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "maps_pixel_passthrough_test", - "precommit_args": [ - "--gerrit-issue=${patch_issue}", - "--gerrit-patchset=${patch_set}", - "--buildbucket-id=${buildbucket_build_id}" - ], - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "pixel", - "--show-stdout", - "--browser=debug", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", - "--dont-restore-color-profile-after-test", - "--test-machine-name", - "${buildername}", - "--git-revision=${got_revision}" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "pixel_skia_gold_passthrough_test", - "precommit_args": [ - "--gerrit-issue=${patch_issue}", - "--gerrit-patchset=${patch_set}", - "--buildbucket-id=${buildbucket_build_id}" - ], - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "screenshot_sync", - "--show-stdout", - "--browser=debug", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", - "--dont-restore-color-profile-after-test" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "screenshot_sync_passthrough_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "trace_test", - "--show-stdout", - "--browser=debug", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "trace_test", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "webgl1_conformance", - "--show-stdout", - "--browser=debug", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=gl --use-cmd-decoder=passthrough --force_high_performance_gpu", - "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl_conformance_tests_output.json", - "--jobs=4" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "webgl_conformance_gl_passthrough_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 2 - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - } - ] - }, - "Mac FYI Retina Release (AMD)": { - "gtest_tests": [ - { - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "angle_unittests", - "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/", - "use_isolated_scripts_api": true - }, - { - "args": [ - "--enable-gpu", - "--test-launcher-bot-mode", - "--test-launcher-jobs=1", - "--gtest_filter=TabCaptureApiPixelTest.EndToEnd*" - ], - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "name": "tab_capture_end2end_tests", - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "browser_tests", - "test_id_prefix": "ninja://chrome/test:browser_tests/" - }, - { - "args": [ - "--use-cmd-decoder=passthrough", - "--use-gl=angle", - "--use-gpu-in-tests" - ], - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "name": "gl_tests_passthrough", - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 2 - }, - "test": "gl_tests", - "test_id_prefix": "ninja://gpu:gl_tests/" - }, - { - "args": [ - "--use-gpu-in-tests" - ], - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "gl_unittests", - "test_id_prefix": "ninja://ui/gl:gl_unittests/" - }, - { - "args": [ - "--use-gpu-in-tests" - ], - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "gles2_conform_test", - "test_id_prefix": "ninja://gpu/gles2_conform_support:gles2_conform_test/" - }, - { - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "gpu_unittests", - "test_id_prefix": "ninja://gpu:gpu_unittests/" - }, - { - "args": [ - "--gtest_filter=*Detection*", - "--use-gpu-in-tests" - ], - "merge": { - "script": "//testing/merge_scripts/standard_gtest_merge.py" - }, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "services_unittests", - "test_id_prefix": "ninja://services:services_unittests/" - } - ], - "isolated_scripts": [ - { - "args": [ - "context_lost", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "context_lost_passthrough_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "gpu_process", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "gpu_process_launch_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "hardware_accelerated_feature", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "hardware_accelerated_feature_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "info_collection", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", - "--expected-vendor-id", - "1002", - "--expected-device-id", - "6821" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "info_collection_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "maps", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", - "--dont-restore-color-profile-after-test", - "--test-machine-name", - "${buildername}", - "--git-revision=${got_revision}" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "maps_pixel_passthrough_test", - "precommit_args": [ - "--gerrit-issue=${patch_issue}", - "--gerrit-patchset=${patch_set}", - "--buildbucket-id=${buildbucket_build_id}" - ], - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "mediapipe", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_higher_performance_gpu --use-cmd-decoder=passthrough --use-gl=angle" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "mediapipe_passthrough_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "pixel", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", - "--dont-restore-color-profile-after-test", - "--test-machine-name", - "${buildername}", - "--git-revision=${got_revision}" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "pixel_skia_gold_passthrough_test", - "precommit_args": [ - "--gerrit-issue=${patch_issue}", - "--gerrit-patchset=${patch_set}", - "--buildbucket-id=${buildbucket_build_id}" - ], - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "screenshot_sync", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", - "--dont-restore-color-profile-after-test" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "screenshot_sync_passthrough_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "trace_test", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "trace_test", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ - "webcodecs", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "webcodecs_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "containment_type": "AUTO", - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "1002:6821", - "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -13838,7 +12645,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --enable-features=EGLDualGPURendering,ForceHighPerformanceGPUForWebGL", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=gl --use-cmd-decoder=passthrough --force_high_performance_gpu", "--webgl-conformance-version=2.0.1", "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json", "--jobs=4" @@ -13847,7 +12654,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "webgl2_conformance_metal_passthrough_tests", + "name": "webgl2_conformance_gl_passthrough_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -13860,9 +12667,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -13901,9 +12708,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -13921,7 +12728,530 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --enable-features=EGLDualGPURendering,ForceHighPerformanceGPUForWebGL", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=swiftshader --use-cmd-decoder=passthrough --force_high_performance_gpu", + "--test-filter=conformance/rendering/gl-drawelements.html", + "--jobs=4" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgl_conformance_swangle_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + } + ] + }, + "Mac FYI Retina Debug (AMD)": { + "gtest_tests": [ + { + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "angle_unittests", + "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/", + "use_isolated_scripts_api": true + }, + { + "args": [ + "--use-cmd-decoder=passthrough", + "--use-gl=angle", + "--use-gpu-in-tests" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "name": "gl_tests_passthrough", + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test": "gl_tests", + "test_id_prefix": "ninja://gpu:gl_tests/" + }, + { + "args": [ + "--use-gpu-in-tests" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gl_unittests", + "test_id_prefix": "ninja://ui/gl:gl_unittests/" + }, + { + "args": [ + "--use-gpu-in-tests" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gles2_conform_test", + "test_id_prefix": "ninja://gpu/gles2_conform_support:gles2_conform_test/" + }, + { + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gpu_unittests", + "test_id_prefix": "ninja://gpu:gpu_unittests/" + }, + { + "args": [ + "--gtest_filter=*Detection*", + "--use-gpu-in-tests" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "services_unittests", + "test_id_prefix": "ninja://services:services_unittests/" + } + ], + "isolated_scripts": [ + { + "args": [ + "context_lost", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "context_lost_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "gpu_process", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "gpu_process_launch_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "hardware_accelerated_feature", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "hardware_accelerated_feature_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "info_collection", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", + "--expected-vendor-id", + "1002", + "--expected-device-id", + "67ef" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "info_collection_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "maps", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", + "--dont-restore-color-profile-after-test", + "--test-machine-name", + "${buildername}", + "--git-revision=${got_revision}" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "maps_pixel_passthrough_test", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "pixel", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", + "--dont-restore-color-profile-after-test", + "--test-machine-name", + "${buildername}", + "--git-revision=${got_revision}" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "pixel_skia_gold_passthrough_test", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "screenshot_sync_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "trace_test", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "trace_test", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgl1_conformance", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=gl --use-cmd-decoder=passthrough --force_high_performance_gpu", "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl_conformance_tests_output.json", "--jobs=4" ], @@ -13929,6 +13259,762 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, + "name": "webgl_conformance_gl_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + } + ] + }, + "Mac FYI Retina Release (AMD)": { + "gtest_tests": [ + { + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "angle_unittests", + "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/", + "use_isolated_scripts_api": true + }, + { + "args": [ + "--enable-gpu", + "--test-launcher-bot-mode", + "--test-launcher-jobs=1", + "--gtest_filter=TabCaptureApiPixelTest.EndToEnd*" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "name": "tab_capture_end2end_tests", + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "browser_tests", + "test_id_prefix": "ninja://chrome/test:browser_tests/" + }, + { + "args": [ + "--use-cmd-decoder=passthrough", + "--use-gl=angle", + "--use-gpu-in-tests" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "name": "gl_tests_passthrough", + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test": "gl_tests", + "test_id_prefix": "ninja://gpu:gl_tests/" + }, + { + "args": [ + "--use-gpu-in-tests" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gl_unittests", + "test_id_prefix": "ninja://ui/gl:gl_unittests/" + }, + { + "args": [ + "--use-gpu-in-tests" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gles2_conform_test", + "test_id_prefix": "ninja://gpu/gles2_conform_support:gles2_conform_test/" + }, + { + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "gpu_unittests", + "test_id_prefix": "ninja://gpu:gpu_unittests/" + }, + { + "args": [ + "--gtest_filter=*Detection*", + "--use-gpu-in-tests" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test": "services_unittests", + "test_id_prefix": "ninja://services:services_unittests/" + } + ], + "isolated_scripts": [ + { + "args": [ + "context_lost", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "context_lost_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "gpu_process", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "gpu_process_launch_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "hardware_accelerated_feature", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "hardware_accelerated_feature_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "info_collection", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", + "--expected-vendor-id", + "1002", + "--expected-device-id", + "67ef" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "info_collection_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "maps", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", + "--dont-restore-color-profile-after-test", + "--test-machine-name", + "${buildername}", + "--git-revision=${got_revision}" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "maps_pixel_passthrough_test", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "mediapipe", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_higher_performance_gpu --use-cmd-decoder=passthrough --use-gl=angle" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "mediapipe_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "pixel", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", + "--dont-restore-color-profile-after-test", + "--test-machine-name", + "${buildername}", + "--git-revision=${got_revision}" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "pixel_skia_gold_passthrough_test", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "screenshot_sync_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "trace_test", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "trace_test", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webcodecs", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webcodecs_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgl2_conformance", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=gl --use-cmd-decoder=passthrough --force_high_performance_gpu", + "--webgl-conformance-version=2.0.1", + "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json", + "--jobs=4" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgl2_conformance_gl_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 20 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgl2_conformance", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu", + "--webgl-conformance-version=2.0.1", + "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json", + "--jobs=4", + "--enable-metal-debug-layers" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgl2_conformance_metal_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 20 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgl1_conformance", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=gl --use-cmd-decoder=passthrough --force_high_performance_gpu", + "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl_conformance_tests_output.json", + "--jobs=4" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "webgl_conformance_gl_passthrough_tests", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "can_use_on_swarming_builders": true, + "containment_type": "AUTO", + "dimension_sets": [ + { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + } + ], + "idempotent": false, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ + "webgl1_conformance", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu", + "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl_conformance_tests_output.json", + "--jobs=4", + "--enable-metal-debug-layers" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, "name": "webgl_conformance_metal_passthrough_tests", "resultdb": { "enable": true, @@ -13942,9 +14028,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -13983,9 +14069,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ],
diff --git a/testing/buildbot/chromium.gpu.json b/testing/buildbot/chromium.gpu.json index 18eee6f..56a8cbc 100644 --- a/testing/buildbot/chromium.gpu.json +++ b/testing/buildbot/chromium.gpu.json
@@ -2093,9 +2093,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2122,9 +2122,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2148,9 +2148,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2188,9 +2188,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2226,9 +2226,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2264,9 +2264,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2287,7 +2287,7 @@ "--expected-vendor-id", "1002", "--expected-device-id", - "6821" + "67ef" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { @@ -2306,9 +2306,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2353,9 +2353,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2400,9 +2400,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2439,9 +2439,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2477,9 +2477,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2517,9 +2517,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2544,9 +2544,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2574,9 +2574,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2602,9 +2602,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2628,9 +2628,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2668,9 +2668,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2706,9 +2706,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2744,9 +2744,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2767,7 +2767,7 @@ "--expected-vendor-id", "1002", "--expected-device-id", - "6821" + "67ef" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { @@ -2786,9 +2786,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2833,9 +2833,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2880,9 +2880,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2920,9 +2920,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2958,9 +2958,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ], @@ -2998,9 +2998,9 @@ { "cpu": "x86-64", "display_attached": "1", - "gpu": "1002:6821", + "gpu": "1002:67ef", "hidpi": "1", - "os": "Mac-12.1", + "os": "Mac-13.2.1", "pool": "chromium.tests.gpu" } ],
diff --git a/testing/buildbot/generate_buildbot_json.py b/testing/buildbot/generate_buildbot_json.py index 24ced11..c199135 100755 --- a/testing/buildbot/generate_buildbot_json.py +++ b/testing/buildbot/generate_buildbot_json.py
@@ -418,16 +418,18 @@ args.pyl_files_dir = args.pyl_files_dir or THIS_DIR args.output_dir = args.output_dir or args.pyl_files_dir - def pyl_file_path(filename): + def absolute_file_path(filename): return os.path.join(args.pyl_files_dir, filename) - args.waterfalls_pyl_path = pyl_file_path('waterfalls.pyl') - args.mixins_pyl_path = pyl_file_path('mixins.pyl') - args.test_suites_pyl_path = pyl_file_path('test_suites.pyl') - args.test_suite_exceptions_pyl_path = pyl_file_path( + args.waterfalls_pyl_path = absolute_file_path('waterfalls.pyl') + args.mixins_pyl_path = absolute_file_path('mixins.pyl') + args.test_suites_pyl_path = absolute_file_path('test_suites.pyl') + args.test_suite_exceptions_pyl_path = absolute_file_path( 'test_suite_exceptions.pyl') - args.gn_isolate_map_pyl_path = pyl_file_path('gn_isolate_map.pyl') - args.variants_pyl_path = pyl_file_path('variants.pyl') + args.gn_isolate_map_pyl_path = absolute_file_path('gn_isolate_map.pyl') + args.variants_pyl_path = absolute_file_path('variants.pyl') + args.autoshard_exceptions_json_path = absolute_file_path( + 'autoshard_exceptions.json') return args @@ -449,8 +451,8 @@ return ast.literal_eval(self.read_file(pyl_file_path)) except (SyntaxError, ValueError) as e: # pragma: no cover six.raise_from( - BBGenErr('Failed to parse pyl file "%s": %s' % (pyl_file_path, e)), - e) # pragma: no cover + BBGenErr('Failed to parse pyl file "%s": %s' % + (pyl_file_path, e)), e) # pragma: no cover # pylint: enable=inconsistent-return-statements # TOOD(kbr): require that os_type be specified for all bots in waterfalls.pyl. @@ -1571,6 +1573,12 @@ filters = self.args.waterfall_filters result = collections.defaultdict(dict) + if os.path.exists(self.args.autoshard_exceptions_json_path): + autoshards = json.loads( + self.read_file(self.args.autoshard_exceptions_json_path)) + else: + autoshards = {} + required_fields = ('name',) for waterfall in self.waterfalls: for field in required_fields: @@ -1586,6 +1594,30 @@ all_tests = self.generate_output_tests(waterfall) result[waterfall['name']] = all_tests + if not autoshards: + continue + for builder, test_spec in all_tests.items(): + for target_type, test_list in test_spec.items(): + if target_type == 'additional_compile_targets': + continue + for test_dict in test_list: + # Suites that apply variants or other customizations will create + # test_dicts that have "name" value that is different from the + # "test" value. Regular suites without any variations will only have + # "test" and no "name". + # e.g. name = vulkan_swiftshader_content_browsertests, but + # test = content_browsertests and + # test_id_prefix = "ninja://content/test:content_browsertests/" + # Check for "name" first and then fallback to "test" + test_name = test_dict.get('name') or test_dict.get('test') + if not test_name: + continue + shard_info = autoshards.get(waterfall['name'], + {}).get(builder, {}).get(test_name) + if shard_info: + test_dict['swarming'].update( + {'shards': int(shard_info['shards'])}) + # Add do not edit warning for tests in result.values(): tests['AAAAA1 AUTOGENERATED FILE DO NOT EDIT'] = {}
diff --git a/testing/buildbot/generate_buildbot_json_unittest.py b/testing/buildbot/generate_buildbot_json_unittest.py index 59a1d62e..2ba3ff6 100755 --- a/testing/buildbot/generate_buildbot_json_unittest.py +++ b/testing/buildbot/generate_buildbot_json_unittest.py
@@ -75,6 +75,7 @@ luci_milo_cfg, project_pyl='{"validate_source_side_specs_have_builder": True}', exceptions=EMPTY_PYL_FILE, + autoshard_exceptions=json.dumps({}), mixins=EMPTY_PYL_FILE, gn_isolate_map=EMPTY_PYL_FILE, variants=EMPTY_PYL_FILE): @@ -87,6 +88,7 @@ args.waterfalls_pyl_path: waterfalls, args.test_suites_pyl_path: test_suites, args.test_suite_exceptions_pyl_path: exceptions, + args.autoshard_exceptions_json_path: autoshard_exceptions, args.mixins_pyl_path: mixins, args.gn_isolate_map_pyl_path: gn_isolate_map, args.variants_pyl_path: variants, @@ -1218,6 +1220,22 @@ } """ +AUTOSHARD_EXCEPTIONS = json.dumps({ + 'chromium.test': { + 'Fake Tester': { + 'foo_test': { + 'shards': 20, + }, + 'foo_test_apk': { + 'shards': 2, + }, + 'swarming_test a_variant': { + 'shards': 10, + }, + } + }, +}) + NO_BAR_TEST_EXCEPTIONS = """\ { 'bar_test': { @@ -2787,6 +2805,27 @@ fbb.check_output_file_consistency(verbose=True) self.assertFalse(fbb.printed_lines) + def test_autoshard_exceptions(self): + fbb = FakeBBGen(self.args, + FOO_GTESTS_WATERFALL_MIXIN_WATERFALL, + FOO_TEST_SUITE, + LUCI_MILO_CFG, + exceptions=SCRIPT_WITH_ARGS_SWARMING_EXCEPTIONS, + autoshard_exceptions=AUTOSHARD_EXCEPTIONS, + mixins=SWARMING_MIXINS) + fbb.check_output_file_consistency(verbose=True) + self.assertFalse(fbb.printed_lines) + + def test_autoshard_exceptions_variant_names(self): + fbb = FakeBBGen(self.args, + MATRIX_GTEST_SUITE_WATERFALL, + MATRIX_COMPOUND_TEST_WITH_TEST_KEY, + LUCI_MILO_CFG, + autoshard_exceptions=AUTOSHARD_EXCEPTIONS, + variants=VARIANTS_FILE) + fbb.check_output_file_consistency(verbose=True) + self.assertFalse(fbb.printed_lines) + def test_builder(self): fbb = FakeBBGen(self.args, FOO_GTESTS_BUILDER_MIXIN_WATERFALL,
diff --git a/testing/buildbot/internal.chromeos.fyi.json b/testing/buildbot/internal.chromeos.fyi.json index a996be2..a8641e4c 100644 --- a/testing/buildbot/internal.chromeos.fyi.json +++ b/testing/buildbot/internal.chromeos.fyi.json
@@ -1140,7 +1140,7 @@ "args": [], "autotest_name": "tast.chrome-from-tls", "cros_board": "jacuzzi", - "cros_img": "jacuzzi-release/R114-15410.0.0", + "cros_img": "jacuzzi-release/R114-15419.0.0", "name": "chrome_all_tast_tests JACUZZI_RELEASE_CHROME_FROM_TLS_LKGM", "shards": 10, "swarming": {}, @@ -1340,7 +1340,7 @@ { "args": [], "cros_board": "hana", - "cros_img": "hana-release/R114-15410.0.0", + "cros_img": "hana-release/R114-15416.0.0", "name": "lacros_all_tast_tests HANA_RELEASE_DEV", "swarming": {}, "tast_expr": "(\"group:mainline\" && \"dep:lacros\" && !informational)", @@ -1435,7 +1435,7 @@ { "args": [], "cros_board": "hana", - "cros_img": "hana-release/R114-15410.0.0", + "cros_img": "hana-release/R114-15416.0.0", "name": "ozone_unittests HANA_RELEASE_DEV", "swarming": {}, "test": "ozone_unittests", @@ -1523,7 +1523,7 @@ { "args": [], "cros_board": "hana", - "cros_img": "hana-release/R114-15410.0.0", + "cros_img": "hana-release/R114-15416.0.0", "name": "viz_unittests HANA_RELEASE_DEV", "swarming": {}, "test": "viz_unittests",
diff --git a/testing/buildbot/manage.py b/testing/buildbot/manage.py index b16c12e..c4b68c9a 100755 --- a/testing/buildbot/manage.py +++ b/testing/buildbot/manage.py
@@ -432,6 +432,9 @@ result = 0 ninja_targets_seen = set() for filepath in glob.glob(os.path.join(THIS_DIR, '*.json')): + # This file is formatted differently from other json files + if 'autoshard_exceptions' in filepath: + continue if not process_file(args.mode, args.test_name, tests_location, filepath, ninja_targets, ninja_targets_seen): result = 1
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl index fd99acab..f02b884 100644 --- a/testing/buildbot/mixins.pyl +++ b/testing/buildbot/mixins.pyl
@@ -971,9 +971,9 @@ 'swarming': { 'dimensions': { 'cpu': 'x86-64', - 'gpu': '1002:6821', + 'gpu': '1002:67ef', 'hidpi': '1', - 'os': 'Mac-12.1', + 'os': 'Mac-13.2.1', 'pool': 'chromium.tests.gpu', 'display_attached': '1', },
diff --git a/testing/buildbot/query_optimal_shard_counts.py b/testing/buildbot/query_optimal_shard_counts.py index d8ffc9b5..ac16ea7 100755 --- a/testing/buildbot/query_optimal_shard_counts.py +++ b/testing/buildbot/query_optimal_shard_counts.py
@@ -362,7 +362,10 @@ data.setdefault(builder_group, {}).setdefault(builder_name, {}).update(shard_dict) - output_data = json.dumps(data, indent=4, separators=(',', ': ')) + output_data = json.dumps(data, + indent=4, + separators=(',', ': '), + sort_keys=True) if opts.output_file: with open(opts.output_file, 'w') as output_file: output_file.write(output_data)
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 523ace0..037e9ced 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -4171,11 +4171,7 @@ # upstream test coverage without the capacity hit from WebGL 2. 'Linux V8 FYI Release (NVIDIA)', 'Linux V8 FYI Release - pointer compression (NVIDIA)', - # Not enough capacity on Mac AMD https://crbug.com/1375306. - 'Mac FYI Retina ASAN (AMD)', - 'Mac FYI Retina Release (AMD)', 'Mac V8 FYI Release (Intel)', - 'mac-angle-chromium-amd', ], }, 'webgl2_conformance_gles_passthrough_tests': { @@ -4231,23 +4227,17 @@ 'Mac FYI Retina ASAN (AMD)': { 'args': [ '--extra-browser-args=--disable-metal-shader-cache', - # This slows down tests and we are currently having AMD Mac capacity - # issues. - # '--enable-metal-debug-layers', + '--enable-metal-debug-layers', ], }, 'Mac FYI Retina Release (AMD)': { 'args': [ - # This slows down tests and we are currently having AMD Mac capacity - # issues. - # '--enable-metal-debug-layers', + '--enable-metal-debug-layers', ], }, 'mac-angle-chromium-amd': { 'args': [ - # This slows down tests and we are currently having AMD Mac capacity - # issues. - # '--enable-metal-debug-layers', + '--enable-metal-debug-layers', ], }, 'mac-angle-chromium-intel': { @@ -4266,6 +4256,21 @@ '--extra-browser-args': '--use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu', }, }, + 'Mac FYI Retina ASAN (AMD)': { + 'args': { + '--extra-browser-args': '--use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu', + }, + }, + 'Mac FYI Retina Release (AMD)': { + 'args': { + '--extra-browser-args': '--use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu', + }, + }, + 'mac-angle-chromium-amd': { + 'args': { + '--extra-browser-args': '--use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu', + }, + }, }, }, 'webgl2_conformance_validating_tests': { @@ -4306,7 +4311,7 @@ }, }, }, - 'webgl_conformance_gl_passthrough_tests 1002:6821': { + 'webgl_conformance_gl_passthrough_tests 1002:67ef': { 'modifications': { 'mac_optional_gpu_tests_rel': { 'args': [ @@ -4344,23 +4349,17 @@ 'Mac FYI Retina ASAN (AMD)': { 'args': [ '--extra-browser-args=--disable-metal-shader-cache', - # This slows down tests and we are currently having AMD Mac capacity - # issues. - # '--enable-metal-debug-layers', + '--enable-metal-debug-layers', ], }, 'Mac FYI Retina Release (AMD)': { 'args': [ - # This slows down tests and we are currently having AMD Mac capacity - # issues. - # '--enable-metal-debug-layers', + '--enable-metal-debug-layers', ], }, 'mac-angle-chromium-amd': { 'args': [ - # This slows down tests and we are currently having AMD Mac capacity - # issues. - # '--enable-metal-debug-layers', + '--enable-metal-debug-layers', ], }, 'mac-angle-chromium-intel': { @@ -4379,6 +4378,21 @@ '--extra-browser-args': '--use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu', }, }, + 'Mac FYI Retina ASAN (AMD)': { + 'args': { + '--extra-browser-args': '--use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu', + }, + }, + 'Mac FYI Retina Release (AMD)': { + 'args': { + '--extra-browser-args': '--use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu', + }, + }, + 'mac-angle-chromium-amd': { + 'args': { + '--extra-browser-args': '--use-gl=angle --use-angle=metal --use-cmd-decoder=passthrough --force_high_performance_gpu', + }, + }, }, }, 'webgl_conformance_tests': { @@ -4455,14 +4469,12 @@ }, }, 'webgpu_blink_web_tests_with_backend_validation': { - # Remove from bots where capacity is constrained. 'remove_from': [ # TODO(crbug.com/1363409): Enable these once they're shown to work on # Android. 'Dawn Android arm DEPS Release (Pixel 4)', 'Dawn Android arm Release (Pixel 4)', - 'Dawn Mac x64 DEPS Release (AMD)', - 'Dawn Mac x64 Release (AMD)', + # Remove from bots where capacity is constrained. 'Dawn Win10 x64 DEPS Release (Intel)', 'Dawn Win10 x64 Release (Intel)', 'linux-code-coverage', @@ -4476,9 +4488,6 @@ # Android. 'Dawn Android arm DEPS Release (Pixel 4)', 'Dawn Android arm Release (Pixel 4)', - # GPU hang kills the bot. https://crbug.com/dawn/1511 - 'Dawn Mac x64 Release (AMD)', - 'Dawn Mac x64 DEPS Release (AMD)', ], 'modifications': { # These tests must run with a GPU. @@ -4528,14 +4537,12 @@ }, }, 'webgpu_cts_with_validation_tests': { - # Remove from bots where capacity is constrained. 'remove_from': [ # TODO(crbug.com/1363409): Enable these once they're shown to work on # Android. 'Dawn Android arm DEPS Release (Pixel 4)', 'Dawn Android arm Release (Pixel 4)', - 'Dawn Mac x64 DEPS Release (AMD)', - 'Dawn Mac x64 Release (AMD)', + # Remove from bots where capacity is constrained. 'Dawn Win10 x64 DEPS Release (Intel)', 'Dawn Win10 x64 Release (Intel)', 'Dawn Win10 x86 DEPS Release (Intel)', @@ -4557,8 +4564,6 @@ 'webgpu_swiftshader_web_platform_cts_with_validation_tests': { # Remove from bots where capacity is constrained. 'remove_from': [ - 'Dawn Mac x64 DEPS Release (AMD)', - 'Dawn Mac x64 Release (AMD)', 'Dawn Win10 x64 DEPS Release (Intel)', 'Dawn Win10 x64 Release (Intel)', 'Dawn Win10 x86 DEPS Release (Intel)',
diff --git a/testing/buildbot/unittest_expectations/test_autoshard_exceptions/chromium.ci.json b/testing/buildbot/unittest_expectations/test_autoshard_exceptions/chromium.ci.json new file mode 100644 index 0000000..0269dcb --- /dev/null +++ b/testing/buildbot/unittest_expectations/test_autoshard_exceptions/chromium.ci.json
@@ -0,0 +1,25 @@ +{ + "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {}, + "AAAAA2 See generate_buildbot_json.py to make changes": {}, + "Fake Tester": { + "gtest_tests": [ + { + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "integrity": "high" + } + ], + "expiration": 120, + "shards": 20, + "value": "exception" + }, + "test": "foo_test" + } + ] + } +}
diff --git a/testing/buildbot/unittest_expectations/test_autoshard_exceptions/chromium.test.json b/testing/buildbot/unittest_expectations/test_autoshard_exceptions/chromium.test.json new file mode 100644 index 0000000..1efcbb6 --- /dev/null +++ b/testing/buildbot/unittest_expectations/test_autoshard_exceptions/chromium.test.json
@@ -0,0 +1,26 @@ +{ + "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {}, + "AAAAA2 See generate_buildbot_json.py to make changes": {}, + "Fake Tester": { + "gtest_tests": [ + { + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "integrity": "high", + "os": "Linux" + } + ], + "expiration": 120, + "shards": 20, + "value": "exception" + }, + "test": "foo_test" + } + ] + } +}
diff --git a/testing/buildbot/unittest_expectations/test_autoshard_exceptions_variant_names/chromium.ci.json b/testing/buildbot/unittest_expectations/test_autoshard_exceptions_variant_names/chromium.ci.json new file mode 100644 index 0000000..781e4d5 --- /dev/null +++ b/testing/buildbot/unittest_expectations/test_autoshard_exceptions_variant_names/chromium.ci.json
@@ -0,0 +1,26 @@ +{ + "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {}, + "AAAAA2 See generate_buildbot_json.py to make changes": {}, + "Fake Tester": { + "gtest_tests": [ + { + "args": [ + "--platform", + "device", + "--version", + "1" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "name": "swarming_test a_variant", + "swarming": { + "can_use_on_swarming_builders": true, + "shards": 10 + }, + "test": "foo_test_apk", + "variant_id": "a_variant" + } + ] + } +}
diff --git a/testing/buildbot/unittest_expectations/test_autoshard_exceptions_variant_names/chromium.test.json b/testing/buildbot/unittest_expectations/test_autoshard_exceptions_variant_names/chromium.test.json new file mode 100644 index 0000000..a17969a --- /dev/null +++ b/testing/buildbot/unittest_expectations/test_autoshard_exceptions_variant_names/chromium.test.json
@@ -0,0 +1,31 @@ +{ + "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {}, + "AAAAA2 See generate_buildbot_json.py to make changes": {}, + "Fake Tester": { + "gtest_tests": [ + { + "args": [ + "--platform", + "device", + "--version", + "1" + ], + "merge": { + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "name": "swarming_test a_variant", + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Linux" + } + ], + "shards": 10 + }, + "test": "foo_test_apk", + "variant_id": "a_variant" + } + ] + } +}
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index d1da0f2c..75d3e60 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -104,7 +104,7 @@ }, # Not enough capacity on Mac AMD https://crbug.com/1380184. # 'MAC_RETINA_AMD_GPU_STABLE': { - # 'identifier': '1002:6821', + # 'identifier': '1002:67ef', # 'mixins': [ # 'mac_retina_amd_gpu_stable', # ], @@ -485,8 +485,8 @@ 'CROS_HANA_RELEASE_DEV': { 'skylab': { 'cros_board': 'hana', - 'cros_chrome_version': '114.0.5692.0', - 'cros_img': 'hana-release/R114-15410.0.0', + 'cros_chrome_version': '114.0.5703.0', + 'cros_img': 'hana-release/R114-15416.0.0', }, 'enabled': True, 'identifier': 'HANA_RELEASE_DEV', @@ -548,8 +548,8 @@ 'CROS_JACUZZI_RELEASE_CHROME_FROM_TLS_LKGM': { 'skylab': { 'cros_board': 'jacuzzi', - 'cros_chrome_version': '114.0.5692.0', - 'cros_img': 'jacuzzi-release/R114-15410.0.0', + 'cros_chrome_version': '114.0.5707.0', + 'cros_img': 'jacuzzi-release/R114-15419.0.0', 'tast_expr': '("group:mainline" && !informational)', 'autotest_name': 'tast.chrome-from-tls', 'shards': 10,
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 65b257eef..2f0fff1 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -8538,6 +8538,21 @@ ] } ], + "OmniboxAdaptNarrowTabletWindows": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OmniboxAdaptNarrowTabletWindows" + ] + } + ] + } + ], "OmniboxBundledExperimentV1": [ { "platforms": [ @@ -10247,15 +10262,13 @@ { "name": "Enabled_20230101", "enable_features": [ - "CrosPrivacyHub", - "CrosPrivacyHubV0" + "CrosPrivacyHub" ] }, { "name": "Enabled_20230101_Dogfood", "enable_features": [ - "CrosPrivacyHub", - "CrosPrivacyHubV0" + "CrosPrivacyHub" ] } ]
diff --git a/third_party/bidimapper/README.chromium b/third_party/bidimapper/README.chromium index f05fa2f..94ee79a 100644 --- a/third_party/bidimapper/README.chromium +++ b/third_party/bidimapper/README.chromium
@@ -1,10 +1,10 @@ Name: Implementation of WebDriver BiDi standard Short Name: chromium-bidi -URL: https://github.com/GoogleChromeLabs/chromium-bidi/archive/6cb3e528c752d91253c93737f8920a1e737aecd2.zip +URL: https://github.com/GoogleChromeLabs/chromium-bidi/archive/cf61814923d6ce44ba198d2296003028e17a472b.zip Version: 0 -Date: 2023-03-21 -Revision: 6cb3e528c752d91253c93737f8920a1e737aecd2 -SHA-512: 63432406f4751cc14369444b115acfcb29228f32fa98dfcf6fb0dcb9c8fcf56553d3ac47e324875f4a8a0b57621e1ad7aab25c4b85cee9504b049d89cdc19d03 +Date: 2023-04-12 +Revision: cf61814923d6ce44ba198d2296003028e17a472b +SHA-512: 72c6c5cd5ade0b586b6789ef06c4c2b50c02b31a0173f0f780962b9c777c7652681714bd442ec11402cd47b9866f03a546a29af081bfc1ab5ef552969c7d12d5 License: Apache 2.0 License File: LICENSE Security Critical: no
diff --git a/third_party/bidimapper/mapper.js b/third_party/bidimapper/mapper.js index d57c4fd..2f9012b5 100644 --- a/third_party/bidimapper/mapper.js +++ b/third_party/bidimapper/mapper.js
@@ -1,4 +1,4 @@ -var mapperTab=function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t={},s={},n={},r={},a={},o={},i={};!function(e){var t;Object.defineProperty(e,"__esModule",{value:!0}),e.getParsedType=e.ZodParsedType=e.util=void 0,function(e){e.assertNever=function(e){throw new Error},e.arrayToEnum=e=>{const t={};for(const s of e)t[s]=s;return t},e.getValidEnumValues=t=>{const s=e.objectKeys(t).filter((e=>"number"!=typeof t[t[e]])),n={};for(const e of s)n[e]=t[e];return e.objectValues(n)},e.objectValues=t=>e.objectKeys(t).map((function(e){return t[e]})),e.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{const t=[];for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.push(s);return t},e.find=(e,t)=>{for(const s of e)if(t(s))return s},e.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&isFinite(e)&&Math.floor(e)===e,e.joinValues=function(e,t=" | "){return e.map((e=>"string"==typeof e?`'${e}'`:e)).join(t)}}(t=e.util||(e.util={})),e.ZodParsedType=t.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);e.getParsedType=t=>{switch(typeof t){case"undefined":return e.ZodParsedType.undefined;case"string":return e.ZodParsedType.string;case"number":return isNaN(t)?e.ZodParsedType.nan:e.ZodParsedType.number;case"boolean":return e.ZodParsedType.boolean;case"function":return e.ZodParsedType.function;case"bigint":return e.ZodParsedType.bigint;case"object":return Array.isArray(t)?e.ZodParsedType.array:null===t?e.ZodParsedType.null:t.then&&"function"==typeof t.then&&t.catch&&"function"==typeof t.catch?e.ZodParsedType.promise:"undefined"!=typeof Map&&t instanceof Map?e.ZodParsedType.map:"undefined"!=typeof Set&&t instanceof Set?e.ZodParsedType.set:"undefined"!=typeof Date&&t instanceof Date?e.ZodParsedType.date:e.ZodParsedType.object;default:return e.ZodParsedType.unknown}}}(i),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.setErrorMap=e.overrideErrorMap=e.defaultErrorMap=e.ZodError=e.quotelessJson=e.ZodIssueCode=void 0;const t=i;e.ZodIssueCode=t.util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of"]);e.quotelessJson=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class s extends Error{constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const t=e||function(e){return e.message},s={_errors:[]},n=e=>{for(const r of e.issues)if("invalid_union"===r.code)r.unionErrors.map(n);else if("invalid_return_type"===r.code)n(r.returnTypeError);else if("invalid_arguments"===r.code)n(r.argumentsError);else if(0===r.path.length)s._errors.push(t(r));else{let e=s,n=0;for(;n<r.path.length;){const s=r.path[n];n===r.path.length-1?(e[s]=e[s]||{_errors:[]},e[s]._errors.push(t(r))):e[s]=e[s]||{_errors:[]},e=e[s],n++}}};return n(this),s}toString(){return this.message}get message(){return JSON.stringify(this.issues,null,2)}get isEmpty(){return 0===this.issues.length}flatten(e=(e=>e.message)){const t={},s=[];for(const n of this.issues)n.path.length>0?(t[n.path[0]]=t[n.path[0]]||[],t[n.path[0]].push(e(n))):s.push(e(n));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}}e.ZodError=s,s.create=e=>new s(e);e.defaultErrorMap=(s,n)=>{let r;switch(s.code){case e.ZodIssueCode.invalid_type:r=s.received===t.ZodParsedType.undefined?"Required":`Expected ${s.expected}, received ${s.received}`;break;case e.ZodIssueCode.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(s.expected)}`;break;case e.ZodIssueCode.unrecognized_keys:r=`Unrecognized key(s) in object: ${t.util.joinValues(s.keys,", ")}`;break;case e.ZodIssueCode.invalid_union:r="Invalid input";break;case e.ZodIssueCode.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${t.util.joinValues(s.options)}`;break;case e.ZodIssueCode.invalid_enum_value:r=`Invalid enum value. Expected ${t.util.joinValues(s.options)}, received '${s.received}'`;break;case e.ZodIssueCode.invalid_arguments:r="Invalid function arguments";break;case e.ZodIssueCode.invalid_return_type:r="Invalid function return type";break;case e.ZodIssueCode.invalid_date:r="Invalid date";break;case e.ZodIssueCode.invalid_string:r="regex"!==s.validation?`Invalid ${s.validation}`:"Invalid";break;case e.ZodIssueCode.too_small:r="array"===s.type?`Array must contain ${s.inclusive?"at least":"more than"} ${s.minimum} element(s)`:"string"===s.type?`String must contain ${s.inclusive?"at least":"over"} ${s.minimum} character(s)`:"number"===s.type?`Number must be greater than ${s.inclusive?"or equal to ":""}${s.minimum}`:"Invalid input";break;case e.ZodIssueCode.too_big:r="array"===s.type?`Array must contain ${s.inclusive?"at most":"less than"} ${s.maximum} element(s)`:"string"===s.type?`String must contain ${s.inclusive?"at most":"under"} ${s.maximum} character(s)`:"number"===s.type?`Number must be less than ${s.inclusive?"or equal to ":""}${s.maximum}`:"Invalid input";break;case e.ZodIssueCode.custom:r="Invalid input";break;case e.ZodIssueCode.invalid_intersection_types:r="Intersection results could not be merged";break;case e.ZodIssueCode.not_multiple_of:r=`Number must be a multiple of ${s.multipleOf}`;break;default:r=n.defaultError,t.util.assertNever(s)}return{message:r}},e.overrideErrorMap=e.defaultErrorMap;e.setErrorMap=t=>{e.overrideErrorMap=t}}(o),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isAsync=e.isValid=e.isDirty=e.isAborted=e.OK=e.DIRTY=e.INVALID=e.ParseStatus=e.addIssueToContext=e.EMPTY_PATH=e.makeIssue=void 0;const t=o;e.makeIssue=e=>{const{data:t,path:s,errorMaps:n,issueData:r}=e,a=[...s,...r.path||[]],o={...r,path:a};let i="";const d=n.filter((e=>!!e)).slice().reverse();for(const e of d)i=e(o,{data:t,defaultError:i}).message;return{...r,path:a,message:r.message||i}},e.EMPTY_PATH=[],e.addIssueToContext=function(s,n){const r=e.makeIssue({issueData:n,data:s.data,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,t.overrideErrorMap,t.defaultErrorMap].filter((e=>!!e))});s.common.issues.push(r)};class s{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(t,s){const n=[];for(const r of s){if("aborted"===r.status)return e.INVALID;"dirty"===r.status&&t.dirty(),n.push(r.value)}return{status:t.value,value:n}}static async mergeObjectAsync(e,t){const n=[];for(const e of t)n.push({key:await e.key,value:await e.value});return s.mergeObjectSync(e,n)}static mergeObjectSync(t,s){const n={};for(const r of s){const{key:s,value:a}=r;if("aborted"===s.status)return e.INVALID;if("aborted"===a.status)return e.INVALID;"dirty"===s.status&&t.dirty(),"dirty"===a.status&&t.dirty(),(void 0!==a.value||r.alwaysSet)&&(n[s.value]=a.value)}return{status:t.value,value:n}}}e.ParseStatus=s,e.INVALID=Object.freeze({status:"aborted"});e.DIRTY=e=>({status:"dirty",value:e});e.OK=e=>({status:"valid",value:e});e.isAborted=e=>"aborted"===e.status;e.isDirty=e=>"dirty"===e.status;e.isValid=e=>"valid"===e.status;e.isAsync=e=>void 0!==typeof Promise&&e instanceof Promise}(a);var d={};Object.defineProperty(d,"__esModule",{value:!0});var c,u={},l={};c=l,Object.defineProperty(c,"__esModule",{value:!0}),c.errorUtil=void 0,function(e){e.errToObj=e=>"string"==typeof e?{message:e}:e||{},e.toString=e=>"string"==typeof e?e:null==e?void 0:e.message}(c.errorUtil||(c.errorUtil={})),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.intersection=e.instanceof=e.function=e.enum=e.effect=e.discriminatedUnion=e.date=e.boolean=e.bigint=e.array=e.any=e.ZodFirstPartyTypeKind=e.late=e.ZodSchema=e.Schema=e.custom=e.ZodNaN=e.ZodDefault=e.ZodNullable=e.ZodOptional=e.ZodTransformer=e.ZodEffects=e.ZodPromise=e.ZodNativeEnum=e.ZodEnum=e.ZodLiteral=e.ZodLazy=e.ZodFunction=e.ZodSet=e.ZodMap=e.ZodRecord=e.ZodTuple=e.ZodIntersection=e.ZodDiscriminatedUnion=e.ZodUnion=e.ZodObject=e.objectUtil=e.ZodArray=e.ZodVoid=e.ZodNever=e.ZodUnknown=e.ZodAny=e.ZodNull=e.ZodUndefined=e.ZodDate=e.ZodBoolean=e.ZodBigInt=e.ZodNumber=e.ZodString=e.ZodType=void 0,e.void=e.unknown=e.union=e.undefined=e.tuple=e.transformer=e.string=e.strictObject=e.set=e.record=e.promise=e.preprocess=e.ostring=e.optional=e.onumber=e.oboolean=e.object=e.number=e.nullable=e.null=e.never=e.nativeEnum=e.nan=e.map=e.literal=e.lazy=void 0;const t=l,s=a,n=i,r=o;class d{constructor(e,t,s,n){this.parent=e,this.data=t,this._path=s,this._key=n}get path(){return this._path.concat(this._key)}}const c=(e,t)=>{if(s.isValid(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,error:new r.ZodError(e.common.issues)}};function u(e){if(!e)return{};const{errorMap:t,invalid_type_error:s,required_error:n,description:r}=e;if(t&&(s||n))throw new Error('Can\'t use "invalid" or "required" in conjunction with custom error map.');if(t)return{errorMap:t,description:r};return{errorMap:(t,s)=>"invalid_type"!==t.code?{message:s.defaultError}:void 0===s.data&&n?{message:n}:e.invalid_type_error?{message:e.invalid_type_error}:{message:s.defaultError},description:r}}class p{constructor(e){this.spa=this.safeParseAsync,this.superRefine=this._refinement,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.default=this.default.bind(this),this.describe=this.describe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return n.getParsedType(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:n.getParsedType(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new s.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:n.getParsedType(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(s.isAsync(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){var s;const r={common:{issues:[],async:null!==(s=null==t?void 0:t.async)&&void 0!==s&&s,contextualErrorMap:null==t?void 0:t.errorMap},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:n.getParsedType(e)},a=this._parseSync({data:e,path:r.path,parent:r});return c(r,a)}async parseAsync(e,t){const s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){const r={common:{issues:[],contextualErrorMap:null==t?void 0:t.errorMap,async:!0},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:n.getParsedType(e)},a=this._parse({data:e,path:[],parent:r}),o=await(s.isAsync(a)?a:Promise.resolve(a));return c(r,o)}refine(e,t){const s=e=>"string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(e):t;return this._refinement(((t,n)=>{const a=e(t),o=()=>n.addIssue({code:r.ZodIssueCode.custom,...s(t)});return"undefined"!=typeof Promise&&a instanceof Promise?a.then((e=>!!e||(o(),!1))):!!a||(o(),!1)}))}refinement(e,t){return this._refinement(((s,n)=>!!e(s)||(n.addIssue("function"==typeof t?t(s,n):t),!1)))}_refinement(e){return new W({schema:this,typeName:Y.ZodEffects,effect:{type:"refinement",refinement:e}})}optional(){return J.create(this)}nullable(){return H.create(this)}nullish(){return this.optional().nullable()}array(){return P.create(this)}promise(){return $.create(this)}or(e){return O.create([this,e])}and(e){return R.create(this,e)}transform(e){return new W({schema:this,typeName:Y.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new G({innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:Y.ZodDefault})}describe(e){return new(0,this.constructor)({...this._def,description:e})}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}e.ZodType=p,e.Schema=p,e.ZodSchema=p;const h=/^c[^\s-]{8,}$/i,m=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,g=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;class f extends p{constructor(){super(...arguments),this._regex=(e,s,n)=>this.refinement((t=>e.test(t)),{validation:s,code:r.ZodIssueCode.invalid_string,...t.errorUtil.errToObj(n)}),this.nonempty=e=>this.min(1,t.errorUtil.errToObj(e)),this.trim=()=>new f({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}_parse(e){if(this._getType(e)!==n.ZodParsedType.string){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.string,received:t.parsedType}),s.INVALID}const t=new s.ParseStatus;let a;for(const o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(a=this._getOrReturnCtx(e,a),s.addIssueToContext(a,{code:r.ZodIssueCode.too_small,minimum:o.value,type:"string",inclusive:!0,message:o.message}),t.dirty());else if("max"===o.kind)e.data.length>o.value&&(a=this._getOrReturnCtx(e,a),s.addIssueToContext(a,{code:r.ZodIssueCode.too_big,maximum:o.value,type:"string",inclusive:!0,message:o.message}),t.dirty());else if("email"===o.kind)g.test(e.data)||(a=this._getOrReturnCtx(e,a),s.addIssueToContext(a,{validation:"email",code:r.ZodIssueCode.invalid_string,message:o.message}),t.dirty());else if("uuid"===o.kind)m.test(e.data)||(a=this._getOrReturnCtx(e,a),s.addIssueToContext(a,{validation:"uuid",code:r.ZodIssueCode.invalid_string,message:o.message}),t.dirty());else if("cuid"===o.kind)h.test(e.data)||(a=this._getOrReturnCtx(e,a),s.addIssueToContext(a,{validation:"cuid",code:r.ZodIssueCode.invalid_string,message:o.message}),t.dirty());else if("url"===o.kind)try{new URL(e.data)}catch(n){a=this._getOrReturnCtx(e,a),s.addIssueToContext(a,{validation:"url",code:r.ZodIssueCode.invalid_string,message:o.message}),t.dirty()}else if("regex"===o.kind){o.regex.lastIndex=0;o.regex.test(e.data)||(a=this._getOrReturnCtx(e,a),s.addIssueToContext(a,{validation:"regex",code:r.ZodIssueCode.invalid_string,message:o.message}),t.dirty())}else"trim"===o.kind?e.data=e.data.trim():n.util.assertNever(o);return{status:t.value,value:e.data}}_addCheck(e){return new f({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...t.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:"url",...t.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...t.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...t.errorUtil.errToObj(e)})}regex(e,s){return this._addCheck({kind:"regex",regex:e,...t.errorUtil.errToObj(s)})}min(e,s){return this._addCheck({kind:"min",value:e,...t.errorUtil.errToObj(s)})}max(e,s){return this._addCheck({kind:"max",value:e,...t.errorUtil.errToObj(s)})}length(e,t){return this.min(e,t).max(e,t)}get isEmail(){return!!this._def.checks.find((e=>"email"===e.kind))}get isURL(){return!!this._def.checks.find((e=>"url"===e.kind))}get isUUID(){return!!this._def.checks.find((e=>"uuid"===e.kind))}get isCUID(){return!!this._def.checks.find((e=>"cuid"===e.kind))}get minLength(){let e=-1/0;return this._def.checks.map((t=>{"min"===t.kind&&(null===e||t.value>e)&&(e=t.value)})),e}get maxLength(){let e=null;return this._def.checks.map((t=>{"max"===t.kind&&(null===e||t.value<e)&&(e=t.value)})),e}}function v(e,t){const s=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,r=s>n?s:n;return parseInt(e.toFixed(r).replace(".",""))%parseInt(t.toFixed(r).replace(".",""))/Math.pow(10,r)}e.ZodString=f,f.create=e=>new f({checks:[],typeName:Y.ZodString,...u(e)});class y extends p{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._getType(e)!==n.ZodParsedType.number){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.number,received:t.parsedType}),s.INVALID}let t;const a=new s.ParseStatus;for(const o of this._def.checks)if("int"===o.kind)n.util.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:"integer",received:"float",message:o.message}),a.dirty());else if("min"===o.kind){(o.inclusive?e.data<o.value:e.data<=o.value)&&(t=this._getOrReturnCtx(e,t),s.addIssueToContext(t,{code:r.ZodIssueCode.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,message:o.message}),a.dirty())}else if("max"===o.kind){(o.inclusive?e.data>o.value:e.data>=o.value)&&(t=this._getOrReturnCtx(e,t),s.addIssueToContext(t,{code:r.ZodIssueCode.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,message:o.message}),a.dirty())}else"multipleOf"===o.kind?0!==v(e.data,o.value)&&(t=this._getOrReturnCtx(e,t),s.addIssueToContext(t,{code:r.ZodIssueCode.not_multiple_of,multipleOf:o.value,message:o.message}),a.dirty()):n.util.assertNever(o);return{status:a.value,value:e.data}}gte(e,s){return this.setLimit("min",e,!0,t.errorUtil.toString(s))}gt(e,s){return this.setLimit("min",e,!1,t.errorUtil.toString(s))}lte(e,s){return this.setLimit("max",e,!0,t.errorUtil.toString(s))}lt(e,s){return this.setLimit("max",e,!1,t.errorUtil.toString(s))}setLimit(e,s,n,r){return new y({...this._def,checks:[...this._def.checks,{kind:e,value:s,inclusive:n,message:t.errorUtil.toString(r)}]})}_addCheck(e){return new y({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:t.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:t.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:t.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:t.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:t.errorUtil.toString(e)})}multipleOf(e,s){return this._addCheck({kind:"multipleOf",value:e,message:t.errorUtil.toString(s)})}get minValue(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find((e=>"int"===e.kind))}}e.ZodNumber=y,y.create=e=>new y({checks:[],typeName:Y.ZodNumber,...u(e)});class b extends p{_parse(e){if(this._getType(e)!==n.ZodParsedType.bigint){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.bigint,received:t.parsedType}),s.INVALID}return s.OK(e.data)}}e.ZodBigInt=b,b.create=e=>new b({typeName:Y.ZodBigInt,...u(e)});class w extends p{_parse(e){if(this._getType(e)!==n.ZodParsedType.boolean){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.boolean,received:t.parsedType}),s.INVALID}return s.OK(e.data)}}e.ZodBoolean=w,w.create=e=>new w({typeName:Y.ZodBoolean,...u(e)});class x extends p{_parse(e){if(this._getType(e)!==n.ZodParsedType.date){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.date,received:t.parsedType}),s.INVALID}if(isNaN(e.data.getTime())){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_date}),s.INVALID}return{status:"valid",value:new Date(e.data.getTime())}}}e.ZodDate=x,x.create=e=>new x({typeName:Y.ZodDate,...u(e)});class C extends p{_parse(e){if(this._getType(e)!==n.ZodParsedType.undefined){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.undefined,received:t.parsedType}),s.INVALID}return s.OK(e.data)}}e.ZodUndefined=C,C.create=e=>new C({typeName:Y.ZodUndefined,...u(e)});class I extends p{_parse(e){if(this._getType(e)!==n.ZodParsedType.null){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.null,received:t.parsedType}),s.INVALID}return s.OK(e.data)}}e.ZodNull=I,I.create=e=>new I({typeName:Y.ZodNull,...u(e)});class _ extends p{constructor(){super(...arguments),this._any=!0}_parse(e){return s.OK(e.data)}}e.ZodAny=_,_.create=e=>new _({typeName:Y.ZodAny,...u(e)});class T extends p{constructor(){super(...arguments),this._unknown=!0}_parse(e){return s.OK(e.data)}}e.ZodUnknown=T,T.create=e=>new T({typeName:Y.ZodUnknown,...u(e)});class E extends p{_parse(e){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.never,received:t.parsedType}),s.INVALID}}e.ZodNever=E,E.create=e=>new E({typeName:Y.ZodNever,...u(e)});class S extends p{_parse(e){if(this._getType(e)!==n.ZodParsedType.undefined){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.void,received:t.parsedType}),s.INVALID}return s.OK(e.data)}}e.ZodVoid=S,S.create=e=>new S({typeName:Y.ZodVoid,...u(e)});class P extends p{_parse(e){const{ctx:t,status:a}=this._processInputParams(e),o=this._def;if(t.parsedType!==n.ZodParsedType.array)return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.array,received:t.parsedType}),s.INVALID;if(null!==o.minLength&&t.data.length<o.minLength.value&&(s.addIssueToContext(t,{code:r.ZodIssueCode.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,message:o.minLength.message}),a.dirty()),null!==o.maxLength&&t.data.length>o.maxLength.value&&(s.addIssueToContext(t,{code:r.ZodIssueCode.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,message:o.maxLength.message}),a.dirty()),t.common.async)return Promise.all(t.data.map(((e,s)=>o.type._parseAsync(new d(t,e,t.path,s))))).then((e=>s.ParseStatus.mergeArray(a,e)));const i=t.data.map(((e,s)=>o.type._parseSync(new d(t,e,t.path,s))));return s.ParseStatus.mergeArray(a,i)}get element(){return this._def.type}min(e,s){return new P({...this._def,minLength:{value:e,message:t.errorUtil.toString(s)}})}max(e,s){return new P({...this._def,maxLength:{value:e,message:t.errorUtil.toString(s)}})}length(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}var N;e.ZodArray=P,P.create=(e,t)=>new P({type:e,minLength:null,maxLength:null,typeName:Y.ZodArray,...u(t)}),function(e){e.mergeShapes=(e,t)=>({...e,...t})}(N=e.objectUtil||(e.objectUtil={}));const Z=e=>t=>new M({...e,shape:()=>({...e.shape(),...t})});function k(e){if(e instanceof M){const t={};for(const s in e.shape){const n=e.shape[s];t[s]=J.create(k(n))}return new M({...e._def,shape:()=>t})}return e instanceof P?P.create(k(e.element)):e instanceof J?J.create(k(e.unwrap())):e instanceof H?H.create(k(e.unwrap())):e instanceof z?z.create(e.items.map((e=>k(e)))):e}class M extends p{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=Z(this._def),this.extend=Z(this._def)}_getCached(){if(null!==this._cached)return this._cached;const e=this._def.shape(),t=n.util.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==n.ZodParsedType.object){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.object,received:t.parsedType}),s.INVALID}const{status:t,ctx:a}=this._processInputParams(e),{shape:o,keys:i}=this._getCached(),c=[];for(const e in a.data)i.includes(e)||c.push(e);const u=[];for(const e of i){const t=o[e],s=a.data[e];u.push({key:{status:"valid",value:e},value:t._parse(new d(a,s,a.path,e)),alwaysSet:e in a.data})}if(this._def.catchall instanceof E){const e=this._def.unknownKeys;if("passthrough"===e)for(const e of c)u.push({key:{status:"valid",value:e},value:{status:"valid",value:a.data[e]}});else if("strict"===e)c.length>0&&(s.addIssueToContext(a,{code:r.ZodIssueCode.unrecognized_keys,keys:c}),t.dirty());else if("strip"!==e)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const e=this._def.catchall;for(const t of c){const s=a.data[t];u.push({key:{status:"valid",value:t},value:e._parse(new d(a,s,a.path,t)),alwaysSet:t in a.data})}}return a.common.async?Promise.resolve().then((async()=>{const e=[];for(const t of u){const s=await t.key;e.push({key:s,value:await t.value,alwaysSet:t.alwaysSet})}return e})).then((e=>s.ParseStatus.mergeObjectSync(t,e))):s.ParseStatus.mergeObjectSync(t,u)}get shape(){return this._def.shape()}strict(e){return t.errorUtil.errToObj,new M({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(s,n)=>{var r,a,o,i;const d=null!==(o=null===(a=(r=this._def).errorMap)||void 0===a?void 0:a.call(r,s,n).message)&&void 0!==o?o:n.defaultError;return"unrecognized_keys"===s.code?{message:null!==(i=t.errorUtil.errToObj(e).message)&&void 0!==i?i:d}:{message:d}}}:{}})}strip(){return new M({...this._def,unknownKeys:"strip"})}passthrough(){return new M({...this._def,unknownKeys:"passthrough"})}setKey(e,t){return this.augment({[e]:t})}merge(e){return new M({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>N.mergeShapes(this._def.shape(),e._def.shape()),typeName:Y.ZodObject})}catchall(e){return new M({...this._def,catchall:e})}pick(e){const t={};return n.util.objectKeys(e).map((e=>{this.shape[e]&&(t[e]=this.shape[e])})),new M({...this._def,shape:()=>t})}omit(e){const t={};return n.util.objectKeys(this.shape).map((s=>{-1===n.util.objectKeys(e).indexOf(s)&&(t[s]=this.shape[s])})),new M({...this._def,shape:()=>t})}deepPartial(){return k(this)}partial(e){const t={};if(e)return n.util.objectKeys(this.shape).map((s=>{-1===n.util.objectKeys(e).indexOf(s)?t[s]=this.shape[s]:t[s]=this.shape[s].optional()})),new M({...this._def,shape:()=>t});for(const e in this.shape){const s=this.shape[e];t[e]=s.optional()}return new M({...this._def,shape:()=>t})}required(){const e={};for(const t in this.shape){let s=this.shape[t];for(;s instanceof J;)s=s._def.innerType;e[t]=s}return new M({...this._def,shape:()=>e})}}e.ZodObject=M,M.create=(e,t)=>new M({shape:()=>e,unknownKeys:"strip",catchall:E.create(),typeName:Y.ZodObject,...u(t)}),M.strictCreate=(e,t)=>new M({shape:()=>e,unknownKeys:"strict",catchall:E.create(),typeName:Y.ZodObject,...u(t)}),M.lazycreate=(e,t)=>new M({shape:e,unknownKeys:"strip",catchall:E.create(),typeName:Y.ZodObject,...u(t)});class O extends p{_parse(e){const{ctx:t}=this._processInputParams(e),n=this._def.options;if(t.common.async)return Promise.all(n.map((async e=>{const s={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:s}),ctx:s}}))).then((function(e){for(const t of e)if("valid"===t.result.status)return t.result;for(const s of e)if("dirty"===s.result.status)return t.common.issues.push(...s.ctx.common.issues),s.result;const n=e.map((e=>new r.ZodError(e.ctx.common.issues)));return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_union,unionErrors:n}),s.INVALID}));{let e;const a=[];for(const s of n){const n={...t,common:{...t.common,issues:[]},parent:null},r=s._parseSync({data:t.data,path:t.path,parent:n});if("valid"===r.status)return r;"dirty"!==r.status||e||(e={result:r,ctx:n}),n.common.issues.length&&a.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;const o=a.map((e=>new r.ZodError(e)));return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_union,unionErrors:o}),s.INVALID}}get options(){return this._def.options}}e.ZodUnion=O,O.create=(e,t)=>new O({options:e,typeName:Y.ZodUnion,...u(t)});class D extends p{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==n.ZodParsedType.object)return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.object,received:t.parsedType}),s.INVALID;const a=this.discriminator,o=t.data[a],i=this.options.get(o);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_union_discriminator,options:this.validDiscriminatorValues,path:[a]}),s.INVALID)}get discriminator(){return this._def.discriminator}get validDiscriminatorValues(){return Array.from(this.options.keys())}get options(){return this._def.options}static create(e,t,s){const n=new Map;try{t.forEach((t=>{const s=t.shape[e].value;n.set(s,t)}))}catch(e){throw new Error("The discriminator value could not be extracted from all the provided schemas")}if(n.size!==t.length)throw new Error("Some of the discriminator values are not unique");return new D({typeName:Y.ZodDiscriminatedUnion,discriminator:e,options:n,...u(s)})}}function j(e,t){const s=n.getParsedType(e),r=n.getParsedType(t);if(e===t)return{valid:!0,data:e};if(s===n.ZodParsedType.object&&r===n.ZodParsedType.object){const s=n.util.objectKeys(t),r=n.util.objectKeys(e).filter((e=>-1!==s.indexOf(e))),a={...e,...t};for(const s of r){const n=j(e[s],t[s]);if(!n.valid)return{valid:!1};a[s]=n.data}return{valid:!0,data:a}}if(s===n.ZodParsedType.array&&r===n.ZodParsedType.array){if(e.length!==t.length)return{valid:!1};const s=[];for(let n=0;n<e.length;n++){const r=j(e[n],t[n]);if(!r.valid)return{valid:!1};s.push(r.data)}return{valid:!0,data:s}}return s===n.ZodParsedType.date&&r===n.ZodParsedType.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}e.ZodDiscriminatedUnion=D;class R extends p{_parse(e){const{status:t,ctx:n}=this._processInputParams(e),a=(e,a)=>{if(s.isAborted(e)||s.isAborted(a))return s.INVALID;const o=j(e.value,a.value);return o.valid?((s.isDirty(e)||s.isDirty(a))&&t.dirty(),{status:t.value,value:o.data}):(s.addIssueToContext(n,{code:r.ZodIssueCode.invalid_intersection_types}),s.INVALID)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then((([e,t])=>a(e,t))):a(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}}e.ZodIntersection=R,R.create=(e,t,s)=>new R({left:e,right:t,typeName:Y.ZodIntersection,...u(s)});class z extends p{_parse(e){const{status:t,ctx:a}=this._processInputParams(e);if(a.parsedType!==n.ZodParsedType.array)return s.addIssueToContext(a,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.array,received:a.parsedType}),s.INVALID;if(a.data.length<this._def.items.length)return s.addIssueToContext(a,{code:r.ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,type:"array"}),s.INVALID;!this._def.rest&&a.data.length>this._def.items.length&&(s.addIssueToContext(a,{code:r.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,type:"array"}),t.dirty());const o=a.data.map(((e,t)=>{const s=this._def.items[t]||this._def.rest;return s?s._parse(new d(a,e,a.path,t)):null})).filter((e=>!!e));return a.common.async?Promise.all(o).then((e=>s.ParseStatus.mergeArray(t,e))):s.ParseStatus.mergeArray(t,o)}get items(){return this._def.items}rest(e){return new z({...this._def,rest:e})}}e.ZodTuple=z,z.create=(e,t)=>new z({items:e,typeName:Y.ZodTuple,rest:null,...u(t)});class A extends p{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:a}=this._processInputParams(e);if(a.parsedType!==n.ZodParsedType.object)return s.addIssueToContext(a,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.object,received:a.parsedType}),s.INVALID;const o=[],i=this._def.keyType,c=this._def.valueType;for(const e in a.data)o.push({key:i._parse(new d(a,e,a.path,e)),value:c._parse(new d(a,a.data[e],a.path,e))});return a.common.async?s.ParseStatus.mergeObjectAsync(t,o):s.ParseStatus.mergeObjectSync(t,o)}get element(){return this._def.valueType}static create(e,t,s){return new A(t instanceof p?{keyType:e,valueType:t,typeName:Y.ZodRecord,...u(s)}:{keyType:f.create(),valueType:e,typeName:Y.ZodRecord,...u(t)})}}e.ZodRecord=A;class L extends p{_parse(e){const{status:t,ctx:a}=this._processInputParams(e);if(a.parsedType!==n.ZodParsedType.map)return s.addIssueToContext(a,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.map,received:a.parsedType}),s.INVALID;const o=this._def.keyType,i=this._def.valueType,c=[...a.data.entries()].map((([e,t],s)=>({key:o._parse(new d(a,e,a.path,[s,"key"])),value:i._parse(new d(a,t,a.path,[s,"value"]))})));if(a.common.async){const e=new Map;return Promise.resolve().then((async()=>{for(const n of c){const r=await n.key,a=await n.value;if("aborted"===r.status||"aborted"===a.status)return s.INVALID;"dirty"!==r.status&&"dirty"!==a.status||t.dirty(),e.set(r.value,a.value)}return{status:t.value,value:e}}))}{const e=new Map;for(const n of c){const r=n.key,a=n.value;if("aborted"===r.status||"aborted"===a.status)return s.INVALID;"dirty"!==r.status&&"dirty"!==a.status||t.dirty(),e.set(r.value,a.value)}return{status:t.value,value:e}}}}e.ZodMap=L,L.create=(e,t,s)=>new L({valueType:t,keyType:e,typeName:Y.ZodMap,...u(s)});class B extends p{_parse(e){const{status:t,ctx:a}=this._processInputParams(e);if(a.parsedType!==n.ZodParsedType.set)return s.addIssueToContext(a,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.set,received:a.parsedType}),s.INVALID;const o=this._def;null!==o.minSize&&a.data.size<o.minSize.value&&(s.addIssueToContext(a,{code:r.ZodIssueCode.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,message:o.minSize.message}),t.dirty()),null!==o.maxSize&&a.data.size>o.maxSize.value&&(s.addIssueToContext(a,{code:r.ZodIssueCode.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,message:o.maxSize.message}),t.dirty());const i=this._def.valueType;function c(e){const n=new Set;for(const r of e){if("aborted"===r.status)return s.INVALID;"dirty"===r.status&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}const u=[...a.data.values()].map(((e,t)=>i._parse(new d(a,e,a.path,t))));return a.common.async?Promise.all(u).then((e=>c(e))):c(u)}min(e,s){return new B({...this._def,minSize:{value:e,message:t.errorUtil.toString(s)}})}max(e,s){return new B({...this._def,maxSize:{value:e,message:t.errorUtil.toString(s)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}e.ZodSet=B,B.create=(e,t)=>new B({valueType:e,minSize:null,maxSize:null,typeName:Y.ZodSet,...u(t)});class V extends p{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==n.ZodParsedType.function)return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.function,received:t.parsedType}),s.INVALID;function a(e,n){return s.makeIssue({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r.overrideErrorMap,r.defaultErrorMap].filter((e=>!!e)),issueData:{code:r.ZodIssueCode.invalid_arguments,argumentsError:n}})}function o(e,n){return s.makeIssue({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r.overrideErrorMap,r.defaultErrorMap].filter((e=>!!e)),issueData:{code:r.ZodIssueCode.invalid_return_type,returnTypeError:n}})}const i={errorMap:t.common.contextualErrorMap},d=t.data;return this._def.returns instanceof $?s.OK((async(...e)=>{const t=new r.ZodError([]),s=await this._def.args.parseAsync(e,i).catch((s=>{throw t.addIssue(a(e,s)),t})),n=await d(...s);return await this._def.returns._def.type.parseAsync(n,i).catch((e=>{throw t.addIssue(o(n,e)),t}))})):s.OK(((...e)=>{const t=this._def.args.safeParse(e,i);if(!t.success)throw new r.ZodError([a(e,t.error)]);const s=d(...t.data),n=this._def.returns.safeParse(s,i);if(!n.success)throw new r.ZodError([o(s,n.error)]);return n.data}))}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new V({...this._def,args:z.create(e).rest(T.create())})}returns(e){return new V({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}}e.ZodFunction=V,V.create=(e,t,s)=>new V({args:e?e.rest(T.create()):z.create([]).rest(T.create()),returns:t||T.create(),typeName:Y.ZodFunction,...u(s)});class q extends p{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}e.ZodLazy=q,q.create=(e,t)=>new q({getter:e,typeName:Y.ZodLazy,...u(t)});class U extends p{_parse(e){if(e.data!==this._def.value){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_literal,expected:this._def.value}),s.INVALID}return{status:"valid",value:e.data}}get value(){return this._def.value}}e.ZodLiteral=U,U.create=(e,t)=>new U({value:e,typeName:Y.ZodLiteral,...u(t)});class F extends p{_parse(e){if("string"!=typeof e.data){const t=this._getOrReturnCtx(e),a=this._def.values;return s.addIssueToContext(t,{expected:n.util.joinValues(a),received:t.parsedType,code:r.ZodIssueCode.invalid_type}),s.INVALID}if(-1===this._def.values.indexOf(e.data)){const t=this._getOrReturnCtx(e),n=this._def.values;return s.addIssueToContext(t,{received:t.data,code:r.ZodIssueCode.invalid_enum_value,options:n}),s.INVALID}return s.OK(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}}e.ZodEnum=F,F.create=function(e,t){return new F({values:e,typeName:Y.ZodEnum,...u(t)})};class K extends p{_parse(e){const t=n.util.getValidEnumValues(this._def.values),a=this._getOrReturnCtx(e);if(a.parsedType!==n.ZodParsedType.string&&a.parsedType!==n.ZodParsedType.number){const e=n.util.objectValues(t);return s.addIssueToContext(a,{expected:n.util.joinValues(e),received:a.parsedType,code:r.ZodIssueCode.invalid_type}),s.INVALID}if(-1===t.indexOf(e.data)){const e=n.util.objectValues(t);return s.addIssueToContext(a,{received:a.data,code:r.ZodIssueCode.invalid_enum_value,options:e}),s.INVALID}return s.OK(e.data)}get enum(){return this._def.values}}e.ZodNativeEnum=K,K.create=(e,t)=>new K({values:e,typeName:Y.ZodNativeEnum,...u(t)});class $ extends p{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==n.ZodParsedType.promise&&!1===t.common.async)return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.promise,received:t.parsedType}),s.INVALID;const a=t.parsedType===n.ZodParsedType.promise?t.data:Promise.resolve(t.data);return s.OK(a.then((e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap}))))}}e.ZodPromise=$,$.create=(e,t)=>new $({type:e,typeName:Y.ZodPromise,...u(t)});class W extends p{innerType(){return this._def.schema}_parse(e){const{status:t,ctx:r}=this._processInputParams(e),a=this._def.effect||null;if("preprocess"===a.type){const e=a.transform(r.data);return r.common.async?Promise.resolve(e).then((e=>this._def.schema._parseAsync({data:e,path:r.path,parent:r}))):this._def.schema._parseSync({data:e,path:r.path,parent:r})}const o={addIssue:e=>{s.addIssueToContext(r,e),e.fatal?t.abort():t.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),"refinement"===a.type){const e=e=>{const t=a.refinement(e,o);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1===r.common.async){const n=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===n.status?s.INVALID:("dirty"===n.status&&t.dirty(),e(n.value),{status:t.value,value:n.value})}return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then((n=>"aborted"===n.status?s.INVALID:("dirty"===n.status&&t.dirty(),e(n.value).then((()=>({status:t.value,value:n.value}))))))}if("transform"===a.type){if(!1===r.common.async){const e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!s.isValid(e))return e;const n=a.transform(e.value,o);if(n instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:n}}return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then((e=>s.isValid(e)?Promise.resolve(a.transform(e.value,o)).then((e=>({status:t.value,value:e}))):e))}n.util.assertNever(a)}}e.ZodEffects=W,e.ZodTransformer=W,W.create=(e,t,s)=>new W({schema:e,typeName:Y.ZodEffects,effect:t,...u(s)}),W.createWithPreprocess=(e,t,s)=>new W({schema:t,effect:{type:"preprocess",transform:e},typeName:Y.ZodEffects,...u(s)});class J extends p{_parse(e){return this._getType(e)===n.ZodParsedType.undefined?s.OK(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}e.ZodOptional=J,J.create=(e,t)=>new J({innerType:e,typeName:Y.ZodOptional,...u(t)});class H extends p{_parse(e){return this._getType(e)===n.ZodParsedType.null?s.OK(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}e.ZodNullable=H,H.create=(e,t)=>new H({innerType:e,typeName:Y.ZodNullable,...u(t)});class G extends p{_parse(e){const{ctx:t}=this._processInputParams(e);let s=t.data;return t.parsedType===n.ZodParsedType.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}e.ZodDefault=G,G.create=(e,t)=>new J({innerType:e,typeName:Y.ZodOptional,...u(t)});class Q extends p{_parse(e){if(this._getType(e)!==n.ZodParsedType.nan){const t=this._getOrReturnCtx(e);return s.addIssueToContext(t,{code:r.ZodIssueCode.invalid_type,expected:n.ZodParsedType.nan,received:t.parsedType}),s.INVALID}return{status:"valid",value:e.data}}}e.ZodNaN=Q,Q.create=e=>new Q({typeName:Y.ZodNaN,...u(e)});var Y;e.custom=(e,t={},s)=>e?_.create().superRefine(((n,r)=>{if(!e(n)){const e="function"==typeof t?t(n):t,a="string"==typeof e?{message:e}:e;r.addIssue({code:"custom",...a,fatal:s})}})):_.create(),e.late={object:M.lazycreate},function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodPromise="ZodPromise"}(Y=e.ZodFirstPartyTypeKind||(e.ZodFirstPartyTypeKind={}));e.instanceof=(t,s={message:`Input not instance of ${t.name}`})=>e.custom((e=>e instanceof t),s,!0);const X=f.create;e.string=X;const ee=y.create;e.number=ee;const te=Q.create;e.nan=te;const se=b.create;e.bigint=se;const ne=w.create;e.boolean=ne;const re=x.create;e.date=re;const ae=C.create;e.undefined=ae;const oe=I.create;e.null=oe;const ie=_.create;e.any=ie;const de=T.create;e.unknown=de;const ce=E.create;e.never=ce;const ue=S.create;e.void=ue;const le=P.create;e.array=le;const pe=M.create;e.object=pe;const he=M.strictCreate;e.strictObject=he;const me=O.create;e.union=me;const ge=D.create;e.discriminatedUnion=ge;const fe=R.create;e.intersection=fe;const ve=z.create;e.tuple=ve;const ye=A.create;e.record=ye;const be=L.create;e.map=be;const we=B.create;e.set=we;const xe=V.create;e.function=xe;const Ce=q.create;e.lazy=Ce;const Ie=U.create;e.literal=Ie;const _e=F.create;e.enum=_e;const Te=K.create;e.nativeEnum=Te;const Ee=$.create;e.promise=Ee;const Se=W.create;e.effect=Se,e.transformer=Se;const Pe=J.create;e.optional=Pe;const Ne=H.create;e.nullable=Ne;const Ze=W.createWithPreprocess;e.preprocess=Ze;e.ostring=()=>X().optional();e.onumber=()=>ee().optional();e.oboolean=()=>ne().optional()}(u),function(t){var s=e&&e.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),n=e&&e.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||s(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.ZodParsedType=t.getParsedType=void 0,n(a,t),n(d,t);var r=i;Object.defineProperty(t,"getParsedType",{enumerable:!0,get:function(){return r.getParsedType}}),Object.defineProperty(t,"ZodParsedType",{enumerable:!0,get:function(){return r.ZodParsedType}}),n(u,t),n(o,t)}(r),function(t){var s=e&&e.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),n=e&&e.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&s(t,e,r);return n(t,e),t},o=e&&e.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||s(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.z=void 0;const i=a(r);t.z=i,o(r,t),t.default=i}(n);var p={};!function(e){var t,s,n,r,a,o;Object.defineProperty(e,"__esModule",{value:!0}),e.CDP=e.Network=e.Log=e.BrowsingContext=e.Script=e.Message=void 0,function(e){class t{constructor(e,t,s){this.error=e,this.message=t,this.stacktrace=s}error;message;stacktrace;toErrorResponse(e){return{id:e,error:this.error,message:this.message,stacktrace:this.stacktrace}}}e.ErrorResponseClass=t;e.UnknownException=class extends t{constructor(e,t){super("unknown error",e,t)}};e.UnknownCommandException=class extends t{constructor(e,t){super("unknown command",e,t)}};e.InvalidArgumentException=class extends t{constructor(e,t){super("invalid argument",e,t)}};e.NoSuchNodeException=class extends t{constructor(e,t){super("no such node",e,t)}};e.NoSuchFrameException=class extends t{constructor(e){super("no such frame",e)}}}(e.Message||(e.Message={})),((t=e.Script||(e.Script={})).EventNames||(t.EventNames={})).MessageEvent="script.message",t.AllEvents="script",s=e.BrowsingContext||(e.BrowsingContext={}),(n=s.EventNames||(s.EventNames={})).LoadEvent="browsingContext.load",n.DomContentLoadedEvent="browsingContext.domContentLoaded",n.ContextCreatedEvent="browsingContext.contextCreated",n.ContextDestroyedEvent="browsingContext.contextDestroyed",s.AllEvents="browsingContext",(r=e.Log||(e.Log={})).AllEvents="log",function(e){e.LogEntryAddedEvent="log.entryAdded"}(r.EventNames||(r.EventNames={})),(a=e.Network||(e.Network={})).AllEvents="network",function(e){e.BeforeRequestSentEvent="network.beforeRequestSent",e.ResponseCompletedEvent="network.responseCompleted"}(a.EventNames||(a.EventNames={})),(o=e.CDP||(e.CDP={})).AllEvents="cdp",function(e){e.EventReceivedEvent="cdp.eventReceived"}(o.EventNames||(o.EventNames={}))}(p),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Session=e.CDP=e.BrowsingContext=e.Script=e.CommonDataTypes=e.parseObject=void 0;const t=n,s=p,r=9007199254740991;function a(e,t){const n=t.safeParse(e);if(n.success)return n.data;const r=n.error.errors.map((e=>`${e.message} in ${e.path.map((e=>JSON.stringify(e))).join("/")}.`)).join(" ");throw new s.Message.InvalidArgumentException(r)}var o;e.parseObject=a,function(e){e.SharedReferenceSchema=t.z.object({sharedId:t.z.string().min(1)}),e.RemoteReferenceSchema=t.z.object({handle:t.z.string().min(1)});const s=t.z.object({type:t.z.literal("undefined")}),n=t.z.object({type:t.z.literal("null")}),r=t.z.object({type:t.z.literal("string"),value:t.z.string()}),a=t.z.enum(["NaN","-0","Infinity","-Infinity"]),o=t.z.object({type:t.z.literal("number"),value:t.z.union([a,t.z.number()])}),i=t.z.object({type:t.z.literal("boolean"),value:t.z.boolean()}),d=t.z.object({type:t.z.literal("bigint"),value:t.z.string()}),c=t.z.union([s,n,r,o,i,d]);e.LocalValueSchema=t.z.lazy((()=>t.z.union([c,p,h,g,f,v,y])));const u=t.z.union([e.SharedReferenceSchema,e.RemoteReferenceSchema,e.LocalValueSchema]),l=t.z.array(u),p=t.z.lazy((()=>t.z.object({type:t.z.literal("array"),value:l}))),h=t.z.object({type:t.z.literal("date"),value:t.z.string().min(1)}),m=t.z.lazy((()=>t.z.tuple([t.z.union([t.z.string(),u]),u]))),g=t.z.object({type:t.z.literal("map"),value:t.z.array(m)}),f=t.z.object({type:t.z.literal("object"),value:t.z.array(m)}),v=t.z.lazy((()=>t.z.object({type:t.z.literal("regexp"),value:t.z.object({pattern:t.z.string(),flags:t.z.string().optional()})}))),y=t.z.lazy((()=>t.z.object({type:t.z.literal("set"),value:l})));e.BrowsingContextSchema=t.z.string()}(o=e.CommonDataTypes||(e.CommonDataTypes={})),function(e){const s=t.z.enum(["window","dedicated-worker","shared-worker","service-worker","worker","paint-worklet","audio-worklet","worklet"]);e.GetRealmsParametersSchema=t.z.object({context:o.BrowsingContextSchema.optional(),type:s.optional()}),e.parseGetRealmsParams=function(t){return a(t,e.GetRealmsParametersSchema)};const n=t.z.object({context:o.BrowsingContextSchema,sandbox:t.z.string().optional()}),i=t.z.object({realm:t.z.string().min(1)}),d=t.z.union([i,n]),c=t.z.enum(["root","none"]),u=t.z.object({expression:t.z.string(),awaitPromise:t.z.boolean(),target:d,resultOwnership:c.optional()});e.parseEvaluateParams=function(e){return a(e,u)};const l=t.z.object({target:d,handles:t.z.array(t.z.string())});e.parseDisownParams=function(e){return a(e,l)};const p=t.z.union([o.RemoteReferenceSchema,o.SharedReferenceSchema,o.LocalValueSchema]),h=t.z.object({functionDeclaration:t.z.string(),target:d,arguments:t.z.array(p).optional(),this:p.optional(),awaitPromise:t.z.boolean(),resultOwnership:c.optional()});e.parseCallFunctionParams=function(e){return a(e,h)};const m=t.z.string(),g=t.z.object({channel:m,maxDepth:t.z.number().int().nonnegative().max(r).optional(),ownership:c.optional()});e.ChannelSchema=t.z.object({type:t.z.literal("channel"),value:g})}(e.Script||(e.Script={})),function(e){const s=t.z.object({maxDepth:t.z.number().int().nonnegative().max(r).optional(),root:o.BrowsingContextSchema.optional()});e.parseGetTreeParams=function(e){return a(e,s)};const n=t.z.enum(["none","interactive","complete"]),i=t.z.object({context:o.BrowsingContextSchema,url:t.z.string().url(),wait:n.optional()});e.parseNavigateParams=function(e){return a(e,i)};const d=t.z.object({type:t.z.enum(["tab","window"]),referenceContext:o.BrowsingContextSchema.optional()});e.parseCreateParams=function(e){return a(e,d)};const c=t.z.object({context:o.BrowsingContextSchema});e.parseCloseParams=function(e){return a(e,c)};const u=t.z.object({context:o.BrowsingContextSchema});e.parseCaptureScreenshotParams=function(e){return a(e,u)};const l=t.z.object({height:t.z.number().min(0).default(27.94).optional(),width:t.z.number().min(0).default(21.59).optional()}),p=t.z.object({bottom:t.z.number().min(0).default(1).optional(),left:t.z.number().min(0).default(1).optional(),right:t.z.number().min(0).default(1).optional(),top:t.z.number().min(0).default(1).optional()}),h=t.z.array(t.z.union([t.z.string().min(1),t.z.number().int().nonnegative()])).refine((e=>e.every((e=>{const t=String(e).match(/^(?:(?:\d+)|(?:\d+[-])|(?:[-]\d+)|(?:(?<start>\d+)[-](?<end>\d+)))$/),{start:s,end:n}=t?.groups??{};return!(s&&n&&Number(s)>Number(n))&&t})))),m=t.z.object({context:o.BrowsingContextSchema,background:t.z.boolean().default(!1).optional(),margin:p.optional(),orientation:t.z.enum(["portrait","landscape"]).default("portrait").optional(),page:l.optional(),pageRanges:h.default([]).optional(),scale:t.z.number().min(.1).max(2).default(1).optional(),shrinkToFit:t.z.boolean().default(!0).optional()});e.parsePrintParams=function(e){return a(e,m)}}(e.BrowsingContext||(e.BrowsingContext={})),function(e){const s=t.z.object({cdpMethod:t.z.string(),cdpParams:t.z.object({}).passthrough(),cdpSession:t.z.string().optional()});e.parseSendCommandParams=function(e){return a(e,s)};const n=t.z.object({context:o.BrowsingContextSchema});e.parseGetSessionParams=function(e){return a(e,n)}}(e.CDP||(e.CDP={})),function(e){const n=t.z.enum([s.BrowsingContext.AllEvents,...Object.values(s.BrowsingContext.EventNames),s.Log.AllEvents,...Object.values(s.Log.EventNames),s.CDP.AllEvents,...Object.values(s.CDP.EventNames),s.Network.AllEvents,...Object.values(s.Network.EventNames),s.Script.AllEvents,...Object.values(s.Script.EventNames)]),r=t.z.object({events:t.z.array(n),contexts:t.z.array(o.BrowsingContextSchema).optional()});e.parseSubscribeParams=function(e){return a(e,r)}}(e.Session||(e.Session={}))}(s);var h={},m={},g=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(m,"__esModule",{value:!0}),m.EventEmitter=void 0;const f=g((function(e){return{all:e=e||new Map,on:function(t,s){var n=e.get(t);n?n.push(s):e.set(t,[s])},off:function(t,s){var n=e.get(t);n&&(s?n.splice(n.indexOf(s)>>>0,1):e.set(t,[]))},emit:function(t,s){var n=e.get(t);n&&n.slice().map((function(e){e(s)})),(n=e.get("*"))&&n.slice().map((function(e){e(t,s)}))}}}));m.EventEmitter=class{#e=(0,f.default)();on(e,t){return this.#e.on(e,t),this}once(e,t){const s=n=>{t(n),this.off(e,s)};return this.on(e,s)}off(e,t){return this.#e.off(e,t),this}emit(e,t){this.#e.emit(e,t)}};var v={},y={};!function(e){var t;Object.defineProperty(e,"__esModule",{value:!0}),e.LogType=void 0,(t=e.LogType||(e.LogType={})).bidi="BiDi Messages",t.browsingContexts="Browsing Contexts",t.cdp="CDP",t.system="System"}(y),Object.defineProperty(v,"__esModule",{value:!0}),v.ProcessingQueue=void 0;const b=y;v.ProcessingQueue=class{#t;#s;#n;#r=[];#a=!1;constructor(e,t=(()=>Promise.resolve()),s){this.#t=t,this.#n=e,this.#s=s}add(e){this.#r.push(e),this.#o()}async#o(){if(!this.#a){for(this.#a=!0;this.#r.length>0;){const e=this.#r.shift();void 0!==e&&await e.then((e=>this.#n(e))).catch((e=>{this.#s?.(b.LogType.system,"Event was not processed:",e),this.#t(e)})).finally()}this.#a=!1}}};var w={},x={},C={},I={};Object.defineProperty(I,"__esModule",{value:!0}),I.inchesFromCm=void 0,I.inchesFromCm=function(e){return e/2.54};var _={};Object.defineProperty(_,"__esModule",{value:!0}),_.Deferred=void 0;class T{#i=!1;#d;#c=()=>{};#u=()=>{};get isFinished(){return this.#i}constructor(){this.#d=new Promise(((e,t)=>{this.#c=e,this.#u=t}))}then(e,t){return this.#d.then(e,t)}catch(e){return this.#d.catch(e)}resolve(e){this.#i=!0,this.#c(e)}reject(e){this.#i=!0,this.#u(e)}finally(e){return this.#d.finally(e)}[Symbol.toStringTag]="Promise"}_.Deferred=T;var E={},S={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ScriptEvaluator=e.stringifyObject=e.SHARED_ID_DIVIDER=void 0;const t=p;async function s(e,t){return(await t.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String((e=>String(e))),awaitPromise:!1,arguments:[e],returnByValue:!0,executionContextId:t.executionContextId})).result.value}e.SHARED_ID_DIVIDER="_element_",e.stringifyObject=s;e.ScriptEvaluator=class{async deserializeToCdpArg(s,n){if("sharedId"in s){const[r,a]=s.sharedId.split(e.SHARED_ID_DIVIDER),o=parseInt(a??"");if(isNaN(o)||void 0===o||void 0===r)throw new t.Message.InvalidArgumentException(`SharedId "${s.sharedId}" should have format "{navigableId}${e.SHARED_ID_DIVIDER}{backendNodeId}".`);if(n.navigableId!==r)throw new t.Message.NoSuchNodeException(`SharedId "${s.sharedId}" belongs to different document. Current document is ${n.navigableId}.`);try{return{objectId:(await n.cdpClient.sendCommand("DOM.resolveNode",{backendNodeId:o,executionContextId:n.executionContextId})).object.objectId}}catch(e){if(-32e3===e.code&&"No node with given id found"===e.message)throw new t.Message.NoSuchNodeException(`SharedId "${s.sharedId}" was not found.`);throw e}}if("handle"in s)return{objectId:s.handle};switch(s.type){case"undefined":return{unserializableValue:"undefined"};case"null":return{unserializableValue:"null"};case"string":return{value:s.value};case"number":return"NaN"===s.value?{unserializableValue:"NaN"}:"-0"===s.value?{unserializableValue:"-0"}:"Infinity"===s.value?{unserializableValue:"Infinity"}:"-Infinity"===s.value?{unserializableValue:"-Infinity"}:{value:s.value};case"boolean":return{value:Boolean(s.value)};case"bigint":return{unserializableValue:`BigInt(${JSON.stringify(s.value)})`};case"date":return{unserializableValue:`new Date(Date.parse(${JSON.stringify(s.value)}))`};case"regexp":return{unserializableValue:`new RegExp(${JSON.stringify(s.value.pattern)}, ${JSON.stringify(s.value.flags)})`};case"map":{const e=await this.#l(s.value,n);return{objectId:(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String(((...e)=>{const t=new Map;for(let s=0;s<e.length;s+=2)t.set(e[s],e[s+1]);return t})),awaitPromise:!1,arguments:e,returnByValue:!1,executionContextId:n.executionContextId})).result.objectId}}case"object":{const e=await this.#l(s.value,n);return{objectId:(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String(((...e)=>{const t={};for(let s=0;s<e.length;s+=2){t[e[s]]=e[s+1]}return t})),awaitPromise:!1,arguments:e,returnByValue:!1,executionContextId:n.executionContextId})).result.objectId}}case"array":{const e=await this.#p(s.value,n);return{objectId:(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String(((...e)=>e)),awaitPromise:!1,arguments:e,returnByValue:!1,executionContextId:n.executionContextId})).result.objectId}}case"set":{const e=await this.#p(s.value,n);return{objectId:(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String(((...e)=>new Set(e))),awaitPromise:!1,arguments:e,returnByValue:!1,executionContextId:n.executionContextId})).result.objectId}}default:throw new Error(`Value ${JSON.stringify(s)} is not deserializable.`)}}async serializeCdpObject(e,t,s){const n=function(e){return void 0!==e.objectId?{objectId:e.objectId}:void 0!==e.unserializableValue?{unserializableValue:e.unserializableValue}:{value:e.value}}(e),r=await s.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String((e=>e)),awaitPromise:!1,arguments:[n],generateWebDriverValue:!0,executionContextId:s.executionContextId});return s.cdpToBidiValue(r,t)}async scriptEvaluate(e,t,s,n){const r=await e.cdpClient.sendCommand("Runtime.evaluate",{contextId:e.executionContextId,expression:t,awaitPromise:s,generateWebDriverValue:!0});return r.exceptionDetails?{exceptionDetails:await this.#h(r.exceptionDetails,0,n,e),type:"exception",realm:e.realmId}:{type:"success",result:await e.cdpToBidiValue(r,n),realm:e.realmId}}async callFunction(e,s,n,r,a,o){const i=`(...args)=>{ return _callFunction((\n${s}\n), args);\n\t function _callFunction(f, args) {\n\t const deserializedThis = args.shift();\n\t const deserializedArgs = args;\n\t return f.apply(deserializedThis, deserializedArgs);\n\t }}`,d=[await this.deserializeToCdpArg(n,e)];let c;d.push(...await Promise.all(r.map((async t=>this.deserializeToCdpArg(t,e)))));try{c=await e.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:i,awaitPromise:a,arguments:d,generateWebDriverValue:!0,executionContextId:e.executionContextId})}catch(e){if(-32e3===e.code&&["Could not find object with given id","Argument should belong to the same JavaScript world as target object"].includes(e.message))throw new t.Message.InvalidArgumentException("Handle was not found.");throw e}return c.exceptionDetails?{exceptionDetails:await this.#h(c.exceptionDetails,1,o,e),type:"exception",realm:e.realmId}:{type:"success",result:await e.cdpToBidiValue(c,o),realm:e.realmId}}async#l(e,t){const s=[];for(const n of e){const e=n[0],r=n[1];let a;a="string"==typeof e?{value:e}:await this.deserializeToCdpArg(e,t);const o=await this.deserializeToCdpArg(r,t);s.push(a),s.push(o)}return s}async#p(e,t){const s=[];for(const n of e)s.push(await this.deserializeToCdpArg(n,t));return s}async#h(e,t,n,r){const a=e.stackTrace?.callFrames.map((e=>({url:e.url,functionName:e.functionName,lineNumber:e.lineNumber-t,columnNumber:e.columnNumber}))),o=await this.serializeCdpObject(e.exception,n,r),i=await s(e.exception,r);return{exception:o,columnNumber:e.columnNumber,lineNumber:e.lineNumber-t,stackTrace:{callFrames:a||[]},text:i||e.text}}}}(S),Object.defineProperty(E,"__esModule",{value:!0}),E.Realm=void 0;const P=S,N=new P.ScriptEvaluator;E.Realm=class{#m;#g;#f;#v;#y;#b;#w;#x;sandbox;cdpSessionId;constructor(e,t,s,n,r,a,o,i,d,c){this.#f=s,this.#v=n,this.#y=r,this.sandbox=i,this.#b=a,this.#w=o,this.cdpSessionId=d,this.#x=c,this.#m=e,this.#g=t,this.#m.realmMap.set(this.#f,this)}async disown(e){if(this.#m.knownHandlesToRealm.get(e)===this.realmId){try{await this.cdpClient.sendCommand("Runtime.releaseObject",{objectId:e})}catch(e){if(-32e3!==e.code||"Invalid remote object id"!==e.message)throw e}this.#m.knownHandlesToRealm.delete(e)}}async cdpToBidiValue(e,t){const s=e.result.webDriverValue,n=this.webDriverValueToBiDi(s);if(e.result.objectId){const s=e.result.objectId;"root"===t?(n.handle=s,this.#m.knownHandlesToRealm.set(s,this.realmId)):this.cdpClient.sendCommand("Runtime.releaseObject",{objectId:s})}return n}webDriverValueToBiDi(e){const t=e,s=t.value;if(void 0===s)return t;if("node"===t.type&&(Object.hasOwn(s,"backendNodeId")&&(s.sharedId=`${this.navigableId}${P.SHARED_ID_DIVIDER}${s.backendNodeId}`,delete s.backendNodeId),Object.hasOwn(s,"children")))for(const e in s.children)s.children[e]=this.webDriverValueToBiDi(s.children[e]);if(["array","set"].includes(e.type))for(const e in s)s[e]=this.webDriverValueToBiDi(s[e]);if(["object","map"].includes(e.type))for(const e in s)s[e]=[this.webDriverValueToBiDi(s[e][0]),this.webDriverValueToBiDi(s[e][1])];return t}toBiDi(){return{realm:this.realmId,origin:this.origin,type:this.type,context:this.browsingContextId,...void 0===this.sandbox?{}:{sandbox:this.sandbox}}}get realmId(){return this.#f}get navigableId(){return this.#g.findContext(this.#v)?.navigableId??"UNKNOWN"}get browsingContextId(){return this.#v}get executionContextId(){return this.#y}get origin(){return this.#b}get type(){return this.#w}get cdpClient(){return this.#x}async callFunction(e,t,s,n,r){const a=this.#g.getKnownContext(this.browsingContextId);return await a.awaitUnblocked(),{result:await N.callFunction(this,e,t,s,n,r)}}async scriptEvaluate(e,t,s){const n=this.#g.getKnownContext(this.browsingContextId);return await n.awaitUnblocked(),{result:await N.scriptEvaluate(this,e,t,s)}}async serializeCdpObject(e,t){return N.serializeCdpObject(e,t,this)}async stringifyObject(e){return(0,P.stringifyObject)(e,this)}},Object.defineProperty(C,"__esModule",{value:!0}),C.BrowsingContextImpl=void 0;const Z=I,k=p,M=y,O=_,D=E;class j{#C={documentInitialized:new O.Deferred,Page:{navigatedWithinDocument:new O.Deferred,lifecycleEvent:{DOMContentLoaded:new O.Deferred,load:new O.Deferred}}};#I;#_;#T;#E=new Map;#m;#S="about:blank";#P=null;#N;#Z;#g;#s;get#k(){if(void 0===this.#Z)throw new Error(`No default realm for browsing context ${this.#I}`);return this.#Z}constructor(e,t,s,n,r,a,o){this.#N=e,this.#m=t,this.#I=s,this.#_=n,this.#T=r,this.#g=a,this.#s=o,this.#M()}static async create(e,t,s,n,r,a,o){const i=new j(e,t,s,n,r,a,o);a.addContext(i),r.registerEvent({method:k.BrowsingContext.EventNames.ContextCreatedEvent,params:i.serializeToBidiValue()},i.contextId)}get navigableId(){return this.#P}updateCdpTarget(e){this.#N=e,this.#M()}async delete(){if(await this.#O(),this.#m.deleteRealms({browsingContextId:this.contextId}),null!==this.parentId){this.#g.getKnownContext(this.parentId).#E.delete(this.contextId)}this.#T.registerEvent({method:k.BrowsingContext.EventNames.ContextDestroyedEvent,params:this.serializeToBidiValue()},this.contextId),this.#g.removeContext(this.contextId)}async#O(){await Promise.all(this.children.map((e=>e.delete())))}get contextId(){return this.#I}get parentId(){return this.#_}get cdpTarget(){return this.#N}get children(){return Array.from(this.#E.values())}get url(){return this.#S}addChild(e){this.#E.set(e.contextId,e)}async awaitLoaded(){await this.#C.Page.lifecycleEvent.load}async awaitUnblocked(){return this.#N.targetUnblocked}serializeToBidiValue(e=0,t=!0){return{context:this.#I,url:this.url,children:e>0?this.children.map((t=>t.serializeToBidiValue(e-1,!1))):null,...t?{parent:this.#_}:{}}}#M(){this.#N.cdpClient.on("Target.targetInfoChanged",(e=>{this.contextId===e.targetInfo.targetId&&(this.#S=e.targetInfo.url)})),this.#N.cdpClient.on("Page.frameNavigated",(async e=>{this.contextId===e.frame.id&&(this.#S=e.frame.url+(e.frame.urlFragment??""),await this.#O(),this.#m.deleteRealms({browsingContextId:this.contextId}))})),this.#N.cdpClient.on("Page.navigatedWithinDocument",(e=>{this.contextId===e.frameId&&(this.#S=e.url,this.#C.Page.navigatedWithinDocument.resolve(e))})),this.#N.cdpClient.on("Page.lifecycleEvent",(async e=>{if(this.contextId!==e.frameId)return;const t=(new Date).getTime();if("init"===e.name&&(this.#D(e.loaderId),this.#C.documentInitialized.resolve()),"commit"!==e.name){if(e.loaderId===this.#P)switch(e.name){case"DOMContentLoaded":this.#C.Page.lifecycleEvent.DOMContentLoaded.resolve(e),this.#T.registerEvent({method:k.BrowsingContext.EventNames.DomContentLoadedEvent,params:{context:this.contextId,navigation:this.#P,timestamp:t,url:this.#S}},this.contextId);break;case"load":this.#C.Page.lifecycleEvent.load.resolve(e),this.#T.registerEvent({method:k.BrowsingContext.EventNames.LoadEvent,params:{context:this.contextId,navigation:this.#P,timestamp:t,url:this.#S}},this.contextId)}}else this.#P=e.loaderId})),this.#N.cdpClient.on("Runtime.executionContextCreated",(e=>{if(e.context.auxData.frameId!==this.contextId)return;if(!["default","isolated"].includes(e.context.auxData.type))return;const t=new D.Realm(this.#m,this.#g,e.context.uniqueId,this.contextId,e.context.id,this.#j(e),"window","isolated"===e.context.auxData.type?e.context.name:void 0,this.#N.cdpSessionId,this.#N.cdpClient);e.context.auxData.isDefault&&(this.#Z=t)})),this.#N.cdpClient.on("Runtime.executionContextDestroyed",(e=>{this.#m.deleteRealms({cdpSessionId:this.#N.cdpSessionId,executionContextId:e.executionContextId})}))}#j(e){return"isolated"===e.context.auxData.type?this.#k.origin:["://",""].includes(e.context.origin)?"null":e.context.origin}#D(e){void 0!==e&&this.#P!==e?(this.#C.documentInitialized.isFinished?this.#C.documentInitialized=new O.Deferred:this.#s?.(M.LogType.browsingContexts,"Document changed"),this.#C.Page.lifecycleEvent.DOMContentLoaded.isFinished?this.#C.Page.lifecycleEvent.DOMContentLoaded=new O.Deferred:this.#s?.(M.LogType.browsingContexts,"Document changed"),this.#C.Page.lifecycleEvent.load.isFinished?this.#C.Page.lifecycleEvent.load=new O.Deferred:this.#s?.(M.LogType.browsingContexts,"Document changed"),this.#P=e):this.#C.Page.navigatedWithinDocument.isFinished&&(this.#C.Page.navigatedWithinDocument=new O.Deferred)}async navigate(e,t){await this.awaitUnblocked();const s=await this.#N.cdpClient.sendCommand("Page.navigate",{url:e,frameId:this.contextId});if(s.errorText)throw new k.Message.UnknownException(s.errorText);switch(this.#D(s.loaderId),t){case"none":break;case"interactive":void 0===s.loaderId?await this.#C.Page.navigatedWithinDocument:await this.#C.Page.lifecycleEvent.DOMContentLoaded;break;case"complete":void 0===s.loaderId?await this.#C.Page.navigatedWithinDocument:await this.#C.Page.lifecycleEvent.load;break;default:throw new Error(`Not implemented wait '${t}'`)}return{result:{navigation:s.loaderId||null,url:e}}}async getOrCreateSandbox(e){if(void 0===e||""===e)return this.#k;let t=this.#m.findRealms({browsingContextId:this.contextId,sandbox:e});if(0===t.length&&(await this.#N.cdpClient.sendCommand("Page.createIsolatedWorld",{frameId:this.contextId,worldName:e}),t=this.#m.findRealms({browsingContextId:this.contextId,sandbox:e})),1!==t.length)throw Error(`Sandbox ${e} wasn't created.`);return t[0]}async captureScreenshot(){const[,e]=await Promise.all([this.#N.cdpClient.sendCommand("Page.bringToFront"),this.#N.cdpClient.sendCommand("Page.captureScreenshot",{})]);return{result:{data:e.data}}}async print(e){const t={printBackground:e.background,landscape:"landscape"===e.orientation,pageRanges:e.pageRanges?.join(",")??"",scale:e.scale};e.margin?.bottom&&(t.marginBottom=(0,Z.inchesFromCm)(e.margin.bottom)),e.margin?.left&&(t.marginLeft=(0,Z.inchesFromCm)(e.margin.left)),e.margin?.right&&(t.marginRight=(0,Z.inchesFromCm)(e.margin.right)),e.margin?.top&&(t.marginTop=(0,Z.inchesFromCm)(e.margin.top)),e.page?.height&&(t.paperHeight=(0,Z.inchesFromCm)(e.page.height)),e.page?.width&&(t.paperWidth=(0,Z.inchesFromCm)(e.page.width));return{result:{data:(await this.#N.cdpClient.sendCommand("Page.printToPDF",t)).data}}}}C.BrowsingContextImpl=j;var R={},z={},A={};Object.defineProperty(A,"__esModule",{value:!0}),A.getRemoteValuesText=A.logMessageFormatter=void 0;const L=["%s","%d","%i","%f","%o","%O","%c"];function B(e){return L.some((t=>e.includes(t)))}function V(e){let t="";const s=e[0].value.toString(),n=e.slice(1,void 0),r=s.split(new RegExp(L.map((e=>`(${e})`)).join("|"),"g"));for(const s of r)if(void 0!==s&&""!==s)if(B(s)){const r=n.shift();if(void 0===r)throw new Error(`Less value is provided: "${F(e,!1)}"`);"%s"===s?t+=U(r):"%d"===s||"%i"===s?"bigint"===r.type||"number"===r.type||"string"===r.type?t+=parseInt(r.value.toString(),10):t+="NaN":"%f"===s?"bigint"===r.type||"number"===r.type||"string"===r.type?t+=parseFloat(r.value.toString()):t+="NaN":t+=q(r)}else t+=s;if(n.length>0)throw new Error(`More value is provided: "${F(e,!1)}"`);return t}function q(e){if("array"!==e.type&&"bigint"!==e.type&&"date"!==e.type&&"number"!==e.type&&"object"!==e.type&&"string"!==e.type)return U(e);if("bigint"===e.type)return`${e.value.toString()}n`;if("number"===e.type)return e.value.toString();if(["date","string"].includes(e.type))return JSON.stringify(e.value);if("object"===e.type)return`{${e.value.map((e=>`${JSON.stringify(e[0])}:${q(e[1])}`)).join(",")}}`;if("array"===e.type)return`[${e.value?.map((e=>q(e))).join(",")}]`;throw Error(`Invalid value type: ${e.toString()}`)}function U(e){if(!Object.hasOwn(e,"value"))return e.type;switch(e.type){case"string":case"number":case"boolean":case"bigint":return String(e.value);case"regexp":return`/${e.value.pattern}/${e.value.flags}`;case"date":return new Date(e.value).toString();case"object":return`Object(${e.value?.length})`;case"array":return`Array(${e.value?.length})`;case"map":return`Map(${e.value.length})`;case"set":return`Set(${e.value.length})`;case"node":return"node";default:return e.type}}function F(e,t){const s=e[0];return s?"string"===s.type&&B(s.value.toString())&&t?V(e):e.map((e=>U(e))).join(" "):""}A.logMessageFormatter=V,A.getRemoteValuesText=F,Object.defineProperty(z,"__esModule",{value:!0}),z.LogManager=void 0;const K=p,$=A;function W(e){const t=e?.callFrames.map((e=>({columnNumber:e.columnNumber,functionName:e.functionName,lineNumber:e.lineNumber,url:e.url})));return t?{callFrames:t}:void 0}class J{#T;#m;#N;constructor(e,t,s){this.#N=e,this.#m=t,this.#T=s}static create(e,t,s){const n=new J(e,t,s);return n.#R(),n}#R(){this.#z()}#z(){this.#N.cdpClient.on("Runtime.consoleAPICalled",(e=>{const t=this.#m.findRealm({cdpSessionId:this.#N.cdpSessionId,executionContextId:e.executionContextId}),s=void 0===t?Promise.resolve(e.args):Promise.all(e.args.map((e=>t.serializeCdpObject(e,"none"))));this.#T.registerPromiseEvent(s.then((s=>{return{method:K.Log.EventNames.LogEntryAddedEvent,params:{level:(n=e.type,["assert","error"].includes(n)?"error":["debug","trace"].includes(n)?"debug":["warn","warning"].includes(n)?"warn":"info"),source:{realm:t?.realmId??"UNKNOWN",context:t?.browsingContextId??"UNKNOWN"},text:(0,$.getRemoteValuesText)(s,!0),timestamp:Math.round(e.timestamp),stackTrace:W(e.stackTrace),type:"console",method:"warning"===e.type?"warn":e.type,args:s}};var n})),t?.browsingContextId??"UNKNOWN",K.Log.EventNames.LogEntryAddedEvent)})),this.#N.cdpClient.on("Runtime.exceptionThrown",(e=>{const t=this.#m.findRealm({cdpSessionId:this.#N.cdpSessionId,executionContextId:e.exceptionDetails.executionContextId}),s=(async()=>e.exceptionDetails.exception?void 0===t?JSON.stringify(e.exceptionDetails.exception):t.stringifyObject(e.exceptionDetails.exception):e.exceptionDetails.text)();this.#T.registerPromiseEvent(s.then((s=>({method:K.Log.EventNames.LogEntryAddedEvent,params:{level:"error",source:{realm:t?.realmId??"UNKNOWN",context:t?.browsingContextId??"UNKNOWN"},text:s,timestamp:Math.round(e.timestamp),stackTrace:W(e.exceptionDetails.stackTrace),type:"javascript"}}))),t?.browsingContextId??"UNKNOWN",K.Log.EventNames.LogEntryAddedEvent)}))}}z.LogManager=J;var H={},G={};Object.defineProperty(G,"__esModule",{value:!0}),G.NetworkRequest=void 0;const Q=_,Y=p;class X{requestId;#T;#A;#L;#B;#V;#q;#U;constructor(e,t){this.requestId=e,this.#T=t,this.#q=new Q.Deferred,this.#U=new Q.Deferred}onRequestWillBeSentEvent(e){if(void 0!==this.#A)throw new Error("RequestWillBeSentEvent is already set");this.#A=e,void 0!==this.#L&&this.#q.resolve(),this.#F()}onRequestWillBeSentExtraInfoEvent(e){if(void 0!==this.#L)throw new Error("RequestWillBeSentExtraInfoEvent is already set");this.#L=e,void 0!==this.#A&&this.#q.resolve()}onResponseReceivedEvent(e){if(void 0!==this.#B)throw new Error("ResponseReceivedEvent is already set");this.#B=e,void 0!==this.#V&&this.#U.resolve(),this.#K()}onResponseReceivedEventExtraInfo(e){if(void 0!==this.#V)throw new Error("ResponseReceivedExtraInfoEvent is already set");this.#V=e,void 0!==this.#B&&this.#U.resolve()}#F(){this.#$()||this.#T.registerPromiseEvent(this.#q.then((()=>this.#W())),this.#A?.frameId??null,Y.Network.EventNames.BeforeRequestSentEvent)}#W(){if(void 0===this.#A)throw new Error("RequestWillBeSentEvent is not set");if(void 0===this.#L)throw new Error("RequestWillBeSentExtraInfoEvent is not set");const e=this.#A,t=this.#L,s={...{context:e.frameId??null,navigation:e.loaderId,redirectCount:0,request:this.#J(e,t),timestamp:Math.round(1e3*e.wallTime)},initiator:{type:this.#H()}};return{method:Y.Network.EventNames.BeforeRequestSentEvent,params:s}}#J(e,t){return{request:e.requestId,url:e.request.url,method:e.request.method,headers:Object.keys(e.request.headers).map((t=>({name:t,value:e.request.headers[t]}))),cookies:X.#G(t.associatedCookies),headersSize:-1,bodySize:0,timings:{timeOrigin:0,requestTime:0,redirectStart:0,redirectEnd:0,fetchStart:0,dnsStart:0,dnsEnd:0,connectStart:0,connectEnd:0,tlsStart:0,tlsEnd:0,requestStart:0,responseStart:0,responseEnd:0}}}#H(){switch(this.#A?.initiator.type){case"parser":case"script":case"preflight":return this.#A?.initiator.type;default:return"other"}}static#Q(e){switch(e){case"Strict":return"strict";case"Lax":return"lax";default:return"none"}}static#G(e){return e.map((e=>({name:e.cookie.name,value:e.cookie.value,domain:e.cookie.domain,path:e.cookie.path,expires:e.cookie.expires,size:e.cookie.size,httpOnly:e.cookie.httpOnly,secure:e.cookie.secure,sameSite:X.#Q(e.cookie.sameSite)})))}#K(){this.#$()||this.#T.registerPromiseEvent(this.#U.then((()=>this.#Y())),this.#B?.frameId??null,Y.Network.EventNames.ResponseCompletedEvent)}#Y(){if(void 0===this.#B)throw new Error("ResponseReceivedEvent is not set");if(void 0===this.#V)throw new Error("ResponseReceivedExtraInfoEvent is not set");if(void 0===this.#A)throw new Error("RequestWillBeSentEvent is not set");if(void 0===this.#L)throw new Error("RequestWillBeSentExtraInfoEvent is not set");const e=this.#A,t=this.#L,s=this.#B,n=this.#V,r={context:s.frameId??null,navigation:s.loaderId,redirectCount:0,request:this.#J(e,t),timestamp:Math.round(1e3*e.wallTime-e.timestamp+s.timestamp)};return{method:Y.Network.EventNames.ResponseCompletedEvent,params:{...r,response:{url:s.response.url,protocol:s.response.protocol,status:s.response.status,statusText:s.response.statusText,fromCache:s.response.fromDiskCache||s.response.fromPrefetchCache,headers:this.#X(s.response.headers),mimeType:s.response.mimeType,bytesReceived:s.response.encodedDataLength,headersSize:n.headersText?.length??-1,bodySize:-1,content:{size:-1}}}}}#X(e){return Object.keys(e).map((t=>({name:t,value:e[t]})))}#$(){return this.#A?.request.url.endsWith("/favicon.ico")??!1}}G.NetworkRequest=X,Object.defineProperty(H,"__esModule",{value:!0}),H.NetworkProcessor=void 0;const ee=G;class te{#T;#ee=new Map;constructor(e){this.#T=e}static async create(e,t){const s=new te(t);return e.on("Network.requestWillBeSent",(e=>{s.#te(e.requestId).onRequestWillBeSentEvent(e)})),e.on("Network.requestWillBeSentExtraInfo",(e=>{s.#te(e.requestId).onRequestWillBeSentExtraInfoEvent(e)})),e.on("Network.responseReceived",(e=>{s.#te(e.requestId).onResponseReceivedEvent(e)})),e.on("Network.responseReceivedExtraInfo",(e=>{s.#te(e.requestId).onResponseReceivedEventExtraInfo(e)})),await e.sendCommand("Network.enable"),s}#te(e){if(!this.#ee.has(e)){const t=new ee.NetworkRequest(e,this.#T);this.#ee.set(e,t)}return this.#ee.get(e)}}H.NetworkProcessor=te,Object.defineProperty(R,"__esModule",{value:!0}),R.CdpTarget=void 0;const se=z,ne=p,re=_,ae=H;class oe{#se;#ne;#x;#T;#re;#ae;static create(e,t,s,n,r){const a=new oe(e,t,s,r);return se.LogManager.create(a,n,r),a.#oe(),a.#ie(),a}constructor(e,t,s,n){this.#ne=e,this.#x=t,this.#re=s,this.#T=n,this.#ae=!1,this.#se=new re.Deferred}get targetUnblocked(){return this.#se}get targetId(){return this.#ne}get cdpClient(){return this.#x}get cdpSessionId(){return this.#re}async#ie(){this.#T.isNetworkDomainEnabled&&await this.enableNetworkDomain(),await this.#x.sendCommand("Runtime.enable"),await this.#x.sendCommand("Page.enable"),await this.#x.sendCommand("Page.setLifecycleEventsEnabled",{enabled:!0}),await this.#x.sendCommand("Target.setAutoAttach",{autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0}),await this.#x.sendCommand("Runtime.runIfWaitingForDebugger"),this.#se.resolve()}async enableNetworkDomain(){this.#ae||(this.#ae=!0,await ae.NetworkProcessor.create(this.cdpClient,this.#T))}#oe(){this.#x.on("*",(async(e,t)=>{this.#T.registerEvent({method:ne.CDP.EventNames.EventReceivedEvent,params:{cdpMethod:e,cdpParams:t||{},cdpSession:this.#re}},null)}))}}R.CdpTarget=oe,Object.defineProperty(x,"__esModule",{value:!0}),x.BrowsingContextProcessor=void 0;const ie=p,de=y,ce=C,ue=R;x.BrowsingContextProcessor=class{#g;#de;#T;#s;#m;#ce;constructor(e,t,s,n,r,a){this.#g=r,this.#de=t,this.#T=n,this.#s=a,this.#m=e,this.#ce=s,this.#oe(this.#de.browserClient())}#oe(e){e.on("Target.attachedToTarget",(async t=>{await this.#ue(t,e)})),e.on("Target.detachedFromTarget",(async e=>{await this.#le(e)})),e.on("Page.frameAttached",(async e=>{await this.#pe(e)})),e.on("Page.frameDetached",(async e=>{await this.#he(e)}))}async#pe(e){const t=this.#g.findContext(e.parentFrameId);void 0!==t&&await ce.BrowsingContextImpl.create(t.cdpTarget,this.#m,e.frameId,e.parentFrameId,this.#T,this.#g,this.#s)}async#he(e){"swap"!==e.reason&&await(this.#g.findContext(e.frameId)?.delete())}async#ue(e,t){const{sessionId:s,targetInfo:n}=e,r=this.#de.getCdpClient(s);if(!this.#me(n))return await r.sendCommand("Runtime.runIfWaitingForDebugger"),void await t.sendCommand("Target.detachFromTarget",e);this.#s?.(de.LogType.browsingContexts,"AttachedToTarget event received:",JSON.stringify(e,null,2)),this.#oe(r);const a=ue.CdpTarget.create(n.targetId,r,s,this.#m,this.#T);this.#g.hasKnownContext(n.targetId)?this.#g.getKnownContext(n.targetId).updateCdpTarget(a):await ce.BrowsingContextImpl.create(a,this.#m,n.targetId,null,this.#T,this.#g,this.#s)}async#le(e){const t=e.targetId;await(this.#g.findContext(t)?.delete())}process_browsingContext_getTree(e){return{result:{contexts:(void 0===e.root?this.#g.getTopLevelContexts():[this.#g.getKnownContext(e.root)]).map((t=>t.serializeToBidiValue(e.maxDepth??Number.MAX_VALUE)))}}}async process_browsingContext_create(e){const t=this.#de.browserClient();let s;if(void 0!==e.referenceContext&&(s=this.#g.getKnownContext(e.referenceContext),null!==s.parentId))throw new ie.Message.InvalidArgumentException("referenceContext should be a top-level context");const n=(await t.sendCommand("Target.createTarget",{url:"about:blank",newWindow:"window"===e.type})).targetId,r=this.#g.getKnownContext(n);return await r.awaitLoaded(),{result:r.serializeToBidiValue(1)}}async process_browsingContext_navigate(e){return this.#g.getKnownContext(e.context).navigate(e.url,void 0===e.wait?"none":e.wait)}async process_browsingContext_captureScreenshot(e){return this.#g.getKnownContext(e.context).captureScreenshot()}async process_browsingContext_print(e){return this.#g.getKnownContext(e.context).print(e)}async#ge(e){if("realm"in e)return this.#m.getRealm({realmId:e.realm});return this.#g.getKnownContext(e.context).getOrCreateSandbox(e.sandbox)}async process_script_evaluate(e){return(await this.#ge(e.target)).scriptEvaluate(e.expression,e.awaitPromise,e.resultOwnership??"none")}process_script_getRealms(e){void 0!==e.context&&this.#g.getKnownContext(e.context);const t=this.#m.findRealms({browsingContextId:e.context,type:e.type}).map((e=>e.toBiDi()));return{result:{realms:t}}}async process_script_callFunction(e){return(await this.#ge(e.target)).callFunction(e.functionDeclaration,e.this||{type:"undefined"},e.arguments||[],e.awaitPromise,e.resultOwnership??"none")}async process_script_disown(e){const t=await this.#ge(e.target);return await Promise.all(e.handles.map((async e=>t.disown(e)))),{result:{}}}async process_browsingContext_close(e){const t=this.#de.browserClient();if(null!==this.#g.getKnownContext(e.context).parentId)throw new ie.Message.InvalidArgumentException("Not a top-level browsing context cannot be closed.");const s=new Promise((s=>{const n=r=>{r.targetId===e.context&&(t.off("Target.detachedFromTarget",n),s())};t.on("Target.detachedFromTarget",n)}));return await this.#de.browserClient().sendCommand("Target.closeTarget",{targetId:e.context}),await s,{result:{}}}#me(e){return e.targetId!==this.#ce&&["page","iframe"].includes(e.type)}async process_cdp_sendCommand(e){const t=e.cdpSession?this.#de.getCdpClient(e.cdpSession):this.#de.browserClient();return{result:await t.sendCommand(e.cdpMethod,e.cdpParams),cdpSession:e.cdpSession}}process_cdp_getSession(e){const t=e.context,s=this.#g.getKnownContext(t).cdpTarget.cdpSessionId;return void 0===s?{result:{cdpSession:null}}:{result:{cdpSession:s}}}};var le={};Object.defineProperty(le,"__esModule",{value:!0}),le.OutgoingBidiMessage=void 0;class pe{#fe;#ve;constructor(e,t){this.#fe=e,this.#ve=t}static async createFromPromise(e,t){const s=await e;return new pe(s,t)}static createResolved(e,t){return Promise.resolve(new pe(e,t))}get message(){return this.#fe}get channel(){return this.#ve}}le.OutgoingBidiMessage=pe,Object.defineProperty(w,"__esModule",{value:!0}),w.CommandProcessor=void 0;const he=p,me=y,ge=m,fe=x,ve=le;class ye{parseGetRealmsParams(e){return e}parseCallFunctionParams(e){return e}parseEvaluateParams(e){return e}parseDisownParams(e){return e}parseSendCommandParams(e){return e}parseGetSessionParams(e){return e}parseSubscribeParams(e){return e}parseNavigateParams(e){return e}parseGetTreeParams(e){return e}parseCreateParams(e){return e}parseCloseParams(e){return e}parseCaptureScreenshotParams(e){return e}parsePrintParams(e){return e}}class be extends ge.EventEmitter{#ye;#T;#be;#s;constructor(e,t,s,n,r=new ye,a,o){super(),this.#T=s,this.#s=o,this.#ye=new fe.BrowsingContextProcessor(e,t,n,s,a,o),this.#be=r}static#we(){return{result:{ready:!1,message:"already connected"}}}async#xe(e,t){return await this.#T.subscribe(e.events,e.contexts??[null],t),{result:{}}}async#Ce(e,t){return await this.#T.unsubscribe(e.events,e.contexts??[null],t),{result:{}}}async#Ie(e){switch(e.method){case"session.status":return be.#we();case"session.subscribe":return this.#xe(this.#be.parseSubscribeParams(e.params),e.channel??null);case"session.unsubscribe":return this.#Ce(this.#be.parseSubscribeParams(e.params),e.channel??null);case"browsingContext.create":return this.#ye.process_browsingContext_create(this.#be.parseCreateParams(e.params));case"browsingContext.close":return this.#ye.process_browsingContext_close(this.#be.parseCloseParams(e.params));case"browsingContext.getTree":return this.#ye.process_browsingContext_getTree(this.#be.parseGetTreeParams(e.params));case"browsingContext.navigate":return this.#ye.process_browsingContext_navigate(this.#be.parseNavigateParams(e.params));case"browsingContext.captureScreenshot":return this.#ye.process_browsingContext_captureScreenshot(this.#be.parseCaptureScreenshotParams(e.params));case"browsingContext.print":return this.#ye.process_browsingContext_print(this.#be.parsePrintParams(e.params));case"script.getRealms":return this.#ye.process_script_getRealms(this.#be.parseGetRealmsParams(e.params));case"script.callFunction":return this.#ye.process_script_callFunction(this.#be.parseCallFunctionParams(e.params));case"script.evaluate":return this.#ye.process_script_evaluate(this.#be.parseEvaluateParams(e.params));case"script.disown":return this.#ye.process_script_disown(this.#be.parseDisownParams(e.params));case"cdp.sendCommand":return this.#ye.process_cdp_sendCommand(this.#be.parseSendCommandParams(e.params));case"cdp.getSession":return this.#ye.process_cdp_getSession(this.#be.parseGetSessionParams(e.params));default:throw new he.Message.UnknownCommandException(`Unknown command '${e.method}'.`)}}async processCommand(e){try{const t=await this.#Ie(e),s={id:e.id,...t};this.emit("response",ve.OutgoingBidiMessage.createResolved(s,e.channel??null))}catch(t){if(t instanceof he.Message.ErrorResponseClass){const s=t;this.emit("response",ve.OutgoingBidiMessage.createResolved(s.toErrorResponse(e.id),e.channel??null))}else{const s=t;this.#s?.(me.LogType.bidi,s),this.emit("response",ve.OutgoingBidiMessage.createResolved(new he.Message.UnknownException(s.message).toErrorResponse(e.id),e.channel??null))}}}}w.CommandProcessor=be;var we={};Object.defineProperty(we,"__esModule",{value:!0}),we.BrowsingContextStorage=void 0;const xe=p;we.BrowsingContextStorage=class{#_e=new Map;getTopLevelContexts(){return Array.from(this.#_e.values()).filter((e=>null===e.parentId))}getAllContexts(){return Array.from(this.#_e.values())}removeContext(e){this.#_e.delete(e)}addContext(e){this.#_e.set(e.contextId,e),null!==e.parentId&&this.getKnownContext(e.parentId).addChild(e)}hasKnownContext(e){return this.#_e.has(e)}findContext(e){return this.#_e.get(e)}getKnownContext(e){const t=this.findContext(e);if(void 0===t)throw new xe.Message.NoSuchFrameException(`Context ${e} not found`);return t}};var Ce={},Ie={};Object.defineProperty(Ie,"__esModule",{value:!0}),Ie.Buffer=void 0;Ie.Buffer=class{#Te;#Ee=[];#Se;constructor(e,t=(()=>{})){this.#Te=e,this.#Se=t}get(){return this.#Ee}add(e){for(this.#Ee.push(e);this.#Ee.length>this.#Te;){const e=this.#Ee.shift();void 0!==e&&this.#Se(e)}}};var _e={};Object.defineProperty(_e,"__esModule",{value:!0}),_e.IdWrapper=void 0;class Te{static#Pe=0;#Ne;constructor(){this.#Ne=++Te.#Pe}get id(){return this.#Ne}}_e.IdWrapper=Te;var Ee={};Object.defineProperty(Ee,"__esModule",{value:!0}),Ee.SubscriptionManager=Ee.unrollEvents=Ee.cartesianProduct=void 0;const Se=p;var Pe=Se.Message.InvalidArgumentException;function Ne(...e){return e.reduce(((e,t)=>e.flatMap((e=>t.map((t=>[e,t].flat()))))))}function Ze(e){const t=[];for(const s of e)switch(s){case Se.BrowsingContext.AllEvents:t.push(...Object.values(Se.BrowsingContext.EventNames));break;case Se.CDP.AllEvents:t.push(...Object.values(Se.CDP.EventNames));break;case Se.Log.AllEvents:t.push(...Object.values(Se.Log.EventNames));break;case Se.Network.AllEvents:t.push(...Object.values(Se.Network.EventNames));break;case Se.Script.AllEvents:t.push(...Object.values(Se.Script.EventNames));break;default:t.push(s)}return t}Ee.cartesianProduct=Ne,Ee.unrollEvents=Ze;Ee.SubscriptionManager=class{#Ze=0;#ke=new Map;#g;constructor(e){this.#g=e}getChannelsSubscribedToEvent(e,t){return Array.from(this.#ke.keys()).map((s=>({priority:this.#Me(e,t,s),channel:s}))).filter((({priority:e})=>null!==e)).sort(((e,t)=>e.priority-t.priority)).map((({channel:e})=>e))}#Me(e,t,s){const n=this.#ke.get(s);if(void 0===n)return null;const r=this.#Oe(t),a=[...new Set([null,r])].map((t=>n.get(t)?.get(e))).filter((e=>void 0!==e));return 0===a.length?null:Math.min(...a)}#Oe(e){if(null===e)return null;const t=this.#g.findContext(e)?.parentId??null;return null!==t?this.#Oe(t):e}subscribe(e,t,s){if(t=this.#Oe(t),e===Se.BrowsingContext.AllEvents)return void Object.values(Se.BrowsingContext.EventNames).map((e=>this.subscribe(e,t,s)));if(e===Se.CDP.AllEvents)return void Object.values(Se.CDP.EventNames).map((e=>this.subscribe(e,t,s)));if(e===Se.Log.AllEvents)return void Object.values(Se.Log.EventNames).map((e=>this.subscribe(e,t,s)));if(e===Se.Network.AllEvents)return void Object.values(Se.Network.EventNames).map((e=>this.subscribe(e,t,s)));if(e===Se.Script.AllEvents)return void Object.values(Se.Script.EventNames).map((e=>this.subscribe(e,t,s)));this.#ke.has(s)||this.#ke.set(s,new Map);const n=this.#ke.get(s);n.has(t)||n.set(t,new Map);const r=n.get(t);r.has(e)||r.set(e,this.#Ze++)}unsubscribeAll(e,t,s){for(const e of t)null!==e&&this.#g.getKnownContext(e);Ne(Ze(e),t).map((([e,t])=>this.#De(e,t,s))).forEach((e=>e()))}unsubscribe(e,t,s){this.unsubscribeAll([e],[t],s)}#De(e,t,s){if(t=this.#Oe(t),!this.#ke.has(s))throw new Pe(`Cannot unsubscribe from ${e}, ${t}. No subscription found.`);const n=this.#ke.get(s);if(!n.has(t))throw new Pe(`Cannot unsubscribe from ${e}, ${t}. No subscription found.`);const r=n.get(t);if(!r.has(e))throw new Pe(`Cannot unsubscribe from ${e}, ${t}. No subscription found.`);return()=>{r.delete(e),0===r.size&&n.delete(e),0===n.size&&this.#ke.delete(s)}}},Object.defineProperty(Ce,"__esModule",{value:!0}),Ce.EventManager=void 0;const ke=Ie,Me=_e,Oe=le,De=Ee;class je{#je;#I;#Re;constructor(e,t){this.#je=new Me.IdWrapper,this.#I=t,this.#Re=e}get id(){return this.#je.id}get contextId(){return this.#I}get event(){return this.#Re}}const Re=new Map([["log.entryAdded",100]]);class ze{static#ze="network";#Ae=new Map;#Le=new Map;#Be=new Map;#Ve;#qe;#Ue;constructor(e){this.#qe=e,this.#Ve=new De.SubscriptionManager(e.getBrowsingContextStorage()),this.#Ue=!1}get isNetworkDomainEnabled(){return this.#Ue}static#Fe(e,t,s){return JSON.stringify({eventName:e,browsingContext:t,channel:s})}registerEvent(e,t){this.registerPromiseEvent(Promise.resolve(e),t,e.method)}registerPromiseEvent(e,t,s){const n=new je(e,t),r=this.#Ve.getChannelsSubscribedToEvent(s,t);this.#Ke(n,s);for(const t of r)this.#qe.emitOutgoingMessage(Oe.OutgoingBidiMessage.createFromPromise(e,t)),this.#$e(n,t,s)}async subscribe(e,t,s){for(const e of t)null!==e&&this.#qe.getBrowsingContextStorage().getKnownContext(e);for(const n of e)for(const e of t){await this.#We(n,e),this.#Ve.subscribe(n,e,s);for(const t of this.#Je(n,e,s))this.#qe.emitOutgoingMessage(Oe.OutgoingBidiMessage.createFromPromise(t.event,s)),this.#$e(t,s,n)}}async#We(e,t){e.startsWith(ze.#ze)&&(null===t?(this.#Ue=!0,await Promise.all(this.#qe.getBrowsingContextStorage().getAllContexts().map((e=>e.cdpTarget.enableNetworkDomain())))):await this.#qe.getBrowsingContextStorage().getKnownContext(t).cdpTarget.enableNetworkDomain())}async unsubscribe(e,t,s){this.#Ve.unsubscribeAll(e,t,s)}#Ke(e,t){if(!Re.has(t))return;const s=ze.#Fe(t,e.contextId);this.#Le.has(s)||this.#Le.set(s,new ke.Buffer(Re.get(t))),this.#Le.get(s).add(e),this.#Ae.has(t)||this.#Ae.set(t,new Set),this.#Ae.get(t).add(e.contextId)}#$e(e,t,s){if(!Re.has(s))return;const n=ze.#Fe(s,e.contextId,t);this.#Be.set(n,Math.max(this.#Be.get(n)??0,e.id))}#Je(e,t,s){const n=ze.#Fe(e,t),r=ze.#Fe(e,t,s),a=this.#Be.get(r)??-1/0,o=this.#Le.get(n)?.get().filter((e=>e.id>a))??[];return null===t&&Array.from(this.#Ae.get(e)?.keys()??[]).filter((e=>null!==e&&this.#qe.getBrowsingContextStorage().hasKnownContext(e))).map((t=>this.#Je(e,t,s))).forEach((e=>o.push(...e))),o.sort(((e,t)=>e.id-t.id))}}Ce.EventManager=ze;var Ae={};Object.defineProperty(Ae,"__esModule",{value:!0}),Ae.RealmStorage=void 0;const Le=p;Ae.RealmStorage=class{#He=new Map;#Ge=new Map;get knownHandlesToRealm(){return this.#He}get realmMap(){return this.#Ge}findRealms(e){return Array.from(this.#Ge.values()).filter((t=>(void 0===e.realmId||e.realmId===t.realmId)&&((void 0===e.browsingContextId||e.browsingContextId===t.browsingContextId)&&((void 0===e.navigableId||e.navigableId===t.navigableId)&&((void 0===e.executionContextId||e.executionContextId===t.executionContextId)&&((void 0===e.origin||e.origin===t.origin)&&((void 0===e.type||e.type===t.type)&&((void 0===e.sandbox||e.sandbox===t.sandbox)&&(void 0===e.cdpSessionId||e.cdpSessionId===t.cdpSessionId)))))))))}findRealm(e){const t=this.findRealms(e);if(1===t.length)return t[0]}getRealm(e){const t=this.findRealm(e);if(void 0===t)throw new Le.Message.NoSuchFrameException(`Realm ${JSON.stringify(e)} not found`);return t}deleteRealms(e){this.findRealms(e).map((e=>{this.#Ge.delete(e.realmId),Array.from(this.#He.entries()).filter((([,t])=>t===e.realmId)).map((([e])=>this.#He.delete(e)))}))}},Object.defineProperty(h,"__esModule",{value:!0}),h.BidiServer=void 0;const Be=m,Ve=v,qe=w,Ue=we,Fe=Ce,Ke=Ae;class $e extends Be.EventEmitter{#Qe;#Ye;#Xe;#g;#m;#s;#et=async e=>{this.#Xe.processCommand(e)};#tt=async e=>{const t=e.message;null!==e.channel&&(t.channel=e.channel),await this.#Ye.sendMessage(t)};constructor(e,t,s,n,r){super(),this.#s=r,this.#g=new Ue.BrowsingContextStorage,this.#m=new Ke.RealmStorage,this.#Qe=new Ve.ProcessingQueue(this.#tt,void 0,this.#s),this.#Ye=e,this.#Ye.setOnMessage(this.#et),this.#Xe=new qe.CommandProcessor(this.#m,t,new Fe.EventManager(this),s,n,this.#g,this.#s),this.#Xe.on("response",(e=>{this.emitOutgoingMessage(e)}))}static async createAndStart(e,t,s,n,r){const a=new $e(e,t,s,n,r),o=t.browserClient();return await o.sendCommand("Target.setDiscoverTargets",{discover:!0}),await o.sendCommand("Target.setAutoAttach",{autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0}),await a.topLevelContextsLoaded(),a}async topLevelContextsLoaded(){await Promise.all(this.#g.getTopLevelContexts().map((e=>e.awaitLoaded())))}emitOutgoingMessage(e){this.#Qe.add(e)}close(){this.#Ye.close()}getBrowsingContextStorage(){return this.#g}}h.BidiServer=$e;var We={},Je={};Object.defineProperty(Je,"__esModule",{value:!0}),Je.CdpClient=void 0;const He=m;class Ge extends He.EventEmitter{#de;#st;constructor(e,t){super(),this.#de=e,this.#st=t}static create(e,t){return new Ge(e,t)}sendCommand(e,...t){const s=t[0];return this.#de.sendCommand(e,s,this.#st)}}Je.CdpClient=Ge;var Qe={};Object.defineProperty(Qe,"__esModule",{value:!0}),Qe.CdpConnection=void 0;const Ye=Je;Qe.CdpConnection=class{#Ye;#nt;#rt=new Map;#at=new Map;#ot;#it=0;constructor(e,t=(()=>{})){this.#Ye=e,this.#ot=t,this.#Ye.setOnMessage(this.#dt),this.#nt=Ye.CdpClient.create(this,null)}close(){this.#Ye.close();for(const[,{reject:e}]of this.#at)e(new Error("Disconnected"));this.#at.clear(),this.#rt.clear()}browserClient(){return this.#nt}getCdpClient(e){const t=this.#rt.get(e);if(!t)throw new Error("Unknown CDP session ID");return t}sendCommand(e,t,s){return new Promise(((n,r)=>{const a=this.#it++;this.#at.set(a,{resolve:n,reject:r});const o={id:a,method:e,params:t};s&&(o.sessionId=s);const i=JSON.stringify(o),d=JSON.stringify(o,null,2);this.#Ye.sendMessage(i),this.#ot("sent ▸",d)}))}#dt=async e=>{const t=JSON.parse(e),s=JSON.stringify(t,null,2);if(this.#ot("received ◂",s),"Target.attachedToTarget"===t.method){const{sessionId:e}=t.params;this.#rt.set(e,Ye.CdpClient.create(this,e))}else if("Target.detachedFromTarget"===t.method){const{sessionId:e}=t.params;this.#rt.get(e)&&this.#rt.delete(e)}if(void 0!==t.id){const e=this.#at.get(t.id);e&&(t.result?e.resolve(t.result):t.error&&e.reject(t.error))}else if(t.method){const e=t.sessionId?this.#rt.get(t.sessionId):this.#nt;e&&e.emit(t.method,t.params||{})}}};var Xe={};Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.WebSocketTransport=void 0;Xe.WebSocketTransport=class{#dt=null;#ct;constructor(e){this.#ct=e,this.#ct.on("message",(e=>{this.#dt?.(e)}))}setOnMessage(e){this.#dt=e}async sendMessage(e){this.#ct.send(e)}close(){this.#dt=null,this.#ct.close()}},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WebSocketTransport=e.CdpConnection=e.CdpClient=void 0;var t=Je;Object.defineProperty(e,"CdpClient",{enumerable:!0,get:function(){return t.CdpClient}});var s=Qe;Object.defineProperty(e,"CdpConnection",{enumerable:!0,get:function(){return s.CdpConnection}});var n=Xe;Object.defineProperty(e,"WebSocketTransport",{enumerable:!0,get:function(){return n.WebSocketTransport}})}(We);var et={};Object.defineProperty(et,"__esModule",{value:!0}),et.log=et.generatePage=void 0;const tt=y;function st(e){const t=`${e}_log`,s=document.getElementById(t);if(s)return s;const n=document.getElementById("details"),r=document.createElement("div");r.className="divider",n.appendChild(r);const a=document.createElement("div");return a.className="item",a.innerHTML=`<h3>${e}</h3><div id="${t}" class="log"></div>`,n.appendChild(a),document.getElementById(t)}et.generatePage=function(){globalThis.document?.documentElement&&(window.document.documentElement.innerHTML='<!DOCTYPE html><title>BiDi-CDP Mapper</title><style>body{font-family: Roboto, serif; font-size: 13px; color: #202124;}.log{padding: 12px; font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; font-size: 11px; line-height: 180%; background: #f1f3f4; border-radius: 4px;}.pre{overflow-wrap: break-word; padding: 10px;}.card{margin: 60px auto; padding: 2px 0; max-width: 900px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15), 0 1px 6px rgba(0, 0, 0, 0.2); border-radius: 8px;}.divider{height: 1px; background: #f0f0f0;}.item{padding: 16px 20px;}</style><div class="card"><div class="item"><h1>BiDi-CDP Mapper is controlling this tab</h1><p>Closing or reloading it will stop the BiDi process. <a target="_blank" title="BiDi-CDP Mapper GitHub Repository" href="https://github.com/GoogleChromeLabs/chromium-bidi">Details.</a></p></div><div class="divider"></div><details id="details"><summary class="item">Debug information</summary></details></div>',st(tt.LogType.system),st(tt.LogType.bidi),st(tt.LogType.browsingContexts),st(tt.LogType.cdp))},et.log=function(t,...s){if(!globalThis.document?.documentElement)return;e.window?.sendDebugMessage?.(JSON.stringify({logType:t,messages:s}));const n=st(t),r=document.createElement("div");r.className="pre",r.textContent=s.join(" "),n.appendChild(r)}; +var mapperTab=function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t={},s={},n={},r={},a={},i={},o={};!function(e){var t;Object.defineProperty(e,"__esModule",{value:!0}),e.getParsedType=e.ZodParsedType=e.objectUtil=e.util=void 0,function(e){e.assertEqual=e=>e,e.assertIs=function(e){},e.assertNever=function(e){throw new Error},e.arrayToEnum=e=>{const t={};for(const s of e)t[s]=s;return t},e.getValidEnumValues=t=>{const s=e.objectKeys(t).filter((e=>"number"!=typeof t[t[e]])),n={};for(const e of s)n[e]=t[e];return e.objectValues(n)},e.objectValues=t=>e.objectKeys(t).map((function(e){return t[e]})),e.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{const t=[];for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.push(s);return t},e.find=(e,t)=>{for(const s of e)if(t(s))return s},e.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&isFinite(e)&&Math.floor(e)===e,e.joinValues=function(e,t=" | "){return e.map((e=>"string"==typeof e?`'${e}'`:e)).join(t)},e.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t}(t=e.util||(e.util={})),(e.objectUtil||(e.objectUtil={})).mergeShapes=(e,t)=>({...e,...t}),e.ZodParsedType=t.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);e.getParsedType=t=>{switch(typeof t){case"undefined":return e.ZodParsedType.undefined;case"string":return e.ZodParsedType.string;case"number":return isNaN(t)?e.ZodParsedType.nan:e.ZodParsedType.number;case"boolean":return e.ZodParsedType.boolean;case"function":return e.ZodParsedType.function;case"bigint":return e.ZodParsedType.bigint;case"symbol":return e.ZodParsedType.symbol;case"object":return Array.isArray(t)?e.ZodParsedType.array:null===t?e.ZodParsedType.null:t.then&&"function"==typeof t.then&&t.catch&&"function"==typeof t.catch?e.ZodParsedType.promise:"undefined"!=typeof Map&&t instanceof Map?e.ZodParsedType.map:"undefined"!=typeof Set&&t instanceof Set?e.ZodParsedType.set:"undefined"!=typeof Date&&t instanceof Date?e.ZodParsedType.date:e.ZodParsedType.object;default:return e.ZodParsedType.unknown}}}(o);var d={};Object.defineProperty(d,"__esModule",{value:!0}),d.ZodError=d.quotelessJson=d.ZodIssueCode=void 0;const c=o;d.ZodIssueCode=c.util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);d.quotelessJson=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class u extends Error{constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const t=e||function(e){return e.message},s={_errors:[]},n=e=>{for(const r of e.issues)if("invalid_union"===r.code)r.unionErrors.map(n);else if("invalid_return_type"===r.code)n(r.returnTypeError);else if("invalid_arguments"===r.code)n(r.argumentsError);else if(0===r.path.length)s._errors.push(t(r));else{let e=s,n=0;for(;n<r.path.length;){const s=r.path[n];n===r.path.length-1?(e[s]=e[s]||{_errors:[]},e[s]._errors.push(t(r))):e[s]=e[s]||{_errors:[]},e=e[s],n++}}};return n(this),s}toString(){return this.message}get message(){return JSON.stringify(this.issues,c.util.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=(e=>e.message)){const t={},s=[];for(const n of this.issues)n.path.length>0?(t[n.path[0]]=t[n.path[0]]||[],t[n.path[0]].push(e(n))):s.push(e(n));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}}d.ZodError=u,u.create=e=>new u(e),Object.defineProperty(i,"__esModule",{value:!0});const l=o,p=d;i.default=(e,t)=>{let s;switch(e.code){case p.ZodIssueCode.invalid_type:s=e.received===l.ZodParsedType.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case p.ZodIssueCode.invalid_literal:s=`Invalid literal value, expected ${JSON.stringify(e.expected,l.util.jsonStringifyReplacer)}`;break;case p.ZodIssueCode.unrecognized_keys:s=`Unrecognized key(s) in object: ${l.util.joinValues(e.keys,", ")}`;break;case p.ZodIssueCode.invalid_union:s="Invalid input";break;case p.ZodIssueCode.invalid_union_discriminator:s=`Invalid discriminator value. Expected ${l.util.joinValues(e.options)}`;break;case p.ZodIssueCode.invalid_enum_value:s=`Invalid enum value. Expected ${l.util.joinValues(e.options)}, received '${e.received}'`;break;case p.ZodIssueCode.invalid_arguments:s="Invalid function arguments";break;case p.ZodIssueCode.invalid_return_type:s="Invalid function return type";break;case p.ZodIssueCode.invalid_date:s="Invalid date";break;case p.ZodIssueCode.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(s=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(s=`${s} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?s=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?s=`Invalid input: must end with "${e.validation.endsWith}"`:l.util.assertNever(e.validation):s="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case p.ZodIssueCode.too_small:s="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"date"===e.type?`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:"Invalid input";break;case p.ZodIssueCode.too_big:s="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:"Invalid input";break;case p.ZodIssueCode.custom:s="Invalid input";break;case p.ZodIssueCode.invalid_intersection_types:s="Intersection results could not be merged";break;case p.ZodIssueCode.not_multiple_of:s=`Number must be a multiple of ${e.multipleOf}`;break;case p.ZodIssueCode.not_finite:s="Number must be finite";break;default:s=t.defaultError,l.util.assertNever(e)}return{message:s}};var h=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.getErrorMap=a.setErrorMap=a.defaultErrorMap=void 0;const m=h(i);a.defaultErrorMap=m.default;let g=m.default;a.setErrorMap=function(e){g=e},a.getErrorMap=function(){return g};var f={};!function(t){var s=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isAsync=t.isValid=t.isDirty=t.isAborted=t.OK=t.DIRTY=t.INVALID=t.ParseStatus=t.addIssueToContext=t.EMPTY_PATH=t.makeIssue=void 0;const n=a,r=s(i);t.makeIssue=e=>{const{data:t,path:s,errorMaps:n,issueData:r}=e,a=[...s,...r.path||[]],i={...r,path:a};let o="";const d=n.filter((e=>!!e)).slice().reverse();for(const e of d)o=e(i,{data:t,defaultError:o}).message;return{...r,path:a,message:r.message||o}},t.EMPTY_PATH=[],t.addIssueToContext=function(e,s){const a=(0,t.makeIssue)({issueData:s,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,(0,n.getErrorMap)(),r.default].filter((e=>!!e))});e.common.issues.push(a)};class o{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,s){const n=[];for(const r of s){if("aborted"===r.status)return t.INVALID;"dirty"===r.status&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,t){const s=[];for(const e of t)s.push({key:await e.key,value:await e.value});return o.mergeObjectSync(e,s)}static mergeObjectSync(e,s){const n={};for(const r of s){const{key:s,value:a}=r;if("aborted"===s.status)return t.INVALID;if("aborted"===a.status)return t.INVALID;"dirty"===s.status&&e.dirty(),"dirty"===a.status&&e.dirty(),(void 0!==a.value||r.alwaysSet)&&(n[s.value]=a.value)}return{status:e.value,value:n}}}t.ParseStatus=o,t.INVALID=Object.freeze({status:"aborted"});t.DIRTY=e=>({status:"dirty",value:e});t.OK=e=>({status:"valid",value:e});t.isAborted=e=>"aborted"===e.status;t.isDirty=e=>"dirty"===e.status;t.isValid=e=>"valid"===e.status;t.isAsync=e=>"undefined"!=typeof Promise&&e instanceof Promise}(f);var v={};Object.defineProperty(v,"__esModule",{value:!0});var y,x={},b={};y=b,Object.defineProperty(y,"__esModule",{value:!0}),y.errorUtil=void 0,function(e){e.errToObj=e=>"string"==typeof e?{message:e}:e||{},e.toString=e=>"string"==typeof e?e:null==e?void 0:e.message}(y.errorUtil||(y.errorUtil={})),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.discriminatedUnion=e.date=e.boolean=e.bigint=e.array=e.any=e.coerce=e.ZodFirstPartyTypeKind=e.late=e.ZodSchema=e.Schema=e.custom=e.ZodPipeline=e.ZodBranded=e.BRAND=e.ZodNaN=e.ZodCatch=e.ZodDefault=e.ZodNullable=e.ZodOptional=e.ZodTransformer=e.ZodEffects=e.ZodPromise=e.ZodNativeEnum=e.ZodEnum=e.ZodLiteral=e.ZodLazy=e.ZodFunction=e.ZodSet=e.ZodMap=e.ZodRecord=e.ZodTuple=e.ZodIntersection=e.ZodDiscriminatedUnion=e.ZodUnion=e.ZodObject=e.ZodArray=e.ZodVoid=e.ZodNever=e.ZodUnknown=e.ZodAny=e.ZodNull=e.ZodUndefined=e.ZodSymbol=e.ZodDate=e.ZodBoolean=e.ZodBigInt=e.ZodNumber=e.ZodString=e.ZodType=void 0,e.NEVER=e.void=e.unknown=e.union=e.undefined=e.tuple=e.transformer=e.symbol=e.string=e.strictObject=e.set=e.record=e.promise=e.preprocess=e.pipeline=e.ostring=e.optional=e.onumber=e.oboolean=e.object=e.number=e.nullable=e.null=e.never=e.nativeEnum=e.nan=e.map=e.literal=e.lazy=e.intersection=e.instanceof=e.function=e.enum=e.effect=void 0;const t=a,s=b,n=f,r=o,i=d;class c{constructor(e,t,s,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=n}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const u=(e,t)=>{if((0,n.isValid)(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const t=new i.ZodError(e.common.issues);return this._error=t,this._error}}};function l(e){if(!e)return{};const{errorMap:t,invalid_type_error:s,required_error:n,description:r}=e;if(t&&(s||n))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');if(t)return{errorMap:t,description:r};return{errorMap:(e,t)=>"invalid_type"!==e.code?{message:t.defaultError}:void 0===t.data?{message:null!=n?n:t.defaultError}:{message:null!=s?s:t.defaultError},description:r}}class p{constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return(0,r.getParsedType)(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:(0,r.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new n.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,r.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if((0,n.isAsync)(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){var s;const n={common:{issues:[],async:null!==(s=null==t?void 0:t.async)&&void 0!==s&&s,contextualErrorMap:null==t?void 0:t.errorMap},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,r.getParsedType)(e)},a=this._parseSync({data:e,path:n.path,parent:n});return u(n,a)}async parseAsync(e,t){const s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){const s={common:{issues:[],contextualErrorMap:null==t?void 0:t.errorMap,async:!0},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,r.getParsedType)(e)},a=this._parse({data:e,path:s.path,parent:s}),i=await((0,n.isAsync)(a)?a:Promise.resolve(a));return u(s,i)}refine(e,t){const s=e=>"string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(e):t;return this._refinement(((t,n)=>{const r=e(t),a=()=>n.addIssue({code:i.ZodIssueCode.custom,...s(t)});return"undefined"!=typeof Promise&&r instanceof Promise?r.then((e=>!!e||(a(),!1))):!!r||(a(),!1)}))}refinement(e,t){return this._refinement(((s,n)=>!!e(s)||(n.addIssue("function"==typeof t?t(s,n):t),!1)))}_refinement(e){return new te({schema:this,typeName:ce.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}optional(){return se.create(this,this._def)}nullable(){return ne.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return j.create(this,this._def)}promise(){return ee.create(this,this._def)}or(e){return L.create([this,e],this._def)}and(e){return $.create(this,e,this._def)}transform(e){return new te({...l(this._def),schema:this,typeName:ce.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const t="function"==typeof e?e:()=>e;return new re({...l(this._def),innerType:this,defaultValue:t,typeName:ce.ZodDefault})}brand(){return new oe({typeName:ce.ZodBranded,type:this,...l(this._def)})}catch(e){const t="function"==typeof e?e:()=>e;return new ae({...l(this._def),innerType:this,catchValue:t,typeName:ce.ZodCatch})}describe(e){return new(0,this.constructor)({...this._def,description:e})}pipe(e){return de.create(this,e)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}e.ZodType=p,e.Schema=p,e.ZodSchema=p;const h=/^c[^\s-]{8,}$/i,m=/^[a-z][a-z0-9]*$/,g=/[0-9A-HJKMNP-TV-Z]{26}/,v=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,y=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/,x=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,C=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,w=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;class _ extends p{constructor(){super(...arguments),this._regex=(e,t,n)=>this.refinement((t=>e.test(t)),{validation:t,code:i.ZodIssueCode.invalid_string,...s.errorUtil.errToObj(n)}),this.nonempty=e=>this.min(1,s.errorUtil.errToObj(e)),this.trim=()=>new _({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new _({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new _({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(e){this._def.coerce&&(e.data=String(e.data));if(this._getType(e)!==r.ZodParsedType.string){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.string,received:t.parsedType}),n.INVALID}const t=new n.ParseStatus;let s;for(const c of this._def.checks)if("min"===c.kind)e.data.length<c.value&&(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_small,minimum:c.value,type:"string",inclusive:!0,exact:!1,message:c.message}),t.dirty());else if("max"===c.kind)e.data.length>c.value&&(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_big,maximum:c.value,type:"string",inclusive:!0,exact:!1,message:c.message}),t.dirty());else if("length"===c.kind){const r=e.data.length>c.value,a=e.data.length<c.value;(r||a)&&(s=this._getOrReturnCtx(e,s),r?(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_big,maximum:c.value,type:"string",inclusive:!0,exact:!0,message:c.message}):a&&(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_small,minimum:c.value,type:"string",inclusive:!0,exact:!0,message:c.message}),t.dirty())}else if("email"===c.kind)y.test(e.data)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{validation:"email",code:i.ZodIssueCode.invalid_string,message:c.message}),t.dirty());else if("emoji"===c.kind)x.test(e.data)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{validation:"emoji",code:i.ZodIssueCode.invalid_string,message:c.message}),t.dirty());else if("uuid"===c.kind)v.test(e.data)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{validation:"uuid",code:i.ZodIssueCode.invalid_string,message:c.message}),t.dirty());else if("cuid"===c.kind)h.test(e.data)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{validation:"cuid",code:i.ZodIssueCode.invalid_string,message:c.message}),t.dirty());else if("cuid2"===c.kind)m.test(e.data)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{validation:"cuid2",code:i.ZodIssueCode.invalid_string,message:c.message}),t.dirty());else if("ulid"===c.kind)g.test(e.data)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{validation:"ulid",code:i.ZodIssueCode.invalid_string,message:c.message}),t.dirty());else if("url"===c.kind)try{new URL(e.data)}catch(r){s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{validation:"url",code:i.ZodIssueCode.invalid_string,message:c.message}),t.dirty()}else if("regex"===c.kind){c.regex.lastIndex=0;c.regex.test(e.data)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{validation:"regex",code:i.ZodIssueCode.invalid_string,message:c.message}),t.dirty())}else if("trim"===c.kind)e.data=e.data.trim();else if("includes"===c.kind)e.data.includes(c.value,c.position)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_string,validation:{includes:c.value,position:c.position},message:c.message}),t.dirty());else if("toLowerCase"===c.kind)e.data=e.data.toLowerCase();else if("toUpperCase"===c.kind)e.data=e.data.toUpperCase();else if("startsWith"===c.kind)e.data.startsWith(c.value)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_string,validation:{startsWith:c.value},message:c.message}),t.dirty());else if("endsWith"===c.kind)e.data.endsWith(c.value)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_string,validation:{endsWith:c.value},message:c.message}),t.dirty());else if("datetime"===c.kind){((d=c).precision?d.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${d.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${d.precision}}Z$`):0===d.precision?d.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):d.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$")).test(e.data)||(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_string,validation:"datetime",message:c.message}),t.dirty())}else"ip"===c.kind?(a=e.data,("v4"!==(o=c.version)&&o||!C.test(a))&&("v6"!==o&&o||!w.test(a))&&(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{validation:"ip",code:i.ZodIssueCode.invalid_string,message:c.message}),t.dirty())):r.util.assertNever(c);var a,o,d;return{status:t.value,value:e.data}}_addCheck(e){return new _({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...s.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:"url",...s.errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...s.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...s.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...s.errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...s.errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...s.errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...s.errorUtil.errToObj(e)})}datetime(e){var t;return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===(null==e?void 0:e.precision)?null:null==e?void 0:e.precision,offset:null!==(t=null==e?void 0:e.offset)&&void 0!==t&&t,...s.errorUtil.errToObj(null==e?void 0:e.message)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...s.errorUtil.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:null==t?void 0:t.position,...s.errorUtil.errToObj(null==t?void 0:t.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...s.errorUtil.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...s.errorUtil.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...s.errorUtil.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...s.errorUtil.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...s.errorUtil.errToObj(t)})}get isDatetime(){return!!this._def.checks.find((e=>"datetime"===e.kind))}get isEmail(){return!!this._def.checks.find((e=>"email"===e.kind))}get isURL(){return!!this._def.checks.find((e=>"url"===e.kind))}get isEmoji(){return!!this._def.checks.find((e=>"emoji"===e.kind))}get isUUID(){return!!this._def.checks.find((e=>"uuid"===e.kind))}get isCUID(){return!!this._def.checks.find((e=>"cuid"===e.kind))}get isCUID2(){return!!this._def.checks.find((e=>"cuid2"===e.kind))}get isULID(){return!!this._def.checks.find((e=>"ulid"===e.kind))}get isIP(){return!!this._def.checks.find((e=>"ip"===e.kind))}get minLength(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}function I(e,t){const s=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,r=s>n?s:n;return parseInt(e.toFixed(r).replace(".",""))%parseInt(t.toFixed(r).replace(".",""))/Math.pow(10,r)}e.ZodString=_,_.create=e=>{var t;return new _({checks:[],typeName:ce.ZodString,coerce:null!==(t=null==e?void 0:e.coerce)&&void 0!==t&&t,...l(e)})};class S extends p{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){this._def.coerce&&(e.data=Number(e.data));if(this._getType(e)!==r.ZodParsedType.number){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.number,received:t.parsedType}),n.INVALID}let t;const s=new n.ParseStatus;for(const a of this._def.checks)if("int"===a.kind)r.util.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:"integer",received:"float",message:a.message}),s.dirty());else if("min"===a.kind){(a.inclusive?e.data<a.value:e.data<=a.value)&&(t=this._getOrReturnCtx(e,t),(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),s.dirty())}else if("max"===a.kind){(a.inclusive?e.data>a.value:e.data>=a.value)&&(t=this._getOrReturnCtx(e,t),(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),s.dirty())}else"multipleOf"===a.kind?0!==I(e.data,a.value)&&(t=this._getOrReturnCtx(e,t),(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.not_multiple_of,multipleOf:a.value,message:a.message}),s.dirty()):"finite"===a.kind?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.not_finite,message:a.message}),s.dirty()):r.util.assertNever(a);return{status:s.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,s.errorUtil.toString(t))}gt(e,t){return this.setLimit("min",e,!1,s.errorUtil.toString(t))}lte(e,t){return this.setLimit("max",e,!0,s.errorUtil.toString(t))}lt(e,t){return this.setLimit("max",e,!1,s.errorUtil.toString(t))}setLimit(e,t,n,r){return new S({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:s.errorUtil.toString(r)}]})}_addCheck(e){return new S({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:s.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:s.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:s.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:s.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:s.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:s.errorUtil.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:s.errorUtil.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:s.errorUtil.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:s.errorUtil.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find((e=>"int"===e.kind||"multipleOf"===e.kind&&r.util.isInteger(e.value)))}get isFinite(){let e=null,t=null;for(const s of this._def.checks){if("finite"===s.kind||"int"===s.kind||"multipleOf"===s.kind)return!0;"min"===s.kind?(null===t||s.value>t)&&(t=s.value):"max"===s.kind&&(null===e||s.value<e)&&(e=s.value)}return Number.isFinite(t)&&Number.isFinite(e)}}e.ZodNumber=S,S.create=e=>new S({checks:[],typeName:ce.ZodNumber,coerce:(null==e?void 0:e.coerce)||!1,...l(e)});class E extends p{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){this._def.coerce&&(e.data=BigInt(e.data));if(this._getType(e)!==r.ZodParsedType.bigint){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.bigint,received:t.parsedType}),n.INVALID}let t;const s=new n.ParseStatus;for(const a of this._def.checks)if("min"===a.kind){(a.inclusive?e.data<a.value:e.data<=a.value)&&(t=this._getOrReturnCtx(e,t),(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),s.dirty())}else if("max"===a.kind){(a.inclusive?e.data>a.value:e.data>=a.value)&&(t=this._getOrReturnCtx(e,t),(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),s.dirty())}else"multipleOf"===a.kind?e.data%a.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.not_multiple_of,multipleOf:a.value,message:a.message}),s.dirty()):r.util.assertNever(a);return{status:s.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,s.errorUtil.toString(t))}gt(e,t){return this.setLimit("min",e,!1,s.errorUtil.toString(t))}lte(e,t){return this.setLimit("max",e,!0,s.errorUtil.toString(t))}lt(e,t){return this.setLimit("max",e,!1,s.errorUtil.toString(t))}setLimit(e,t,n,r){return new E({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:s.errorUtil.toString(r)}]})}_addCheck(e){return new E({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:s.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:s.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:s.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:s.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:s.errorUtil.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}e.ZodBigInt=E,E.create=e=>{var t;return new E({checks:[],typeName:ce.ZodBigInt,coerce:null!==(t=null==e?void 0:e.coerce)&&void 0!==t&&t,...l(e)})};class T extends p{_parse(e){this._def.coerce&&(e.data=Boolean(e.data));if(this._getType(e)!==r.ZodParsedType.boolean){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.boolean,received:t.parsedType}),n.INVALID}return(0,n.OK)(e.data)}}e.ZodBoolean=T,T.create=e=>new T({typeName:ce.ZodBoolean,coerce:(null==e?void 0:e.coerce)||!1,...l(e)});class P extends p{_parse(e){this._def.coerce&&(e.data=new Date(e.data));if(this._getType(e)!==r.ZodParsedType.date){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.date,received:t.parsedType}),n.INVALID}if(isNaN(e.data.getTime())){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_date}),n.INVALID}const t=new n.ParseStatus;let s;for(const a of this._def.checks)"min"===a.kind?e.data.getTime()<a.value&&(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_small,message:a.message,inclusive:!0,exact:!1,minimum:a.value,type:"date"}),t.dirty()):"max"===a.kind?e.data.getTime()>a.value&&(s=this._getOrReturnCtx(e,s),(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),t.dirty()):r.util.assertNever(a);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new P({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:s.errorUtil.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:s.errorUtil.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}e.ZodDate=P,P.create=e=>new P({checks:[],coerce:(null==e?void 0:e.coerce)||!1,typeName:ce.ZodDate,...l(e)});class k extends p{_parse(e){if(this._getType(e)!==r.ZodParsedType.symbol){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.symbol,received:t.parsedType}),n.INVALID}return(0,n.OK)(e.data)}}e.ZodSymbol=k,k.create=e=>new k({typeName:ce.ZodSymbol,...l(e)});class N extends p{_parse(e){if(this._getType(e)!==r.ZodParsedType.undefined){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.undefined,received:t.parsedType}),n.INVALID}return(0,n.OK)(e.data)}}e.ZodUndefined=N,N.create=e=>new N({typeName:ce.ZodUndefined,...l(e)});class Z extends p{_parse(e){if(this._getType(e)!==r.ZodParsedType.null){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.null,received:t.parsedType}),n.INVALID}return(0,n.OK)(e.data)}}e.ZodNull=Z,Z.create=e=>new Z({typeName:ce.ZodNull,...l(e)});class O extends p{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,n.OK)(e.data)}}e.ZodAny=O,O.create=e=>new O({typeName:ce.ZodAny,...l(e)});class M extends p{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,n.OK)(e.data)}}e.ZodUnknown=M,M.create=e=>new M({typeName:ce.ZodUnknown,...l(e)});class D extends p{_parse(e){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.never,received:t.parsedType}),n.INVALID}}e.ZodNever=D,D.create=e=>new D({typeName:ce.ZodNever,...l(e)});class R extends p{_parse(e){if(this._getType(e)!==r.ZodParsedType.undefined){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.void,received:t.parsedType}),n.INVALID}return(0,n.OK)(e.data)}}e.ZodVoid=R,R.create=e=>new R({typeName:ce.ZodVoid,...l(e)});class j extends p{_parse(e){const{ctx:t,status:s}=this._processInputParams(e),a=this._def;if(t.parsedType!==r.ZodParsedType.array)return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.array,received:t.parsedType}),n.INVALID;if(null!==a.exactLength){const e=t.data.length>a.exactLength.value,r=t.data.length<a.exactLength.value;(e||r)&&((0,n.addIssueToContext)(t,{code:e?i.ZodIssueCode.too_big:i.ZodIssueCode.too_small,minimum:r?a.exactLength.value:void 0,maximum:e?a.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:a.exactLength.message}),s.dirty())}if(null!==a.minLength&&t.data.length<a.minLength.value&&((0,n.addIssueToContext)(t,{code:i.ZodIssueCode.too_small,minimum:a.minLength.value,type:"array",inclusive:!0,exact:!1,message:a.minLength.message}),s.dirty()),null!==a.maxLength&&t.data.length>a.maxLength.value&&((0,n.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map(((e,s)=>a.type._parseAsync(new c(t,e,t.path,s))))).then((e=>n.ParseStatus.mergeArray(s,e)));const o=[...t.data].map(((e,s)=>a.type._parseSync(new c(t,e,t.path,s))));return n.ParseStatus.mergeArray(s,o)}get element(){return this._def.type}min(e,t){return new j({...this._def,minLength:{value:e,message:s.errorUtil.toString(t)}})}max(e,t){return new j({...this._def,maxLength:{value:e,message:s.errorUtil.toString(t)}})}length(e,t){return new j({...this._def,exactLength:{value:e,message:s.errorUtil.toString(t)}})}nonempty(e){return this.min(1,e)}}function A(e){if(e instanceof z){const t={};for(const s in e.shape){const n=e.shape[s];t[s]=se.create(A(n))}return new z({...e._def,shape:()=>t})}return e instanceof j?new j({...e._def,type:A(e.element)}):e instanceof se?se.create(A(e.unwrap())):e instanceof ne?ne.create(A(e.unwrap())):e instanceof F?F.create(e.items.map((e=>A(e)))):e}e.ZodArray=j,j.create=(e,t)=>new j({type:e,minLength:null,maxLength:null,exactLength:null,typeName:ce.ZodArray,...l(t)});class z extends p{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;const e=this._def.shape(),t=r.util.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==r.ZodParsedType.object){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.object,received:t.parsedType}),n.INVALID}const{status:t,ctx:s}=this._processInputParams(e),{shape:a,keys:o}=this._getCached(),d=[];if(!(this._def.catchall instanceof D&&"strip"===this._def.unknownKeys))for(const e in s.data)o.includes(e)||d.push(e);const u=[];for(const e of o){const t=a[e],n=s.data[e];u.push({key:{status:"valid",value:e},value:t._parse(new c(s,n,s.path,e)),alwaysSet:e in s.data})}if(this._def.catchall instanceof D){const e=this._def.unknownKeys;if("passthrough"===e)for(const e of d)u.push({key:{status:"valid",value:e},value:{status:"valid",value:s.data[e]}});else if("strict"===e)d.length>0&&((0,n.addIssueToContext)(s,{code:i.ZodIssueCode.unrecognized_keys,keys:d}),t.dirty());else if("strip"!==e)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const e=this._def.catchall;for(const t of d){const n=s.data[t];u.push({key:{status:"valid",value:t},value:e._parse(new c(s,n,s.path,t)),alwaysSet:t in s.data})}}return s.common.async?Promise.resolve().then((async()=>{const e=[];for(const t of u){const s=await t.key;e.push({key:s,value:await t.value,alwaysSet:t.alwaysSet})}return e})).then((e=>n.ParseStatus.mergeObjectSync(t,e))):n.ParseStatus.mergeObjectSync(t,u)}get shape(){return this._def.shape()}strict(e){return s.errorUtil.errToObj,new z({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,n)=>{var r,a,i,o;const d=null!==(i=null===(a=(r=this._def).errorMap)||void 0===a?void 0:a.call(r,t,n).message)&&void 0!==i?i:n.defaultError;return"unrecognized_keys"===t.code?{message:null!==(o=s.errorUtil.errToObj(e).message)&&void 0!==o?o:d}:{message:d}}}:{}})}strip(){return new z({...this._def,unknownKeys:"strip"})}passthrough(){return new z({...this._def,unknownKeys:"passthrough"})}extend(e){return new z({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new z({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:ce.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new z({...this._def,catchall:e})}pick(e){const t={};return r.util.objectKeys(e).forEach((s=>{e[s]&&this.shape[s]&&(t[s]=this.shape[s])})),new z({...this._def,shape:()=>t})}omit(e){const t={};return r.util.objectKeys(this.shape).forEach((s=>{e[s]||(t[s]=this.shape[s])})),new z({...this._def,shape:()=>t})}deepPartial(){return A(this)}partial(e){const t={};return r.util.objectKeys(this.shape).forEach((s=>{const n=this.shape[s];e&&!e[s]?t[s]=n:t[s]=n.optional()})),new z({...this._def,shape:()=>t})}required(e){const t={};return r.util.objectKeys(this.shape).forEach((s=>{if(e&&!e[s])t[s]=this.shape[s];else{let e=this.shape[s];for(;e instanceof se;)e=e._def.innerType;t[s]=e}})),new z({...this._def,shape:()=>t})}keyof(){return Y(r.util.objectKeys(this.shape))}}e.ZodObject=z,z.create=(e,t)=>new z({shape:()=>e,unknownKeys:"strip",catchall:D.create(),typeName:ce.ZodObject,...l(t)}),z.strictCreate=(e,t)=>new z({shape:()=>e,unknownKeys:"strict",catchall:D.create(),typeName:ce.ZodObject,...l(t)}),z.lazycreate=(e,t)=>new z({shape:e,unknownKeys:"strip",catchall:D.create(),typeName:ce.ZodObject,...l(t)});class L extends p{_parse(e){const{ctx:t}=this._processInputParams(e),s=this._def.options;if(t.common.async)return Promise.all(s.map((async e=>{const s={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:s}),ctx:s}}))).then((function(e){for(const t of e)if("valid"===t.result.status)return t.result;for(const s of e)if("dirty"===s.result.status)return t.common.issues.push(...s.ctx.common.issues),s.result;const s=e.map((e=>new i.ZodError(e.ctx.common.issues)));return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union,unionErrors:s}),n.INVALID}));{let e;const r=[];for(const n of s){const s={...t,common:{...t.common,issues:[]},parent:null},a=n._parseSync({data:t.data,path:t.path,parent:s});if("valid"===a.status)return a;"dirty"!==a.status||e||(e={result:a,ctx:s}),s.common.issues.length&&r.push(s.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;const a=r.map((e=>new i.ZodError(e)));return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union,unionErrors:a}),n.INVALID}}get options(){return this._def.options}}e.ZodUnion=L,L.create=(e,t)=>new L({options:e,typeName:ce.ZodUnion,...l(t)});const B=e=>e instanceof H?B(e.schema):e instanceof te?B(e.innerType()):e instanceof G?[e.value]:e instanceof Q?e.options:e instanceof X?Object.keys(e.enum):e instanceof re?B(e._def.innerType):e instanceof N?[void 0]:e instanceof Z?[null]:null;class V extends p{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==r.ZodParsedType.object)return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.object,received:t.parsedType}),n.INVALID;const s=this.discriminator,a=t.data[s],o=this.optionsMap.get(a);return o?t.common.async?o._parseAsync({data:t.data,path:t.path,parent:t}):o._parseSync({data:t.data,path:t.path,parent:t}):((0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),n.INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){const n=new Map;for(const s of t){const t=B(s.shape[e]);if(!t)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const r of t){if(n.has(r))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(r)}`);n.set(r,s)}}return new V({typeName:ce.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...l(s)})}}function U(e,t){const s=(0,r.getParsedType)(e),n=(0,r.getParsedType)(t);if(e===t)return{valid:!0,data:e};if(s===r.ZodParsedType.object&&n===r.ZodParsedType.object){const s=r.util.objectKeys(t),n=r.util.objectKeys(e).filter((e=>-1!==s.indexOf(e))),a={...e,...t};for(const s of n){const n=U(e[s],t[s]);if(!n.valid)return{valid:!1};a[s]=n.data}return{valid:!0,data:a}}if(s===r.ZodParsedType.array&&n===r.ZodParsedType.array){if(e.length!==t.length)return{valid:!1};const s=[];for(let n=0;n<e.length;n++){const r=U(e[n],t[n]);if(!r.valid)return{valid:!1};s.push(r.data)}return{valid:!0,data:s}}return s===r.ZodParsedType.date&&n===r.ZodParsedType.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}e.ZodDiscriminatedUnion=V;class $ extends p{_parse(e){const{status:t,ctx:s}=this._processInputParams(e),r=(e,r)=>{if((0,n.isAborted)(e)||(0,n.isAborted)(r))return n.INVALID;const a=U(e.value,r.value);return a.valid?(((0,n.isDirty)(e)||(0,n.isDirty)(r))&&t.dirty(),{status:t.value,value:a.data}):((0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_intersection_types}),n.INVALID)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then((([e,t])=>r(e,t))):r(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}}e.ZodIntersection=$,$.create=(e,t,s)=>new $({left:e,right:t,typeName:ce.ZodIntersection,...l(s)});class F extends p{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==r.ZodParsedType.array)return(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.array,received:s.parsedType}),n.INVALID;if(s.data.length<this._def.items.length)return(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.INVALID;!this._def.rest&&s.data.length>this._def.items.length&&((0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());const a=[...s.data].map(((e,t)=>{const n=this._def.items[t]||this._def.rest;return n?n._parse(new c(s,e,s.path,t)):null})).filter((e=>!!e));return s.common.async?Promise.all(a).then((e=>n.ParseStatus.mergeArray(t,e))):n.ParseStatus.mergeArray(t,a)}get items(){return this._def.items}rest(e){return new F({...this._def,rest:e})}}e.ZodTuple=F,F.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new F({items:e,typeName:ce.ZodTuple,rest:null,...l(t)})};class q extends p{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==r.ZodParsedType.object)return(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.object,received:s.parsedType}),n.INVALID;const a=[],o=this._def.keyType,d=this._def.valueType;for(const e in s.data)a.push({key:o._parse(new c(s,e,s.path,e)),value:d._parse(new c(s,s.data[e],s.path,e))});return s.common.async?n.ParseStatus.mergeObjectAsync(t,a):n.ParseStatus.mergeObjectSync(t,a)}get element(){return this._def.valueType}static create(e,t,s){return new q(t instanceof p?{keyType:e,valueType:t,typeName:ce.ZodRecord,...l(s)}:{keyType:_.create(),valueType:e,typeName:ce.ZodRecord,...l(t)})}}e.ZodRecord=q;class W extends p{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==r.ZodParsedType.map)return(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.map,received:s.parsedType}),n.INVALID;const a=this._def.keyType,o=this._def.valueType,d=[...s.data.entries()].map((([e,t],n)=>({key:a._parse(new c(s,e,s.path,[n,"key"])),value:o._parse(new c(s,t,s.path,[n,"value"]))})));if(s.common.async){const e=new Map;return Promise.resolve().then((async()=>{for(const s of d){const r=await s.key,a=await s.value;if("aborted"===r.status||"aborted"===a.status)return n.INVALID;"dirty"!==r.status&&"dirty"!==a.status||t.dirty(),e.set(r.value,a.value)}return{status:t.value,value:e}}))}{const e=new Map;for(const s of d){const r=s.key,a=s.value;if("aborted"===r.status||"aborted"===a.status)return n.INVALID;"dirty"!==r.status&&"dirty"!==a.status||t.dirty(),e.set(r.value,a.value)}return{status:t.value,value:e}}}}e.ZodMap=W,W.create=(e,t,s)=>new W({valueType:t,keyType:e,typeName:ce.ZodMap,...l(s)});class K extends p{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==r.ZodParsedType.set)return(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.set,received:s.parsedType}),n.INVALID;const a=this._def;null!==a.minSize&&s.data.size<a.minSize.value&&((0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_small,minimum:a.minSize.value,type:"set",inclusive:!0,exact:!1,message:a.minSize.message}),t.dirty()),null!==a.maxSize&&s.data.size>a.maxSize.value&&((0,n.addIssueToContext)(s,{code:i.ZodIssueCode.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),t.dirty());const o=this._def.valueType;function d(e){const s=new Set;for(const r of e){if("aborted"===r.status)return n.INVALID;"dirty"===r.status&&t.dirty(),s.add(r.value)}return{status:t.value,value:s}}const u=[...s.data.values()].map(((e,t)=>o._parse(new c(s,e,s.path,t))));return s.common.async?Promise.all(u).then((e=>d(e))):d(u)}min(e,t){return new K({...this._def,minSize:{value:e,message:s.errorUtil.toString(t)}})}max(e,t){return new K({...this._def,maxSize:{value:e,message:s.errorUtil.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}e.ZodSet=K,K.create=(e,t)=>new K({valueType:e,minSize:null,maxSize:null,typeName:ce.ZodSet,...l(t)});class J extends p{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:s}=this._processInputParams(e);if(s.parsedType!==r.ZodParsedType.function)return(0,n.addIssueToContext)(s,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.function,received:s.parsedType}),n.INVALID;function a(e,r){return(0,n.makeIssue)({data:e,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,t.getErrorMap)(),t.defaultErrorMap].filter((e=>!!e)),issueData:{code:i.ZodIssueCode.invalid_arguments,argumentsError:r}})}function o(e,r){return(0,n.makeIssue)({data:e,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,(0,t.getErrorMap)(),t.defaultErrorMap].filter((e=>!!e)),issueData:{code:i.ZodIssueCode.invalid_return_type,returnTypeError:r}})}const d={errorMap:s.common.contextualErrorMap},c=s.data;return this._def.returns instanceof ee?(0,n.OK)((async(...e)=>{const t=new i.ZodError([]),s=await this._def.args.parseAsync(e,d).catch((s=>{throw t.addIssue(a(e,s)),t})),n=await c(...s);return await this._def.returns._def.type.parseAsync(n,d).catch((e=>{throw t.addIssue(o(n,e)),t}))})):(0,n.OK)(((...e)=>{const t=this._def.args.safeParse(e,d);if(!t.success)throw new i.ZodError([a(e,t.error)]);const s=c(...t.data),n=this._def.returns.safeParse(s,d);if(!n.success)throw new i.ZodError([o(s,n.error)]);return n.data}))}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new J({...this._def,args:F.create(e).rest(M.create())})}returns(e){return new J({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new J({args:e||F.create([]).rest(M.create()),returns:t||M.create(),typeName:ce.ZodFunction,...l(s)})}}e.ZodFunction=J;class H extends p{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}e.ZodLazy=H,H.create=(e,t)=>new H({getter:e,typeName:ce.ZodLazy,...l(t)});class G extends p{_parse(e){if(e.data!==this._def.value){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{received:t.data,code:i.ZodIssueCode.invalid_literal,expected:this._def.value}),n.INVALID}return{status:"valid",value:e.data}}get value(){return this._def.value}}function Y(e,t){return new Q({values:e,typeName:ce.ZodEnum,...l(t)})}e.ZodLiteral=G,G.create=(e,t)=>new G({value:e,typeName:ce.ZodLiteral,...l(t)});class Q extends p{_parse(e){if("string"!=typeof e.data){const t=this._getOrReturnCtx(e),s=this._def.values;return(0,n.addIssueToContext)(t,{expected:r.util.joinValues(s),received:t.parsedType,code:i.ZodIssueCode.invalid_type}),n.INVALID}if(-1===this._def.values.indexOf(e.data)){const t=this._getOrReturnCtx(e),s=this._def.values;return(0,n.addIssueToContext)(t,{received:t.data,code:i.ZodIssueCode.invalid_enum_value,options:s}),n.INVALID}return(0,n.OK)(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}extract(e){return Q.create(e)}exclude(e){return Q.create(this.options.filter((t=>!e.includes(t))))}}e.ZodEnum=Q,Q.create=Y;class X extends p{_parse(e){const t=r.util.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==r.ZodParsedType.string&&s.parsedType!==r.ZodParsedType.number){const e=r.util.objectValues(t);return(0,n.addIssueToContext)(s,{expected:r.util.joinValues(e),received:s.parsedType,code:i.ZodIssueCode.invalid_type}),n.INVALID}if(-1===t.indexOf(e.data)){const e=r.util.objectValues(t);return(0,n.addIssueToContext)(s,{received:s.data,code:i.ZodIssueCode.invalid_enum_value,options:e}),n.INVALID}return(0,n.OK)(e.data)}get enum(){return this._def.values}}e.ZodNativeEnum=X,X.create=(e,t)=>new X({values:e,typeName:ce.ZodNativeEnum,...l(t)});class ee extends p{unwrap(){return this._def.type}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==r.ZodParsedType.promise&&!1===t.common.async)return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.promise,received:t.parsedType}),n.INVALID;const s=t.parsedType===r.ZodParsedType.promise?t.data:Promise.resolve(t.data);return(0,n.OK)(s.then((e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap}))))}}e.ZodPromise=ee,ee.create=(e,t)=>new ee({type:e,typeName:ce.ZodPromise,...l(t)});class te extends p{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ce.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:s}=this._processInputParams(e),a=this._def.effect||null;if("preprocess"===a.type){const e=a.transform(s.data);return s.common.async?Promise.resolve(e).then((e=>this._def.schema._parseAsync({data:e,path:s.path,parent:s}))):this._def.schema._parseSync({data:e,path:s.path,parent:s})}const i={addIssue:e=>{(0,n.addIssueToContext)(s,e),e.fatal?t.abort():t.dirty()},get path(){return s.path}};if(i.addIssue=i.addIssue.bind(i),"refinement"===a.type){const e=e=>{const t=a.refinement(e,i);if(s.common.async)return Promise.resolve(t);if(t instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1===s.common.async){const r=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return"aborted"===r.status?n.INVALID:("dirty"===r.status&&t.dirty(),e(r.value),{status:t.value,value:r.value})}return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then((s=>"aborted"===s.status?n.INVALID:("dirty"===s.status&&t.dirty(),e(s.value).then((()=>({status:t.value,value:s.value}))))))}if("transform"===a.type){if(!1===s.common.async){const e=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!(0,n.isValid)(e))return e;const r=a.transform(e.value,i);if(r instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:r}}return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then((e=>(0,n.isValid)(e)?Promise.resolve(a.transform(e.value,i)).then((e=>({status:t.value,value:e}))):e))}r.util.assertNever(a)}}e.ZodEffects=te,e.ZodTransformer=te,te.create=(e,t,s)=>new te({schema:e,typeName:ce.ZodEffects,effect:t,...l(s)}),te.createWithPreprocess=(e,t,s)=>new te({schema:t,effect:{type:"preprocess",transform:e},typeName:ce.ZodEffects,...l(s)});class se extends p{_parse(e){return this._getType(e)===r.ZodParsedType.undefined?(0,n.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}e.ZodOptional=se,se.create=(e,t)=>new se({innerType:e,typeName:ce.ZodOptional,...l(t)});class ne extends p{_parse(e){return this._getType(e)===r.ZodParsedType.null?(0,n.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}e.ZodNullable=ne,ne.create=(e,t)=>new ne({innerType:e,typeName:ce.ZodNullable,...l(t)});class re extends p{_parse(e){const{ctx:t}=this._processInputParams(e);let s=t.data;return t.parsedType===r.ZodParsedType.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}e.ZodDefault=re,re.create=(e,t)=>new re({innerType:e,typeName:ce.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...l(t)});class ae extends p{_parse(e){const{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return(0,n.isAsync)(r)?r.then((e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new i.ZodError(s.common.issues)},input:s.data})}))):{status:"valid",value:"valid"===r.status?r.value:this._def.catchValue({get error(){return new i.ZodError(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}}e.ZodCatch=ae,ae.create=(e,t)=>new ae({innerType:e,typeName:ce.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...l(t)});class ie extends p{_parse(e){if(this._getType(e)!==r.ZodParsedType.nan){const t=this._getOrReturnCtx(e);return(0,n.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:r.ZodParsedType.nan,received:t.parsedType}),n.INVALID}return{status:"valid",value:e.data}}}e.ZodNaN=ie,ie.create=e=>new ie({typeName:ce.ZodNaN,...l(e)}),e.BRAND=Symbol("zod_brand");class oe extends p{_parse(e){const{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}}e.ZodBranded=oe;class de extends p{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.common.async){return(async()=>{const e=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return"aborted"===e.status?n.INVALID:"dirty"===e.status?(t.dirty(),(0,n.DIRTY)(e.value)):this._def.out._parseAsync({data:e.value,path:s.path,parent:s})})()}{const e=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return"aborted"===e.status?n.INVALID:"dirty"===e.status?(t.dirty(),{status:"dirty",value:e.value}):this._def.out._parseSync({data:e.value,path:s.path,parent:s})}}static create(e,t){return new de({in:e,out:t,typeName:ce.ZodPipeline})}}e.ZodPipeline=de;var ce;e.custom=(e,t={},s)=>e?O.create().superRefine(((n,r)=>{var a,i;if(!e(n)){const e="function"==typeof t?t(n):"string"==typeof t?{message:t}:t,o=null===(i=null!==(a=e.fatal)&&void 0!==a?a:s)||void 0===i||i,d="string"==typeof e?{message:e}:e;r.addIssue({code:"custom",...d,fatal:o})}})):O.create(),e.late={object:z.lazycreate},function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline"}(ce=e.ZodFirstPartyTypeKind||(e.ZodFirstPartyTypeKind={}));e.instanceof=(t,s={message:`Input not instance of ${t.name}`})=>(0,e.custom)((e=>e instanceof t),s);const ue=_.create;e.string=ue;const le=S.create;e.number=le;const pe=ie.create;e.nan=pe;const he=E.create;e.bigint=he;const me=T.create;e.boolean=me;const ge=P.create;e.date=ge;const fe=k.create;e.symbol=fe;const ve=N.create;e.undefined=ve;const ye=Z.create;e.null=ye;const xe=O.create;e.any=xe;const be=M.create;e.unknown=be;const Ce=D.create;e.never=Ce;const we=R.create;e.void=we;const _e=j.create;e.array=_e;const Ie=z.create;e.object=Ie;const Se=z.strictCreate;e.strictObject=Se;const Ee=L.create;e.union=Ee;const Te=V.create;e.discriminatedUnion=Te;const Pe=$.create;e.intersection=Pe;const ke=F.create;e.tuple=ke;const Ne=q.create;e.record=Ne;const Ze=W.create;e.map=Ze;const Oe=K.create;e.set=Oe;const Me=J.create;e.function=Me;const De=H.create;e.lazy=De;const Re=G.create;e.literal=Re;const je=Q.create;e.enum=je;const Ae=X.create;e.nativeEnum=Ae;const ze=ee.create;e.promise=ze;const Le=te.create;e.effect=Le,e.transformer=Le;const Be=se.create;e.optional=Be;const Ve=ne.create;e.nullable=Ve;const Ue=te.createWithPreprocess;e.preprocess=Ue;const $e=de.create;e.pipeline=$e;e.ostring=()=>ue().optional();e.onumber=()=>le().optional();e.oboolean=()=>me().optional(),e.coerce={string:e=>_.create({...e,coerce:!0}),number:e=>S.create({...e,coerce:!0}),boolean:e=>T.create({...e,coerce:!0}),bigint:e=>E.create({...e,coerce:!0}),date:e=>P.create({...e,coerce:!0})},e.NEVER=n.INVALID}(x),function(t){var s=e&&e.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),n=e&&e.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||s(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),n(a,t),n(f,t),n(v,t),n(o,t),n(x,t),n(d,t)}(r),function(t){var s=e&&e.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),n=e&&e.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&s(t,e,r);return n(t,e),t},i=e&&e.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||s(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.z=void 0;const o=a(r);t.z=o,i(r,t),t.default=o}(n);var C={};!function(e){var t,s,n,r,a,i;Object.defineProperty(e,"__esModule",{value:!0}),e.CDP=e.Network=e.Log=e.BrowsingContext=e.Script=e.Message=void 0,function(e){let t;!function(e){e.InvalidArgument="invalid argument",e.InvalidSessionId="invalid session id",e.NoSuchAlert="no such alert",e.NoSuchFrame="no such frame",e.NoSuchNode="no such node",e.NoSuchScript="no such script",e.SessionNotCreated="session not created",e.UnknownCommand="unknown command",e.UnknownError="unknown error",e.UnsupportedOperation="unsupported operation"}(t=e.ErrorCode||(e.ErrorCode={}));class s{error;message;stacktrace;constructor(e,t,s){this.error=e,this.message=t,this.stacktrace=s}toErrorResponse(e){return{id:e,error:this.error,message:this.message,stacktrace:this.stacktrace}}}e.ErrorResponse=s;e.InvalidArgumentException=class extends s{constructor(e,s){super(t.InvalidArgument,e,s)}};e.InvalidSessionIdException=class extends s{constructor(e,s){super(t.InvalidSessionId,e,s)}};e.NoSuchAlertException=class extends s{constructor(e,s){super(t.NoSuchAlert,e,s)}};e.NoSuchFrameException=class extends s{constructor(e){super(t.NoSuchFrame,e)}};e.NoSuchNodeException=class extends s{constructor(e,s){super(t.NoSuchNode,e,s)}};e.NoSuchScriptException=class extends s{constructor(e,s){super(t.NoSuchScript,e,s)}};e.SessionNotCreatedException=class extends s{constructor(e,s){super(t.SessionNotCreated,e,s)}};e.UnknownCommandException=class extends s{constructor(e,s){super(t.UnknownCommand,e,s)}};e.UnknownErrorException=class extends s{constructor(e,s){super(t.UnknownError,e,s)}};e.UnsupportedOperationException=class extends s{constructor(e,s){super(t.UnsupportedOperation,e,s)}}}(e.Message||(e.Message={})),((t=e.Script||(e.Script={})).EventNames||(t.EventNames={})).MessageEvent="script.message",t.AllEvents="script",s=e.BrowsingContext||(e.BrowsingContext={}),(n=s.EventNames||(s.EventNames={})).LoadEvent="browsingContext.load",n.DomContentLoadedEvent="browsingContext.domContentLoaded",n.ContextCreatedEvent="browsingContext.contextCreated",n.ContextDestroyedEvent="browsingContext.contextDestroyed",s.AllEvents="browsingContext",(r=e.Log||(e.Log={})).AllEvents="log",function(e){e.LogEntryAddedEvent="log.entryAdded"}(r.EventNames||(r.EventNames={})),(a=e.Network||(e.Network={})).AllEvents="network",function(e){e.BeforeRequestSentEvent="network.beforeRequestSent",e.ResponseCompletedEvent="network.responseCompleted",e.FetchErrorEvent="network.fetchError"}(a.EventNames||(a.EventNames={})),(i=e.CDP||(e.CDP={})).AllEvents="cdp",function(e){e.EventReceivedEvent="cdp.eventReceived"}(i.EventNames||(i.EventNames={}))}(C),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Session=e.CDP=e.BrowsingContext=e.Script=e.CommonDataTypes=e.parseObject=void 0;const t=n,s=C;function r(e,t){const n=t.safeParse(e);if(n.success)return n.data;const r=n.error.errors.map((e=>`${e.message} in ${e.path.map((e=>JSON.stringify(e))).join("/")}.`)).join(" ");throw new s.Message.InvalidArgumentException(r)}var a;e.parseObject=r,function(e){e.SharedReferenceSchema=t.z.object({sharedId:t.z.string().min(1)}),e.RemoteReferenceSchema=t.z.object({handle:t.z.string().min(1)});const s=t.z.object({type:t.z.literal("undefined")}),n=t.z.object({type:t.z.literal("null")}),r=t.z.object({type:t.z.literal("string"),value:t.z.string()}),a=t.z.enum(["NaN","-0","Infinity","-Infinity"]),i=t.z.object({type:t.z.literal("number"),value:t.z.union([a,t.z.number()])}),o=t.z.object({type:t.z.literal("boolean"),value:t.z.boolean()}),d=t.z.object({type:t.z.literal("bigint"),value:t.z.string()}),c=t.z.union([s,n,r,i,o,d]);e.LocalValueSchema=t.z.lazy((()=>t.z.union([c,p,h,g,f,v,y])));const u=t.z.union([e.SharedReferenceSchema,e.RemoteReferenceSchema,e.LocalValueSchema]),l=t.z.array(u),p=t.z.lazy((()=>t.z.object({type:t.z.literal("array"),value:l}))),h=t.z.object({type:t.z.literal("date"),value:t.z.string().min(1)}),m=t.z.lazy((()=>t.z.tuple([t.z.union([t.z.string(),u]),u]))),g=t.z.object({type:t.z.literal("map"),value:t.z.array(m)}),f=t.z.object({type:t.z.literal("object"),value:t.z.array(m)}),v=t.z.lazy((()=>t.z.object({type:t.z.literal("regexp"),value:t.z.object({pattern:t.z.string(),flags:t.z.string().optional()})}))),y=t.z.lazy((()=>t.z.object({type:t.z.literal("set"),value:l})));e.BrowsingContextSchema=t.z.string(),e.MaxDepthSchema=t.z.number().int().nonnegative().max(9007199254740991)}(a=e.CommonDataTypes||(e.CommonDataTypes={})),function(e){const s=t.z.enum(["window","dedicated-worker","shared-worker","service-worker","worker","paint-worklet","audio-worklet","worklet"]);e.GetRealmsParametersSchema=t.z.object({context:a.BrowsingContextSchema.optional(),type:s.optional()}),e.parseGetRealmsParams=function(t){return r(t,e.GetRealmsParametersSchema)};const n=t.z.object({context:a.BrowsingContextSchema,sandbox:t.z.string().optional()}),i=t.z.object({realm:t.z.string().min(1)}),o=t.z.union([i,n]),d=t.z.enum(["root","none"]),c=t.z.object({expression:t.z.string(),awaitPromise:t.z.boolean(),target:o,resultOwnership:d.optional()});e.parseEvaluateParams=function(e){return r(e,c)};const u=t.z.object({target:o,handles:t.z.array(t.z.string())});e.parseDisownParams=function(e){return r(e,u)},e.PreloadScriptSchema=t.z.string(),e.AddPreloadScriptParametersSchema=t.z.object({expression:t.z.string(),sandbox:t.z.string().optional(),context:a.BrowsingContextSchema.optional()}),e.parseAddPreloadScriptParams=function(t){return r(t,e.AddPreloadScriptParametersSchema)},e.RemovePreloadScriptParametersSchema=t.z.object({script:e.PreloadScriptSchema}),e.parseRemovePreloadScriptParams=function(t){return r(t,e.RemovePreloadScriptParametersSchema)};const l=t.z.string(),p=t.z.object({channel:l,maxDepth:t.z.number().int().min(1).max(1).optional(),ownership:d.optional()});e.ChannelSchema=t.z.object({type:t.z.literal("channel"),value:p});const h=t.z.union([a.RemoteReferenceSchema,a.SharedReferenceSchema,a.LocalValueSchema,e.ChannelSchema]),m=t.z.object({functionDeclaration:t.z.string(),target:o,arguments:t.z.array(h).optional(),this:h.optional(),awaitPromise:t.z.boolean(),resultOwnership:d.optional()});e.parseCallFunctionParams=function(e){return r(e,m)}}(e.Script||(e.Script={})),function(e){const s=t.z.object({maxDepth:a.MaxDepthSchema.optional(),root:a.BrowsingContextSchema.optional()});e.parseGetTreeParams=function(e){return r(e,s)};const n=t.z.enum(["none","interactive","complete"]),i=t.z.object({context:a.BrowsingContextSchema,url:t.z.string().url(),wait:n.optional()});e.parseNavigateParams=function(e){return r(e,i)};const o=t.z.object({type:t.z.enum(["tab","window"]),referenceContext:a.BrowsingContextSchema.optional()});e.parseCreateParams=function(e){return r(e,o)};const d=t.z.object({context:a.BrowsingContextSchema});e.parseCloseParams=function(e){return r(e,d)};const c=t.z.object({context:a.BrowsingContextSchema});e.parseCaptureScreenshotParams=function(e){return r(e,c)};const u=t.z.object({height:t.z.number().min(0).default(27.94).optional(),width:t.z.number().min(0).default(21.59).optional()}),l=t.z.object({bottom:t.z.number().min(0).default(1).optional(),left:t.z.number().min(0).default(1).optional(),right:t.z.number().min(0).default(1).optional(),top:t.z.number().min(0).default(1).optional()}),p=t.z.array(t.z.union([t.z.string().min(1),t.z.number().int().nonnegative()])).refine((e=>e.every((e=>{const t=String(e).match(/^(?:(?:\d+)|(?:\d+[-])|(?:[-]\d+)|(?:(?<start>\d+)[-](?<end>\d+)))$/),{start:s,end:n}=t?.groups??{};return!(s&&n&&Number(s)>Number(n))&&t})))),h=t.z.object({context:a.BrowsingContextSchema,background:t.z.boolean().default(!1).optional(),margin:l.optional(),orientation:t.z.enum(["portrait","landscape"]).default("portrait").optional(),page:u.optional(),pageRanges:p.default([]).optional(),scale:t.z.number().min(.1).max(2).default(1).optional(),shrinkToFit:t.z.boolean().default(!0).optional()});e.parsePrintParams=function(e){return r(e,h)}}(e.BrowsingContext||(e.BrowsingContext={})),function(e){const s=t.z.object({cdpMethod:t.z.string(),cdpParams:t.z.object({}).passthrough(),cdpSession:t.z.string().optional()});e.parseSendCommandParams=function(e){return r(e,s)};const n=t.z.object({context:a.BrowsingContextSchema});e.parseGetSessionParams=function(e){return r(e,n)}}(e.CDP||(e.CDP={})),function(e){const n=t.z.enum([s.BrowsingContext.AllEvents,...Object.values(s.BrowsingContext.EventNames),s.Log.AllEvents,...Object.values(s.Log.EventNames),s.CDP.AllEvents,...Object.values(s.CDP.EventNames),s.Network.AllEvents,...Object.values(s.Network.EventNames),s.Script.AllEvents,...Object.values(s.Script.EventNames)]),i=t.z.object({events:t.z.array(n),contexts:t.z.array(a.BrowsingContextSchema).optional()});e.parseSubscribeParams=function(e){return r(e,i)}}(e.Session||(e.Session={}))}(s);var w={},_={},I=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0}),_.EventEmitter=void 0;const S=I((function(e){return{all:e=e||new Map,on:function(t,s){var n=e.get(t);n?n.push(s):e.set(t,[s])},off:function(t,s){var n=e.get(t);n&&(s?n.splice(n.indexOf(s)>>>0,1):e.set(t,[]))},emit:function(t,s){var n=e.get(t);n&&n.slice().map((function(e){e(s)})),(n=e.get("*"))&&n.slice().map((function(e){e(t,s)}))}}}));_.EventEmitter=class{#e=(0,S.default)();on(e,t){return this.#e.on(e,t),this}once(e,t){const s=n=>{t(n),this.off(e,s)};return this.on(e,s)}off(e,t){return this.#e.off(e,t),this}emit(e,t){this.#e.emit(e,t)}};var E={},T={};!function(e){var t;Object.defineProperty(e,"__esModule",{value:!0}),e.LogType=void 0,(t=e.LogType||(e.LogType={})).bidi="BiDi Messages",t.browsingContexts="Browsing Contexts",t.cdp="CDP",t.system="System"}(T),Object.defineProperty(E,"__esModule",{value:!0}),E.ProcessingQueue=void 0;const P=T;E.ProcessingQueue=class{#t;#s;#n;#r=[];#a=!1;constructor(e,t=(()=>Promise.resolve()),s){this.#t=t,this.#n=e,this.#s=s}add(e){this.#r.push(e),this.#i()}async#i(){if(!this.#a){for(this.#a=!0;this.#r.length>0;){const e=this.#r.shift();void 0!==e&&await e.then((e=>this.#n(e))).catch((e=>{this.#s?.(P.LogType.system,"Event was not processed:",e),this.#t(e)}))}this.#a=!1}}};var k={},N={},Z={},O={};Object.defineProperty(O,"__esModule",{value:!0}),O.inchesFromCm=void 0,O.inchesFromCm=function(e){return e/2.54};var M={};Object.defineProperty(M,"__esModule",{value:!0}),M.Deferred=void 0;class D{#o=!1;#d;#c=()=>{};#u=()=>{};get isFinished(){return this.#o}constructor(){this.#d=new Promise(((e,t)=>{this.#c=e,this.#u=t})),this.#d.catch((()=>{}))}then(e,t){return this.#d.then(e,t)}catch(e){return this.#d.catch(e)}resolve(e){this.#o=!0,this.#c(e)}reject(e){this.#o=!0,this.#u(e)}finally(e){return this.#d.finally(e)}[Symbol.toStringTag]="Promise"}M.Deferred=D;var R={},j={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ScriptEvaluator=e.SHARED_ID_DIVIDER=void 0;const t=C;e.SHARED_ID_DIVIDER="_element_";class s{#l;constructor(e){this.#l=e}static async stringifyObject(e,t){return(await t.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String((e=>String(e))),awaitPromise:!1,arguments:[e],returnByValue:!0,executionContextId:t.executionContextId})).result.value}async serializeCdpObject(e,t,n){const r=s.#p(e),a=await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String((e=>e)),awaitPromise:!1,arguments:[r],generateWebDriverValue:!0,executionContextId:n.executionContextId});return n.cdpToBidiValue(a,t)}async scriptEvaluate(e,t,s,n){const r=await e.cdpClient.sendCommand("Runtime.evaluate",{contextId:e.executionContextId,expression:t,awaitPromise:s,generateWebDriverValue:!0});return r.exceptionDetails?{exceptionDetails:await this.#h(r.exceptionDetails,0,n,e),type:"exception",realm:e.realmId}:{type:"success",result:e.cdpToBidiValue(r,n),realm:e.realmId}}async callFunction(e,s,n,r,a,i){const o=`(...args)=>{ return _callFunction((\n${s}\n), args);\n\t function _callFunction(f, args) {\n\t const deserializedThis = args.shift();\n\t const deserializedArgs = args;\n\t return f.apply(deserializedThis, deserializedArgs);\n\t }}`,d=[await this.#m(n,e)];let c;d.push(...await Promise.all(r.map((async t=>this.#m(t,e)))));try{c=await e.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:o,awaitPromise:a,arguments:d,generateWebDriverValue:!0,executionContextId:e.executionContextId})}catch(e){if(-32e3===e.code&&["Could not find object with given id","Argument should belong to the same JavaScript world as target object"].includes(e.message))throw new t.Message.InvalidArgumentException("Handle was not found.");throw e}return c.exceptionDetails?{exceptionDetails:await this.#h(c.exceptionDetails,1,i,e),type:"exception",realm:e.realmId}:{type:"success",result:e.cdpToBidiValue(c,i),realm:e.realmId}}static#p(e){return void 0!==e.objectId?{objectId:e.objectId}:void 0!==e.unserializableValue?{unserializableValue:e.unserializableValue}:{value:e.value}}async#m(s,n){if("sharedId"in s){const[r,a]=s.sharedId.split(e.SHARED_ID_DIVIDER),i=parseInt(a??"");if(isNaN(i)||void 0===i||void 0===r)throw new t.Message.InvalidArgumentException(`SharedId "${s.sharedId}" should have format "{navigableId}${e.SHARED_ID_DIVIDER}{backendNodeId}".`);if(n.navigableId!==r)throw new t.Message.NoSuchNodeException(`SharedId "${s.sharedId}" belongs to different document. Current document is ${n.navigableId}.`);try{return{objectId:(await n.cdpClient.sendCommand("DOM.resolveNode",{backendNodeId:i,executionContextId:n.executionContextId})).object.objectId}}catch(e){if(-32e3===e.code&&"No node with given id found"===e.message)throw new t.Message.NoSuchNodeException(`SharedId "${s.sharedId}" was not found.`);throw e}}if("handle"in s)return{objectId:s.handle};switch(s.type){case"undefined":return{unserializableValue:"undefined"};case"null":return{unserializableValue:"null"};case"string":return{value:s.value};case"number":return"NaN"===s.value?{unserializableValue:"NaN"}:"-0"===s.value?{unserializableValue:"-0"}:"Infinity"===s.value?{unserializableValue:"Infinity"}:"-Infinity"===s.value?{unserializableValue:"-Infinity"}:{value:s.value};case"boolean":return{value:Boolean(s.value)};case"bigint":return{unserializableValue:`BigInt(${JSON.stringify(s.value)})`};case"date":return{unserializableValue:`new Date(Date.parse(${JSON.stringify(s.value)}))`};case"regexp":return{unserializableValue:`new RegExp(${JSON.stringify(s.value.pattern)}, ${JSON.stringify(s.value.flags)})`};case"map":{const e=await this.#g(s.value,n);return{objectId:(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String(((...e)=>{const t=new Map;for(let s=0;s<e.length;s+=2)t.set(e[s],e[s+1]);return t})),awaitPromise:!1,arguments:e,returnByValue:!1,executionContextId:n.executionContextId})).result.objectId}}case"object":{const e=await this.#g(s.value,n);return{objectId:(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String(((...e)=>{const t={};for(let s=0;s<e.length;s+=2){t[e[s]]=e[s+1]}return t})),awaitPromise:!1,arguments:e,returnByValue:!1,executionContextId:n.executionContextId})).result.objectId}}case"array":{const e=await this.#f(s.value,n);return{objectId:(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String(((...e)=>e)),awaitPromise:!1,arguments:e,returnByValue:!1,executionContextId:n.executionContextId})).result.objectId}}case"set":{const e=await this.#f(s.value,n);return{objectId:(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String(((...e)=>new Set(e))),awaitPromise:!1,arguments:e,returnByValue:!1,executionContextId:n.executionContextId})).result.objectId}}case"channel":{const e=(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String((()=>{const e=[];let t=null;return{async getMessage(){const s=e.length>0?Promise.resolve():new Promise((e=>{t=e}));return await s,e.shift()},sendMessage(s){e.push(s),null!==t&&(t(),t=null)}}})),returnByValue:!1,executionContextId:n.executionContextId,generateWebDriverValue:!1})).result.objectId;this.#v(s,e,n);return{objectId:(await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String((e=>e.sendMessage)),arguments:[{objectId:e}],returnByValue:!1,executionContextId:n.executionContextId,generateWebDriverValue:!1})).result.objectId}}default:throw new Error(`Value ${JSON.stringify(s)} is not deserializable.`)}}async#g(e,t){const s=[];for(const n of e){const e=n[0],r=n[1];let a;a="string"==typeof e?{value:e}:await this.#m(e,t);const i=await this.#m(r,t);s.push(a),s.push(i)}return s}async#f(e,t){const s=[];for(const n of e)s.push(await this.#m(n,t));return s}async#v(e,s,n){const r=e.value.channel;for(;;){const a=await n.cdpClient.sendCommand("Runtime.callFunctionOn",{functionDeclaration:String((async e=>e.getMessage())),arguments:[{objectId:s}],awaitPromise:!0,executionContextId:n.executionContextId,generateWebDriverValue:!0});this.#l.registerEvent({method:t.Script.EventNames.MessageEvent,params:{channel:r,data:n.cdpToBidiValue(a,e.value.ownership??"none"),source:{realm:n.realmId,context:n.browsingContextId}}},n.browsingContextId)}}async#h(e,t,n,r){const a=e.stackTrace?.callFrames.map((e=>({url:e.url,functionName:e.functionName,lineNumber:e.lineNumber-t,columnNumber:e.columnNumber}))),i=await this.serializeCdpObject(e.exception,n,r),o=await s.stringifyObject(e.exception,r);return{exception:i,columnNumber:e.columnNumber,lineNumber:e.lineNumber-t,stackTrace:{callFrames:a||[]},text:o||e.text}}}e.ScriptEvaluator=s}(j),Object.defineProperty(R,"__esModule",{value:!0}),R.Realm=void 0;const A=j;R.Realm=class{#y;#x;#b;#C;#w;#_;#I;#S;#l;#E;sandbox;cdpSessionId;constructor(e,t,s,n,r,a,i,o,d,c,u){this.#b=s,this.#C=n,this.#w=r,this.sandbox=o,this.#_=a,this.#I=i,this.cdpSessionId=d,this.#S=c,this.#y=e,this.#x=t,this.#l=u,this.#E=new A.ScriptEvaluator(this.#l),this.#y.realmMap.set(this.#b,this)}async disown(e){if(this.#y.knownHandlesToRealm.get(e)===this.realmId){try{await this.cdpClient.sendCommand("Runtime.releaseObject",{objectId:e})}catch(e){if(-32e3!==e.code||"Invalid remote object id"!==e.message)throw e}this.#y.knownHandlesToRealm.delete(e)}}cdpToBidiValue(e,t){const s=e.result.webDriverValue,n=this.webDriverValueToBiDi(s);if(e.result.objectId){const s=e.result.objectId;"root"===t?(n.handle=s,this.#y.knownHandlesToRealm.set(s,this.realmId)):this.cdpClient.sendCommand("Runtime.releaseObject",{objectId:s})}return n}webDriverValueToBiDi(e){const t=e;if("platformobject"===t.type)return{type:"object"};const s=t.value;if(void 0===s)return t;if("node"===t.type&&(Object.hasOwn(s,"backendNodeId")&&(s.sharedId=`${this.navigableId}${A.SHARED_ID_DIVIDER}${s.backendNodeId}`,delete s.backendNodeId),Object.hasOwn(s,"children")))for(const e in s.children)s.children[e]=this.webDriverValueToBiDi(s.children[e]);if(["array","set"].includes(e.type))for(const e in s)s[e]=this.webDriverValueToBiDi(s[e]);if(["object","map"].includes(e.type))for(const e in s)s[e]=[this.webDriverValueToBiDi(s[e][0]),this.webDriverValueToBiDi(s[e][1])];return t}toBiDi(){return{realm:this.realmId,origin:this.origin,type:this.type,context:this.browsingContextId,...void 0===this.sandbox?{}:{sandbox:this.sandbox}}}get realmId(){return this.#b}get navigableId(){return this.#x.findContext(this.#C)?.navigableId??"UNKNOWN"}get browsingContextId(){return this.#C}get executionContextId(){return this.#w}get origin(){return this.#_}get type(){return this.#I}get cdpClient(){return this.#S}async callFunction(e,t,s,n,r){const a=this.#x.getKnownContext(this.browsingContextId);return await a.awaitUnblocked(),{result:await this.#E.callFunction(this,e,t,s,n,r)}}async scriptEvaluate(e,t,s){const n=this.#x.getKnownContext(this.browsingContextId);return await n.awaitUnblocked(),{result:await this.#E.scriptEvaluate(this,e,t,s)}}async serializeCdpObject(e,t){return this.#E.serializeCdpObject(e,t,this)}async stringifyObject(e){return A.ScriptEvaluator.stringifyObject(e,this)}},Object.defineProperty(Z,"__esModule",{value:!0}),Z.BrowsingContextImpl=void 0;const z=O,L=C,B=T,V=M,U=R;class ${#T={documentInitialized:new V.Deferred,Page:{navigatedWithinDocument:new V.Deferred,lifecycleEvent:{DOMContentLoaded:new V.Deferred,load:new V.Deferred}}};#P;#k;#l;#N=new Map;#y;#Z="about:blank";#O=null;#M;#D;#x;#s;get#R(){if(void 0===this.#D)throw new Error(`No default realm for browsing context ${this.#P}`);return this.#D}constructor(e,t,s,n,r,a,i){this.#M=e,this.#y=t,this.#P=s,this.#k=n,this.#l=r,this.#x=a,this.#s=i,this.#j()}static create(e,t,s,n,r,a,i){const o=new $(e,t,s,n,r,a,i);a.addContext(o),r.registerEvent({method:L.BrowsingContext.EventNames.ContextCreatedEvent,params:o.serializeToBidiValue()},o.contextId)}get navigableId(){return this.#O}updateCdpTarget(e){this.#M=e,this.#j()}async delete(){if(await this.#A(),this.#y.deleteRealms({browsingContextId:this.contextId}),null!==this.parentId){this.#x.getKnownContext(this.parentId).#N.delete(this.contextId)}this.#l.registerEvent({method:L.BrowsingContext.EventNames.ContextDestroyedEvent,params:this.serializeToBidiValue()},this.contextId),this.#x.removeContext(this.contextId)}async#A(){await Promise.all(this.children.map((e=>e.delete())))}get contextId(){return this.#P}get parentId(){return this.#k}get cdpTarget(){return this.#M}get children(){return Array.from(this.#N.values())}get url(){return this.#Z}addChild(e){this.#N.set(e.contextId,e)}async awaitLoaded(){await this.#T.Page.lifecycleEvent.load}async awaitUnblocked(){return this.#M.targetUnblocked}serializeToBidiValue(e=0,t=!0){return{context:this.#P,url:this.url,children:e>0?this.children.map((t=>t.serializeToBidiValue(e-1,!1))):null,...t?{parent:this.#k}:{}}}#j(){this.#M.cdpClient.on("Target.targetInfoChanged",(e=>{this.contextId===e.targetInfo.targetId&&(this.#Z=e.targetInfo.url)})),this.#M.cdpClient.on("Page.frameNavigated",(async e=>{this.contextId===e.frame.id&&(this.#Z=e.frame.url+(e.frame.urlFragment??""),await this.#A(),this.#y.deleteRealms({browsingContextId:this.contextId}))})),this.#M.cdpClient.on("Page.navigatedWithinDocument",(e=>{this.contextId===e.frameId&&(this.#Z=e.url,this.#T.Page.navigatedWithinDocument.resolve(e))})),this.#M.cdpClient.on("Page.lifecycleEvent",(e=>{if(this.contextId!==e.frameId)return;const t=(new Date).getTime();if("init"===e.name&&(this.#z(e.loaderId),this.#T.documentInitialized.resolve()),"commit"!==e.name){if(e.loaderId===this.#O)switch(e.name){case"DOMContentLoaded":this.#T.Page.lifecycleEvent.DOMContentLoaded.resolve(e),this.#l.registerEvent({method:L.BrowsingContext.EventNames.DomContentLoadedEvent,params:{context:this.contextId,navigation:this.#O,timestamp:t,url:this.#Z}},this.contextId);break;case"load":this.#T.Page.lifecycleEvent.load.resolve(e),this.#l.registerEvent({method:L.BrowsingContext.EventNames.LoadEvent,params:{context:this.contextId,navigation:this.#O,timestamp:t,url:this.#Z}},this.contextId)}}else this.#O=e.loaderId})),this.#M.cdpClient.on("Runtime.executionContextCreated",(e=>{if(e.context.auxData.frameId!==this.contextId)return;if(!["default","isolated"].includes(e.context.auxData.type))return;const t=new U.Realm(this.#y,this.#x,e.context.uniqueId,this.contextId,e.context.id,this.#L(e),"window","isolated"===e.context.auxData.type?e.context.name:void 0,this.#M.cdpSessionId,this.#M.cdpClient,this.#l);e.context.auxData.isDefault&&(this.#D=t)})),this.#M.cdpClient.on("Runtime.executionContextDestroyed",(e=>{this.#y.deleteRealms({cdpSessionId:this.#M.cdpSessionId,executionContextId:e.executionContextId})}))}#L(e){return"isolated"===e.context.auxData.type?this.#R.origin:["://",""].includes(e.context.origin)?"null":e.context.origin}#z(e){void 0!==e&&this.#O!==e?(this.#T.documentInitialized.isFinished?this.#T.documentInitialized=new V.Deferred:this.#s?.(B.LogType.browsingContexts,"Document changed"),this.#T.Page.lifecycleEvent.DOMContentLoaded.isFinished?this.#T.Page.lifecycleEvent.DOMContentLoaded=new V.Deferred:this.#s?.(B.LogType.browsingContexts,"Document changed"),this.#T.Page.lifecycleEvent.load.isFinished?this.#T.Page.lifecycleEvent.load=new V.Deferred:this.#s?.(B.LogType.browsingContexts,"Document changed"),this.#O=e):this.#T.Page.navigatedWithinDocument.isFinished&&(this.#T.Page.navigatedWithinDocument=new V.Deferred)}async navigate(e,t){await this.awaitUnblocked();const s=await this.#M.cdpClient.sendCommand("Page.navigate",{url:e,frameId:this.contextId});if(s.errorText)throw new L.Message.UnknownErrorException(s.errorText);switch(this.#z(s.loaderId),t){case"none":break;case"interactive":void 0===s.loaderId?await this.#T.Page.navigatedWithinDocument:await this.#T.Page.lifecycleEvent.DOMContentLoaded;break;case"complete":void 0===s.loaderId?await this.#T.Page.navigatedWithinDocument:await this.#T.Page.lifecycleEvent.load}return{result:{navigation:s.loaderId||null,url:e}}}async getOrCreateSandbox(e){if(void 0===e||""===e)return this.#R;let t=this.#y.findRealms({browsingContextId:this.contextId,sandbox:e});if(0===t.length&&(await this.#M.cdpClient.sendCommand("Page.createIsolatedWorld",{frameId:this.contextId,worldName:e}),t=this.#y.findRealms({browsingContextId:this.contextId,sandbox:e})),1!==t.length)throw Error(`Sandbox ${e} wasn't created.`);return t[0]}async captureScreenshot(){const[,e]=await Promise.all([this.#M.cdpClient.sendCommand("Page.bringToFront"),this.#M.cdpClient.sendCommand("Page.captureScreenshot",{})]);return{result:{data:e.data}}}async print(e){const t={printBackground:e.background,landscape:"landscape"===e.orientation,pageRanges:e.pageRanges?.join(",")??"",scale:e.scale,preferCSSPageSize:!e.shrinkToFit};e.margin?.bottom&&(t.marginBottom=(0,z.inchesFromCm)(e.margin.bottom)),e.margin?.left&&(t.marginLeft=(0,z.inchesFromCm)(e.margin.left)),e.margin?.right&&(t.marginRight=(0,z.inchesFromCm)(e.margin.right)),e.margin?.top&&(t.marginTop=(0,z.inchesFromCm)(e.margin.top)),e.page?.height&&(t.paperHeight=(0,z.inchesFromCm)(e.page.height)),e.page?.width&&(t.paperWidth=(0,z.inchesFromCm)(e.page.width));return{result:{data:(await this.#M.cdpClient.sendCommand("Page.printToPDF",t)).data}}}async addPreloadScript(e){return{result:{script:(await this.#M.cdpClient.sendCommand("Page.addScriptToEvaluateOnNewDocument",{source:`(${e.expression})();`,worldName:e.sandbox})).identifier}}}}Z.BrowsingContextImpl=$;var F={},q={},W={};Object.defineProperty(W,"__esModule",{value:!0}),W.getRemoteValuesText=W.logMessageFormatter=void 0;const K=["%s","%d","%i","%f","%o","%O","%c"];function J(e){return K.some((t=>e.includes(t)))}function H(e){let t="";const s=e[0].value.toString(),n=e.slice(1,void 0),r=s.split(new RegExp(K.map((e=>`(${e})`)).join("|"),"g"));for(const s of r)if(void 0!==s&&""!==s)if(J(s)){const r=n.shift();if(void 0===r)throw new Error(`Less value is provided: "${Q(e,!1)}"`);"%s"===s?t+=Y(r):"%d"===s||"%i"===s?"bigint"===r.type||"number"===r.type||"string"===r.type?t+=parseInt(r.value.toString(),10):t+="NaN":"%f"===s?"bigint"===r.type||"number"===r.type||"string"===r.type?t+=parseFloat(r.value.toString()):t+="NaN":t+=G(r)}else t+=s;if(n.length>0)throw new Error(`More value is provided: "${Q(e,!1)}"`);return t}function G(e){if("array"!==e.type&&"bigint"!==e.type&&"date"!==e.type&&"number"!==e.type&&"object"!==e.type&&"string"!==e.type)return Y(e);if("bigint"===e.type)return`${e.value.toString()}n`;if("number"===e.type)return e.value.toString();if(["date","string"].includes(e.type))return JSON.stringify(e.value);if("object"===e.type)return`{${e.value.map((e=>`${JSON.stringify(e[0])}:${G(e[1])}`)).join(",")}}`;if("array"===e.type)return`[${e.value?.map((e=>G(e))).join(",")??""}]`;throw Error(`Invalid value type: ${e.toString()}`)}function Y(e){if(!Object.hasOwn(e,"value"))return e.type;switch(e.type){case"string":case"number":case"boolean":case"bigint":return String(e.value);case"regexp":return`/${e.value.pattern}/${e.value.flags??""}`;case"date":return new Date(e.value).toString();case"object":return`Object(${e.value?.length??""})`;case"array":return`Array(${e.value?.length??""})`;case"map":return`Map(${e.value.length})`;case"set":return`Set(${e.value.length})`;case"node":return"node";default:return e.type}}function Q(e,t){const s=e[0];return s?"string"===s.type&&J(s.value.toString())&&t?H(e):e.map((e=>Y(e))).join(" "):""}W.logMessageFormatter=H,W.getRemoteValuesText=Q,Object.defineProperty(q,"__esModule",{value:!0}),q.LogManager=void 0;const X=C,ee=W;function te(e){const t=e?.callFrames.map((e=>({columnNumber:e.columnNumber,functionName:e.functionName,lineNumber:e.lineNumber,url:e.url})));return t?{callFrames:t}:void 0}class se{#l;#y;#M;constructor(e,t,s){this.#M=e,this.#y=t,this.#l=s}static create(e,t,s){const n=new se(e,t,s);return n.#B(),n}#B(){this.#V()}#V(){this.#M.cdpClient.on("Runtime.consoleAPICalled",(e=>{const t=this.#y.findRealm({cdpSessionId:this.#M.cdpSessionId,executionContextId:e.executionContextId}),s=void 0===t?Promise.resolve(e.args):Promise.all(e.args.map((e=>t.serializeCdpObject(e,"none"))));this.#l.registerPromiseEvent(s.then((s=>{return{method:X.Log.EventNames.LogEntryAddedEvent,params:{level:(n=e.type,["assert","error"].includes(n)?"error":["debug","trace"].includes(n)?"debug":["warn","warning"].includes(n)?"warn":"info"),source:{realm:t?.realmId??"UNKNOWN",context:t?.browsingContextId??"UNKNOWN"},text:(0,ee.getRemoteValuesText)(s,!0),timestamp:Math.round(e.timestamp),stackTrace:te(e.stackTrace),type:"console",method:"warning"===e.type?"warn":e.type,args:s}};var n})),t?.browsingContextId??"UNKNOWN",X.Log.EventNames.LogEntryAddedEvent)})),this.#M.cdpClient.on("Runtime.exceptionThrown",(e=>{const t=this.#y.findRealm({cdpSessionId:this.#M.cdpSessionId,executionContextId:e.exceptionDetails.executionContextId}),s=(async()=>e.exceptionDetails.exception?void 0===t?JSON.stringify(e.exceptionDetails.exception):t.stringifyObject(e.exceptionDetails.exception):e.exceptionDetails.text)();this.#l.registerPromiseEvent(s.then((s=>({method:X.Log.EventNames.LogEntryAddedEvent,params:{level:"error",source:{realm:t?.realmId??"UNKNOWN",context:t?.browsingContextId??"UNKNOWN"},text:s,timestamp:Math.round(e.timestamp),stackTrace:te(e.exceptionDetails.stackTrace),type:"javascript"}}))),t?.browsingContextId??"UNKNOWN",X.Log.EventNames.LogEntryAddedEvent)}))}}q.LogManager=se;var ne={},re={};Object.defineProperty(re,"__esModule",{value:!0}),re.NetworkRequest=void 0;const ae=M,ie=C;class oe{static#U="UNKNOWN";requestId;#l;#$;#F;#q;#W;#K;#J;constructor(e,t){this.requestId=e,this.#l=t,this.#K=new ae.Deferred,this.#J=new ae.Deferred}onRequestWillBeSentEvent(e){if(void 0!==this.#$)throw new Error("RequestWillBeSentEvent is already set");this.#$=e,void 0!==this.#F&&this.#K.resolve(),this.#H()}onRequestWillBeSentExtraInfoEvent(e){if(void 0!==this.#F)throw new Error("RequestWillBeSentExtraInfoEvent is already set");this.#F=e,void 0!==this.#$&&this.#K.resolve()}onResponseReceivedEvent(e){if(void 0!==this.#q)throw new Error("ResponseReceivedEvent is already set");this.#q=e,void 0!==this.#W&&this.#J.resolve(),this.#G()}onResponseReceivedEventExtraInfo(e){if(void 0!==this.#W)throw new Error("ResponseReceivedExtraInfoEvent is already set");this.#W=e,void 0!==this.#q&&this.#J.resolve()}onLoadingFailedEvent(e){this.#K.resolve(),this.#J.reject(e);const t={...this.#Y(),errorText:e.errorText};this.#l.registerEvent({method:ie.Network.EventNames.FetchErrorEvent,params:t},this.#$?.frameId??null)}#H(){this.#Q()||this.#l.registerPromiseEvent(this.#K.then((()=>this.#X())),this.#$?.frameId??null,ie.Network.EventNames.BeforeRequestSentEvent)}#X(){if(void 0===this.#$)throw new Error("RequestWillBeSentEvent is not set");const e={...this.#Y(),initiator:{type:this.#ee()}};return{method:ie.Network.EventNames.BeforeRequestSentEvent,params:e}}#Y(){return{context:this.#$?.frameId??null,navigation:this.#$?.loaderId??null,redirectCount:0,request:this.#te(),timestamp:Math.round(1e3*(this.#$?.wallTime??0))}}#te(){const e=void 0===this.#F?[]:oe.#se(this.#F.associatedCookies);return{request:this.#$?.requestId??oe.#U,url:this.#$?.request.url??oe.#U,method:this.#$?.request.method??oe.#U,headers:Object.keys(this.#$?.request.headers??[]).map((e=>({name:e,value:this.#$?.request.headers[e]}))),cookies:e,headersSize:-1,bodySize:0,timings:{timeOrigin:0,requestTime:0,redirectStart:0,redirectEnd:0,fetchStart:0,dnsStart:0,dnsEnd:0,connectStart:0,connectEnd:0,tlsStart:0,tlsEnd:0,requestStart:0,responseStart:0,responseEnd:0}}}#ee(){switch(this.#$?.initiator.type){case"parser":case"script":case"preflight":return this.#$?.initiator.type;default:return"other"}}static#ne(e){switch(e){case"Strict":return"strict";case"Lax":return"lax";default:return"none"}}static#se(e){return e.map((e=>({name:e.cookie.name,value:e.cookie.value,domain:e.cookie.domain,path:e.cookie.path,expires:e.cookie.expires,size:e.cookie.size,httpOnly:e.cookie.httpOnly,secure:e.cookie.secure,sameSite:oe.#ne(e.cookie.sameSite)})))}#G(){this.#Q()||this.#l.registerPromiseEvent(this.#J.then((()=>this.#re())),this.#q?.frameId??null,ie.Network.EventNames.ResponseCompletedEvent)}#re(){if(void 0===this.#q)throw new Error("ResponseReceivedEvent is not set");if(void 0===this.#$)throw new Error("RequestWillBeSentEvent is not set");return{method:ie.Network.EventNames.ResponseCompletedEvent,params:{...this.#Y(),response:{url:this.#q.response.url,protocol:this.#q.response.protocol,status:this.#q.response.status,statusText:this.#q.response.statusText,fromCache:this.#q.response.fromDiskCache||this.#q.response.fromPrefetchCache,headers:this.#ae(this.#q.response.headers),mimeType:this.#q.response.mimeType,bytesReceived:this.#q.response.encodedDataLength,headersSize:this.#W?.headersText?.length??-1,bodySize:-1,content:{size:-1}}}}}#ae(e){return Object.keys(e).map((t=>({name:t,value:e[t]})))}#Q(){return this.#$?.request.url.endsWith("/favicon.ico")??!1}}re.NetworkRequest=oe,Object.defineProperty(ne,"__esModule",{value:!0}),ne.NetworkProcessor=void 0;const de=re;class ce{#l;#ie=new Map;constructor(e){this.#l=e}static async create(e,t){const s=new ce(t);return e.on("Network.requestWillBeSent",(e=>{s.#oe(e.requestId).onRequestWillBeSentEvent(e)})),e.on("Network.requestWillBeSentExtraInfo",(e=>{s.#oe(e.requestId).onRequestWillBeSentExtraInfoEvent(e)})),e.on("Network.responseReceived",(e=>{s.#oe(e.requestId).onResponseReceivedEvent(e)})),e.on("Network.responseReceivedExtraInfo",(e=>{s.#oe(e.requestId).onResponseReceivedEventExtraInfo(e)})),e.on("Network.loadingFailed",(e=>{s.#oe(e.requestId).onLoadingFailedEvent(e)})),await e.sendCommand("Network.enable"),s}#oe(e){if(!this.#ie.has(e)){const t=new de.NetworkRequest(e,this.#l);this.#ie.set(e,t)}return this.#ie.get(e)}}ne.NetworkProcessor=ce,Object.defineProperty(F,"__esModule",{value:!0}),F.CdpTarget=void 0;const ue=q,le=C,pe=M,he=ne;class me{#de;#ce;#S;#l;#ue;#le;static create(e,t,s,n,r){const a=new me(e,t,s,r);return ue.LogManager.create(a,n,r),a.#pe(),a.#he(),a}constructor(e,t,s,n){this.#ce=e,this.#S=t,this.#ue=s,this.#l=n,this.#le=!1,this.#de=new pe.Deferred}get targetUnblocked(){return this.#de}get targetId(){return this.#ce}get cdpClient(){return this.#S}get cdpSessionId(){return this.#ue}async#he(){this.#l.isNetworkDomainEnabled&&await this.enableNetworkDomain(),await this.#S.sendCommand("Runtime.enable"),await this.#S.sendCommand("Page.enable"),await this.#S.sendCommand("Page.setLifecycleEventsEnabled",{enabled:!0}),await this.#S.sendCommand("Target.setAutoAttach",{autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0}),await this.#S.sendCommand("Runtime.runIfWaitingForDebugger"),this.#de.resolve()}async enableNetworkDomain(){this.#le||(this.#le=!0,await he.NetworkProcessor.create(this.cdpClient,this.#l))}#pe(){this.#S.on("*",((e,t)=>{this.#l.registerEvent({method:le.CDP.EventNames.EventReceivedEvent,params:{cdpMethod:e,cdpParams:t||{},cdpSession:this.#ue}},null)}))}}F.CdpTarget=me,Object.defineProperty(N,"__esModule",{value:!0}),N.BrowsingContextProcessor=void 0;const ge=C,fe=T,ve=Z,ye=F;N.BrowsingContextProcessor=class{#x;#me;#l;#s;#y;#ge;constructor(e,t,s,n,r,a){this.#x=r,this.#me=t,this.#l=n,this.#s=a,this.#y=e,this.#ge=s,this.#pe(this.#me.browserClient())}#pe(e){e.on("Target.attachedToTarget",(async t=>{await this.#fe(t,e)})),e.on("Target.detachedFromTarget",(async e=>{await this.#ve(e)})),e.on("Page.frameAttached",(e=>{this.#ye(e)})),e.on("Page.frameDetached",(async e=>{await this.#xe(e)}))}#ye(e){const t=this.#x.findContext(e.parentFrameId);void 0!==t&&ve.BrowsingContextImpl.create(t.cdpTarget,this.#y,e.frameId,e.parentFrameId,this.#l,this.#x,this.#s)}async#xe(e){"swap"!==e.reason&&await(this.#x.findContext(e.frameId)?.delete())}async#fe(e,t){const{sessionId:s,targetInfo:n}=e,r=this.#me.getCdpClient(s);if(!this.#be(n))return await r.sendCommand("Runtime.runIfWaitingForDebugger"),void await t.sendCommand("Target.detachFromTarget",e);this.#s?.(fe.LogType.browsingContexts,"AttachedToTarget event received:",JSON.stringify(e,null,2)),this.#pe(r);const a=ye.CdpTarget.create(n.targetId,r,s,this.#y,this.#l);this.#x.hasKnownContext(n.targetId)?this.#x.getKnownContext(n.targetId).updateCdpTarget(a):ve.BrowsingContextImpl.create(a,this.#y,n.targetId,null,this.#l,this.#x,this.#s)}async#ve(e){const t=e.targetId;await(this.#x.findContext(t)?.delete())}process_browsingContext_getTree(e){return{result:{contexts:(void 0===e.root?this.#x.getTopLevelContexts():[this.#x.getKnownContext(e.root)]).map((t=>t.serializeToBidiValue(e.maxDepth??Number.MAX_VALUE)))}}}async process_browsingContext_create(e){const t=this.#me.browserClient();let s;if(void 0!==e.referenceContext&&(s=this.#x.getKnownContext(e.referenceContext),null!==s.parentId))throw new ge.Message.InvalidArgumentException("referenceContext should be a top-level context");const n=(await t.sendCommand("Target.createTarget",{url:"about:blank",newWindow:"window"===e.type})).targetId,r=this.#x.getKnownContext(n);return await r.awaitLoaded(),{result:r.serializeToBidiValue(1)}}async process_browsingContext_navigate(e){return this.#x.getKnownContext(e.context).navigate(e.url,void 0===e.wait?"none":e.wait)}async process_browsingContext_captureScreenshot(e){return this.#x.getKnownContext(e.context).captureScreenshot()}async process_browsingContext_print(e){return this.#x.getKnownContext(e.context).print(e)}async#Ce(e){if("realm"in e)return this.#y.getRealm({realmId:e.realm});return this.#x.getKnownContext(e.context).getOrCreateSandbox(e.sandbox)}async process_script_addPreloadScript(e){const t=[],s=[];return e.context?t.push(this.#x.getKnownContext(e.context)):t.push(...this.#x.getAllContexts()),s.push(...await Promise.all(t.map((t=>t.addPreloadScript(e))))),s[0]}async process_script_removePreloadScript(e){throw new ge.Message.UnknownErrorException("Not implemented.")}async process_script_evaluate(e){return(await this.#Ce(e.target)).scriptEvaluate(e.expression,e.awaitPromise,e.resultOwnership??"none")}process_script_getRealms(e){void 0!==e.context&&this.#x.getKnownContext(e.context);const t=this.#y.findRealms({browsingContextId:e.context,type:e.type}).map((e=>e.toBiDi()));return{result:{realms:t}}}async process_script_callFunction(e){return(await this.#Ce(e.target)).callFunction(e.functionDeclaration,e.this||{type:"undefined"},e.arguments||[],e.awaitPromise,e.resultOwnership??"none")}async process_script_disown(e){const t=await this.#Ce(e.target);return await Promise.all(e.handles.map((async e=>t.disown(e)))),{result:{}}}async process_browsingContext_close(e){const t=this.#me.browserClient();if(null!==this.#x.getKnownContext(e.context).parentId)throw new ge.Message.InvalidArgumentException("Not a top-level browsing context cannot be closed.");const s=new Promise((s=>{const n=r=>{r.targetId===e.context&&(t.off("Target.detachedFromTarget",n),s())};t.on("Target.detachedFromTarget",n)}));return await t.sendCommand("Target.closeTarget",{targetId:e.context}),await s,{result:{}}}#be(e){return e.targetId!==this.#ge&&["page","iframe"].includes(e.type)}async process_cdp_sendCommand(e){const t=e.cdpSession?this.#me.getCdpClient(e.cdpSession):this.#me.browserClient();return{result:await t.sendCommand(e.cdpMethod,e.cdpParams),cdpSession:e.cdpSession}}process_cdp_getSession(e){const t=e.context,s=this.#x.getKnownContext(t).cdpTarget.cdpSessionId;return void 0===s?{result:{cdpSession:null}}:{result:{cdpSession:s}}}};var xe={};Object.defineProperty(xe,"__esModule",{value:!0}),xe.OutgoingBidiMessage=void 0;class be{#we;#_e;constructor(e,t){this.#we=e,this.#_e=t}static async createFromPromise(e,t){return e.then((e=>new be(e,t)))}static createResolved(e,t){return Promise.resolve(new be(e,t))}get message(){return this.#we}get channel(){return this.#_e}}xe.OutgoingBidiMessage=be,Object.defineProperty(k,"__esModule",{value:!0}),k.CommandProcessor=void 0;const Ce=C,we=T,_e=_,Ie=N,Se=xe;class Ee{parseAddPreloadScriptParams(e){return e}parseRemovePreloadScriptParams(e){return e}parseGetRealmsParams(e){return e}parseCallFunctionParams(e){return e}parseEvaluateParams(e){return e}parseDisownParams(e){return e}parseSendCommandParams(e){return e}parseGetSessionParams(e){return e}parseSubscribeParams(e){return e}parseNavigateParams(e){return e}parseGetTreeParams(e){return e}parseCreateParams(e){return e}parseCloseParams(e){return e}parseCaptureScreenshotParams(e){return e}parsePrintParams(e){return e}}class Te extends _e.EventEmitter{#Ie;#l;#Se;#s;constructor(e,t,s,n,r=new Ee,a,i){super(),this.#l=s,this.#s=i,this.#Ie=new Ie.BrowsingContextProcessor(e,t,n,s,a,i),this.#Se=r}static#Ee(){return{result:{ready:!1,message:"already connected"}}}async#Te(e,t){return await this.#l.subscribe(e.events,e.contexts??[null],t),{result:{}}}async#Pe(e,t){return await this.#l.unsubscribe(e.events,e.contexts??[null],t),{result:{}}}async#ke(e){switch(e.method){case"session.status":return Te.#Ee();case"session.subscribe":return this.#Te(this.#Se.parseSubscribeParams(e.params),e.channel??null);case"session.unsubscribe":return this.#Pe(this.#Se.parseSubscribeParams(e.params),e.channel??null);case"browsingContext.create":return this.#Ie.process_browsingContext_create(this.#Se.parseCreateParams(e.params));case"browsingContext.close":return this.#Ie.process_browsingContext_close(this.#Se.parseCloseParams(e.params));case"browsingContext.getTree":return this.#Ie.process_browsingContext_getTree(this.#Se.parseGetTreeParams(e.params));case"browsingContext.navigate":return this.#Ie.process_browsingContext_navigate(this.#Se.parseNavigateParams(e.params));case"browsingContext.captureScreenshot":return this.#Ie.process_browsingContext_captureScreenshot(this.#Se.parseCaptureScreenshotParams(e.params));case"browsingContext.print":return this.#Ie.process_browsingContext_print(this.#Se.parsePrintParams(e.params));case"script.addPreloadScript":return this.#Ie.process_script_addPreloadScript(this.#Se.parseAddPreloadScriptParams(e.params));case"script.removePreloadScript":return this.#Ie.process_script_removePreloadScript(this.#Se.parseRemovePreloadScriptParams(e.params));case"script.getRealms":return this.#Ie.process_script_getRealms(this.#Se.parseGetRealmsParams(e.params));case"script.callFunction":return this.#Ie.process_script_callFunction(this.#Se.parseCallFunctionParams(e.params));case"script.evaluate":return this.#Ie.process_script_evaluate(this.#Se.parseEvaluateParams(e.params));case"script.disown":return this.#Ie.process_script_disown(this.#Se.parseDisownParams(e.params));case"cdp.sendCommand":return this.#Ie.process_cdp_sendCommand(this.#Se.parseSendCommandParams(e.params));case"cdp.getSession":return this.#Ie.process_cdp_getSession(this.#Se.parseGetSessionParams(e.params));default:throw new Ce.Message.UnknownCommandException(`Unknown command '${e.method}'.`)}}async processCommand(e){try{const t=await this.#ke(e),s={id:e.id,...t};this.emit("response",Se.OutgoingBidiMessage.createResolved(s,e.channel??null))}catch(t){if(t instanceof Ce.Message.ErrorResponse){const s=t;this.emit("response",Se.OutgoingBidiMessage.createResolved(s.toErrorResponse(e.id),e.channel??null))}else{const s=t;this.#s?.(we.LogType.bidi,s),this.emit("response",Se.OutgoingBidiMessage.createResolved(new Ce.Message.ErrorResponse(Ce.Message.ErrorCode.UnknownError,s.message).toErrorResponse(e.id),e.channel??null))}}}}k.CommandProcessor=Te;var Pe={};Object.defineProperty(Pe,"__esModule",{value:!0}),Pe.BrowsingContextStorage=void 0;const ke=C;Pe.BrowsingContextStorage=class{#Ne=new Map;getTopLevelContexts(){return Array.from(this.#Ne.values()).filter((e=>null===e.parentId))}getAllContexts(){return Array.from(this.#Ne.values())}removeContext(e){this.#Ne.delete(e)}addContext(e){this.#Ne.set(e.contextId,e),null!==e.parentId&&this.getKnownContext(e.parentId).addChild(e)}hasKnownContext(e){return this.#Ne.has(e)}findContext(e){return this.#Ne.get(e)}getKnownContext(e){const t=this.findContext(e);if(void 0===t)throw new ke.Message.NoSuchFrameException(`Context ${e} not found`);return t}};var Ne={},Ze={};Object.defineProperty(Ze,"__esModule",{value:!0}),Ze.Buffer=void 0;Ze.Buffer=class{#Ze;#Oe=[];#Me;constructor(e,t=(()=>{})){this.#Ze=e,this.#Me=t}get(){return this.#Oe}add(e){for(this.#Oe.push(e);this.#Oe.length>this.#Ze;){const e=this.#Oe.shift();void 0!==e&&this.#Me(e)}}};var Oe={};Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.IdWrapper=void 0;class Me{static#De=0;#Re;constructor(){this.#Re=++Me.#De}get id(){return this.#Re}}Oe.IdWrapper=Me;var De={};Object.defineProperty(De,"__esModule",{value:!0}),De.SubscriptionManager=De.unrollEvents=De.cartesianProduct=void 0;const Re=C;function je(...e){return e.reduce(((e,t)=>e.flatMap((e=>t.map((t=>[e,t].flat()))))))}function Ae(e){const t=[];for(const s of e)switch(s){case Re.BrowsingContext.AllEvents:t.push(...Object.values(Re.BrowsingContext.EventNames));break;case Re.CDP.AllEvents:t.push(...Object.values(Re.CDP.EventNames));break;case Re.Log.AllEvents:t.push(...Object.values(Re.Log.EventNames));break;case Re.Network.AllEvents:t.push(...Object.values(Re.Network.EventNames));break;case Re.Script.AllEvents:t.push(...Object.values(Re.Script.EventNames));break;default:t.push(s)}return t}De.cartesianProduct=je,De.unrollEvents=Ae;De.SubscriptionManager=class{#je=0;#Ae=new Map;#x;constructor(e){this.#x=e}getChannelsSubscribedToEvent(e,t){return Array.from(this.#Ae.keys()).map((s=>({priority:this.#ze(e,t,s),channel:s}))).filter((({priority:e})=>null!==e)).sort(((e,t)=>e.priority-t.priority)).map((({channel:e})=>e))}#ze(e,t,s){const n=this.#Ae.get(s);if(void 0===n)return null;const r=this.#Le(t),a=[...new Set([null,r])].map((t=>n.get(t)?.get(e))).filter((e=>void 0!==e));return 0===a.length?null:Math.min(...a)}#Le(e){if(null===e)return null;const t=this.#x.findContext(e)?.parentId??null;return null!==t?this.#Le(t):e}subscribe(e,t,s){if(t=this.#Le(t),e===Re.BrowsingContext.AllEvents)return void Object.values(Re.BrowsingContext.EventNames).map((e=>this.subscribe(e,t,s)));if(e===Re.CDP.AllEvents)return void Object.values(Re.CDP.EventNames).map((e=>this.subscribe(e,t,s)));if(e===Re.Log.AllEvents)return void Object.values(Re.Log.EventNames).map((e=>this.subscribe(e,t,s)));if(e===Re.Network.AllEvents)return void Object.values(Re.Network.EventNames).map((e=>this.subscribe(e,t,s)));if(e===Re.Script.AllEvents)return void Object.values(Re.Script.EventNames).map((e=>this.subscribe(e,t,s)));this.#Ae.has(s)||this.#Ae.set(s,new Map);const n=this.#Ae.get(s);n.has(t)||n.set(t,new Map);const r=n.get(t);r.has(e)||r.set(e,this.#je++)}unsubscribeAll(e,t,s){for(const e of t)null!==e&&this.#x.getKnownContext(e);je(Ae(e),t).map((([e,t])=>this.#Be(e,t,s))).forEach((e=>e()))}unsubscribe(e,t,s){this.unsubscribeAll([e],[t],s)}#Be(e,t,s){if(t=this.#Le(t),!this.#Ae.has(s))throw new Re.Message.InvalidArgumentException(`Cannot unsubscribe from ${e}, ${null===t?"null":t}. No subscription found.`);const n=this.#Ae.get(s);if(!n.has(t))throw new Re.Message.InvalidArgumentException(`Cannot unsubscribe from ${e}, ${null===t?"null":t}. No subscription found.`);const r=n.get(t);if(!r.has(e))throw new Re.Message.InvalidArgumentException(`Cannot unsubscribe from ${e}, ${null===t?"null":t}. No subscription found.`);return()=>{r.delete(e),0===r.size&&n.delete(e),0===n.size&&this.#Ae.delete(s)}}},Object.defineProperty(Ne,"__esModule",{value:!0}),Ne.EventManager=void 0;const ze=Ze,Le=Oe,Be=xe,Ve=De;class Ue{#Ve;#P;#Ue;constructor(e,t){this.#Ve=new Le.IdWrapper,this.#P=t,this.#Ue=e}get id(){return this.#Ve.id}get contextId(){return this.#P}get event(){return this.#Ue}}const $e=new Map([["log.entryAdded",100]]);class Fe{static#$e="network";#Fe=new Map;#qe=new Map;#We=new Map;#Ke;#Je;#He;constructor(e){this.#Je=e,this.#Ke=new Ve.SubscriptionManager(e.getBrowsingContextStorage()),this.#He=!1}get isNetworkDomainEnabled(){return this.#He}static#Ge(e,t,s){return JSON.stringify({eventName:e,browsingContext:t,channel:s})}registerEvent(e,t){this.registerPromiseEvent(Promise.resolve(e),t,e.method)}registerPromiseEvent(e,t,s){const n=new Ue(e,t),r=this.#Ke.getChannelsSubscribedToEvent(s,t);this.#Ye(n,s);for(const t of r)this.#Je.emitOutgoingMessage(Be.OutgoingBidiMessage.createFromPromise(e,t)),this.#Qe(n,t,s)}async subscribe(e,t,s){for(const e of t)null!==e&&this.#Je.getBrowsingContextStorage().getKnownContext(e);for(const n of e)for(const e of t){await this.#Xe(n,e),this.#Ke.subscribe(n,e,s);for(const t of this.#et(n,e,s))this.#Je.emitOutgoingMessage(Be.OutgoingBidiMessage.createFromPromise(t.event,s)),this.#Qe(t,s,n)}}async#Xe(e,t){e.startsWith(Fe.#$e)&&(null===t?(this.#He=!0,await Promise.all(this.#Je.getBrowsingContextStorage().getAllContexts().map((e=>e.cdpTarget.enableNetworkDomain())))):await this.#Je.getBrowsingContextStorage().getKnownContext(t).cdpTarget.enableNetworkDomain())}unsubscribe(e,t,s){this.#Ke.unsubscribeAll(e,t,s)}#Ye(e,t){if(!$e.has(t))return;const s=Fe.#Ge(t,e.contextId);this.#qe.has(s)||this.#qe.set(s,new ze.Buffer($e.get(t))),this.#qe.get(s).add(e),this.#Fe.has(t)||this.#Fe.set(t,new Set),this.#Fe.get(t).add(e.contextId)}#Qe(e,t,s){if(!$e.has(s))return;const n=Fe.#Ge(s,e.contextId,t);this.#We.set(n,Math.max(this.#We.get(n)??0,e.id))}#et(e,t,s){const n=Fe.#Ge(e,t),r=Fe.#Ge(e,t,s),a=this.#We.get(r)??-1/0,i=this.#qe.get(n)?.get().filter((e=>e.id>a))??[];return null===t&&Array.from(this.#Fe.get(e)?.keys()??[]).filter((e=>null!==e&&this.#Je.getBrowsingContextStorage().hasKnownContext(e))).map((t=>this.#et(e,t,s))).forEach((e=>i.push(...e))),i.sort(((e,t)=>e.id-t.id))}}Ne.EventManager=Fe;var qe={};Object.defineProperty(qe,"__esModule",{value:!0}),qe.RealmStorage=void 0;const We=C;qe.RealmStorage=class{#tt=new Map;#st=new Map;get knownHandlesToRealm(){return this.#tt}get realmMap(){return this.#st}findRealms(e){return Array.from(this.#st.values()).filter((t=>(void 0===e.realmId||e.realmId===t.realmId)&&((void 0===e.browsingContextId||e.browsingContextId===t.browsingContextId)&&((void 0===e.navigableId||e.navigableId===t.navigableId)&&((void 0===e.executionContextId||e.executionContextId===t.executionContextId)&&((void 0===e.origin||e.origin===t.origin)&&((void 0===e.type||e.type===t.type)&&((void 0===e.sandbox||e.sandbox===t.sandbox)&&(void 0===e.cdpSessionId||e.cdpSessionId===t.cdpSessionId)))))))))}findRealm(e){const t=this.findRealms(e);if(1===t.length)return t[0]}getRealm(e){const t=this.findRealm(e);if(void 0===t)throw new We.Message.NoSuchFrameException(`Realm ${JSON.stringify(e)} not found`);return t}deleteRealms(e){this.findRealms(e).map((e=>{this.#st.delete(e.realmId),Array.from(this.#tt.entries()).filter((([,t])=>t===e.realmId)).map((([e])=>this.#tt.delete(e)))}))}},Object.defineProperty(w,"__esModule",{value:!0}),w.BidiServer=void 0;const Ke=_,Je=E,He=k,Ge=Pe,Ye=Ne,Qe=qe;class Xe extends Ke.EventEmitter{#nt;#rt;#at;#x;#y;#s;#it=e=>{this.#at.processCommand(e)};#ot=async e=>{const t=e.message;null!==e.channel&&(t.channel=e.channel),await this.#rt.sendMessage(t)};constructor(e,t,s,n,r){super(),this.#s=r,this.#x=new Ge.BrowsingContextStorage,this.#y=new Qe.RealmStorage,this.#nt=new Je.ProcessingQueue(this.#ot,(()=>Promise.resolve()),this.#s),this.#rt=e,this.#rt.setOnMessage(this.#it),this.#at=new He.CommandProcessor(this.#y,t,new Ye.EventManager(this),s,n,this.#x,this.#s),this.#at.on("response",(e=>{this.emitOutgoingMessage(e)}))}static async createAndStart(e,t,s,n,r){const a=new Xe(e,t,s,n,r),i=t.browserClient();return await i.sendCommand("Target.setDiscoverTargets",{discover:!0}),await i.sendCommand("Target.setAutoAttach",{autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0}),await a.topLevelContextsLoaded(),a}async topLevelContextsLoaded(){await Promise.all(this.#x.getTopLevelContexts().map((e=>e.awaitLoaded())))}emitOutgoingMessage(e){this.#nt.add(e)}close(){this.#rt.close()}getBrowsingContextStorage(){return this.#x}}w.BidiServer=Xe;var et={},tt={};Object.defineProperty(tt,"__esModule",{value:!0}),tt.CdpClient=void 0;const st=_;class nt extends st.EventEmitter{#me;#dt;constructor(e,t){super(),this.#me=e,this.#dt=t}static create(e,t){return new nt(e,t)}sendCommand(e,...t){const s=t[0];return this.#me.sendCommand(e,s,this.#dt)}}tt.CdpClient=nt;var rt={};Object.defineProperty(rt,"__esModule",{value:!0}),rt.CdpConnection=void 0;const at=tt;rt.CdpConnection=class{#rt;#ct;#ut=new Map;#lt=new Map;#pt;#ht=0;constructor(e,t=(()=>{})){this.#rt=e,this.#pt=t,this.#rt.setOnMessage(this.#mt),this.#ct=at.CdpClient.create(this,null)}close(){this.#rt.close();for(const[,{reject:e}]of this.#lt)e(new Error("Disconnected"));this.#lt.clear(),this.#ut.clear()}browserClient(){return this.#ct}getCdpClient(e){const t=this.#ut.get(e);if(!t)throw new Error("Unknown CDP session ID");return t}sendCommand(e,t,s){return new Promise(((n,r)=>{const a=this.#ht++;this.#lt.set(a,{resolve:n,reject:r});const i={id:a,method:e,params:t};s&&(i.sessionId=s);const o=JSON.stringify(i),d=JSON.stringify(i,null,2);this.#rt.sendMessage(o),this.#pt("sent ▸",d)}))}#mt=e=>{const t=JSON.parse(e),s=JSON.stringify(t,null,2);if(this.#pt("received ◂",s),"Target.attachedToTarget"===t.method){const{sessionId:e}=t.params;this.#ut.set(e,at.CdpClient.create(this,e))}else if("Target.detachedFromTarget"===t.method){const{sessionId:e}=t.params;this.#ut.get(e)&&this.#ut.delete(e)}if(void 0!==t.id){const e=this.#lt.get(t.id);e&&(t.result?e.resolve(t.result):t.error&&e.reject(t.error))}else if(t.method){const e=t.sessionId?this.#ut.get(t.sessionId):this.#ct;e&&e.emit(t.method,t.params||{})}}};var it={};Object.defineProperty(it,"__esModule",{value:!0}),it.WebSocketTransport=void 0;it.WebSocketTransport=class{#mt=null;#gt;constructor(e){this.#gt=e,this.#gt.on("message",(e=>{this.#mt?.(e)}))}setOnMessage(e){this.#mt=e}sendMessage(e){this.#gt.send(e)}close(){this.#mt=null,this.#gt.close()}},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WebSocketTransport=e.CdpConnection=e.CdpClient=void 0;var t=tt;Object.defineProperty(e,"CdpClient",{enumerable:!0,get:function(){return t.CdpClient}});var s=rt;Object.defineProperty(e,"CdpConnection",{enumerable:!0,get:function(){return s.CdpConnection}});var n=it;Object.defineProperty(e,"WebSocketTransport",{enumerable:!0,get:function(){return n.WebSocketTransport}})}(et);var ot={};Object.defineProperty(ot,"__esModule",{value:!0}),ot.log=ot.generatePage=void 0;const dt=T;function ct(e){const t=`${e}_log`,s=document.getElementById(t);if(s)return s;const n=document.getElementById("details"),r=document.createElement("div");r.className="divider",n.appendChild(r);const a=document.createElement("div");return a.className="item",a.innerHTML=`<h3>${e}</h3><div id="${t}" class="log"></div>`,n.appendChild(a),document.getElementById(t)}ot.generatePage=function(){globalThis.document?.documentElement&&(window.document.documentElement.innerHTML='<!DOCTYPE html><title>BiDi-CDP Mapper</title><style>body{font-family: Roboto, serif; font-size: 13px; color: #202124;}.log{padding: 12px; font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; font-size: 11px; line-height: 180%; background: #f1f3f4; border-radius: 4px;}.pre{overflow-wrap: break-word; padding: 10px;}.card{margin: 60px auto; padding: 2px 0; max-width: 900px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15), 0 1px 6px rgba(0, 0, 0, 0.2); border-radius: 8px;}.divider{height: 1px; background: #f0f0f0;}.item{padding: 16px 20px;}</style><div class="card"><div class="item"><h1>BiDi-CDP Mapper is controlling this tab</h1><p>Closing or reloading it will stop the BiDi process. <a target="_blank" title="BiDi-CDP Mapper GitHub Repository" href="https://github.com/GoogleChromeLabs/chromium-bidi">Details.</a></p></div><div class="divider"></div><details id="details"><summary class="item">Debug information</summary></details></div>',ct(dt.LogType.system),ct(dt.LogType.bidi),ct(dt.LogType.browsingContexts),ct(dt.LogType.cdp))},ot.log=function(t,...s){if(!globalThis.document?.documentElement)return;e.window?.sendDebugMessage?.(JSON.stringify({logType:t,messages:s}));const n=ct(t),r=document.createElement("div");r.className="pre",r.textContent=s.join(" "),n.appendChild(r)}; /** * Copyright 2021 Google LLC. * Copyright (c) Microsoft Corporation. @@ -17,5 +17,5 @@ * * @license */ -var nt=e&&e.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s);var r=Object.getOwnPropertyDescriptor(t,s);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,n,r)}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),rt=e&&e.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),at=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&nt(t,e,s);return rt(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const ot=at(s),it=h,dt=We,ct=y,ut=le,lt=et,pt=async function(){return new Promise((e=>{window.setSelfTargetId=t=>{(0,lt.log)(ct.LogType.system,"Current target ID:",t),e(t)}}))}();(async()=>{(0,lt.generatePage)();const e=await pt,t=await async function(e){class t{#dt=null;constructor(){window.onBidiMessage=e=>{let s;(0,lt.log)(ct.LogType.bidi,"received ◂",e);try{s=t.#ut(e)}catch(t){return void this.#lt(e,"invalid argument",t.message,null)}this.#dt?.call(null,s)}}setOnMessage(e){this.#dt=e}async sendMessage(e){const t=JSON.stringify(e);window.sendBidiResponse(t),(0,lt.log)(ct.LogType.bidi,"sent ▸",t)}close(){this.#dt=null,window.onBidiMessage=null}#lt(e,s,n,r){const a=t.#pt(e,s,n);r?this.sendMessage({...a,channel:r}):this.sendMessage(a)}static#ht(e){return null===e?"null":Array.isArray(e)?"array":typeof e}static#pt(e,s,n){let r;try{const s=JSON.parse(e);"object"===t.#ht(s)&&"id"in s&&(r=s.id)}catch{}return{id:r,error:s,message:n}}static#ut(e){let s;try{s=JSON.parse(e)}catch{throw new Error("Cannot parse data as JSON")}const n=t.#ht(s);if("object"!==n)throw new Error(`Expected JSON object but got ${n}`);const{id:r,method:a,params:o}=s,i=t.#ht(r);if("number"!==i||!Number.isInteger(r)||r<0)throw new Error(`Expected unsigned integer but got ${i}`);const d=t.#ht(a);if("string"!==d)throw new Error(`Expected string method but got ${d}`);const c=t.#ht(o);if("object"!==c)throw new Error(`Expected object params but got ${c}`);let u=s.channel;if(void 0!==u){const e=t.#ht(u);if("string"!==e)throw new Error(`Expected string channel but got ${e}`);""===u&&(u=void 0)}return{id:r,method:a,params:o,channel:u}}}return it.BidiServer.createAndStart(new t,function(){class e{#dt=null;constructor(){window.cdp.onmessage=e=>{this.#dt?.call(null,e)}}setOnMessage(e){this.#dt=e}async sendMessage(e){window.cdp.send(e)}close(){this.#dt=null,window.cdp.onmessage=null}}return new dt.CdpConnection(new e,((...e)=>{(0,lt.log)(ct.LogType.cdp,...e)}))}(),e,new ht,lt.log)}(e);(0,lt.log)(ct.LogType.system,"Launched"),t.emitOutgoingMessage(ut.OutgoingBidiMessage.createResolved({launched:!0},null))})();class ht{parseGetRealmsParams(e){return ot.Script.parseGetRealmsParams(e)}parseCallFunctionParams(e){return ot.Script.parseCallFunctionParams(e)}parseEvaluateParams(e){return ot.Script.parseEvaluateParams(e)}parseDisownParams(e){return ot.Script.parseDisownParams(e)}parseSendCommandParams(e){return ot.CDP.parseSendCommandParams(e)}parseGetSessionParams(e){return ot.CDP.parseGetSessionParams(e)}parseSubscribeParams(e){return ot.Session.parseSubscribeParams(e)}parseNavigateParams(e){return ot.BrowsingContext.parseNavigateParams(e)}parseGetTreeParams(e){return ot.BrowsingContext.parseGetTreeParams(e)}parseCreateParams(e){return ot.BrowsingContext.parseCreateParams(e)}parseCloseParams(e){return ot.BrowsingContext.parseCloseParams(e)}parseCaptureScreenshotParams(e){return ot.BrowsingContext.parseCaptureScreenshotParams(e)}parsePrintParams(e){return ot.BrowsingContext.parsePrintParams(e)}}return t}(); +var ut=e&&e.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s);var r=Object.getOwnPropertyDescriptor(t,s);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,n,r)}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),lt=e&&e.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),pt=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&ut(t,e,s);return lt(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const ht=pt(s),mt=C,gt=w,ft=et,vt=T,yt=xe,xt=ot,bt=async function(){return new Promise((e=>{window.setSelfTargetId=t=>{(0,xt.log)(vt.LogType.system,"Current target ID:",t),e(t)}}))}();(async()=>{(0,xt.generatePage)();const e=await bt,t=await async function(e){class t{#mt=null;constructor(){window.onBidiMessage=e=>{let s;(0,xt.log)(vt.LogType.bidi,"received ◂",e);try{s=t.#ft(e)}catch(t){return void this.#vt(e,mt.Message.ErrorCode.InvalidArgument,t.message,null)}this.#mt?.call(null,s)}}setOnMessage(e){this.#mt=e}sendMessage(e){const t=JSON.stringify(e);window.sendBidiResponse(t),(0,xt.log)(vt.LogType.bidi,"sent ▸",t)}close(){this.#mt=null,window.onBidiMessage=null}#vt(e,s,n,r){const a=t.#yt(e,s,n);r?this.sendMessage({...a,channel:r}):this.sendMessage(a)}static#xt(e){return null===e?"null":Array.isArray(e)?"array":typeof e}static#yt(e,s,n){let r;try{const s=JSON.parse(e);"object"===t.#xt(s)&&"id"in s&&(r=s.id)}catch{}return{id:r,error:s,message:n}}static#ft(e){let s;try{s=JSON.parse(e)}catch{throw new Error("Cannot parse data as JSON")}const n=t.#xt(s);if("object"!==n)throw new Error(`Expected JSON object but got ${n}`);const{id:r,method:a,params:i}=s,o=t.#xt(r);if("number"!==o||!Number.isInteger(r)||r<0)throw new Error(`Expected unsigned integer but got ${o}`);const d=t.#xt(a);if("string"!==d)throw new Error(`Expected string method but got ${d}`);const c=t.#xt(i);if("object"!==c)throw new Error(`Expected object params but got ${c}`);let u=s.channel;if(void 0!==u){const e=t.#xt(u);if("string"!==e)throw new Error(`Expected string channel but got ${e}`);""===u&&(u=void 0)}return{id:r,method:a,params:i,channel:u}}}return gt.BidiServer.createAndStart(new t,function(){class e{#mt=null;constructor(){window.cdp.onmessage=e=>{this.#mt?.call(null,e)}}setOnMessage(e){this.#mt=e}sendMessage(e){window.cdp.send(e)}close(){this.#mt=null,window.cdp.onmessage=null}}return new ft.CdpConnection(new e,((...e)=>{(0,xt.log)(vt.LogType.cdp,...e)}))}(),e,new Ct,xt.log)}(e);(0,xt.log)(vt.LogType.system,"Launched"),t.emitOutgoingMessage(yt.OutgoingBidiMessage.createResolved({launched:!0},null))})();class Ct{parseAddPreloadScriptParams(e){return ht.Script.parseAddPreloadScriptParams(e)}parseRemovePreloadScriptParams(e){return ht.Script.parseRemovePreloadScriptParams(e)}parseGetRealmsParams(e){return ht.Script.parseGetRealmsParams(e)}parseCallFunctionParams(e){return ht.Script.parseCallFunctionParams(e)}parseEvaluateParams(e){return ht.Script.parseEvaluateParams(e)}parseDisownParams(e){return ht.Script.parseDisownParams(e)}parseSendCommandParams(e){return ht.CDP.parseSendCommandParams(e)}parseGetSessionParams(e){return ht.CDP.parseGetSessionParams(e)}parseSubscribeParams(e){return ht.Session.parseSubscribeParams(e)}parseNavigateParams(e){return ht.BrowsingContext.parseNavigateParams(e)}parseGetTreeParams(e){return ht.BrowsingContext.parseGetTreeParams(e)}parseCreateParams(e){return ht.BrowsingContext.parseCreateParams(e)}parseCloseParams(e){return ht.BrowsingContext.parseCloseParams(e)}parseCaptureScreenshotParams(e){return ht.BrowsingContext.parseCaptureScreenshotParams(e)}parsePrintParams(e){return ht.BrowsingContext.parsePrintParams(e)}}return t}(); //# sourceMappingURL=mapperTab.js.map
diff --git a/third_party/blink/common/BUILD.gn b/third_party/blink/common/BUILD.gn index 631ef445..b58db79 100644 --- a/third_party/blink/common/BUILD.gn +++ b/third_party/blink/common/BUILD.gn
@@ -324,6 +324,7 @@ "//ui/display", "//ui/display/mojom", "//ui/events:events_base", + "//ui/events/mojom:event_latency_metadata_mojom", "//ui/latency/mojom:shared_mojom_traits", ]
diff --git a/third_party/blink/common/DEPS b/third_party/blink/common/DEPS index 40bf560cf..77997ecf2 100644 --- a/third_party/blink/common/DEPS +++ b/third_party/blink/common/DEPS
@@ -41,6 +41,7 @@ "+ui/base/dragdrop/mojom", "+ui/display", "+ui/events/base_event_utils.h", + "+ui/events/mojom/event_latency_metadata_mojom_traits.h", "+ui/gfx/presentation_feedback.h", "+ui/gfx/transform.h", "+ui/gfx/geometry",
diff --git a/third_party/blink/common/input/web_coalesced_input_event_mojom_traits.cc b/third_party/blink/common/input/web_coalesced_input_event_mojom_traits.cc index cae8aad..1adbb11 100644 --- a/third_party/blink/common/input/web_coalesced_input_event_mojom_traits.cc +++ b/third_party/blink/common/input/web_coalesced_input_event_mojom_traits.cc
@@ -13,6 +13,7 @@ #include "third_party/blink/public/common/input/web_gesture_event.h" #include "third_party/blink/public/common/input/web_keyboard_event.h" #include "third_party/blink/public/common/input/web_mouse_wheel_event.h" +#include "ui/events/mojom/event_latency_metadata_mojom_traits.h" #include "ui/latency/mojom/latency_info_mojom_traits.h" namespace mojo { @@ -361,6 +362,12 @@ return false; } + ui::EventLatencyMetadata event_latency_metadata; + if (!event.ReadEventLatencyMetadata(&event_latency_metadata)) { + return false; + }; + input_event->GetModifiableEventLatencyMetadata() = + std::move(event_latency_metadata); ui::LatencyInfo latency_info; if (!event.ReadLatency(&latency_info)) return false;
diff --git a/third_party/blink/public/common/DEPS b/third_party/blink/public/common/DEPS index c2c3018..74484c759 100644 --- a/third_party/blink/public/common/DEPS +++ b/third_party/blink/public/common/DEPS
@@ -36,5 +36,6 @@ "+ui/gfx/display_color_spaces.h", "+ui/gfx/geometry", "+ui/latency/latency_info.h", + "+ui/events/event_latency_metadata.h", "+url", ]
diff --git a/third_party/blink/public/common/input/web_coalesced_input_event_mojom_traits.h b/third_party/blink/public/common/input/web_coalesced_input_event_mojom_traits.h index aa7f806..31edf22 100644 --- a/third_party/blink/public/common/input/web_coalesced_input_event_mojom_traits.h +++ b/third_party/blink/public/common/input/web_coalesced_input_event_mojom_traits.h
@@ -7,6 +7,7 @@ #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/common/input/web_coalesced_input_event.h" +#include "third_party/blink/public/common/input/web_input_event.h" #include "third_party/blink/public/mojom/input/input_handler.mojom.h" namespace mojo { @@ -35,6 +36,11 @@ return event->latency_info(); } + static const ui::EventLatencyMetadata& event_latency_metadata( + const std::unique_ptr<blink::WebCoalescedInputEvent>& event) { + return event->Event().GetEventLatencyMetadata(); + } + static blink::mojom::KeyDataPtr key_data( const std::unique_ptr<blink::WebCoalescedInputEvent>& event); static blink::mojom::PointerDataPtr pointer_data(
diff --git a/third_party/blink/public/common/input/web_input_event.h b/third_party/blink/public/common/input/web_input_event.h index d6ee25c8..7fe9ec3 100644 --- a/third_party/blink/public/common/input/web_input_event.h +++ b/third_party/blink/public/common/input/web_input_event.h
@@ -40,6 +40,7 @@ #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/mojom/input/input_event.mojom-shared.h" +#include "ui/events/event_latency_metadata.h" #include "ui/events/types/event_type.h" #include "ui/gfx/geometry/point_f.h" #include "ui/gfx/geometry/vector2d_f.h" @@ -314,6 +315,13 @@ base::TimeTicks TimeStamp() const { return time_stamp_; } void SetTimeStamp(base::TimeTicks time_stamp) { time_stamp_ = time_stamp; } + const ui::EventLatencyMetadata& GetEventLatencyMetadata() const { + return event_latency_metadata_; + } + ui::EventLatencyMetadata& GetModifiableEventLatencyMetadata() { + return event_latency_metadata_; + } + void SetTargetFrameMovedRecently() { modifiers_ |= kTargetFrameMovedRecently; } @@ -357,6 +365,8 @@ base::TimeTicks time_stamp_; Type type_ = Type::kUndefined; int modifiers_ = kNoModifiers; + + ui::EventLatencyMetadata event_latency_metadata_; }; } // namespace blink
diff --git a/third_party/blink/public/common/permissions_policy/permissions_policy_declaration.h b/third_party/blink/public/common/permissions_policy/permissions_policy_declaration.h index 13be54ca6..902ea7a 100644 --- a/third_party/blink/public/common/permissions_policy/permissions_policy_declaration.h +++ b/third_party/blink/public/common/permissions_policy/permissions_policy_declaration.h
@@ -55,7 +55,6 @@ // document. Usually, the 'src' keyword in a declaration will cause the origin // of the iframe to be present in |origins|, but for sandboxed iframes, this // flag is set instead. - // TODO(crbug.com/1418009): Consider merging into `self_if_matches`. bool matches_opaque_src{false}; // Indicates that the parsed policy is deprecated.
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn index 21ca9a1..122f66b 100644 --- a/third_party/blink/public/mojom/BUILD.gn +++ b/third_party/blink/public/mojom/BUILD.gn
@@ -297,6 +297,7 @@ "//ui/base/mojom", "//ui/display/mojom", "//ui/events/mojom", + "//ui/events/mojom:event_latency_metadata_mojom", "//ui/gfx/geometry/mojom", "//ui/gfx/mojom", "//ui/gfx/range/mojom",
diff --git a/third_party/blink/public/mojom/input/input_handler.mojom b/third_party/blink/public/mojom/input/input_handler.mojom index 020807b..7e289ec 100644 --- a/third_party/blink/public/mojom/input/input_handler.mojom +++ b/third_party/blink/public/mojom/input/input_handler.mojom
@@ -4,27 +4,28 @@ module blink.mojom; +import "cc/mojom/browser_controls_state.mojom"; import "cc/mojom/overscroll_behavior.mojom"; import "cc/mojom/touch_action.mojom"; import "mojo/public/mojom/base/string16.mojom"; import "mojo/public/mojom/base/time.mojom"; import "third_party/blink/public/mojom/input/gesture_event.mojom"; -import "third_party/blink/public/mojom/input/input_event.mojom"; +import "third_party/blink/public/mojom/input/handwriting_gesture_result.mojom"; import "third_party/blink/public/mojom/input/input_event_result.mojom"; +import "third_party/blink/public/mojom/input/input_event.mojom"; import "third_party/blink/public/mojom/input/pointer_lock_context.mojom"; import "third_party/blink/public/mojom/input/pointer_lock_result.mojom"; +import "third_party/blink/public/mojom/input/stylus_writing_gesture.mojom"; import "third_party/blink/public/mojom/input/touch_event.mojom"; import "third_party/blink/public/mojom/selection_menu/selection_menu_behavior.mojom"; import "ui/base/ime/mojom/ime_types.mojom"; -import "third_party/blink/public/mojom/input/handwriting_gesture_result.mojom"; -import "third_party/blink/public/mojom/input/stylus_writing_gesture.mojom"; -import "ui/events/mojom/event.mojom"; import "ui/events/mojom/event_constants.mojom"; +import "ui/events/mojom/event_latency_metadata.mojom"; +import "ui/events/mojom/event.mojom"; import "ui/events/mojom/scroll_granularity.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; import "ui/gfx/range/mojom/range.mojom"; import "ui/latency/mojom/latency_info.mojom"; -import "cc/mojom/browser_controls_state.mojom"; [EnableIf=is_android] import "third_party/blink/public/mojom/input/synchronous_compositor.mojom"; @@ -169,6 +170,7 @@ int32 modifiers; mojo_base.mojom.TimeTicks timestamp; ui.mojom.LatencyInfo latency; + ui.mojom.EventLatencyMetadata event_latency_metadata; KeyData? key_data; PointerData? pointer_data; GestureData? gesture_data;
diff --git a/third_party/blink/renderer/modules/imagecapture/image_capture.cc b/third_party/blink/renderer/modules/imagecapture/image_capture.cc index 517105f6..6b28940 100644 --- a/third_party/blink/renderer/modules/imagecapture/image_capture.cc +++ b/third_party/blink/renderer/modules/imagecapture/image_capture.cc
@@ -1484,8 +1484,8 @@ ScriptPromise ImageCapture::takePhoto(ScriptState* script_state, const PhotoSettings* photo_settings) { - TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), - "ImageCapture::takePhoto", TRACE_EVENT_SCOPE_PROCESS); + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "ImageCapture::takePhoto"); auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); ScriptPromise promise = resolver->Promise(); @@ -1599,6 +1599,8 @@ void ImageCapture::UpdateAndCheckMediaTrackSettingsAndCapabilities( base::OnceCallback<void(bool)> callback) { + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "ImageCapture::UpdateAndCheckMediaTrackSettingsAndCapabilities"); service_->GetPhotoState( stream_track_->Component()->Source()->Id(), WTF::BindOnce(&ImageCapture::GotPhotoState, WrapPersistent(this), @@ -1862,6 +1864,8 @@ void ImageCapture::OnSetPanTiltZoomSettingsFromTrack( base::OnceClosure done_callback, bool result) { + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "ImageCapture::OnSetPanTiltZoomSettingsFromTrack"); service_->GetPhotoState( SourceId(), WTF::BindOnce(&ImageCapture::UpdateMediaTrackSettingsAndCapabilities, @@ -1901,6 +1905,8 @@ capabilities_(MediaTrackCapabilities::Create()), settings_(MediaTrackSettings::Create()), photo_settings_(PhotoSettings::Create()) { + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "ImageCapture::CreateImageCapture"); DCHECK(stream_track_); DCHECK(!service_.is_bound()); DCHECK(!permission_service_.is_bound()); @@ -2275,6 +2281,8 @@ ScriptPromise ImageCapture::GetMojoPhotoState( ScriptState* script_state, PromiseResolverFunction resolver_cb) { + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "ImageCapture::GetMojoPhotoState"); auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); ScriptPromise promise = resolver->Promise(); @@ -2304,6 +2312,8 @@ PromiseResolverFunction resolve_function, bool trigger_take_photo, media::mojom::blink::PhotoStatePtr photo_state) { + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "ImageCapture::OnMojoGetPhotoState"); DCHECK(service_requests_.Contains(resolver)); if (photo_state.is_null()) { @@ -2364,9 +2374,8 @@ bool trigger_take_photo, bool result) { DCHECK(service_requests_.Contains(resolver)); - TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), - "ImageCapture::OnMojoSetPhotoOptions", - TRACE_EVENT_SCOPE_PROCESS); + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "ImageCapture::OnMojoSetPhotoOptions"); if (!result) { resolver->Reject(MakeGarbageCollected<DOMException>( @@ -2388,9 +2397,8 @@ void ImageCapture::OnMojoTakePhoto(ScriptPromiseResolver* resolver, media::mojom::blink::BlobPtr blob) { DCHECK(service_requests_.Contains(resolver)); - TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), - "ImageCapture::OnMojoTakePhoto", - TRACE_EVENT_SCOPE_PROCESS); + TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), + "ImageCapture::OnMojoTakePhoto", "blob_size", blob->data.size()); // TODO(mcasas): Should be using a mojo::StructTraits. if (blob->data.empty()) {
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_track.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_track.cc index 0cf2e0d..8459c18 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_track.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_track.cc
@@ -1036,6 +1036,10 @@ sink->OnVideoConstraintsChanged(min_frame_rate_, adapter_settings_.max_frame_rate()); } + + if (is_screencast_) { + StartTimerForRequestingFrames(); + } } media::VideoCaptureFormat MediaStreamVideoTrack::GetComputedSourceFormat() {
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc index 5cd1b41f..9592fa7 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc
@@ -268,7 +268,7 @@ WebMediaStreamTrack track = CreateTrack(); MockMediaStreamVideoSink sink; auto* video_track = MediaStreamVideoTrack::From(track); - video_track->StopAndNotify(base::BindOnce([] {})); + video_track->StopAndNotify(base::DoNothing()); sink.ConnectToTrack(track); sink.ConnectEncodedToTrack(track); video_track->SetEnabled(true); @@ -752,7 +752,7 @@ test::RunDelayedTasks(base::Hertz(kMinFrameRate)); EXPECT_TRUE(video_track->IsRefreshFrameTimerRunningForTesting()); - video_track->StopAndNotify(base::BindOnce([] {})); + video_track->StopAndNotify(base::DoNothing()); EXPECT_FALSE(video_track->IsRefreshFrameTimerRunningForTesting()); } @@ -874,5 +874,47 @@ test::RunDelayedTasks(base::Seconds(1)); } +TEST_F(MediaStreamVideoTrackRefreshFrameTimerTest, + NotifyConstraintsStartsTimerIfMinFpsIsSet) { + // |RequestRefreshFrame| should be called exactly twice within kMinFrameRate + // interval: First time from |NotifyConstraintsConfigurationComplete| and + // second time from the refresh timer. + EXPECT_CALL(*mock_source(), OnRequestRefreshFrame).Times(2); + MockMediaStreamVideoSink sink; + WebMediaStreamTrack track = + CreateTrackWithSettings(VideoTrackAdapterSettings()); + auto* video_track = MediaStreamVideoTrack::From(track); + + video_track->SetIsScreencastForTesting(true); + sink.ConnectToTrack(track); + video_track->SetMinimumFrameRate(kMinFrameRate); + video_track->NotifyConstraintsConfigurationComplete(); + + test::RunDelayedTasks(base::Hertz(kMinFrameRate)); + + EXPECT_TRUE(video_track->IsRefreshFrameTimerRunningForTesting()); + video_track->StopAndNotify(base::DoNothing()); + EXPECT_FALSE(video_track->IsRefreshFrameTimerRunningForTesting()); +} + +TEST_F(MediaStreamVideoTrackRefreshFrameTimerTest, + NotifyConstraintsDontStartTimerIfMinFpsIsUnset) { + // |RequestRefreshFrame| should only be called once from |AddSink| since + // refresh frame timer is not running. + EXPECT_CALL(*mock_source(), OnRequestRefreshFrame).Times(1); + MockMediaStreamVideoSink sink; + WebMediaStreamTrack track = + CreateTrackWithSettings(VideoTrackAdapterSettings()); + auto* video_track = MediaStreamVideoTrack::From(track); + + video_track->SetIsScreencastForTesting(true); + sink.ConnectToTrack(track); + video_track->NotifyConstraintsConfigurationComplete(); + + test::RunDelayedTasks(base::Hertz(kMinFrameRate)); + + EXPECT_FALSE(video_track->IsRefreshFrameTimerRunningForTesting()); +} + } // namespace media_stream_video_track_test } // namespace blink
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_header_extension_capability.idl b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_header_extension_capability.idl index 4d603ef..f2ff122d 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_header_extension_capability.idl +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_header_extension_capability.idl
@@ -3,7 +3,8 @@ // found in the LICENSE file. // https://w3c.github.io/webrtc-pc/#rtcrtpheaderextensioncapability* +// https://w3c.github.io/webrtc-extensions/#rtp-header-extension-control-transceiver-interface dictionary RTCRtpHeaderExtensionCapability { - DOMString uri; - RTCRtpTransceiverDirection direction = "sendrecv"; + required DOMString uri; + required RTCRtpTransceiverDirection direction; };
diff --git a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc index 0080450..199f448 100644 --- a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc +++ b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc
@@ -33,6 +33,9 @@ #include <memory> #include <utility> +#include "base/no_destructor.h" +#include "base/synchronization/lock.h" + #include "third_party/abseil-cpp/absl/base/attributes.h" #include "third_party/blink/public/platform/web_isolated_world_info.h" #include "third_party/blink/renderer/platform/bindings/dom_data_store.h" @@ -306,6 +309,10 @@ bool DOMWrapperWorld::UnsetNonMainWorldWrapperIfSet( ScriptWrappable* object, const v8::TracedReference<v8::Object>& handle) { + // This function can be called in parallel. + static base::NoDestructor<base::Lock> g_lock; + base::AutoLock lock(*g_lock); + for (DOMWrapperWorld* world : GetWorldMap().Values()) { DOMDataStore& data_store = world->DomDataStore(); if (data_store.UnsetSpecificWrapperIfSet(object, handle))
diff --git a/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.cc b/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.cc index e3d51af..03b3f7ad 100644 --- a/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.cc +++ b/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.cc
@@ -47,80 +47,6 @@ return BitmapImageMetrics::DecodedImageType::kUnknown; } -void BitmapImageMetrics::CountDecodedImageFrameTime( - const String& type, - base::TimeDelta elapsed, - uint64_t original_frame_rect_area, - bool first) { - BitmapImageMetrics::DecodedImageType dit = StringToDecodedImageType(type); - switch (dit) { - case BitmapImageMetrics::DecodedImageType::kUnknown: - // No-op. - break; - case BitmapImageMetrics::DecodedImageType::kJPEG: - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Jpeg.EveryDecode.Time", elapsed); - if (first) { - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Jpeg.FirstDecode.Time", - elapsed); - } - break; - case BitmapImageMetrics::DecodedImageType::kPNG: - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Png.EveryDecode.Time", elapsed); - if (first) { - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Png.FirstDecode.Time", - elapsed); - DEFINE_THREAD_SAFE_STATIC_LOCAL( - CustomCountHistogram, image_area_histogram, - ("Blink.ImageDecoders.Png.FirstDecode.Area", kImageAreaHistogramMin, - kImageAreaHistogramMax, kImageAreaHistogramBucketCount)); - // A base::HistogramBase::Sample may not fit |size.Area()|. Hence the - // use of saturated_cast. - image_area_histogram.Count( - base::saturated_cast<base::HistogramBase::Sample>( - original_frame_rect_area)); - } - break; - case BitmapImageMetrics::DecodedImageType::kGIF: - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Gif.EveryDecode.Time", elapsed); - if (first) { - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Gif.FirstDecode.Time", - elapsed); - } - break; - case BitmapImageMetrics::DecodedImageType::kWebP: - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.WebP.EveryDecode.Time", elapsed); - if (first) { - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.WebP.FirstDecode.Time", - elapsed); - } - break; - case BitmapImageMetrics::DecodedImageType::kICO: - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Ico.EveryDecode.Time", elapsed); - if (first) { - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Ico.FirstDecode.Time", - elapsed); - } - break; - case BitmapImageMetrics::DecodedImageType::kBMP: - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Bmp.EveryDecode.Time", elapsed); - if (first) { - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Bmp.FirstDecode.Time", - elapsed); - } - break; - case BitmapImageMetrics::DecodedImageType::kAVIF: - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Avif.EveryDecode.Time", elapsed); - if (first) { - UMA_HISTOGRAM_TIMES("Blink.ImageDecoders.Avif.FirstDecode.Time", - elapsed); - } - break; - case BitmapImageMetrics::DecodedImageType::kREMOVED_JXL: - NOTREACHED(); - break; - } -} - void BitmapImageMetrics::CountDecodedImageType(const String& type) { UMA_HISTOGRAM_ENUMERATION("Blink.DecodedImageType", StringToDecodedImageType(type));
diff --git a/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h b/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h index 22ec3c5..d66dbc9e 100644 --- a/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h +++ b/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h
@@ -5,7 +5,6 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_BITMAP_IMAGE_METRICS_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_BITMAP_IMAGE_METRICS_H_ -#include "base/time/time.h" #include "third_party/blink/renderer/platform/graphics/image_orientation.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -62,14 +61,6 @@ // |type| is the return value of ImageDecoder::FilenameExtension(). static DecodedImageType StringToDecodedImageType(const String& type); - // |type| is the return value of ImageDecoder::FilenameExtension(). |elapsed| - // is how long it took to completely decode the frame. - // |original_frame_rect_area| is the number of decoded pixels. |first| is - // whether this is the first time this image was decoded. - static void CountDecodedImageFrameTime(const String& type, - base::TimeDelta elapsed, - uint64_t original_frame_rect_area, - bool first); // |type| is the return value of ImageDecoder::FilenameExtension(). static void CountDecodedImageType(const String& type); // |type| is the return value of ImageDecoder::FilenameExtension().
diff --git a/third_party/blink/renderer/platform/heap/thread_state.cc b/third_party/blink/renderer/platform/heap/thread_state.cc index 2d0e6956..e09ba78 100644 --- a/third_party/blink/renderer/platform/heap/thread_state.cc +++ b/third_party/blink/renderer/platform/heap/thread_state.cc
@@ -32,9 +32,6 @@ // lazily. class BlinkRootsHandler final : public v8::EmbedderRootsHandler { public: - explicit BlinkRootsHandler(v8::CppHeap& cpp_heap) : cpp_heap_(cpp_heap) {} - ~BlinkRootsHandler() final = default; - bool IsRoot(const v8::TracedReference<v8::Value>& handle) final { const uint16_t class_id = handle.WrapperClassId(); // Stand-alone reference or kCustomWrappableId. Keep as root as @@ -43,13 +40,6 @@ class_id != WrapperTypeInfo::kObjectClassId) return true; - const v8::TracedReference<v8::Object>& traced = - handle.template As<v8::Object>(); - if (ToWrapperTypeInfo(traced)->IsActiveScriptWrappable() && - ToScriptWrappable(traced)->HasPendingActivity()) { - return true; - } - return false; } @@ -59,11 +49,6 @@ void ResetRoot(const v8::TracedReference<v8::Value>& handle) final { DCHECK(handle.WrapperClassId() == WrapperTypeInfo::kNodeClassId || handle.WrapperClassId() == WrapperTypeInfo::kObjectClassId); - // Clearing the wrapper below adjusts the DOM wrapper store which may - // re-allocate its backing. NoGarbageCollectionScope is required to avoid - // triggering a GC from such re-allocating calls as ResetRoot() is itself - // called from GC. - cppgc::subtle::NoGarbageCollectionScope no_gc(cpp_heap_.GetHeapHandle()); const v8::TracedReference<v8::Object>& traced = handle.As<v8::Object>(); bool success = DOMWrapperWorld::UnsetSpecificWrapperIfSet( ToScriptWrappable(traced), traced); @@ -71,9 +56,6 @@ // remove it. CHECK(success); } - - private: - v8::CppHeap& cpp_heap_; }; } // namespace @@ -129,7 +111,7 @@ isolate->AttachCppHeap(cpp_heap_.get()); CHECK_EQ(cpp_heap_.get(), isolate->GetCppHeap()); isolate_ = isolate; - embedder_roots_handler_ = std::make_unique<BlinkRootsHandler>(cpp_heap()); + embedder_roots_handler_ = std::make_unique<BlinkRootsHandler>(); isolate_->SetEmbedderRootsHandler(embedder_roots_handler_.get()); }
diff --git a/third_party/blink/renderer/platform/image-decoders/image_decoder.cc b/third_party/blink/renderer/platform/image-decoders/image_decoder.cc index b1ba113..350db59 100644 --- a/third_party/blink/renderer/platform/image-decoders/image_decoder.cc +++ b/third_party/blink/renderer/platform/image-decoders/image_decoder.cc
@@ -25,13 +25,11 @@ #include "base/logging.h" #include "base/numerics/safe_conversions.h" #include "base/sys_byteorder.h" -#include "base/timer/elapsed_timer.h" #include "build/build_config.h" #include "media/media_buildflags.h" #include "skia/ext/cicp.h" #include "third_party/blink/public/common/buildflags.h" #include "third_party/blink/public/platform/platform.h" -#include "third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h" #include "third_party/blink/renderer/platform/image-decoders/bmp/bmp_image_decoder.h" #include "third_party/blink/renderer/platform/image-decoders/exif_reader.h" #include "third_party/blink/renderer/platform/image-decoders/fast_shared_buffer_reader.h" @@ -446,24 +444,7 @@ if (frame->GetStatus() != ImageFrame::kFrameComplete) { TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Decode Image", "imageType", FilenameExtension().Ascii()); - if (metrics_frame_index_ != index) { - metrics_frame_index_ = index; - metrics_time_delta_ = base::TimeDelta(); - } - base::ElapsedTimer timer; Decode(index); - metrics_time_delta_ += timer.Elapsed(); - if (frame->GetStatus() == ImageFrame::kFrameComplete) { - BitmapImageMetrics::CountDecodedImageFrameTime( - FilenameExtension(), metrics_time_delta_, - frame->OriginalFrameRect().size().Area64(), - metrics_first_ && (index == 0)); - metrics_frame_index_ = kNotFound; - metrics_time_delta_ = base::TimeDelta(); - if (index == 0) { - metrics_first_ = false; - } - } } frame->NotifyBitmapIfPixelsChanged();
diff --git a/third_party/blink/renderer/platform/image-decoders/image_decoder.h b/third_party/blink/renderer/platform/image-decoders/image_decoder.h index 45392a0..04ad5cc 100644 --- a/third_party/blink/renderer/platform/image-decoders/image_decoder.h +++ b/third_party/blink/renderer/platform/image-decoders/image_decoder.h
@@ -643,10 +643,6 @@ // is needed if `sk_image_color_space_` is not an exact representation of // `embedded_color_profile_`. std::unique_ptr<ColorProfileTransform> embedded_to_sk_image_transform_; - - wtf_size_t metrics_frame_index_ = kNotFound; - base::TimeDelta metrics_time_delta_; - bool metrics_first_ = true; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index e470636..4d0551c 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1115,7 +1115,7 @@ }, { name: "CSSTransitionDiscrete", - status: "experimental", + status: "stable", }, { // Support for tree-scoped [1] timeline names (e.g. produced by
diff --git a/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc b/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc index fe2da01..12ed57ee 100644 --- a/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc +++ b/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc
@@ -601,26 +601,28 @@ event->EventPointer()->SetTimeStamp(base::TimeTicks::Now()); } + // TODO(b/224960731): Fix tests and add + // `DCHECK(!arrived_in_browser_main_timestamp.is_null())`. + // We expect that `arrived_in_browser_main_timestamp` is always + // found, but there are a lot of tests where this component is not set. + // Currently EventMetrics knows how to handle null timestamp, so we + // don't process it here. + const base::TimeTicks arrived_in_browser_main_timestamp = + event->Event() + .GetEventLatencyMetadata() + .arrived_in_browser_main_timestamp; std::unique_ptr<cc::EventMetrics> metrics; if (event->Event().IsGestureScroll()) { const auto& gesture_event = static_cast<const WebGestureEvent&>(event->Event()); const bool is_inertial = gesture_event.InertialPhase() == WebGestureEvent::InertialPhaseState::kMomentum; - - // TODO(b/224960731): It is not recommended to use LatencyInfo. So we need - // to create a separate field with "arrived_in_browser_main" timestamp in - // WebInputEvent and use it here. - base::TimeTicks arrived_in_browser_main_timestamp; - event->latency_info().FindLatency( - ui::LatencyComponentType::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, - &(arrived_in_browser_main_timestamp)); - // TODO(b/224960731): Fix tests and add - // `DCHECK(!arrived_in_browser_main_timestamp.is_null())`. - // We expect that `INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT` is always - // found, but there are a lot of tests where this component is not set. - // Currently EventMetrics knows how to handle null timestamp, so we - // don't process it here. + //'scrolls_blocking_touch_dispatched_to_renderer' can be null. It is set + // by the Browser only if the corresponding TouchMove was blocking. + base::TimeTicks blocking_touch_dispatched_to_renderer_timestamp = + event->Event() + .GetEventLatencyMetadata() + .scrolls_blocking_touch_dispatched_to_renderer; if (gesture_event.GetType() == WebInputEvent::Type::kGestureScrollUpdate) { metrics = cc::ScrollUpdateEventMetrics::Create( @@ -632,13 +634,15 @@ gesture_event.data.scroll_update.delta_y, event->Event().TimeStamp(), arrived_in_browser_main_timestamp, base::IdType64<class ui::LatencyInfo>( - event->latency_info().trace_id())); + event->latency_info().trace_id()), + blocking_touch_dispatched_to_renderer_timestamp); has_seen_first_gesture_scroll_update_after_begin_ = true; } else { metrics = cc::ScrollEventMetrics::Create( gesture_event.GetTypeAsUiEventType(), gesture_event.GetScrollInputType(), is_inertial, - event->Event().TimeStamp(), arrived_in_browser_main_timestamp); + event->Event().TimeStamp(), arrived_in_browser_main_timestamp, + blocking_touch_dispatched_to_renderer_timestamp); has_seen_first_gesture_scroll_update_after_begin_ = false; } } else if (WebInputEvent::IsPinchGestureEventType(event->Event().GetType())) { @@ -649,7 +653,8 @@ gesture_event.GetScrollInputType(), event->Event().TimeStamp()); } else { metrics = cc::EventMetrics::Create(event->Event().GetTypeAsUiEventType(), - event->Event().TimeStamp()); + event->Event().TimeStamp(), + arrived_in_browser_main_timestamp); } if (uses_input_handler_) {
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 99e4cb5..6821caf 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -6752,9 +6752,6 @@ # parsing (which generates the warnings) happens twice, once for fast-path and once for existing path. crbug.com/1407201 fast/css/pseudo-in-range-invalid-value.html [ Failure Pass ] -# TODO(crbug.com/1051821): temporarily disabled to allow WebRTC roll -crbug.com/1051821 external/wpt/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html [ Failure Pass ] - # Sheriff 2023-01-05 # fast/dom/Element/scrollTop-scrollLeft-body.html previously also linked with crbug.com/1249176 crbug.com/1361956 [ Debug Mac12 ] fast/dom/Element/scrollTop-scrollLeft-body.html [ Failure Pass Timeout ]
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html index d64b810..77818444 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html
@@ -19,12 +19,12 @@ var t = async_test("Test exceptions on CanvasFilter() blur.object"); _addTest(function(canvas, ctx) { -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur"}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: undefined}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: "foo"}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: [1,2]}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: NaN}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: {}}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur'}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: undefined}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 'foo'}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: [1,2]}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: NaN}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: {}}); }); });
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html index 678a722..a56840e 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html
@@ -19,44 +19,44 @@ var t = async_test("Test the functionality of ColorMatrix filters in CanvasFilter objects"); _addTest(function(canvas, ctx) { -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: undefined}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: "foo"}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: null}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, "a"]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); }); -ctx.fillStyle = "#f00"; -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: undefined}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: 'foo'}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: null}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 'a']}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); }); +ctx.fillStyle = '#f00'; +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 0}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 255,0,0,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 90}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 0,91,0,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 180}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 0,109,109,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 270}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 109,18,255,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'saturate', values: 0.5}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 155,27,27,255, 2); ctx.clearRect(0, 0, 100, 50); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'luminanceToAlpha'}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 0,0,0,54, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ +ctx.filter = new CanvasFilter({filter: 'colorMatrix', values: [ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ]}); ctx.fillRect(0, 0, 50, 25); -ctx.fillStyle = "#0f0"; +ctx.fillStyle = '#0f0'; ctx.fillRect(50, 0, 50, 25); -ctx.fillStyle = "#00f"; +ctx.fillStyle = '#00f'; ctx.fillRect(0, 25, 50, 25); -ctx.fillStyle = "#fff"; +ctx.fillStyle = '#fff'; ctx.fillRect(50, 25, 50, 25); _assertPixelApprox(canvas, 10,10, 0,255,0,255, 2); _assertPixelApprox(canvas, 60,10, 0,255,0,255, 2);
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html index 0ecd132c..c54299f 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html
@@ -40,10 +40,10 @@ tableValuesR = [0, 0, 1, 1]; tableValuesG = [2, 0, 0.5, 3]; tableValuesB = [1, -1, 5, 0]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "discrete", tableValues: tableValuesR}, - funcG: {type: "discrete", tableValues: tableValuesG}, - funcB: {type: "discrete", tableValues: tableValuesB}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'discrete', tableValues: tableValuesR}, + funcG: {type: 'discrete', tableValues: tableValuesG}, + funcB: {type: 'discrete', tableValues: tableValuesB}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html index 4ef30c92..110cd239 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html
@@ -31,10 +31,10 @@ const amplitudes = [2, 1.1, 0.5]; const exponents = [5, 3, 1]; const offsets = [0.25, 0, 0.5]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "gamma", amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, - funcG: {type: "gamma", amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, - funcB: {type: "gamma", amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'gamma', amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, + funcG: {type: 'gamma', amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, + funcB: {type: 'gamma', amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html index 25eda36..96a3e49 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html
@@ -19,10 +19,10 @@ var t = async_test("Test pixels on CanvasFilter() componentTransfer with identity type"); _addTest(function(canvas, ctx) { -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "identity"}, - funcG: {type: "identity"}, - funcB: {type: "identity"}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'identity'}, + funcG: {type: 'identity'}, + funcB: {type: 'identity'}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html index c45f558..10f9931 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html
@@ -30,10 +30,10 @@ const slopes = [0.5, 1.2, -0.2]; const intercepts = [0.25, 0, 0.5]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "linear", slope: slopes[0], intercept: intercepts[0]}, - funcG: {type: "linear", slope: slopes[1], intercept: intercepts[1]}, - funcB: {type: "linear", slope: slopes[2], intercept: intercepts[2]}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'linear', slope: slopes[0], intercept: intercepts[0]}, + funcG: {type: 'linear', slope: slopes[1], intercept: intercepts[1]}, + funcB: {type: 'linear', slope: slopes[2], intercept: intercepts[2]}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html index b561cb6..7e743bf 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html
@@ -40,10 +40,10 @@ tableValuesR = [0, 0, 1, 1]; tableValuesG = [2, 0, 0.5, 3]; tableValuesB = [1, -1, 5, 0]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "table", tableValues: tableValuesR}, - funcG: {type: "table", tableValues: tableValuesG}, - funcB: {type: "table", tableValues: tableValuesB}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'table', tableValues: tableValuesR}, + funcG: {type: 'table', tableValues: tableValuesG}, + funcB: {type: 'table', tableValues: tableValuesB}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html index b85b742b..b994a91 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html
@@ -19,23 +19,23 @@ var t = async_test("Test exceptions on CanvasFilter() convolveMatrix"); _addTest(function(canvas, ctx) { -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix"}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", divisor: 2}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: null}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: 1}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, "a"], [0]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1, 2, 3, 4]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], []]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 2], []]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], [1, 2]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix'}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', divisor: 2}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: null}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: 1}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], [0]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 'a'], [0]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], 0]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], [0, Infinity]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: []}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [1]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [1, 2, 3, 4]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[], []]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 2], []]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[], [1, 2]]}); }); // This should not throw an error -ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]}); -ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1]]}); +ctx.filter = new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[]]}); +ctx.filter = new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1]]}); });
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.dropShadow.tentative-expected.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.dropShadow.tentative-expected.html index 90f406fe..62226d7d 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.dropShadow.tentative-expected.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.dropShadow.tentative-expected.html
@@ -22,52 +22,52 @@ </style> <div style="position: relative"> - <div class='background' style="top: 0px;"></div> - <div class='background' style="top: 100px;"></div> - <div class='background' style="top: 200px;"></div> + <div class="background" style="top: 0px;"></div> + <div class="background" style="top: 100px;"></div> + <div class="background" style="top: 200px;"></div> - <div class='testcase' + <div class="testcase" style="left: 10px; top: 10px; filter: drop-shadow(2px 2px 2px black);"> </div> - <div class='testcase' + <div class="testcase" style="left: 110px; top: 10px; filter: drop-shadow(15px 10px 5px rgba(128, 0, 128, 0.7));"> </div> - <div class='testcase' + <div class="testcase" style="left: 10px; top: 110px; filter: drop-shadow(10px 10px 3px purple)"> </div> - <div class='testcase' + <div class="testcase" style="left: 110px; top: 110px; filter: drop-shadow(15px 10px 3px LinkText)"> </div> - <div class='testcase' + <div class="testcase" style="left: 210px; top: 110px; filter: drop-shadow(10px 15px 0px purple)"> </div> - <div class='testcase' + <div class="testcase" style="left: 310px; top: 110px; filter: drop-shadow(9px 12px 3px rgba(20, 50, 130, 1))"> </div> - <div class='testcase' + <div class="testcase" style="left: 410px; top: 110px; filter: drop-shadow(15px 10px 3px rgba(20, 50, 130, 0.7))"> </div> - <div class='testcase' + <div class="testcase" style="left: 510px; top: 110px; filter: drop-shadow(15px 10px 3px rgba(20, 50, 130, 0.49))"> </div> - <div class='testcase' + <div class="testcase" style="left: 10px; top: 210px; filter: drop-shadow(-5px 0px 0px purple);"> </div> - <div class='testcase' + <div class="testcase" style="left: 110px; top: 210px; filter: drop-shadow(0px 5px 0px rgba(128, 0, 128, 0.8));"> </div> - <div class='testcase' + <div class="testcase" style="left: 210px; top: 210px; filter: drop-shadow(1px 10px 0px rgba(128, 0, 128, 0.4));"> </div>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.dropShadow.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.dropShadow.tentative.html index 22c6a65..712716d9 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.dropShadow.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.dropShadow.tentative.html
@@ -19,64 +19,64 @@ ctx.fillStyle = 'crimson'; // Parameter defaults. - ctx.filter = new CanvasFilter({filter: "dropShadow"}); + ctx.filter = new CanvasFilter({filter: 'dropShadow'}); ctx.fillRect(10, 10, 80, 80); // All parameters specified. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 5, - floodColor: "purple", floodOpacity: 0.7}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 5, + floodColor: 'purple', floodOpacity: 0.7}); ctx.fillRect(110, 10, 80, 80); // Named color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 10, dy: 10, stdDeviation: 3, - floodColor: "purple"}); + {filter: 'dropShadow', dx: 10, dy: 10, stdDeviation: 3, + floodColor: 'purple'}); ctx.fillRect(10, 110, 80, 80); // System color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "LinkText"}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'LinkText'}); ctx.fillRect(110, 110, 80, 80); // No blur. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 10, dy: 15, stdDeviation: 0, - floodColor: "purple"}); + {filter: 'dropShadow', dx: 10, dy: 15, stdDeviation: 0, + floodColor: 'purple'}); ctx.fillRect(210, 110, 80, 80); // Numerical color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 9, dy: 12, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 1)"}); + {filter: 'dropShadow', dx: 9, dy: 12, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 1)'}); ctx.fillRect(310, 110, 80, 80); // Transparent floodColor. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 0.7)"}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 0.7)'}); ctx.fillRect(410, 110, 80, 80); // Transparent floodColor and floodOpacity. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 0.7)", floodOpacity: 0.7}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 0.7)', floodOpacity: 0.7}); ctx.fillRect(510, 110, 80, 80); // Degenerate parameter values. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: [-5], dy: [], stdDeviation: null, - floodColor: "purple", floodOpacity: [2]}); + {filter: 'dropShadow', dx: [-5], dy: [], stdDeviation: null, + floodColor: 'purple', floodOpacity: [2]}); ctx.fillRect(10, 210, 80, 80); ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: null, dy: '5', stdDeviation: -5, - floodColor: "purple", floodOpacity: '0.8'}); + {filter: 'dropShadow', dx: null, dy: '5', stdDeviation: -5, + floodColor: 'purple', floodOpacity: '0.8'}); ctx.fillRect(110, 210, 80, 80); ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: true, dy: ['10'], stdDeviation: false, - floodColor: "purple", floodOpacity: ['0.4']}); + {filter: 'dropShadow', dx: true, dy: ['10'], stdDeviation: false, + floodColor: 'purple', floodOpacity: ['0.4']}); ctx.fillRect(210, 210, 80, 80); </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.tentative.html index 3a32eb6..a4625db0 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.tentative.html
@@ -22,11 +22,11 @@ _assert(ctx.filter == 'none', "ctx.filter == 'none'"); ctx.filter = 'blur(5px)'; _assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); -ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); +ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); _assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); ctx.filter = new CanvasFilter([ - {filter: "gaussianBlur", stdDeviation: 5}, - {filter: "gaussianBlur", stdDeviation: 10} + {filter: 'gaussianBlur', stdDeviation: 5}, + {filter: 'gaussianBlur', stdDeviation: 10} ]); _assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); var canvas2 = document.createElement('canvas'); @@ -37,8 +37,8 @@ _assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); ctx.filter = 'none'; _assert(ctx.filter == 'none', "ctx.filter == 'none'"); -ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); -ctx.filter = "this string is not a filter and should do nothing"; +ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); +ctx.filter = 'this string is not a filter and should do nothing'; _assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'");
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html index 1f9d978..64f909a 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html
@@ -27,7 +27,7 @@ {baseFrequency: Infinity}, {baseFrequency: undefined}, {baseFrequency: -Infinity}, - {baseFrequency: "test"}, + {baseFrequency: 'test'}, {numOctaves: {}}, {numOctaves: -1}, @@ -36,7 +36,7 @@ {numOctaves: undefined}, {numOctaves: -Infinity}, {numOctaves: [1, 1]}, - {numOctaves: "test"}, + {numOctaves: 'test'}, {seed: {}}, {seed: NaN}, @@ -44,7 +44,7 @@ {seed: undefined}, {seed: -Infinity}, {seed: [1, 1]}, - {seed: "test"}, + {seed: 'test'}, {stitchTiles: {}}, {stitchTiles: NaN}, @@ -52,14 +52,14 @@ {stitchTiles: undefined}, {stitchTiles: -Infinity}, {stitchTiles: [1, 1]}, - {stitchTiles: "test"}, + {stitchTiles: 'test'}, {stitchTiles: null}, {stitchTiles: []}, {stitchTiles: [10]}, {stitchTiles: 30}, {stitchTiles: false}, {stitchTiles: true}, - {stitchTiles: "10"}, + {stitchTiles: '10'}, {stitchTiles: -1}, {type: {}}, @@ -68,14 +68,14 @@ {type: undefined}, {type: -Infinity}, {type: [1, 1]}, - {type: "test"}, + {type: 'test'}, {type: null}, {type: []}, {type: [10]}, {type: 30}, {type: false}, {type: true}, - {type: "10"}, + {type: '10'}, {type: -1}, ] @@ -88,7 +88,7 @@ {baseFrequency: 30}, {baseFrequency: false}, {baseFrequency: true}, - {baseFrequency: "10"}, + {baseFrequency: '10'}, {numOctaves: null}, {numOctaves: []}, @@ -96,7 +96,7 @@ {numOctaves: 30}, {numOctaves: false}, {numOctaves: true}, - {numOctaves: "10"}, + {numOctaves: '10'}, {seed: null}, {seed: []}, @@ -104,23 +104,23 @@ {seed: 30}, {seed: false}, {seed: true}, - {seed: "10"}, + {seed: '10'}, {seed: -1}, - {stitchTiles: "stitch"}, - {stitchTiles: "noStitch"}, + {stitchTiles: 'stitch'}, + {stitchTiles: 'noStitch'}, - {type: "fractalNoise"}, - {type: "turbulence"}, + {type: 'fractalNoise'}, + {type: 'turbulence'}, ] for (testCase of errorTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; + const filterOptions = {...{filter: 'turbulence'}, ...testCase}; assert_throws_js(TypeError, function() { new CanvasFilter(filterOptions); }); } for (testCase of workingTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; + const filterOptions = {...{filter: 'turbulence'}, ...testCase}; _assert(new CanvasFilter(filterOptions) != null, "new CanvasFilter(filterOptions) != null"); }
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html index 6ce6fb63..f533278 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.html
@@ -21,12 +21,12 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur"}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: undefined}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: "foo"}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: [1,2]}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: NaN}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: {}}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur'}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: undefined}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 'foo'}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: [1,2]}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: NaN}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: {}}); }); })(canvas, ctx); t.done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.worker.js index a44868f5..61f10308 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.blur.exceptions.tentative.worker.js
@@ -16,12 +16,12 @@ var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur"}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: undefined}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: "foo"}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: [1,2]}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: NaN}); }); -assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: {}}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur'}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: undefined}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 'foo'}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: [1,2]}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: NaN}); }); +assert_throws_js(TypeError, function() { ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: {}}); }); t.done(); });
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html index 3eda417..f3dd3037 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.html
@@ -21,44 +21,44 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: undefined}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: "foo"}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: null}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, "a"]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); }); -ctx.fillStyle = "#f00"; -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: undefined}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: 'foo'}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: null}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 'a']}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); }); +ctx.fillStyle = '#f00'; +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 0}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 255,0,0,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 90}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 0,91,0,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 180}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 0,109,109,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 270}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 109,18,255,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'saturate', values: 0.5}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 155,27,27,255, 2); ctx.clearRect(0, 0, 100, 50); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'luminanceToAlpha'}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 0,0,0,54, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ +ctx.filter = new CanvasFilter({filter: 'colorMatrix', values: [ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ]}); ctx.fillRect(0, 0, 50, 25); -ctx.fillStyle = "#0f0"; +ctx.fillStyle = '#0f0'; ctx.fillRect(50, 0, 50, 25); -ctx.fillStyle = "#00f"; +ctx.fillStyle = '#00f'; ctx.fillRect(0, 25, 50, 25); -ctx.fillStyle = "#fff"; +ctx.fillStyle = '#fff'; ctx.fillRect(50, 25, 50, 25); _assertPixelApprox(canvas, 10,10, 0,255,0,255, 2); _assertPixelApprox(canvas, 60,10, 0,255,0,255, 2);
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.worker.js index 105f312..19d57b6 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.tentative.worker.js
@@ -16,44 +16,44 @@ var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: undefined}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: "foo"}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: null}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, "a"]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); }); -ctx.fillStyle = "#f00"; -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: undefined}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: 'foo'}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: null}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 'a']}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); }); +ctx.fillStyle = '#f00'; +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 0}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 255,0,0,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 90}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 0,91,0,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 180}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 0,109,109,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 270}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 109,18,255,255, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'saturate', values: 0.5}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 155,27,27,255, 2); ctx.clearRect(0, 0, 100, 50); -ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); +ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'luminanceToAlpha'}); ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 10,10, 0,0,0,54, 2); -ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ +ctx.filter = new CanvasFilter({filter: 'colorMatrix', values: [ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ]}); ctx.fillRect(0, 0, 50, 25); -ctx.fillStyle = "#0f0"; +ctx.fillStyle = '#0f0'; ctx.fillRect(50, 0, 50, 25); -ctx.fillStyle = "#00f"; +ctx.fillStyle = '#00f'; ctx.fillRect(0, 25, 50, 25); -ctx.fillStyle = "#fff"; +ctx.fillStyle = '#fff'; ctx.fillRect(50, 25, 50, 25); _assertPixelApprox(canvas, 10,10, 0,255,0,255, 2); _assertPixelApprox(canvas, 60,10, 0,255,0,255, 2);
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html index 7cb8b0d..dd6fc9ee 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.html
@@ -42,10 +42,10 @@ tableValuesR = [0, 0, 1, 1]; tableValuesG = [2, 0, 0.5, 3]; tableValuesB = [1, -1, 5, 0]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "discrete", tableValues: tableValuesR}, - funcG: {type: "discrete", tableValues: tableValuesG}, - funcB: {type: "discrete", tableValues: tableValuesB}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'discrete', tableValues: tableValuesR}, + funcG: {type: 'discrete', tableValues: tableValuesG}, + funcB: {type: 'discrete', tableValues: tableValuesB}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.worker.js index f1274f1..79a5cd247 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.tentative.worker.js
@@ -37,10 +37,10 @@ tableValuesR = [0, 0, 1, 1]; tableValuesG = [2, 0, 0.5, 3]; tableValuesB = [1, -1, 5, 0]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "discrete", tableValues: tableValuesR}, - funcG: {type: "discrete", tableValues: tableValuesG}, - funcB: {type: "discrete", tableValues: tableValuesB}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'discrete', tableValues: tableValuesR}, + funcG: {type: 'discrete', tableValues: tableValuesG}, + funcB: {type: 'discrete', tableValues: tableValuesB}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html index 388fdca6..f2a9fcfd 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.html
@@ -33,10 +33,10 @@ const amplitudes = [2, 1.1, 0.5]; const exponents = [5, 3, 1]; const offsets = [0.25, 0, 0.5]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "gamma", amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, - funcG: {type: "gamma", amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, - funcB: {type: "gamma", amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'gamma', amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, + funcG: {type: 'gamma', amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, + funcB: {type: 'gamma', amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.worker.js index 14bf50f..a36fa19a 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.gamma.tentative.worker.js
@@ -28,10 +28,10 @@ const amplitudes = [2, 1.1, 0.5]; const exponents = [5, 3, 1]; const offsets = [0.25, 0, 0.5]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "gamma", amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, - funcG: {type: "gamma", amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, - funcB: {type: "gamma", amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'gamma', amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, + funcG: {type: 'gamma', amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, + funcB: {type: 'gamma', amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html index 44eb718..33aae01e 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.html
@@ -21,10 +21,10 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "identity"}, - funcG: {type: "identity"}, - funcB: {type: "identity"}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'identity'}, + funcG: {type: 'identity'}, + funcB: {type: 'identity'}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.worker.js index ae74967..7236c70 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.tentative.worker.js
@@ -16,10 +16,10 @@ var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "identity"}, - funcG: {type: "identity"}, - funcB: {type: "identity"}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'identity'}, + funcG: {type: 'identity'}, + funcB: {type: 'identity'}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html index d24a9e8..23731a1 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.html
@@ -32,10 +32,10 @@ const slopes = [0.5, 1.2, -0.2]; const intercepts = [0.25, 0, 0.5]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "linear", slope: slopes[0], intercept: intercepts[0]}, - funcG: {type: "linear", slope: slopes[1], intercept: intercepts[1]}, - funcB: {type: "linear", slope: slopes[2], intercept: intercepts[2]}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'linear', slope: slopes[0], intercept: intercepts[0]}, + funcG: {type: 'linear', slope: slopes[1], intercept: intercepts[1]}, + funcB: {type: 'linear', slope: slopes[2], intercept: intercepts[2]}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.worker.js index 5117d4a..9a4499d4 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.linear.tentative.worker.js
@@ -27,10 +27,10 @@ const slopes = [0.5, 1.2, -0.2]; const intercepts = [0.25, 0, 0.5]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "linear", slope: slopes[0], intercept: intercepts[0]}, - funcG: {type: "linear", slope: slopes[1], intercept: intercepts[1]}, - funcB: {type: "linear", slope: slopes[2], intercept: intercepts[2]}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'linear', slope: slopes[0], intercept: intercepts[0]}, + funcG: {type: 'linear', slope: slopes[1], intercept: intercepts[1]}, + funcB: {type: 'linear', slope: slopes[2], intercept: intercepts[2]}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html index a704557..c11e6ad 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.html
@@ -42,10 +42,10 @@ tableValuesR = [0, 0, 1, 1]; tableValuesG = [2, 0, 0.5, 3]; tableValuesB = [1, -1, 5, 0]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "table", tableValues: tableValuesR}, - funcG: {type: "table", tableValues: tableValuesG}, - funcB: {type: "table", tableValues: tableValuesB}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'table', tableValues: tableValuesR}, + funcG: {type: 'table', tableValues: tableValuesG}, + funcB: {type: 'table', tableValues: tableValuesB}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.worker.js index e2463eb9..8ff791d 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.table.tentative.worker.js
@@ -37,10 +37,10 @@ tableValuesR = [0, 0, 1, 1]; tableValuesG = [2, 0, 0.5, 3]; tableValuesB = [1, -1, 5, 0]; -ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "table", tableValues: tableValuesR}, - funcG: {type: "table", tableValues: tableValuesG}, - funcB: {type: "table", tableValues: tableValuesB}, +ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'table', tableValues: tableValuesR}, + funcG: {type: 'table', tableValues: tableValuesG}, + funcB: {type: 'table', tableValues: tableValuesB}, }); const inputColors = [
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html index 0a6bddc..c4b6df8 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.html
@@ -21,23 +21,23 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix"}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", divisor: 2}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: null}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: 1}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, "a"], [0]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1, 2, 3, 4]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], []]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 2], []]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], [1, 2]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix'}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', divisor: 2}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: null}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: 1}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], [0]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 'a'], [0]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], 0]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], [0, Infinity]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: []}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [1]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [1, 2, 3, 4]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[], []]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 2], []]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[], [1, 2]]}); }); // This should not throw an error -ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]}); -ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1]]}); +ctx.filter = new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[]]}); +ctx.filter = new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1]]}); })(canvas, ctx); t.done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.js index bce4c0b..f7e616e 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative.worker.js
@@ -16,23 +16,23 @@ var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix"}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", divisor: 2}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: null}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: 1}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, "a"], [0]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1, 2, 3, 4]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], []]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 2], []]}); }); -assert_throws_js(TypeError, function() { new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], [1, 2]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix'}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', divisor: 2}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: null}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: 1}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], [0]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 'a'], [0]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], 0]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], [0, Infinity]]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: []}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [1]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [1, 2, 3, 4]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[], []]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 2], []]}); }); +assert_throws_js(TypeError, function() { new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[], [1, 2]]}); }); // This should not throw an error -ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]}); -ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1]]}); +ctx.filter = new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[]]}); +ctx.filter = new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1]]}); t.done(); });
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative-expected.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative-expected.html index 90f406fe..62226d7d 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative-expected.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative-expected.html
@@ -22,52 +22,52 @@ </style> <div style="position: relative"> - <div class='background' style="top: 0px;"></div> - <div class='background' style="top: 100px;"></div> - <div class='background' style="top: 200px;"></div> + <div class="background" style="top: 0px;"></div> + <div class="background" style="top: 100px;"></div> + <div class="background" style="top: 200px;"></div> - <div class='testcase' + <div class="testcase" style="left: 10px; top: 10px; filter: drop-shadow(2px 2px 2px black);"> </div> - <div class='testcase' + <div class="testcase" style="left: 110px; top: 10px; filter: drop-shadow(15px 10px 5px rgba(128, 0, 128, 0.7));"> </div> - <div class='testcase' + <div class="testcase" style="left: 10px; top: 110px; filter: drop-shadow(10px 10px 3px purple)"> </div> - <div class='testcase' + <div class="testcase" style="left: 110px; top: 110px; filter: drop-shadow(15px 10px 3px LinkText)"> </div> - <div class='testcase' + <div class="testcase" style="left: 210px; top: 110px; filter: drop-shadow(10px 15px 0px purple)"> </div> - <div class='testcase' + <div class="testcase" style="left: 310px; top: 110px; filter: drop-shadow(9px 12px 3px rgba(20, 50, 130, 1))"> </div> - <div class='testcase' + <div class="testcase" style="left: 410px; top: 110px; filter: drop-shadow(15px 10px 3px rgba(20, 50, 130, 0.7))"> </div> - <div class='testcase' + <div class="testcase" style="left: 510px; top: 110px; filter: drop-shadow(15px 10px 3px rgba(20, 50, 130, 0.49))"> </div> - <div class='testcase' + <div class="testcase" style="left: 10px; top: 210px; filter: drop-shadow(-5px 0px 0px purple);"> </div> - <div class='testcase' + <div class="testcase" style="left: 110px; top: 210px; filter: drop-shadow(0px 5px 0px rgba(128, 0, 128, 0.8));"> </div> - <div class='testcase' + <div class="testcase" style="left: 210px; top: 210px; filter: drop-shadow(1px 10px 0px rgba(128, 0, 128, 0.4));"> </div>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative.html index 04cf86d..0432652 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative.html
@@ -19,65 +19,65 @@ ctx.fillStyle = 'crimson'; // Parameter defaults. - ctx.filter = new CanvasFilter({filter: "dropShadow"}); + ctx.filter = new CanvasFilter({filter: 'dropShadow'}); ctx.fillRect(10, 10, 80, 80); // All parameters specified. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 5, - floodColor: "purple", floodOpacity: 0.7}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 5, + floodColor: 'purple', floodOpacity: 0.7}); ctx.fillRect(110, 10, 80, 80); // Named color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 10, dy: 10, stdDeviation: 3, - floodColor: "purple"}); + {filter: 'dropShadow', dx: 10, dy: 10, stdDeviation: 3, + floodColor: 'purple'}); ctx.fillRect(10, 110, 80, 80); // System color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "LinkText"}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'LinkText'}); ctx.fillRect(110, 110, 80, 80); // No blur. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 10, dy: 15, stdDeviation: 0, - floodColor: "purple"}); + {filter: 'dropShadow', dx: 10, dy: 15, stdDeviation: 0, + floodColor: 'purple'}); ctx.fillRect(210, 110, 80, 80); // Numerical color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 9, dy: 12, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 1)"}); + {filter: 'dropShadow', dx: 9, dy: 12, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 1)'}); ctx.fillRect(310, 110, 80, 80); // Transparent floodColor. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 0.7)"}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 0.7)'}); ctx.fillRect(410, 110, 80, 80); // Transparent floodColor and floodOpacity. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 0.7)", floodOpacity: 0.7}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 0.7)', floodOpacity: 0.7}); ctx.fillRect(510, 110, 80, 80); // Degenerate parameter values. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: [-5], dy: [], stdDeviation: null, - floodColor: "purple", floodOpacity: [2]}); + {filter: 'dropShadow', dx: [-5], dy: [], stdDeviation: null, + floodColor: 'purple', floodOpacity: [2]}); ctx.fillRect(10, 210, 80, 80); ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: null, dy: '5', stdDeviation: -5, - floodColor: "purple", floodOpacity: '0.8'}); + {filter: 'dropShadow', dx: null, dy: '5', stdDeviation: -5, + floodColor: 'purple', floodOpacity: '0.8'}); ctx.fillRect(110, 210, 80, 80); ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: true, dy: ['10'], stdDeviation: false, - floodColor: "purple", floodOpacity: ['0.4']}); + {filter: 'dropShadow', dx: true, dy: ['10'], stdDeviation: false, + floodColor: 'purple', floodOpacity: ['0.4']}); ctx.fillRect(210, 210, 80, 80); const canvas = document.getElementById("canvas");
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative.w.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative.w.html index 8d5e2da..de72f5f 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative.w.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.dropShadow.tentative.w.html
@@ -21,65 +21,65 @@ ctx.fillStyle = 'crimson'; // Parameter defaults. - ctx.filter = new CanvasFilter({filter: "dropShadow"}); + ctx.filter = new CanvasFilter({filter: 'dropShadow'}); ctx.fillRect(10, 10, 80, 80); // All parameters specified. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 5, - floodColor: "purple", floodOpacity: 0.7}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 5, + floodColor: 'purple', floodOpacity: 0.7}); ctx.fillRect(110, 10, 80, 80); // Named color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 10, dy: 10, stdDeviation: 3, - floodColor: "purple"}); + {filter: 'dropShadow', dx: 10, dy: 10, stdDeviation: 3, + floodColor: 'purple'}); ctx.fillRect(10, 110, 80, 80); // System color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "LinkText"}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'LinkText'}); ctx.fillRect(110, 110, 80, 80); // No blur. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 10, dy: 15, stdDeviation: 0, - floodColor: "purple"}); + {filter: 'dropShadow', dx: 10, dy: 15, stdDeviation: 0, + floodColor: 'purple'}); ctx.fillRect(210, 110, 80, 80); // Numerical color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 9, dy: 12, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 1)"}); + {filter: 'dropShadow', dx: 9, dy: 12, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 1)'}); ctx.fillRect(310, 110, 80, 80); // Transparent floodColor. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 0.7)"}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 0.7)'}); ctx.fillRect(410, 110, 80, 80); // Transparent floodColor and floodOpacity. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 0.7)", floodOpacity: 0.7}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 0.7)', floodOpacity: 0.7}); ctx.fillRect(510, 110, 80, 80); // Degenerate parameter values. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: [-5], dy: [], stdDeviation: null, - floodColor: "purple", floodOpacity: [2]}); + {filter: 'dropShadow', dx: [-5], dy: [], stdDeviation: null, + floodColor: 'purple', floodOpacity: [2]}); ctx.fillRect(10, 210, 80, 80); ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: null, dy: '5', stdDeviation: -5, - floodColor: "purple", floodOpacity: '0.8'}); + {filter: 'dropShadow', dx: null, dy: '5', stdDeviation: -5, + floodColor: 'purple', floodOpacity: '0.8'}); ctx.fillRect(110, 210, 80, 80); ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: true, dy: ['10'], stdDeviation: false, - floodColor: "purple", floodOpacity: ['0.4']}); + {filter: 'dropShadow', dx: true, dy: ['10'], stdDeviation: false, + floodColor: 'purple', floodOpacity: ['0.4']}); ctx.fillRect(210, 210, 80, 80); const bitmap = oc.transferToImageBitmap();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.html index 75d369ca..4d80dddf 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.html
@@ -24,11 +24,11 @@ _assert(ctx.filter == 'none', "ctx.filter == 'none'"); ctx.filter = 'blur(5px)'; _assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); -ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); +ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); _assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); ctx.filter = new CanvasFilter([ - {filter: "gaussianBlur", stdDeviation: 5}, - {filter: "gaussianBlur", stdDeviation: 10} + {filter: 'gaussianBlur', stdDeviation: 5}, + {filter: 'gaussianBlur', stdDeviation: 10} ]); _assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); var canvas2 = new OffscreenCanvas(100, 50); @@ -39,8 +39,8 @@ _assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); ctx.filter = 'none'; _assert(ctx.filter == 'none', "ctx.filter == 'none'"); -ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); -ctx.filter = "this string is not a filter and should do nothing"; +ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); +ctx.filter = 'this string is not a filter and should do nothing'; _assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); })(canvas, ctx); t.done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.worker.js index 30772a39..48c4a04 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.tentative.worker.js
@@ -19,11 +19,11 @@ _assert(ctx.filter == 'none', "ctx.filter == 'none'"); ctx.filter = 'blur(5px)'; _assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); -ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); +ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); _assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); ctx.filter = new CanvasFilter([ - {filter: "gaussianBlur", stdDeviation: 5}, - {filter: "gaussianBlur", stdDeviation: 10} + {filter: 'gaussianBlur', stdDeviation: 5}, + {filter: 'gaussianBlur', stdDeviation: 10} ]); _assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); var canvas2 = new OffscreenCanvas(100, 50); @@ -34,8 +34,8 @@ _assert(ctx.filter == 'blur(5px)', "ctx.filter == 'blur(5px)'"); ctx.filter = 'none'; _assert(ctx.filter == 'none', "ctx.filter == 'none'"); -ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); -ctx.filter = "this string is not a filter and should do nothing"; +ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); +ctx.filter = 'this string is not a filter and should do nothing'; _assert(ctx.filter.toString() == '[object CanvasFilter]', "ctx.filter.toString() == '[object CanvasFilter]'"); t.done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html index 610dca9..2ed61e6 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.html
@@ -29,7 +29,7 @@ {baseFrequency: Infinity}, {baseFrequency: undefined}, {baseFrequency: -Infinity}, - {baseFrequency: "test"}, + {baseFrequency: 'test'}, {numOctaves: {}}, {numOctaves: -1}, @@ -38,7 +38,7 @@ {numOctaves: undefined}, {numOctaves: -Infinity}, {numOctaves: [1, 1]}, - {numOctaves: "test"}, + {numOctaves: 'test'}, {seed: {}}, {seed: NaN}, @@ -46,7 +46,7 @@ {seed: undefined}, {seed: -Infinity}, {seed: [1, 1]}, - {seed: "test"}, + {seed: 'test'}, {stitchTiles: {}}, {stitchTiles: NaN}, @@ -54,14 +54,14 @@ {stitchTiles: undefined}, {stitchTiles: -Infinity}, {stitchTiles: [1, 1]}, - {stitchTiles: "test"}, + {stitchTiles: 'test'}, {stitchTiles: null}, {stitchTiles: []}, {stitchTiles: [10]}, {stitchTiles: 30}, {stitchTiles: false}, {stitchTiles: true}, - {stitchTiles: "10"}, + {stitchTiles: '10'}, {stitchTiles: -1}, {type: {}}, @@ -70,14 +70,14 @@ {type: undefined}, {type: -Infinity}, {type: [1, 1]}, - {type: "test"}, + {type: 'test'}, {type: null}, {type: []}, {type: [10]}, {type: 30}, {type: false}, {type: true}, - {type: "10"}, + {type: '10'}, {type: -1}, ] @@ -90,7 +90,7 @@ {baseFrequency: 30}, {baseFrequency: false}, {baseFrequency: true}, - {baseFrequency: "10"}, + {baseFrequency: '10'}, {numOctaves: null}, {numOctaves: []}, @@ -98,7 +98,7 @@ {numOctaves: 30}, {numOctaves: false}, {numOctaves: true}, - {numOctaves: "10"}, + {numOctaves: '10'}, {seed: null}, {seed: []}, @@ -106,23 +106,23 @@ {seed: 30}, {seed: false}, {seed: true}, - {seed: "10"}, + {seed: '10'}, {seed: -1}, - {stitchTiles: "stitch"}, - {stitchTiles: "noStitch"}, + {stitchTiles: 'stitch'}, + {stitchTiles: 'noStitch'}, - {type: "fractalNoise"}, - {type: "turbulence"}, + {type: 'fractalNoise'}, + {type: 'turbulence'}, ] for (testCase of errorTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; + const filterOptions = {...{filter: 'turbulence'}, ...testCase}; assert_throws_js(TypeError, function() { new CanvasFilter(filterOptions); }); } for (testCase of workingTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; + const filterOptions = {...{filter: 'turbulence'}, ...testCase}; _assert(new CanvasFilter(filterOptions) != null, "new CanvasFilter(filterOptions) != null"); } })(canvas, ctx);
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.worker.js index 76673fa..1bed65ad 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.worker.js +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.turbulence.inputTypes.tentative.worker.js
@@ -24,7 +24,7 @@ {baseFrequency: Infinity}, {baseFrequency: undefined}, {baseFrequency: -Infinity}, - {baseFrequency: "test"}, + {baseFrequency: 'test'}, {numOctaves: {}}, {numOctaves: -1}, @@ -33,7 +33,7 @@ {numOctaves: undefined}, {numOctaves: -Infinity}, {numOctaves: [1, 1]}, - {numOctaves: "test"}, + {numOctaves: 'test'}, {seed: {}}, {seed: NaN}, @@ -41,7 +41,7 @@ {seed: undefined}, {seed: -Infinity}, {seed: [1, 1]}, - {seed: "test"}, + {seed: 'test'}, {stitchTiles: {}}, {stitchTiles: NaN}, @@ -49,14 +49,14 @@ {stitchTiles: undefined}, {stitchTiles: -Infinity}, {stitchTiles: [1, 1]}, - {stitchTiles: "test"}, + {stitchTiles: 'test'}, {stitchTiles: null}, {stitchTiles: []}, {stitchTiles: [10]}, {stitchTiles: 30}, {stitchTiles: false}, {stitchTiles: true}, - {stitchTiles: "10"}, + {stitchTiles: '10'}, {stitchTiles: -1}, {type: {}}, @@ -65,14 +65,14 @@ {type: undefined}, {type: -Infinity}, {type: [1, 1]}, - {type: "test"}, + {type: 'test'}, {type: null}, {type: []}, {type: [10]}, {type: 30}, {type: false}, {type: true}, - {type: "10"}, + {type: '10'}, {type: -1}, ] @@ -85,7 +85,7 @@ {baseFrequency: 30}, {baseFrequency: false}, {baseFrequency: true}, - {baseFrequency: "10"}, + {baseFrequency: '10'}, {numOctaves: null}, {numOctaves: []}, @@ -93,7 +93,7 @@ {numOctaves: 30}, {numOctaves: false}, {numOctaves: true}, - {numOctaves: "10"}, + {numOctaves: '10'}, {seed: null}, {seed: []}, @@ -101,23 +101,23 @@ {seed: 30}, {seed: false}, {seed: true}, - {seed: "10"}, + {seed: '10'}, {seed: -1}, - {stitchTiles: "stitch"}, - {stitchTiles: "noStitch"}, + {stitchTiles: 'stitch'}, + {stitchTiles: 'noStitch'}, - {type: "fractalNoise"}, - {type: "turbulence"}, + {type: 'fractalNoise'}, + {type: 'turbulence'}, ] for (testCase of errorTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; + const filterOptions = {...{filter: 'turbulence'}, ...testCase}; assert_throws_js(TypeError, function() { new CanvasFilter(filterOptions); }); } for (testCase of workingTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; + const filterOptions = {...{filter: 'turbulence'}, ...testCase}; _assert(new CanvasFilter(filterOptions) != null, "new CanvasFilter(filterOptions) != null"); } t.done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml-new/filters.yaml b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml-new/filters.yaml index bdf3dcf..46171c1 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml-new/filters.yaml +++ b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml-new/filters.yaml
@@ -40,11 +40,11 @@ @assert ctx.filter == 'none'; ctx.filter = 'blur(5px)'; @assert ctx.filter == 'blur(5px)'; - ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); + ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); @assert ctx.filter.toString() == '[object CanvasFilter]'; ctx.filter = new CanvasFilter([ - {filter: "gaussianBlur", stdDeviation: 5}, - {filter: "gaussianBlur", stdDeviation: 10} + {filter: 'gaussianBlur', stdDeviation: 5}, + {filter: 'gaussianBlur', stdDeviation: 10} ]); @assert ctx.filter.toString() == '[object CanvasFilter]'; var canvas2 = document.createElement('canvas'); @@ -55,8 +55,8 @@ @assert ctx.filter == 'blur(5px)'; ctx.filter = 'none'; @assert ctx.filter == 'none'; - ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); - ctx.filter = "this string is not a filter and should do nothing"; + ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); + ctx.filter = 'this string is not a filter and should do nothing'; @assert ctx.filter.toString() == '[object CanvasFilter]'; - name: 2d.filter.canvasFilterObject.tentative @@ -66,11 +66,11 @@ @assert ctx.filter == 'none'; ctx.filter = 'blur(5px)'; @assert ctx.filter == 'blur(5px)'; - ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); + ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); @assert ctx.filter.toString() == '[object CanvasFilter]'; ctx.filter = new CanvasFilter([ - {filter: "gaussianBlur", stdDeviation: 5}, - {filter: "gaussianBlur", stdDeviation: 10} + {filter: 'gaussianBlur', stdDeviation: 5}, + {filter: 'gaussianBlur', stdDeviation: 10} ]); @assert ctx.filter.toString() == '[object CanvasFilter]'; var canvas2 = new OffscreenCanvas(100, 50); @@ -81,61 +81,61 @@ @assert ctx.filter == 'blur(5px)'; ctx.filter = 'none'; @assert ctx.filter == 'none'; - ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: 5}); - ctx.filter = "this string is not a filter and should do nothing"; + ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 5}); + ctx.filter = 'this string is not a filter and should do nothing'; @assert ctx.filter.toString() == '[object CanvasFilter]'; - name: 2d.filter.canvasFilterObject.blur.exceptions.tentative desc: Test exceptions on CanvasFilter() blur.object code: | - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur"}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: undefined}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: "foo"}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: [1,2]}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: NaN}); - @assert throws TypeError ctx.filter = new CanvasFilter({filter: "gaussianBlur", stdDeviation: {}}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: 'gaussianBlur'}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: undefined}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: 'foo'}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: [1,2]}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: NaN}); + @assert throws TypeError ctx.filter = new CanvasFilter({filter: 'gaussianBlur', stdDeviation: {}}); - name: 2d.filter.canvasFilterObject.colorMatrix.tentative desc: Test the functionality of ColorMatrix filters in CanvasFilter objects code: | - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: undefined}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: "foo"}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: null}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3]}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, "a"]}); - @assert throws TypeError new CanvasFilter({filter: "colorMatrix", values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); - ctx.fillStyle = "#f00"; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); + @assert throws TypeError new CanvasFilter({filter: 'colorMatrix', values: undefined}); + @assert throws TypeError new CanvasFilter({filter: 'colorMatrix', values: 'foo'}); + @assert throws TypeError new CanvasFilter({filter: 'colorMatrix', values: null}); + @assert throws TypeError new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3]}); + @assert throws TypeError new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 'a']}); + @assert throws TypeError new CanvasFilter({filter: 'colorMatrix', values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, Infinity]}); + ctx.fillStyle = '#f00'; + ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 0}); ctx.fillRect(0, 0, 100, 50); @assert pixel 10,10 ==~ 255,0,0,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); + ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 90}); ctx.fillRect(0, 0, 100, 50); @assert pixel 10,10 ==~ 0,91,0,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); + ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 180}); ctx.fillRect(0, 0, 100, 50); @assert pixel 10,10 ==~ 0,109,109,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); + ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'hueRotate', values: 270}); ctx.fillRect(0, 0, 100, 50); @assert pixel 10,10 ==~ 109,18,255,255; - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); + ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'saturate', values: 0.5}); ctx.fillRect(0, 0, 100, 50); @assert pixel 10,10 ==~ 155,27,27,255; ctx.clearRect(0, 0, 100, 50); - ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); + ctx.filter = new CanvasFilter({filter: 'colorMatrix', type: 'luminanceToAlpha'}); ctx.fillRect(0, 0, 100, 50); @assert pixel 10,10 ==~ 0,0,0,54; - ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ + ctx.filter = new CanvasFilter({filter: 'colorMatrix', values: [ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ]}); ctx.fillRect(0, 0, 50, 25); - ctx.fillStyle = "#0f0"; + ctx.fillStyle = '#0f0'; ctx.fillRect(50, 0, 50, 25); - ctx.fillStyle = "#00f"; + ctx.fillStyle = '#00f'; ctx.fillRect(0, 25, 50, 25); - ctx.fillStyle = "#fff"; + ctx.fillStyle = '#fff'; ctx.fillRect(50, 25, 50, 25); @assert pixel 10,10 ==~ 0,255,0,255; @assert pixel 60,10 ==~ 0,255,0,255; @@ -145,23 +145,23 @@ - name: 2d.filter.canvasFilterObject.convolveMatrix.exceptions.tentative desc: Test exceptions on CanvasFilter() convolveMatrix code: | - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix"}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", divisor: 2}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: null}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: 1}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0]]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, "a"], [0]]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], 0]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 0], [0, Infinity]]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: []}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [1, 2, 3, 4]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], []]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1, 2], []]}); - @assert throws TypeError new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[], [1, 2]]}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix'}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', divisor: 2}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: null}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: 1}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], [0]]}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 'a'], [0]]}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], 0]}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 0], [0, Infinity]]}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: []}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [1]}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [1, 2, 3, 4]}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[], []]}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1, 2], []]}); + @assert throws TypeError new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[], [1, 2]]}); // This should not throw an error - ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[]]}); - ctx.filter = new CanvasFilter({filter: "convolveMatrix", kernelMatrix: [[1]]}); + ctx.filter = new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[]]}); + ctx.filter = new CanvasFilter({filter: 'convolveMatrix', kernelMatrix: [[1]]}); - name: 2d.filter.canvasFilterObject.componentTransfer.linear.tentative desc: Test pixels on CanvasFilter() componentTransfer with linear type @@ -177,10 +177,10 @@ const slopes = [0.5, 1.2, -0.2]; const intercepts = [0.25, 0, 0.5]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "linear", slope: slopes[0], intercept: intercepts[0]}, - funcG: {type: "linear", slope: slopes[1], intercept: intercepts[1]}, - funcB: {type: "linear", slope: slopes[2], intercept: intercepts[2]}, + ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'linear', slope: slopes[0], intercept: intercepts[0]}, + funcG: {type: 'linear', slope: slopes[1], intercept: intercepts[1]}, + funcB: {type: 'linear', slope: slopes[2], intercept: intercepts[2]}, }); const inputColors = [ @@ -201,10 +201,10 @@ - name: 2d.filter.canvasFilterObject.componentTransfer.identity.tentative desc: Test pixels on CanvasFilter() componentTransfer with identity type code: | - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "identity"}, - funcG: {type: "identity"}, - funcB: {type: "identity"}, + ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'identity'}, + funcG: {type: 'identity'}, + funcB: {type: 'identity'}, }); const inputColors = [ @@ -236,10 +236,10 @@ const amplitudes = [2, 1.1, 0.5]; const exponents = [5, 3, 1]; const offsets = [0.25, 0, 0.5]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "gamma", amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, - funcG: {type: "gamma", amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, - funcB: {type: "gamma", amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, + ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'gamma', amplitude: amplitudes[0], exponent: exponents[0], offset: offsets[0]}, + funcG: {type: 'gamma', amplitude: amplitudes[1], exponent: exponents[1], offset: offsets[1]}, + funcB: {type: 'gamma', amplitude: amplitudes[2], exponent: exponents[2], offset: offsets[2]}, }); const inputColors = [ @@ -281,10 +281,10 @@ tableValuesR = [0, 0, 1, 1]; tableValuesG = [2, 0, 0.5, 3]; tableValuesB = [1, -1, 5, 0]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "table", tableValues: tableValuesR}, - funcG: {type: "table", tableValues: tableValuesG}, - funcB: {type: "table", tableValues: tableValuesB}, + ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'table', tableValues: tableValuesR}, + funcG: {type: 'table', tableValues: tableValuesG}, + funcB: {type: 'table', tableValues: tableValuesB}, }); const inputColors = [ @@ -326,10 +326,10 @@ tableValuesR = [0, 0, 1, 1]; tableValuesG = [2, 0, 0.5, 3]; tableValuesB = [1, -1, 5, 0]; - ctx.filter = new CanvasFilter({filter: "componentTransfer", - funcR: {type: "discrete", tableValues: tableValuesR}, - funcG: {type: "discrete", tableValues: tableValuesG}, - funcB: {type: "discrete", tableValues: tableValuesB}, + ctx.filter = new CanvasFilter({filter: 'componentTransfer', + funcR: {type: 'discrete', tableValues: tableValuesR}, + funcG: {type: 'discrete', tableValues: tableValuesG}, + funcB: {type: 'discrete', tableValues: tableValuesB}, }); const inputColors = [ @@ -359,65 +359,65 @@ ctx.fillStyle = 'crimson'; // Parameter defaults. - ctx.filter = new CanvasFilter({filter: "dropShadow"}); + ctx.filter = new CanvasFilter({filter: 'dropShadow'}); ctx.fillRect(10, 10, 80, 80); // All parameters specified. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 5, - floodColor: "purple", floodOpacity: 0.7}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 5, + floodColor: 'purple', floodOpacity: 0.7}); ctx.fillRect(110, 10, 80, 80); // Named color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 10, dy: 10, stdDeviation: 3, - floodColor: "purple"}); + {filter: 'dropShadow', dx: 10, dy: 10, stdDeviation: 3, + floodColor: 'purple'}); ctx.fillRect(10, 110, 80, 80); // System color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "LinkText"}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'LinkText'}); ctx.fillRect(110, 110, 80, 80); // No blur. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 10, dy: 15, stdDeviation: 0, - floodColor: "purple"}); + {filter: 'dropShadow', dx: 10, dy: 15, stdDeviation: 0, + floodColor: 'purple'}); ctx.fillRect(210, 110, 80, 80); // Numerical color. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 9, dy: 12, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 1)"}); + {filter: 'dropShadow', dx: 9, dy: 12, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 1)'}); ctx.fillRect(310, 110, 80, 80); // Transparent floodColor. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 0.7)"}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 0.7)'}); ctx.fillRect(410, 110, 80, 80); // Transparent floodColor and floodOpacity. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: 15, dy: 10, stdDeviation: 3, - floodColor: "rgba(20, 50, 130, 0.7)", floodOpacity: 0.7}); + {filter: 'dropShadow', dx: 15, dy: 10, stdDeviation: 3, + floodColor: 'rgba(20, 50, 130, 0.7)', floodOpacity: 0.7}); ctx.fillRect(510, 110, 80, 80); // Degenerate parameter values. ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: [-5], dy: [], stdDeviation: null, - floodColor: "purple", floodOpacity: [2]}); + {filter: 'dropShadow', dx: [-5], dy: [], stdDeviation: null, + floodColor: 'purple', floodOpacity: [2]}); ctx.fillRect(10, 210, 80, 80); ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: null, dy: '5', stdDeviation: -5, - floodColor: "purple", floodOpacity: '0.8'}); + {filter: 'dropShadow', dx: null, dy: '5', stdDeviation: -5, + floodColor: 'purple', floodOpacity: '0.8'}); ctx.fillRect(110, 210, 80, 80); ctx.filter = new CanvasFilter( - {filter: "dropShadow", dx: true, dy: ['10'], stdDeviation: false, - floodColor: "purple", floodOpacity: ['0.4']}); + {filter: 'dropShadow', dx: true, dy: ['10'], stdDeviation: false, + floodColor: 'purple', floodOpacity: ['0.4']}); ctx.fillRect(210, 210, 80, 80); html_reference: | <style> @@ -438,52 +438,52 @@ </style> <div style="position: relative"> - <div class='background' style="top: 0px;"></div> - <div class='background' style="top: 100px;"></div> - <div class='background' style="top: 200px;"></div> + <div class="background" style="top: 0px;"></div> + <div class="background" style="top: 100px;"></div> + <div class="background" style="top: 200px;"></div> - <div class='testcase' + <div class="testcase" style="left: 10px; top: 10px; filter: drop-shadow(2px 2px 2px black);"> </div> - <div class='testcase' + <div class="testcase" style="left: 110px; top: 10px; filter: drop-shadow(15px 10px 5px rgba(128, 0, 128, 0.7));"> </div> - <div class='testcase' + <div class="testcase" style="left: 10px; top: 110px; filter: drop-shadow(10px 10px 3px purple)"> </div> - <div class='testcase' + <div class="testcase" style="left: 110px; top: 110px; filter: drop-shadow(15px 10px 3px LinkText)"> </div> - <div class='testcase' + <div class="testcase" style="left: 210px; top: 110px; filter: drop-shadow(10px 15px 0px purple)"> </div> - <div class='testcase' + <div class="testcase" style="left: 310px; top: 110px; filter: drop-shadow(9px 12px 3px rgba(20, 50, 130, 1))"> </div> - <div class='testcase' + <div class="testcase" style="left: 410px; top: 110px; filter: drop-shadow(15px 10px 3px rgba(20, 50, 130, 0.7))"> </div> - <div class='testcase' + <div class="testcase" style="left: 510px; top: 110px; filter: drop-shadow(15px 10px 3px rgba(20, 50, 130, 0.49))"> </div> - <div class='testcase' + <div class="testcase" style="left: 10px; top: 210px; filter: drop-shadow(-5px 0px 0px purple);"> </div> - <div class='testcase' + <div class="testcase" style="left: 110px; top: 210px; filter: drop-shadow(0px 5px 0px rgba(128, 0, 128, 0.8));"> </div> - <div class='testcase' + <div class="testcase" style="left: 210px; top: 210px; filter: drop-shadow(1px 10px 0px rgba(128, 0, 128, 0.4));"> </div> @@ -521,7 +521,7 @@ {baseFrequency: Infinity}, {baseFrequency: undefined}, {baseFrequency: -Infinity}, - {baseFrequency: "test"}, + {baseFrequency: 'test'}, {numOctaves: {}}, {numOctaves: -1}, @@ -530,7 +530,7 @@ {numOctaves: undefined}, {numOctaves: -Infinity}, {numOctaves: [1, 1]}, - {numOctaves: "test"}, + {numOctaves: 'test'}, {seed: {}}, {seed: NaN}, @@ -538,7 +538,7 @@ {seed: undefined}, {seed: -Infinity}, {seed: [1, 1]}, - {seed: "test"}, + {seed: 'test'}, {stitchTiles: {}}, {stitchTiles: NaN}, @@ -546,14 +546,14 @@ {stitchTiles: undefined}, {stitchTiles: -Infinity}, {stitchTiles: [1, 1]}, - {stitchTiles: "test"}, + {stitchTiles: 'test'}, {stitchTiles: null}, {stitchTiles: []}, {stitchTiles: [10]}, {stitchTiles: 30}, {stitchTiles: false}, {stitchTiles: true}, - {stitchTiles: "10"}, + {stitchTiles: '10'}, {stitchTiles: -1}, {type: {}}, @@ -562,14 +562,14 @@ {type: undefined}, {type: -Infinity}, {type: [1, 1]}, - {type: "test"}, + {type: 'test'}, {type: null}, {type: []}, {type: [10]}, {type: 30}, {type: false}, {type: true}, - {type: "10"}, + {type: '10'}, {type: -1}, ] @@ -582,7 +582,7 @@ {baseFrequency: 30}, {baseFrequency: false}, {baseFrequency: true}, - {baseFrequency: "10"}, + {baseFrequency: '10'}, {numOctaves: null}, {numOctaves: []}, @@ -590,7 +590,7 @@ {numOctaves: 30}, {numOctaves: false}, {numOctaves: true}, - {numOctaves: "10"}, + {numOctaves: '10'}, {seed: null}, {seed: []}, @@ -598,22 +598,22 @@ {seed: 30}, {seed: false}, {seed: true}, - {seed: "10"}, + {seed: '10'}, {seed: -1}, - {stitchTiles: "stitch"}, - {stitchTiles: "noStitch"}, + {stitchTiles: 'stitch'}, + {stitchTiles: 'noStitch'}, - {type: "fractalNoise"}, - {type: "turbulence"}, + {type: 'fractalNoise'}, + {type: 'turbulence'}, ] for (testCase of errorTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; + const filterOptions = {...{filter: 'turbulence'}, ...testCase}; @assert throws TypeError new CanvasFilter(filterOptions); } for (testCase of workingTestCases) { - const filterOptions = {...{filter: "turbulence"}, ...testCase}; + const filterOptions = {...{filter: 'turbulence'}, ...testCase}; @assert new CanvasFilter(filterOptions) != null; }
diff --git a/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html b/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html index b6dc7da..79eba02 100644 --- a/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html +++ b/third_party/blink/web_tests/external/wpt/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html
@@ -16,61 +16,88 @@ await pc1.setRemoteDescription(pc2.localDescription); } -test(function(t) { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - const transceiver = pc.addTransceiver('video'); - const capabilities = transceiver.getHeaderExtensionsToNegotiate(); - let capability = capabilities.find((capability) => { - return capability.uri == "urn:ietf:params:rtp-hdrext:sdes:mid" && - capability.direction != "stopped"; - }); - assert_not_equals(capability, undefined); -}, `the video transceiver.getHeaderExtensionsToNegotiate() includes mandatory extensions`); +['audio', 'video'].forEach(kind => { + test(t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const transceiver = pc.addTransceiver(kind); + const capabilities = transceiver.getHeaderExtensionsToNegotiate(); + const capability = capabilities.find((capability) => { + return capability.uri === 'urn:ietf:params:rtp-hdrext:sdes:mid'; + }); + assert_not_equals(capability, undefined); + assert_equals(capability.direction, 'sendrecv'); + }, `the ${kind} transceiver.getHeaderExtensionsToNegotiate() includes mandatory extensions`); +}); -test(function(t) { +test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); const transceiver = pc.addTransceiver('audio'); const capabilities = transceiver.getHeaderExtensionsToNegotiate(); - let capability = capabilities.find((capability) => { - return capability.uri == "urn:ietf:params:rtp-hdrext:sdes:mid" && - capability.direction != "stopped"; - }); - assert_not_equals(capability, undefined); -}, `the audio transceiver.getHeaderExtensionsToNegotiate() includes mandatory extensions`); - -test(function(t) { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - const transceiver = pc.addTransceiver('audio'); - const capabilities = transceiver.getHeaderExtensionsToNegotiate(); - capabilities[0].uri = ""; + capabilities[0].uri = ''; assert_throws_js(TypeError, () => { transceiver.setHeaderExtensionsToNegotiate(capabilities); }, 'transceiver should throw TypeError when setting an empty URI'); }, `setHeaderExtensionsToNegotiate throws TypeError on encountering missing URI`); -test(function(t) { +test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); const transceiver = pc.addTransceiver('audio'); const capabilities = transceiver.getHeaderExtensionsToNegotiate(); - capabilities[0].uri = "4711"; + capabilities[0].direction = ''; + assert_throws_js(TypeError, () => { + transceiver.setHeaderExtensionsToNegotiate(capabilities); + }, 'transceiver should throw TypeError when setting an empty direction'); +}, `setHeaderExtensionsToNegotiate throws TypeError on encountering missing direction`); + +test(t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const transceiver = pc.addTransceiver('audio'); + const capabilities = transceiver.getHeaderExtensionsToNegotiate(); + capabilities[0].uri = '4711'; assert_throws_dom('InvalidModificationError', () => { transceiver.setHeaderExtensionsToNegotiate(capabilities); }, 'transceiver should throw InvalidModificationError when setting an unknown URI'); }, `setHeaderExtensionsToNegotiate throws InvalidModificationError on encountering unknown URI`); -test(function(t) { +test(t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const transceiver = pc.addTransceiver('video'); + const capabilities = transceiver.getHeaderExtensionsToNegotiate().filter(capability => { + return capability.uri === 'urn:ietf:params:rtp-hdrext:sdes:mid'; + }); + assert_throws_dom('InvalidModificationError', () => { + transceiver.setHeaderExtensionsToNegotiate(capabilities); + }, 'transceiver should throw InvalidModificationError when removing elements from the list'); +}, `setHeaderExtensionsToNegotiate throws InvalidModificationError when removing elements from the list`); + +test(t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const transceiver = pc.addTransceiver('video'); + const capabilities = transceiver.getHeaderExtensionsToNegotiate(); + capabilities.push({ + uri: '4711', + direction: 'recvonly', + }); + assert_throws_dom('InvalidModificationError', () => { + transceiver.setHeaderExtensionsToNegotiate(capabilities); + }, 'transceiver should throw InvalidModificationError when adding elements to the list'); +}, `setHeaderExtensionsToNegotiate throws InvalidModificationError when adding elements to the list`); + +test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); const transceiver = pc.addTransceiver('audio'); const capabilities = transceiver.getHeaderExtensionsToNegotiate(); let capability = capabilities.find((capability) => { - return capability.uri == "urn:ietf:params:rtp-hdrext:sdes:mid"; + return capability.uri === 'urn:ietf:params:rtp-hdrext:sdes:mid'; }); - ["sendonly", "recvonly", "inactive", "stopped"].map(direction => { + ['sendonly', 'recvonly', 'inactive', 'stopped'].map(direction => { capability.direction = direction; assert_throws_dom('InvalidModificationError', () => { transceiver.setHeaderExtensionsToNegotiate(capabilities); @@ -78,23 +105,23 @@ }); }, `setHeaderExtensionsToNegotiate throws InvalidModificationError when setting a mandatory header extension\'s direction to something else than "sendrecv"`); -test(function(t) { +test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); const transceiver = pc.addTransceiver('audio'); let capabilities = transceiver.getHeaderExtensionsToNegotiate(); let selected_capability = capabilities.find((capability) => { - return capability.direction == "sendrecv" && - capability.uri != "urn:ietf:params:rtp-hdrext:sdes:mid"; + return capability.direction === 'sendrecv' && + capability.uri !== 'urn:ietf:params:rtp-hdrext:sdes:mid'; }); - selected_capability.direction = "stopped"; - const offered_capabilities = transceiver.getHeaderExtensionsToNegotiate; + selected_capability.direction = 'stopped'; + const offered_capabilities = transceiver.getHeaderExtensionsToNegotiate(); let altered_capability = capabilities.find((capability) => { - return capability.uri == selected_capability.uri && - capability.direction == "stopped"; + return capability.uri === selected_capability.uri && + capability.direction === 'stopped'; }); assert_not_equals(altered_capability, undefined); -}, `modified direction set by setHeaderExtensionsToNegotiate is visible in headerExtensionsOffered`); +}, `modified direction set by setHeaderExtensionsToNegotiate is visible in subsequent getHeaderExtensionsToNegotiate`); promise_test(async t => { const pc = new RTCPeerConnection(); @@ -102,19 +129,16 @@ const transceiver = pc.addTransceiver('video'); const capabilities = transceiver.getHeaderExtensionsToNegotiate(); const offer = await pc.createOffer(); - const extmaps = offer - .sdp - .split("\n") - .filter(line => { return line.includes("a=extmap:"); }) - .join("\n"); + const extensions = SDPUtils.matchPrefix(SDPUtils.splitSections(offer.sdp)[1], 'a=extmap:') + .map(line => SDPUtils.parseExtmap(line)); for (const capability of capabilities) { - if (capability.direction == "stopped") { - assert_false(extmaps.includes(capability.uri)); + if (capability.direction === 'stopped') { + assert_equals(undefined, extensions.find(e => e.uri === capability.uri)); } else { - assert_true(extmaps.includes(capability.uri)); + assert_not_equals(undefined, extensions.find(e => e.uri === capability.uri)); } } -}, `unstopped extensions turn up in offer`); +}, `Unstopped extensions turn up in offer`); promise_test(async t => { const pc = new RTCPeerConnection(); @@ -122,25 +146,22 @@ const transceiver = pc.addTransceiver('video'); const capabilities = transceiver.getHeaderExtensionsToNegotiate(); const selected_capability = capabilities.find((capability) => { - return capability.direction == "sendrecv" && - capability.uri != "urn:ietf:params:rtp-hdrext:sdes:mid"; + return capability.direction === 'sendrecv' && + capability.uri !== 'urn:ietf:params:rtp-hdrext:sdes:mid'; }); - selected_capability.direction = "stopped"; + selected_capability.direction = 'stopped'; transceiver.setHeaderExtensionsToNegotiate(capabilities); const offer = await pc.createOffer(); - const extmaps = offer - .sdp - .split("\n") - .filter(line => { return line.includes("a=extmap:"); }) - .join("\n"); + const extensions = SDPUtils.matchPrefix(SDPUtils.splitSections(offer.sdp)[1], 'a=extmap:') + .map(line => SDPUtils.parseExtmap(line)); for (const capability of capabilities) { - if (capability.direction == "stopped") { - assert_false(extmaps.includes(capability.uri)); + if (capability.direction === 'stopped') { + assert_equals(undefined, extensions.find(e => e.uri === capability.uri)); } else { - assert_true(extmaps.includes(capability.uri)); + assert_not_equals(undefined, extensions.find(e => e.uri === capability.uri)); } } -}, `stopped extensions do not turn up in offers`); +}, `Stopped extensions do not turn up in offers`); promise_test(async t => { const pc1 = new RTCPeerConnection(); @@ -152,60 +173,49 @@ const transceiver = pc1.addTransceiver('video'); const capabilities = transceiver.getHeaderExtensionsToNegotiate(); const selected_capability = capabilities.find((capability) => { - return capability.direction == "sendrecv" && - capability.uri != "urn:ietf:params:rtp-hdrext:sdes:mid"; + return capability.direction === 'sendrecv' && + capability.uri !== 'urn:ietf:params:rtp-hdrext:sdes:mid'; }); - selected_capability.direction = "stopped"; + selected_capability.direction = 'stopped'; + transceiver.setHeaderExtensionsToNegotiate(capabilities); + + await negotiate(pc1, pc2); + const negotiated_capabilites = transceiver.getNegotiatedHeaderExtensions(); + + assert_equals(capabilities.length, negotiated_capabilites.length); +}, `The set of negotiated extensions has the same size as the set of extensions to negotiate`); + +promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + + // Disable a non-mandatory extension before first negotiation. + const transceiver = pc1.addTransceiver('video'); + const capabilities = transceiver.getHeaderExtensionsToNegotiate(); + const selected_capability = capabilities.find((capability) => { + return capability.direction === 'sendrecv' && + capability.uri !== 'urn:ietf:params:rtp-hdrext:sdes:mid'; + }); + selected_capability.direction = 'stopped'; transceiver.setHeaderExtensionsToNegotiate(capabilities); await negotiate(pc1, pc2); const negotiated_capabilites = transceiver.getNegotiatedHeaderExtensions(); // Attempt enabling the extension. - selected_capability.direction = "sendrecv"; + selected_capability.direction = 'sendrecv'; // The enabled extension should not be part of the negotiated set. transceiver.setHeaderExtensionsToNegotiate(capabilities); await negotiate(pc1, pc2); assert_not_equals( transceiver.getNegotiatedHeaderExtensions().find(capability => { - return capability.uri == selected_capability.uri && - capability.direction == "sendrecv"; + return capability.uri === selected_capability.uri && + capability.direction === 'sendrecv'; }), undefined); -}, `the set of negotiated extensions grows with subsequent offers`); - -promise_test(async t => { - const pc1 = new RTCPeerConnection(); - t.add_cleanup(() => pc1.close()); - const pc2 = new RTCPeerConnection(); - t.add_cleanup(() => pc2.close()); - - // Disable a non-mandatory extension before first negotiation. - const transceiver = pc1.addTransceiver('video'); - const capabilities = transceiver.getHeaderExtensionsToNegotiate(); - const selected_capability = capabilities.find((capability) => { - return capability.direction == "sendrecv" && - capability.uri != "urn:ietf:params:rtp-hdrext:sdes:mid"; - }); - selected_capability.direction = "stopped"; - transceiver.setHeaderExtensionsToNegotiate(capabilities); - - await negotiate(pc1, pc2); - const negotiated_capabilites = transceiver.getNegotiatedHeaderExtensions(); - - for (const capability of negotiated_capabilites) { - assert_not_equals(capabilities.find((cap) => { - return cap.uri == capability.uri && cap.direction != "stopped"; - }), undefined); - } - for (const capability of capabilities) { - if (capability.direction != "stopped") { - assert_not_equals(negotiated_capabilites.find((cap) => { - return cap.uri == capability.uri; - }), undefined); - } - } -}, `the set of negotiated extensions is the set of unstopped extensions`); +}, `Header extensions can be reactivated in subsequent offers`); promise_test(async t => { const pc = new RTCPeerConnection(); @@ -235,6 +245,51 @@ assert_equals(extensions.length, 2); assert_false(!!extensions[0].find(extension => extension.uri === extensionUri)); assert_true(!!extensions[1].find(extension => extension.uri === extensionUri)); -}, 'Extensions can be deactivated on a per-mline basis'); +}, 'Header extensions can be deactivated on a per-mline basis'); + +promise_test(async t => { + const pc1 = new RTCPeerConnection(); + t.add_cleanup(() => pc1.close()); + const pc2 = new RTCPeerConnection(); + t.add_cleanup(() => pc2.close()); + + const t1 = pc1.addTransceiver('video'); + + await pc1.setLocalDescription(); + await pc2.setRemoteDescription(pc1.localDescription); + // Get the transceiver after it is created by SRD. + const t2 = pc2.getTransceivers()[0]; + const t2_capabilities = t2.getHeaderExtensionsToNegotiate(); + const t2_capability_to_stop = t2_capabilities + .find(capability => capability.uri !== 'urn:ietf:params:rtp-hdrext:sdes:mid'); + assert_not_equals(undefined, t2_capability_to_stop); + t2_capability_to_stop.direction = 'stopped'; + t2.setHeaderExtensionsToNegotiate(t2_capabilities); + + await pc2.setLocalDescription(); + await pc1.setRemoteDescription(pc2.localDescription); + + const t1_negotiated = t1.getNegotiatedHeaderExtensions() + .find(extension => extension.uri === t2_capability_to_stop.uri); + assert_not_equals(undefined, t1_negotiated); + assert_equals(t1_negotiated.direction, 'stopped'); + const t1_capability = t1.getHeaderExtensionsToNegotiate() + .find(extension => extension.uri === t2_capability_to_stop.uri); + assert_not_equals(undefined, t1_capability); + assert_equals(t1_capability.direction, 'sendrecv'); +}, 'Extensions not negotiated by the peer are `stopped` in getNegotiatedHeaderExtensions'); + +promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + + const transceiver = pc.addTransceiver('video'); + const negotiated_capabilites = transceiver.getNegotiatedHeaderExtensions(); + assert_equals(negotiated_capabilites.length, + transceiver.getHeaderExtensionsToNegotiate().length); + for (const capability of negotiated_capabilites) { + assert_equals(capability.direction, 'stopped'); + } +}, 'Prior to negotiation, getNegotiatedHeaderExtensions() returns `stopped` for all extensions.'); </script>
diff --git a/third_party/blink/web_tests/http/tests/misc/performance-entry-serializer-expected.txt b/third_party/blink/web_tests/http/tests/misc/performance-entry-serializer-expected.txt deleted file mode 100644 index 628435d7..0000000 --- a/third_party/blink/web_tests/http/tests/misc/performance-entry-serializer-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL PerformanceEntry subclasses should serialize all attributes assert_equals: PerformanceNavigationTiming.source expected (object) object "[object Window]" but got (undefined) undefined -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/http/tests/misc/performance-entry-serializer.html b/third_party/blink/web_tests/http/tests/misc/performance-entry-serializer.html index 9cbb1d8..8592dff5 100644 --- a/third_party/blink/web_tests/http/tests/misc/performance-entry-serializer.html +++ b/third_party/blink/web_tests/http/tests/misc/performance-entry-serializer.html
@@ -13,7 +13,11 @@ var entry = entries[i]; var serialized = JSON.parse(JSON.stringify(entry)); for (var attr in entry) { - if (typeof entry[attr] != 'function') { + if (typeof entry[attr] != 'function' && + // - PerformanceEntry.source is a Window object which is not + // serializable. + // - Performance{Mark|Measure}.detail may be a live object + !(entry[attr] instanceof Window) && attr !== 'detail') { var assertMethod = assert_equals if (Array.isArray(serialized[attr]) && Array.isArray(entry[attr])) { assertMethod = assert_array_equals
diff --git a/third_party/blink/web_tests/wpt_internal/attribution-reporting/request-format.sub.https.html b/third_party/blink/web_tests/wpt_internal/attribution-reporting/request-format.sub.https.html index 293da11..7310c56 100644 --- a/third_party/blink/web_tests/wpt_internal/attribution-reporting/request-format.sub.https.html +++ b/third_party/blink/web_tests/wpt_internal/attribution-reporting/request-format.sub.https.html
@@ -9,7 +9,6 @@ <meta name=variant content="?method=script&eligible&expected-eligible=event-source, trigger&expected-support=web"> <meta name=variant content="?method=fetch"> <meta name=variant content="?method=fetch&eligible=event-source&expected-eligible=event-source&expected-support=web"> -<meta name=variant content="?method=fetch&eligible=event-source&support=dummy&expected-eligible=event-source&expected-support=dummy"> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script src="/resources/testharness.js"></script>
diff --git a/third_party/blink/web_tests/wpt_internal/attribution-reporting/resources/helpers.js b/third_party/blink/web_tests/wpt_internal/attribution-reporting/resources/helpers.js index 7ae49f3..306a6c6 100644 --- a/third_party/blink/web_tests/wpt_internal/attribution-reporting/resources/helpers.js +++ b/third_party/blink/web_tests/wpt_internal/attribution-reporting/resources/helpers.js
@@ -65,7 +65,7 @@ }); headers.push({ name: allowHeadersHeader, - value: 'Attribution-Reporting-Eligible, Attribution-Reporting-Support', + value: `${eligibleHeader}, ${supportHeader}`, }) } else { headers.push({ @@ -212,10 +212,6 @@ if (eligible !== null) { headers[eligibleHeader] = eligible; } - const support = searchParams.get('support'); - if (support !== null) { - headers[supportHeader] = support; - } await fetch(url, {headers, credentials}); return 'event'; case 'xhr':
diff --git a/third_party/blink/web_tests/wpt_internal/attribution-reporting/simple-verbose-debug-report.sub.https.html b/third_party/blink/web_tests/wpt_internal/attribution-reporting/simple-verbose-debug-report.sub.https.html index 512e9d4..d099a5c 100644 --- a/third_party/blink/web_tests/wpt_internal/attribution-reporting/simple-verbose-debug-report.sub.https.html +++ b/third_party/blink/web_tests/wpt_internal/attribution-reporting/simple-verbose-debug-report.sub.https.html
@@ -1,11 +1,6 @@ <!doctype html> <meta charset=utf-8> <meta name=timeout content=long> -<meta name=variant content="?method=fetch"> -<meta name=variant content="?method=fetch&cross-origin"> -<meta name=variant content="?method=fetch&cross-origin&eligible=trigger"> -<meta name=variant content="?method=img"> -<meta name=variant content="?method=img&cross-origin"> <script src="/common/get-host-info.sub.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> @@ -21,7 +16,6 @@ debug_key: '456', }, cookie: attributionDebugCookie, - method: 'variant', reportingOrigin, });
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium index 521b35ca..1ad0eee4 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-13-0-69-ge78e2d29a -Revision: e78e2d29a95baf6053e30cc9422aa20319259803 +Version: VER-2-13-0-70-gea9fca0ad +Revision: ea9fca0add69e1613eee3290e18c1f8cb4d17a43 CPEPrefix: cpe:/a:freetype:freetype:2.12.1 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses"
diff --git a/third_party/nearby/README.chromium b/third_party/nearby/README.chromium index 01c0de0d..be0c3b4 100644 --- a/third_party/nearby/README.chromium +++ b/third_party/nearby/README.chromium
@@ -1,7 +1,7 @@ Name: Nearby Connections Library Short Name: Nearby URL: https://github.com/google/nearby -Version: 37225fab5abf6d897e16c43082b64ed7bdd0fc3c +Version: 472a1d847b581b73bb577de6a063214606d9a685 License: Apache 2.0 License File: LICENSE Security Critical: yes
diff --git a/tools/OWNERS b/tools/OWNERS index 7a98dbf..4158f56 100644 --- a/tools/OWNERS +++ b/tools/OWNERS
@@ -14,6 +14,9 @@ per-file add_header*.py=xhwang@chromium.org per-file autotest.py=mthiesse@chromium.org +per-file autotest.py=agrieve@chromium.org +per-file make_gtest_filter*.py=mthiesse@chromium.org +per-file make_gtest_filter*.py=agrieve@chromium.org per-file bisect*.py=anantha@chromium.org per-file bisect*.py=robertocn@chromium.org
diff --git a/tools/make_gtest_filter.py b/tools/make_gtest_filter.py index 9e8bb4a..d36f3687 100755 --- a/tools/make_gtest_filter.py +++ b/tools/make_gtest_filter.py
@@ -160,6 +160,28 @@ return list(failures) +def GetFiltersForTests(tests, class_only): + # Note: Test names have the following structures: + # * FixtureName.TestName + # * InstantiationName/FixtureName.TestName/## (for TEST_P) + # * FixtureName.TestName/## + # * FixtureName/##.TestName (for TYPED_TEST) + # Since this script doesn't parse instantiations, we generate filters to + # match either regular tests or instantiated tests. + if class_only: + fixtures = set([t.split('.')[0] for t in tests]) + return [c + '.*' for c in fixtures] + \ + ['*/' + c + '.*/*' for c in fixtures] + \ + [c + '.*/*' for c in fixtures] + \ + [c + '/*.*' for c in fixtures] + else: + fixtures_and_tcs = [test.split('.', 1) for test in tests] + return [c for c in tests] + \ + ['*/' + c + '/*' for c in tests] + \ + [c + '/*' for c in tests] + \ + [fixture + '/*.' + tc for fixture, tc in fixtures_and_tcs] + + def main(): parser = argparse.ArgumentParser() parser.add_argument( @@ -240,24 +262,11 @@ for m in rx.finditer(txt): tests.append(m.group(2) + '.' + m.group(3)) - # Note: Test names have the following structures: - # * FixtureName.TestName - # * InstantiationName/FixtureName.TestName/## - # * FixtureName.TestName/## - # Since this script doesn't parse instantiations, we generate filters to - # match either regular tests or instantiated tests. if args.wildcard_compress: test_filters = CompressWithWildcards(tests, args.wildcard_min_depth, args.wildcard_min_cases) - elif args.class_only: - fixtures = set([t.split('.')[0] for t in tests]) - test_filters = [c + '.*' for c in fixtures] + \ - ['*/' + c + '.*/*' for c in fixtures] + \ - [c + '.*/*' for c in fixtures] else: - test_filters = [c for c in tests] + \ - ['*/' + c + '/*' for c in tests] + \ - [c + '/*' for c in tests] + test_filters = GetFiltersForTests(tests, args.class_only) if args.as_exclusions: test_filters = ['-' + x for x in test_filters]
diff --git a/tools/make_gtest_filter_test.py b/tools/make_gtest_filter_test.py index 1adcc5b7..5cef94e 100755 --- a/tools/make_gtest_filter_test.py +++ b/tools/make_gtest_filter_test.py
@@ -5,7 +5,7 @@ import unittest -from make_gtest_filter import PascalCaseSplit, CompressWithWildcards +from make_gtest_filter import PascalCaseSplit, CompressWithWildcards, GetFiltersForTests class Foo(unittest.TestCase): @@ -42,6 +42,16 @@ self.assertEqual(list(CompressWithWildcards(fruit, 2, 2)), ['A.DoomBanana', 'A.DoomMelonFooBar', 'A.DoomMelonFooBaz']) + def testGetFiltersForTests(self): + tests = ["TestSuite.TestName"] + self.assertEqual( + list(GetFiltersForTests(tests, class_only=True)), + ["TestSuite.*", "*/TestSuite.*/*", "TestSuite.*/*", "TestSuite/*.*"]) + self.assertEqual(list(GetFiltersForTests(tests, class_only=False)), [ + "TestSuite.TestName", "*/TestSuite.TestName/*", "TestSuite.TestName/*", + "TestSuite/*.TestName" + ]) + if __name__ == '__main__': unittest.main()
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 07cdd29d..c4e6c9f 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -32501,6 +32501,7 @@ <int value="1094" label="AppLaunchAutomation"/> <int value="1095" label="InsecureHashesInTLSHandshakesEnabled"/> <int value="1096" label="DeviceLoginScreenGeolocationAccessLevel"/> + <int value="1097" label="DeviceReportNetworkEvents"/> </enum> <enum name="EnterprisePoliciesSources"> @@ -36812,12 +36813,6 @@ <int value="2" label="Only allow Certain Sites"/> </enum> -<enum name="FamilyUserDenylistSource"> - <int value="0" label="None"/> - <int value="1" label="Denylist"/> - <int value="2" label="Old Denylist"/> -</enum> - <enum name="FamilyUserLogSegment"> <summary>Filters family user metrics into categories of interest.</summary> <int value="0" label="Other"/> @@ -53782,10 +53777,10 @@ <int value="13" label="Compact beside Compact with Slideover"/> </enum> -<enum name="IOSNTPImpression"> - <int value="0" label="Local suggestions"/> - <int value="1" label="Remote suggestions"/> - <int value="2" label="Remote suggestions collapsed"/> +<enum name="IOSNTPImpressionType"> + <int value="0" label="Feed disabled"/> + <int value="1" label="Feed visible"/> + <int value="2" label="Feed collapsed"/> </enum> <enum name="IOSNTPOverscrollAction">
diff --git a/tools/metrics/histograms/metadata/families/histograms.xml b/tools/metrics/histograms/metadata/families/histograms.xml index eaf492a5..e52f56ea 100644 --- a/tools/metrics/histograms/metadata/families/histograms.xml +++ b/tools/metrics/histograms/metadata/families/histograms.xml
@@ -322,19 +322,6 @@ </summary> </histogram> -<histogram name="FamilyUser.DenylistSource" enum="FamilyUserDenylistSource" - expires_after="2023-12-12"> - <owner>courtneywong@chromium.org</owner> - <owner>cros-families-eng@google.com</owner> - <summary> - Records the source from which the website filter denylist was loaded either - at login or when web content filter settings change. The default behavior is - to load the current denylist. If that fails, then loading the old denylist - will be attempted. If that also fails, then it is logged that there is no - denylist source. - </summary> -</histogram> - <histogram name="FamilyUser.DeviceOwner" enum="Boolean" expires_after="2023-12-12"> <owner>agawronska@chromium.org</owner> @@ -648,19 +635,6 @@ </summary> </histogram> -<histogram name="ManagedUsers.SafetyFilter" - enum="SupervisedUserSafetyFilterResult" expires_after="2023-12-12"> - <owner>agawronska@chromium.org</owner> - <owner>cros-families-eng@google.com</owner> - <summary> - The counts of results from the supervised user safety filter. Each entry - includes the outcome of the filter (i.e. allowed, blocked, or unknown) and - the page transition type (how the user got there, e.g. typed URL, clicked - link). This only includes URL requests that were handled by the SafeSites - filter (both online and the static blocklist). - </summary> -</histogram> - <histogram name="SupervisedUsers.ExtensionEnablement" enum="SupervisedUserExtensionEnablement" expires_after="2023-12-12"> <owner>courtneywong@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/ios/histograms.xml b/tools/metrics/histograms/metadata/ios/histograms.xml index 1a4edb91..2d9964d 100644 --- a/tools/metrics/histograms/metadata/ios/histograms.xml +++ b/tools/metrics/histograms/metadata/ios/histograms.xml
@@ -1464,12 +1464,13 @@ <summary>The number of excess NTP tabs that are removed.</summary> </histogram> -<histogram name="IOS.NTP.Impression" enum="IOSNTPImpression" +<histogram name="IOS.NTP.Impression" enum="IOSNTPImpressionType" expires_after="2023-09-03"> <owner>gambard@chromium.org</owner> + <owner>bling-team@google.com</owner> <summary> - The type of NTP impressions on iOS, split by type of suggestions shown - (local vs remote vs remote_collapsed). + The type of NTP impressions on iOS, split by the feed visibility. Logged + each time an NTP is made visible. </summary> </histogram>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml index 3066bc0..cc6ec047 100644 --- a/tools/metrics/histograms/metadata/others/histograms.xml +++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -5667,25 +5667,6 @@ <summary>Counts when the explore sites store is opened or closed.</summary> </histogram> -<histogram name="ExploreSites.FetcherHttpResponseCode" enum="HttpResponseCode" - expires_after="M85"> - <owner>dimich@chromium.org</owner> - <summary> - Http response code from ExploreSitesFetcher. Recorded every time the fetcher - is finishing without network error and actually has HTTP response code. 2XX - codes also included. - </summary> -</histogram> - -<histogram name="ExploreSites.FetcherNetErrorCode" enum="NetErrorCodes" - expires_after="M85"> - <owner>dimich@chromium.org</owner> - <summary> - Net error results from ExploreSitesFetcher. Recorded every time the fetcher - is finishing. OK and ABORTED are included. - </summary> -</histogram> - <histogram name="ExploreSites.ImageDecoded" enum="Boolean" expires_after="2020-06-30"> <owner>freedjm@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/startup/histograms.xml b/tools/metrics/histograms/metadata/startup/histograms.xml index 8b3f69c..921930c 100644 --- a/tools/metrics/histograms/metadata/startup/histograms.xml +++ b/tools/metrics/histograms/metadata/startup/histograms.xml
@@ -671,7 +671,7 @@ </histogram> <histogram name="Startup.IncognitoForcedStart" enum="IncognitoForcedStart" - expires_after="M111"> + expires_after="M119"> <owner>arabm@google.com</owner> <owner>chrome-incognito@google.com</owner> <summary>
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml index 92feeba6..e58811d 100644 --- a/tools/traffic_annotation/summary/annotations.xml +++ b/tools/traffic_annotation/summary/annotations.xml
@@ -287,7 +287,6 @@ <item id="wallpaper_fetcher" added_in_milestone="98" content_hash_code="0419c2d5" os_list="chromeos" file_path="chrome/browser/chromeos/extensions/wallpaper_api.cc" /> <item id="network_traversal_ice_config_fetcher" added_in_milestone="98" content_hash_code="0065f89d" os_list="chromeos" file_path="chrome/browser/nearby_sharing/network_traversal_ice_config_fetcher.cc" /> <item id="tachyon_ice_config_fetcher" added_in_milestone="98" content_hash_code="01e878b0" os_list="chromeos" file_path="chrome/browser/nearby_sharing/tachyon_ice_config_fetcher.cc" /> - <item id="supervised_users_denylist" added_in_milestone="98" content_hash_code="01cebaff" os_list="chromeos,android,linux,windows" file_path="chrome/browser/supervised_user/supervised_user_service.cc" /> <item id="launcher_item_suggest" added_in_milestone="98" content_hash_code="04a4041e" os_list="chromeos" file_path="chrome/browser/ash/file_suggest/item_suggest_cache.cc" /> <item id="ambient_client" added_in_milestone="98" content_hash_code="062d821f" os_list="chromeos" file_path="chrome/browser/ui/ash/ambient/ambient_client_impl.cc" /> <item id="calendar_get_events" added_in_milestone="98" content_hash_code="0603f52a" os_list="chromeos" file_path="chrome/browser/ui/ash/calendar/calendar_keyed_service.cc" /> @@ -375,6 +374,8 @@ <item id="nearby_share_update_device" added_in_milestone="108" type="partial" second_id="oauth2_api_call_flow" content_hash_code="01d34a5a" os_list="chromeos" semantics_fields="1,2,3,4,5" policy_fields="3,4" file_path="chrome/browser/nearby_sharing/client/nearby_share_client_impl.cc" /> <item id="nearby_share_contacts" added_in_milestone="108" type="partial" second_id="oauth2_api_call_flow" content_hash_code="0473989a" os_list="chromeos" semantics_fields="1,2,3,4,5" policy_fields="3,4" file_path="chrome/browser/nearby_sharing/client/nearby_share_client_impl.cc" /> <item id="nearby_share_list_public_certificates" added_in_milestone="108" type="partial" second_id="oauth2_api_call_flow" content_hash_code="01706e8a" os_list="chromeos" semantics_fields="1,2,3,4,5" policy_fields="3,4" file_path="chrome/browser/nearby_sharing/client/nearby_share_client_impl.cc" /> + <item id="nearby_presence_update_device" added_in_milestone="115" type="partial" second_id="oauth2_api_call_flow" content_hash_code="048617a8" os_list="chromeos" semantics_fields="1,2,3,4,5" policy_fields="3,4" file_path="chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.cc" /> + <item id="nearby_presence_list_public_certificates" added_in_milestone="115" type="partial" second_id="oauth2_api_call_flow" content_hash_code="003d17c8" os_list="chromeos" semantics_fields="1,2,3,4,5" policy_fields="3,4" file_path="chromeos/ash/components/nearby/presence/credentials/nearby_presence_server_client_impl.cc" /> <item id="k_anonymity_service_join_set" added_in_milestone="108" content_hash_code="0033f523" os_list="linux,windows,android,chromeos" file_path="chrome/browser/k_anonymity_service/k_anonymity_service_client.cc" /> <item id="k_anonymity_service_query_set" added_in_milestone="108" content_hash_code="00eab10a" os_list="linux,windows,android,chromeos" file_path="chrome/browser/k_anonymity_service/k_anonymity_service_client.cc" /> <item id="managed_acccount_signin_restrictions_secure_connect_chromeos" added_in_milestone="109" content_hash_code="05958d4c" os_list="chromeos" file_path="chrome/browser/ui/webui/signin/ash/user_cloud_signin_restriction_policy_fetcher.cc" />
diff --git a/tools/traffic_annotation/summary/grouping.xml b/tools/traffic_annotation/summary/grouping.xml index 90d6d07..9b83e7f4 100644 --- a/tools/traffic_annotation/summary/grouping.xml +++ b/tools/traffic_annotation/summary/grouping.xml
@@ -75,7 +75,6 @@ <annotation id="remote_apps_image_downloader"/> <annotation id="remote_command_screenshot"/> <annotation id="smb_netbios_name_query"/> - <annotation id="supervised_users_denylist"/> <annotation id="tachyon_ice_config_fetcher"/> <annotation id="terms_of_service_fetch"/> <annotation id="timezone_lookup"/> @@ -254,6 +253,8 @@ <annotation id="nearby_share_update_device"/> <annotation id="nearby_share_contacts"/> <annotation id="nearby_share_list_public_certificates"/> + <annotation id="nearby_presence_update_device"/> + <annotation id="nearby_presence_list_public_certificates"/> <annotation id="managed_acccount_signin_restrictions_secure_connect_chromeos"/> <annotation id="fenced_frame_reporting_beacon"/> <annotation id="ntp_custom_background"/>
diff --git a/ui/aura/window_event_dispatcher.cc b/ui/aura/window_event_dispatcher.cc index 720f9cc7..8dd0f2c 100644 --- a/ui/aura/window_event_dispatcher.cc +++ b/ui/aura/window_event_dispatcher.cc
@@ -590,9 +590,12 @@ if (!touchevent.synchronous_handling_disabled()) { Window* window = static_cast<Window*>(target); + auto event_result = touchevent.force_process_gesture() + ? ui::ER_UNHANDLED + : event.result(); ui::GestureRecognizer::Gestures gestures = Env::GetInstance()->gesture_recognizer()->AckTouchEvent( - touchevent.unique_event_id(), event.result(), + touchevent.unique_event_id(), event_result, false /* is_source_touch_event_set_blocking */, window); details = ProcessGestures(window, std::move(gestures));
diff --git a/ui/aura/window_event_dispatcher_unittest.cc b/ui/aura/window_event_dispatcher_unittest.cc index f7203a4..a0f1dc5 100644 --- a/ui/aura/window_event_dispatcher_unittest.cc +++ b/ui/aura/window_event_dispatcher_unittest.cc
@@ -3268,4 +3268,39 @@ root_window()->RemovePreTargetHandler(&recorder); } +// Tests that touch event can be filtered by `StopPropagation`, but can still +// be processed by GestureRecogtnizer with `ForceProcessGesture`. +TEST_F(WindowEventDispatcherTest, FilteredTouchProcessGesture) { + // A event handler that stops propagation, but still allow gesture + // processing. + class : public ui::EventHandler { + public: + void OnTouchEvent(ui::TouchEvent* event) override { + event->StopPropagation(); + event->ForceProcessGesture(); + } + } handler; + + root_window()->AddPreTargetHandler(&handler); + + test::TestWindowDelegate delegate; + std::unique_ptr<aura::Window> window(test::CreateTestWindowWithDelegate( + &delegate, 1, gfx::Rect(100, 100), root_window())); + + EventFilterRecorder recorder; + window->AddPreTargetHandler(&recorder); + + ui::test::EventGenerator generator(root_window()); + + generator.PressTouch(gfx::Point(50, 50)); + generator.ReleaseTouch(); + + EXPECT_EQ(0u, recorder.touch_locations().size()); + EXPECT_EQ(5u, recorder.gesture_locations().size()); + EXPECT_EQ(gfx::Point(50, 50), recorder.gesture_locations()[0]); + + root_window()->RemovePreTargetHandler(&handler); + window->RemovePreTargetHandler(&recorder); +} + } // namespace aura
diff --git a/ui/base/cocoa/permissions_utils.mm b/ui/base/cocoa/permissions_utils.mm index 61982e8..eaace24 100644 --- a/ui/base/cocoa/permissions_utils.mm +++ b/ui/base/cocoa/permissions_utils.mm
@@ -10,6 +10,7 @@ #include "base/mac/foundation_util.h" #include "base/mac/mac_util.h" #include "base/mac/scoped_cftyperef.h" +#include "base/mac/wrap_cg_display.h" #include "base/task/thread_pool.h" namespace ui { @@ -67,7 +68,7 @@ // in the applications list in System permissions. Stream creation will // fail if the user denies permission, or if our application is already // in the system permssion and is unchecked. - base::ScopedCFTypeRef<CGDisplayStreamRef> stream(CGDisplayStreamCreate( + base::ScopedCFTypeRef<CGDisplayStreamRef> stream(wrapCGDisplayStreamCreate( CGMainDisplayID(), 1, 1, 'BGRA', nullptr, ^(CGDisplayStreamFrameStatus status, uint64_t displayTime, IOSurfaceRef frameSurface, CGDisplayStreamUpdateRef updateRef){
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb index 9aeb46c..4b4aa99 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
@@ -438,7 +438,7 @@ <translation id="4631887759990505102">Artiste</translation> <translation id="4642769377300286600">Installation du profil mobile, réseau <ph name="NETWORK_INDEX" /> sur <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" />…</translation> <translation id="4646813851450205600">Tchèque avec clavier Qwerty</translation> -<translation id="4656777537938206294">Rendre des fichiers accessibles hors connexion</translation> +<translation id="4656777537938206294">Accédez à des fichiers hors connexion</translation> <translation id="4658782175094886150">Personne dans la neige</translation> <translation id="466782788172479199">Autoriser Bruschetta à accéder aux fichiers de votre Google Drive. Les modifications apportées seront synchronisées avec vos autres appareils.</translation> <translation id="4669606053856530811">Les membres de "<ph name="SOURCE_NAME" />" n'auront plus accès à ces éléments, à moins qu'ils ne soient partagés avec eux.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb index 7e4a77a..03860af9 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
@@ -542,7 +542,7 @@ <translation id="5275973617553375938">Google Drive жүйесінен қалпына келтірілген файлдар</translation> <translation id="5278111733643988471">Бұл элементті қалпына келтіру үшін оны себеттен жаңа қалтаға сүйреңіз. Элементке арналған "<ph name="PARENT_FOLDER_NAME" />" деп аталатын бастапқы қалта жойылған.</translation> <translation id="5283101102242354279">Инкогнито режимінде кеңейтімді қосу:</translation> -<translation id="5286194356314741248">Ізделуде</translation> +<translation id="5286194356314741248">Ізделіп жатыр</translation> <translation id="5288441970121584418">Бургер</translation> <translation id="5293615890992542006">Әкімші саясаты бұл файлды тасымалдауға тыйым салды.</translation> <translation id="5305688511332277257">Ешбірі орнатылмаған</translation>
diff --git a/ui/events/BUILD.gn b/ui/events/BUILD.gn index 25c0f44..90d4467 100644 --- a/ui/events/BUILD.gn +++ b/ui/events/BUILD.gn
@@ -98,6 +98,7 @@ sources = [ "base_event_utils.cc", "base_event_utils.h", + "event_latency_metadata.h", "event_switches.cc", "event_switches.h", "events_base_export.h", @@ -496,6 +497,7 @@ "//ui/display", "//ui/gfx", "//ui/gfx/geometry", + "//ui/latency", ] defines = [ "GESTURE_DETECTION_IMPLEMENTATION" ]
diff --git a/ui/events/blink/blink_event_util.cc b/ui/events/blink/blink_event_util.cc index 9ad01f1..e7f0d58 100644 --- a/ui/events/blink/blink_event_util.cc +++ b/ui/events/blink/blink_event_util.cc
@@ -335,6 +335,8 @@ gesture.primary_unique_touch_event_id = details.primary_unique_touch_event_id(); gesture.unique_touch_event_id = unique_touch_event_id; + gesture.GetModifiableEventLatencyMetadata() = + details.GetEventLatencyMetadata(); switch (details.type()) { case ET_GESTURE_SHOW_PRESS:
diff --git a/ui/events/event.cc b/ui/events/event.cc index 9064a9fd..510641b 100644 --- a/ui/events/event.cc +++ b/ui/events/event.cc
@@ -789,6 +789,12 @@ static_cast<EventResult>(result() | ER_DISABLE_SYNC_HANDLING)); } +void TouchEvent::ForceProcessGesture() { + DispatcherApi dispatcher_api(this); + dispatcher_api.set_result( + static_cast<EventResult>(result() | ER_FORCE_PROCESS_GESTURE)); +} + void TouchEvent::SetPointerDetailsForTest( const PointerDetails& pointer_details) { DCHECK_EQ(pointer_details_.id, pointer_details.id);
diff --git a/ui/events/event.h b/ui/events/event.h index 37a9c51..fd0cacb 100644 --- a/ui/events/event.h +++ b/ui/events/event.h
@@ -708,6 +708,13 @@ return !!(result() & ER_DISABLE_SYNC_HANDLING); } + // Forces to process the gesture recognition even if the event is marked + // as `handled` or `stopped_propagation`. + void ForceProcessGesture(); + bool force_process_gesture() const { + return !!(result() & ER_FORCE_PROCESS_GESTURE); + } + const PointerDetails& pointer_details() const { return pointer_details_; } void SetPointerDetailsForTest(const PointerDetails& pointer_details);
diff --git a/ui/events/event_constants.h b/ui/events/event_constants.h index d5212fc2..7d33a0ec 100644 --- a/ui/events/event_constants.h +++ b/ui/events/event_constants.h
@@ -111,6 +111,9 @@ // happens if the event is being handled // asynchronously, or if the event is invalid and // shouldn't be handled at all. + ER_FORCE_PROCESS_GESTURE = + 1 << 3, // The event should be processed by gesture recognizer even if + // ER_HANDLED or ER_CONSUMED is set. }; // Phase of the event dispatch.
diff --git a/ui/events/event_latency_metadata.h b/ui/events/event_latency_metadata.h new file mode 100644 index 0000000..b61ccf8 --- /dev/null +++ b/ui/events/event_latency_metadata.h
@@ -0,0 +1,30 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_EVENTS_EVENT_LATENCY_METADATA_H_ +#define UI_EVENTS_EVENT_LATENCY_METADATA_H_ + +#include "base/time/time.h" + +namespace ui { + +// The struct contains metadata about EventLatency events. +// There should only be POD classes in this struct to keep the metadata to a +// minimum. +struct EventLatencyMetadata { + // Time when event arrived in the BrowserMain thread. + base::TimeTicks arrived_in_browser_main_timestamp; + + // This field is used only by scroll events to understand when the related + // blocking touch move was dispatched to Renderer. If the related touch move + // wasn't blocking, this field is not set. + base::TimeTicks scrolls_blocking_touch_dispatched_to_renderer; + + // Time when event was disppatched to the Renderer from the Browser. + base::TimeTicks dispatched_to_renderer; +}; + +} // namespace ui + +#endif // UI_EVENTS_EVENT_LATENCY_METADATA_H_ \ No newline at end of file
diff --git a/ui/events/gesture_detection/filtered_gesture_provider.cc b/ui/events/gesture_detection/filtered_gesture_provider.cc index b832c1db..d497ee0 100644 --- a/ui/events/gesture_detection/filtered_gesture_provider.cc +++ b/ui/events/gesture_detection/filtered_gesture_provider.cc
@@ -62,9 +62,11 @@ void FilteredGestureProvider::OnTouchEventAck( uint32_t unique_event_id, bool event_consumed, - bool is_source_touch_event_set_blocking) { + bool is_source_touch_event_set_blocking, + const absl::optional<EventLatencyMetadata>& event_latency_metadata) { gesture_filter_.OnTouchEventAck(unique_event_id, event_consumed, - is_source_touch_event_set_blocking); + is_source_touch_event_set_blocking, + event_latency_metadata); } void FilteredGestureProvider::ResetGestureHandlingState() {
diff --git a/ui/events/gesture_detection/filtered_gesture_provider.h b/ui/events/gesture_detection/filtered_gesture_provider.h index cbe9984..f02ff45a 100644 --- a/ui/events/gesture_detection/filtered_gesture_provider.h +++ b/ui/events/gesture_detection/filtered_gesture_provider.h
@@ -48,9 +48,15 @@ // To be called upon asynchronous and synchronous ack of an event that was // forwarded after a successful call to |OnTouchEvent()|. + // |event_latency_metadata| is provided only if the touch event or + // corresponding touch event was blocked before sending to the Renderer. This + // definition of blocking is not related to the value of + // |is_source_touch_event_set_blocking|. void OnTouchEventAck(uint32_t unique_event_id, bool event_consumed, - bool is_source_touch_event_set_blocking); + bool is_source_touch_event_set_blocking, + const absl::optional<EventLatencyMetadata>& + event_latency_metadata = absl::nullopt); void ResetGestureHandlingState();
diff --git a/ui/events/gesture_detection/gesture_event_data_packet.cc b/ui/events/gesture_detection/gesture_event_data_packet.cc index dfd08725..bc6f6fe 100644 --- a/ui/events/gesture_detection/gesture_event_data_packet.cc +++ b/ui/events/gesture_detection/gesture_event_data_packet.cc
@@ -122,4 +122,15 @@ } } +void GestureEventDataPacket::AddEventLatencyMetadataToGestures( + const EventLatencyMetadata& event_latency_metadata, + const base::RepeatingCallback<bool(const ui::GestureEventData&)>& filter) { + for (auto& gesture : gestures_) { + if (filter.Run(gesture)) { + gesture.details.GetModifiableEventLatencyMetadata() = + event_latency_metadata; + } + } +} + } // namespace ui
diff --git a/ui/events/gesture_detection/gesture_event_data_packet.h b/ui/events/gesture_detection/gesture_event_data_packet.h index 285c837..8719711 100644 --- a/ui/events/gesture_detection/gesture_event_data_packet.h +++ b/ui/events/gesture_detection/gesture_event_data_packet.h
@@ -7,8 +7,10 @@ #include <stddef.h> #include <stdint.h> +#include <functional> #include "base/containers/stack_container.h" +#include "base/functional/callback.h" #include "base/time/time.h" #include "ui/events/gesture_detection/gesture_detection_export.h" #include "ui/events/gesture_detection/gesture_event_data.h" @@ -66,6 +68,10 @@ AckState ack_state() { return ack_state_; } uint32_t unique_touch_event_id() const { return unique_touch_event_id_; } + void AddEventLatencyMetadataToGestures( + const EventLatencyMetadata& event_latency_metadata, + const base::RepeatingCallback<bool(const ui::GestureEventData&)>& filter); + private: GestureEventDataPacket(base::TimeTicks timestamp, GestureSource source,
diff --git a/ui/events/gesture_detection/gesture_event_data_packet_unittest.cc b/ui/events/gesture_detection/gesture_event_data_packet_unittest.cc index b4995671..c65b011 100644 --- a/ui/events/gesture_detection/gesture_event_data_packet_unittest.cc +++ b/ui/events/gesture_detection/gesture_event_data_packet_unittest.cc
@@ -134,4 +134,33 @@ EXPECT_EQ(gfx::PointF(gesture.x, gesture.y), packet.touch_location()); } +TEST_F(GestureEventDataPacketTest, AddEventLatencyMetadataToGestures) { + GestureEventDataPacket packet = GestureEventDataPacket::FromTouch( + MockMotionEvent(MotionEvent::Action::DOWN)); + packet.Push(CreateGesture(ET_GESTURE_TAP)); + packet.Push(CreateGesture(ET_GESTURE_SCROLL_UPDATE)); + packet.Push(CreateGesture(ET_GESTURE_PINCH_UPDATE)); + + EventLatencyMetadata event_latency_metadata; + event_latency_metadata.scrolls_blocking_touch_dispatched_to_renderer = + base::TimeTicks::Now(); + packet.AddEventLatencyMetadataToGestures( + event_latency_metadata, + base::BindRepeating([](const ui::GestureEventData& data) { + return data.type() == ET_GESTURE_SCROLL_UPDATE; + })); + + EXPECT_TRUE(packet.gesture(0) + .details.GetEventLatencyMetadata() + .scrolls_blocking_touch_dispatched_to_renderer.is_null()); + EXPECT_EQ( + packet.gesture(1) + .details.GetEventLatencyMetadata() + .scrolls_blocking_touch_dispatched_to_renderer, + event_latency_metadata.scrolls_blocking_touch_dispatched_to_renderer); + EXPECT_TRUE(packet.gesture(2) + .details.GetEventLatencyMetadata() + .scrolls_blocking_touch_dispatched_to_renderer.is_null()); +} + } // namespace ui
diff --git a/ui/events/gesture_detection/touch_disposition_gesture_filter.cc b/ui/events/gesture_detection/touch_disposition_gesture_filter.cc index 219d06d3..4cb988e 100644 --- a/ui/events/gesture_detection/touch_disposition_gesture_filter.cc +++ b/ui/events/gesture_detection/touch_disposition_gesture_filter.cc
@@ -9,6 +9,7 @@ #include "base/auto_reset.h" #include "base/check_op.h" #include "base/notreached.h" +#include "base/trace_event/typed_macros.h" #include "ui/events/gesture_event_details.h" namespace ui { @@ -134,6 +135,11 @@ gesture_source == GestureEventDataPacket::TOUCH_START; } +bool DoAddInputTimestampsToGesture(const GestureEventData& gesture_data) { + return gesture_data.type() == EventType::ET_GESTURE_SCROLL_UPDATE || + gesture_data.type() == EventType::ET_GESTURE_SCROLL_BEGIN; +} + } // namespace // TouchDispositionGestureFilter @@ -201,7 +207,8 @@ void TouchDispositionGestureFilter::OnTouchEventAck( uint32_t unique_touch_event_id, bool event_consumed, - bool is_source_touch_event_set_blocking) { + bool is_source_touch_event_set_blocking, + const absl::optional<EventLatencyMetadata>& event_latency_metadata) { // Spurious asynchronous acks should not trigger a crash. if (IsEmpty() || (Head().empty() && sequences_.size() == 1)) return; @@ -216,16 +223,17 @@ Tail().back().gesture_source() != GestureEventDataPacket::TOUCH_TIMEOUT) { Tail().back().Ack(event_consumed, is_source_touch_event_set_blocking); if (sequences_.size() == 1 && Tail().size() == 1) - SendAckedEvents(); + SendAckedEvents(event_latency_metadata); } else { DCHECK(!Head().empty()); DCHECK_EQ(Head().front().unique_touch_event_id(), unique_touch_event_id); Head().front().Ack(event_consumed, is_source_touch_event_set_blocking); - SendAckedEvents(); + SendAckedEvents(event_latency_metadata); } } -void TouchDispositionGestureFilter::SendAckedEvents() { +void TouchDispositionGestureFilter::SendAckedEvents( + const absl::optional<EventLatencyMetadata>& event_latency_metadata) { // Dispatch all packets corresponding to ack'ed touches, as well as // any pending timeout-based packets. bool touch_packet_for_current_ack_handled = false; @@ -256,8 +264,20 @@ // Aura, we could trigger a touch-cancel). As popping the sequence destroys // the packet, we copy the packet before popping it. touch_packet_for_current_ack_handled = true; - const GestureEventDataPacket packet = sequence.front(); + GestureEventDataPacket packet = sequence.front(); sequence.pop(); + + if (source == GestureEventDataPacket::TOUCH_MOVE && + event_latency_metadata.has_value()) { + EventLatencyMetadata gesture_event_latency_metadata; + gesture_event_latency_metadata + .scrolls_blocking_touch_dispatched_to_renderer = + event_latency_metadata->dispatched_to_renderer; + packet.AddEventLatencyMetadataToGestures( + std::move(gesture_event_latency_metadata), + base::BindRepeating(DoAddInputTimestampsToGesture)); + } + FilterAndSendPacket(packet); } DCHECK(touch_packet_for_current_ack_handled);
diff --git a/ui/events/gesture_detection/touch_disposition_gesture_filter.h b/ui/events/gesture_detection/touch_disposition_gesture_filter.h index 53bbd88..10f2bd0 100644 --- a/ui/events/gesture_detection/touch_disposition_gesture_filter.h +++ b/ui/events/gesture_detection/touch_disposition_gesture_filter.h
@@ -9,10 +9,12 @@ #include "base/containers/queue.h" #include "base/memory/raw_ptr.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/events/gesture_detection/bitset_32.h" #include "ui/events/gesture_detection/gesture_detection_export.h" #include "ui/events/gesture_detection/gesture_event_data_packet.h" #include "ui/events/types/event_type.h" +#include "ui/latency/latency_info.h" namespace ui { @@ -53,9 +55,18 @@ PacketResult OnGesturePacket(const GestureEventDataPacket& packet); // OnTouchEventAck must be called upon receipt of every touch event ack. + // |event_latency_metadata| is provided only if the touch event or + // corresponding touch event was blocked before sending to the Renderer. This + // definition of blocking is not related to the value of + // |is_source_touch_event_set_blocking| since + // |is_source_touch_event_set_blocking| refers to the behavior of blocking + // future inputs, not whether the current event was dispatched blocking to the + // renderer. void OnTouchEventAck(uint32_t unique_touch_event_id, bool event_consumed, - bool is_source_touch_event_set_blocking); + bool is_source_touch_event_set_blocking, + const absl::optional<EventLatencyMetadata>& + event_latency_metadata = absl::nullopt); // Whether there are any active gesture sequences still queued in the filter. bool IsEmpty() const; @@ -101,7 +112,8 @@ void CancelFlingIfNecessary(const GestureEventDataPacket& packet); void EndScrollIfNecessary(const GestureEventDataPacket& packet); void PopGestureSequence(); - void SendAckedEvents(); + void SendAckedEvents( + const absl::optional<EventLatencyMetadata>& event_latency_metadata); GestureSequence& Head(); GestureSequence& Tail();
diff --git a/ui/events/gesture_event_details.h b/ui/events/gesture_event_details.h index ce44240..bdf8406 100644 --- a/ui/events/gesture_event_details.h +++ b/ui/events/gesture_event_details.h
@@ -9,6 +9,7 @@ #include "base/check_op.h" #include "ui/events/event_constants.h" +#include "ui/events/event_latency_metadata.h" #include "ui/events/events_base_export.h" #include "ui/events/types/event_type.h" #include "ui/events/types/scroll_types.h" @@ -185,6 +186,13 @@ data_.scale = scale; } + const EventLatencyMetadata& GetEventLatencyMetadata() const { + return input_timestamps_; + } + EventLatencyMetadata& GetModifiableEventLatencyMetadata() { + return input_timestamps_; + } + // Supports comparison over internal structures for testing. bool operator==(const GestureEventDetails& other) const { return type_ == other.type_ && @@ -259,6 +267,8 @@ // Bounding box is an axis-aligned rectangle that contains all the // enclosing rectangles of the touch-points in the gesture. gfx::RectF bounding_box_; + + EventLatencyMetadata input_timestamps_; }; } // namespace ui
diff --git a/ui/events/mojom/BUILD.gn b/ui/events/mojom/BUILD.gn index a1f910e6..47a11bf 100644 --- a/ui/events/mojom/BUILD.gn +++ b/ui/events/mojom/BUILD.gn
@@ -80,3 +80,24 @@ blink_cpp_typemaps = shared_cpp_typemaps webui_module_path = "chrome://resources/mojo/ui/events/mojom" } + +mojom("event_latency_metadata_mojom") { + generate_java = true + sources = [ "event_latency_metadata.mojom" ] + public_deps = [ "//mojo/public/mojom/base" ] + + cpp_typemaps = [ + { + types = [ + { + mojom = "ui.mojom.EventLatencyMetadata" + cpp = "::ui::EventLatencyMetadata" + }, + ] + + traits_headers = [ "event_latency_metadata_mojom_traits.h" ] + traits_sources = [ "event_latency_metadata_mojom_traits.cc" ] + traits_deps = [ "//ui/events:events_base" ] + }, + ] +}
diff --git a/ui/events/mojom/event_latency_metadata.mojom b/ui/events/mojom/event_latency_metadata.mojom new file mode 100644 index 0000000..615bdad --- /dev/null +++ b/ui/events/mojom/event_latency_metadata.mojom
@@ -0,0 +1,23 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module ui.mojom; + +import "mojo/public/mojom/base/time.mojom"; + +// The struct contains metadata about EventLatency events. +// There should only be POD classes in this struct to keep the metadata to a +// minimum. +struct EventLatencyMetadata { + // Time when event arrived in the BrowserMain thread. + mojo_base.mojom.TimeTicks arrived_in_browser_main_timestamp; + + // This field is used only by scroll events to understand when the related + // blocking touch move was dispatched to Renderer. If the related touch move + // wasn't blocking, this field is not set. + mojo_base.mojom.TimeTicks scrolls_blocking_touch_dispatched_to_renderer; + + // Time when event was disppatched to the Renderer from the Browser. + mojo_base.mojom.TimeTicks dispatched_to_renderer; +};
diff --git a/ui/events/mojom/event_latency_metadata_mojom_traits.cc b/ui/events/mojom/event_latency_metadata_mojom_traits.cc new file mode 100644 index 0000000..9d1fa06 --- /dev/null +++ b/ui/events/mojom/event_latency_metadata_mojom_traits.cc
@@ -0,0 +1,27 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/events/mojom/event_latency_metadata_mojom_traits.h" + +namespace mojo { + +// static +bool StructTraits< + ui::mojom::EventLatencyMetadataDataView, + ui::EventLatencyMetadata>::Read(ui::mojom::EventLatencyMetadataDataView in, + ui::EventLatencyMetadata* out) { + DCHECK(out != nullptr); + + if (!in.ReadArrivedInBrowserMainTimestamp( + &out->arrived_in_browser_main_timestamp) || + !in.ReadScrollsBlockingTouchDispatchedToRenderer( + &out->scrolls_blocking_touch_dispatched_to_renderer) || + !in.ReadDispatchedToRenderer(&out->dispatched_to_renderer)) { + return false; + } + + return true; +} + +} // namespace mojo
diff --git a/ui/events/mojom/event_latency_metadata_mojom_traits.h b/ui/events/mojom/event_latency_metadata_mojom_traits.h new file mode 100644 index 0000000..04bcb4f --- /dev/null +++ b/ui/events/mojom/event_latency_metadata_mojom_traits.h
@@ -0,0 +1,38 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_EVENTS_MOJOM_EVENT_LATENCY_METADATA_MOJOM_TRAITS_H_ +#define UI_EVENTS_MOJOM_EVENT_LATENCY_METADATA_MOJOM_TRAITS_H_ + +#include "mojo/public/cpp/base/time_mojom_traits.h" +#include "mojo/public/cpp/bindings/struct_traits.h" +#include "ui/events/event_latency_metadata.h" +#include "ui/events/mojom/event_latency_metadata.mojom-shared.h" + +namespace mojo { + +template <> +struct StructTraits<ui::mojom::EventLatencyMetadataDataView, + ui::EventLatencyMetadata> { + static base::TimeTicks arrived_in_browser_main_timestamp( + const ui::EventLatencyMetadata& event_latency_metadata) { + return event_latency_metadata.arrived_in_browser_main_timestamp; + } + + static base::TimeTicks scrolls_blocking_touch_dispatched_to_renderer( + const ui::EventLatencyMetadata& event_latency_metadata) { + return event_latency_metadata.scrolls_blocking_touch_dispatched_to_renderer; + } + + static base::TimeTicks dispatched_to_renderer( + const ui::EventLatencyMetadata& event_latency_metadata) { + return event_latency_metadata.dispatched_to_renderer; + } + static bool Read(ui::mojom::EventLatencyMetadataDataView in, + ui::EventLatencyMetadata* out); +}; + +} // namespace mojo + +#endif // UI_EVENTS_MOJOM_EVENT_LATENCY_METADATA_MOJOM_TRAITS_H_ \ No newline at end of file
diff --git a/ui/latency/latency_info.cc b/ui/latency/latency_info.cc index dd76d2a..ef364fc 100644 --- a/ui/latency/latency_info.cc +++ b/ui/latency/latency_info.cc
@@ -148,11 +148,10 @@ AddLatencyNumberWithTimestampImpl(component, base::TimeTicks::Now(), nullptr); } -void LatencyInfo::AddLatencyNumberWithTraceName( - LatencyComponentType component, - const char* trace_name_str) { - AddLatencyNumberWithTimestampImpl(component, base::TimeTicks::Now(), - trace_name_str); +void LatencyInfo::AddLatencyNumberWithTraceName(LatencyComponentType component, + const char* trace_name_str, + base::TimeTicks now) { + AddLatencyNumberWithTimestampImpl(component, now, trace_name_str); } void LatencyInfo::AddLatencyNumberWithTimestamp(LatencyComponentType component,
diff --git a/ui/latency/latency_info.h b/ui/latency/latency_info.h index 64dfa11..3456e68 100644 --- a/ui/latency/latency_info.h +++ b/ui/latency/latency_info.h
@@ -130,7 +130,8 @@ // the trace event's name. // This function should only be called when adding a BEGIN component. void AddLatencyNumberWithTraceName(LatencyComponentType component, - const char* trace_name_str); + const char* trace_name_str, + base::TimeTicks now); // Modifies the current sequence number and adds a certain number of events // for a specific component.
diff --git a/ui/strings/translations/ui_strings_am.xtb b/ui/strings/translations/ui_strings_am.xtb index 3aff300e..2e3f482f 100644 --- a/ui/strings/translations/ui_strings_am.xtb +++ b/ui/strings/translations/ui_strings_am.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 ቀን በፊት}one{# ቀኖች በፊት}other{# ቀኖች በፊት}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{ከ1 ደቂቃ በፊት}one{ከ# ደቂቃዎች በፊት}other{ከ# ደቂቃዎች በፊት}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1ደ}one{#ደ}other{#ደ}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{ከ1 ቀን በፊት}one{ከ# ቀን በፊት}other{ከ# ቀናት በፊት}}</translation> <translation id="1181037720776840403">አስወግድ</translation> <translation id="1243314992276662751">ስቀል</translation> <translation id="1266864766717917324"><ph name="CONTENT_TYPE" /> ን ማጋራት አልተቻለም።</translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">ከግራ ወደ ቀኝ</translation> <translation id="1383876407941801731">ፍለጋ </translation> <translation id="1398853756734560583">አስፋ</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{ከ1 ደቂቃ በፊት}one{ከ# ደቂቃ በፊት}other{ከ# ደቂቃዎች በፊት}}</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> ን ማጋራት አይቻልም</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{ከ1 ወር በፊት}one{ከ# ወር በፊት}other{ከ# ወራት በፊት}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 ደቂቃ እና }one{# ደቂቃዎች እና }other{# ደቂቃዎች እና }}</translation> <translation id="1643823602425662293">ማሳወቂያ</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">ምስል</translation> <translation id="4565377596337484307">የይለፍ ቃል ደብቅ</translation> <translation id="4588090240171750605">ወደ ቀኝ ሸብልል</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{ከ1 ዓመት በፊት}one{ከ# ዓመት በፊት}other{ከ# ዓመታት በፊት}}</translation> <translation id="4724120544754982507">የማሳወቂያ ማዕከል፣ <ph name="UNREAD_NOTIFICATION_COUNT" /> ያልተነበቡ ማሳወቂያዎች</translation> <translation id="4729257764711776855">ቁጥር</translation> <translation id="4746179598275229723">ቅጥያው ተነቅሏል</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">በመላክ ላይ...</translation> <translation id="8876215549894133151">ቅርጸት፦</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> ኪባ</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{ከ1 ሰዓት በፊት}one{ከ# ሰዓት በፊት}other{ከ# ሰዓታት በፊት}}</translation> <translation id="8996630695507351249"><ph name="TARGET_DEVICE_NAME" /> ከበይነ መረብ ጋር መገናኘቱን ያረጋግጡ።</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 ሰከን}one{# ሰከን}other{# ሰከን}}</translation> <translation id="9059834730836941392">ማሳወቂያን ሰብስብ</translation> <translation id="9170848237812810038">&ቀልብስ</translation> <translation id="932327136139879170">መነሻ</translation> <translation id="944069440740578670">ያልተነበቡ ማሳወቂያዎች</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{ከ1 ሰከንድ በፊት}one{ከ# ሰከንድ በፊት}other{ከ# ሰከንዶች በፊት}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_be.xtb b/ui/strings/translations/ui_strings_be.xtb index 01e48176..7667561 100644 --- a/ui/strings/translations/ui_strings_be.xtb +++ b/ui/strings/translations/ui_strings_be.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 дзень таму}one{# дзень таму}few{# дні таму}many{# дзён таму}other{# дня таму}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 хвіліну таму}one{# хвіліну таму}few{# хвіліны таму}many{# хвілін таму}other{# хвіліны таму}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 хв}one{# хв}few{# хв}many{# хв}other{# хв}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{1 дзень таму}one{# дзень таму}few{# дні таму}many{# дзён таму}other{# дня таму}}</translation> <translation id="1181037720776840403">Выдаліць</translation> <translation id="1243314992276662751">Запампаваць</translation> <translation id="1266864766717917324">Не ўдалося абагуліць змесціва наступнага тыпу: <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Злева направа</translation> <translation id="1383876407941801731">Пошук</translation> <translation id="1398853756734560583">Разгарнуць</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{1 хвіліну таму}one{# хвіліну таму}few{# хвіліны таму}many{# хвілін таму}other{# хвіліны таму}}</translation> <translation id="1450753235335490080">Не ўдалося абагуліць наступнае змесціва: <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{1 месяц таму}one{# месяц таму}few{# месяцы таму}many{# месяцаў таму}other{# месяца таму}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 хвіліна і }one{# хвіліна і }few{# хвіліны і }many{# хвілін і }other{# хвіліны і }}</translation> <translation id="1643823602425662293">Апавяшчэнне</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Відарыс</translation> <translation id="4565377596337484307">Схаваць пароль</translation> <translation id="4588090240171750605">Прагартаць управа</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{1 год таму}one{# год таму}few{# гады таму}many{# год таму}other{# года таму}}</translation> <translation id="4724120544754982507">Цэнтр апавяшчэнняў. Непрачытаных апавяшчэнняў: <ph name="UNREAD_NOTIFICATION_COUNT" /></translation> <translation id="4729257764711776855">нумар</translation> <translation id="4746179598275229723">Пашырэнне адмацавана</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Ідзе адпраўка...</translation> <translation id="8876215549894133151">Фармат:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> КБ</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{1 гадзіну таму}one{# гадзіну таму}few{# гадзіны таму}many{# гадзін таму}other{# гадзіны таму}}</translation> <translation id="8996630695507351249">Праверце, ці прылада "<ph name="TARGET_DEVICE_NAME" />" падключана да інтэрнэту.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 с}one{# с}few{# с}many{# с}other{# с}}</translation> <translation id="9059834730836941392">Згарнуць апавяшчэнне</translation> <translation id="9170848237812810038">&Адрабіць</translation> <translation id="932327136139879170">Галоўная старонка</translation> <translation id="944069440740578670">Непрачытаныя апавяшчэнні</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{1 секунду таму}one{# секунду таму}few{# секунды таму}many{# секунд таму}other{# секунды таму}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_bs.xtb b/ui/strings/translations/ui_strings_bs.xtb index 4d676f98..d961ad76 100644 --- a/ui/strings/translations/ui_strings_bs.xtb +++ b/ui/strings/translations/ui_strings_bs.xtb
@@ -18,7 +18,7 @@ <translation id="1398853756734560583">Povećaj maksimalno</translation> <translation id="1432724887402139994">{SECONDS,plural, =1{Prije 1 min}one{Prije # min}few{Prije # min}other{Prije # min}}</translation> <translation id="1450753235335490080">Nije moguće podijeliti sadržaj <ph name="CONTENT_TYPE" /></translation> -<translation id="1523230076022876491">{MONTHS,plural, =1{Prije mjesec dana}one{Prije # mj.}few{Prije # mj.}other{Prije # mj.}}</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{Prije 1 mjesec}one{Prije # mjesec}few{Prije # mjeseca}other{Prije # mjeseci}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minuta i }one{# minuta i }few{# minute i }other{# minuta i }}</translation> <translation id="1643823602425662293">Obavještenje</translation> <translation id="169515659049020177">Gornji red</translation> @@ -109,7 +109,7 @@ <translation id="4491109536499578614">Slika</translation> <translation id="4565377596337484307">Sakrij lozinku</translation> <translation id="4588090240171750605">Kliznite udesno</translation> -<translation id="4689010477870442157">{YEARS,plural, =1{Prije godinu dana}one{Prije # g.}few{Prije # g.}other{Prije # g.}}</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{Prije 1 godinu}one{Prije # godinu}few{Prije # godine}other{Prije # godina}}</translation> <translation id="4724120544754982507">Centar za obavještenja, broj nepročitanih obavještenja: <ph name="UNREAD_NOTIFICATION_COUNT" /></translation> <translation id="4729257764711776855">broj</translation> <translation id="4746179598275229723">Ekstenzija je otkačena</translation> @@ -216,12 +216,12 @@ <translation id="8867568208303837180">Slanje...</translation> <translation id="8876215549894133151">Format:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> -<translation id="8927924178504495502">{HOURS,plural, =1{Prije sat vremena}one{Prije # h}few{Prije # h}other{Prije # h}}</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{Prije 1 sat}one{Prije # sat}few{Prije # sata}other{Prije # sati}}</translation> <translation id="8996630695507351249">Provjerite je li uređaj <ph name="TARGET_DEVICE_NAME" /> povezan na internet.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 s}one{# s}few{# s}other{# s}}</translation> <translation id="9059834730836941392">Suzi obavještenje</translation> <translation id="9170848237812810038">&Poništi</translation> <translation id="932327136139879170">Dom</translation> <translation id="944069440740578670">Nepročitana obavještenja</translation> -<translation id="966963601246348639">{SECONDS,plural, =1{Prije 1 s}one{Prije # s}few{Prije # s}other{Prije # s}}</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{Prije 1 sekundu}one{Prije # sekundu}few{Prije # sekunde}other{Prije # sekundi}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_ca.xtb b/ui/strings/translations/ui_strings_ca.xtb index 517037b..d3527359 100644 --- a/ui/strings/translations/ui_strings_ca.xtb +++ b/ui/strings/translations/ui_strings_ca.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{fa 1 dia}other{fa # dies}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Fa 1 minut}other{Fa # minuts}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 m}other{# m}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{Fa 1 dia}other{Fa # dies}}</translation> <translation id="1181037720776840403">Suprimeix</translation> <translation id="1243314992276662751">Penja</translation> <translation id="1266864766717917324">No s'ha pogut compartir <ph name="CONTENT_TYPE" />.</translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">D'esquerra a dreta</translation> <translation id="1383876407941801731">Cerca</translation> <translation id="1398853756734560583">Maximitza</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{Fa 1 minut}other{Fa # minuts}}</translation> <translation id="1450753235335490080">No es pot compartir <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{Fa 1 mes}other{Fa # mesos}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minut i }other{# minuts i }}</translation> <translation id="1643823602425662293">Notificació</translation> <translation id="169515659049020177">Maj</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Imatge</translation> <translation id="4565377596337484307">Oculta la contrasenya</translation> <translation id="4588090240171750605">Desplaçament a la dreta</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{Fa 1 any}other{Fa # anys}}</translation> <translation id="4724120544754982507">Centre de notificacions, <ph name="UNREAD_NOTIFICATION_COUNT" /> notificacions no llegides</translation> <translation id="4729257764711776855">el número</translation> <translation id="4746179598275229723">L'extensió s'ha deixat de fixar</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">S'està enviant...</translation> <translation id="8876215549894133151">Format:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{Fa 1 hora}other{Fa # hores}}</translation> <translation id="8996630695507351249">Assegura't que el dispositiu <ph name="TARGET_DEVICE_NAME" /> estigui connectat a Internet.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 s}other{# s}}</translation> <translation id="9059834730836941392">Replega la notificació</translation> <translation id="9170848237812810038">&Desfés</translation> <translation id="932327136139879170">Inici</translation> <translation id="944069440740578670">Notificacions no llegides</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{Fa 1 segon}other{Fa # segons}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_cs.xtb b/ui/strings/translations/ui_strings_cs.xtb index 9fb3a88..133c61ff 100644 --- a/ui/strings/translations/ui_strings_cs.xtb +++ b/ui/strings/translations/ui_strings_cs.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Před 1 dnem}few{Před # dny}many{Před # dne}other{Před # dny}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{před minutou}few{před # minutami}many{před # minuty}other{před # minutami}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 min}few{# min}many{# min}other{# min}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{Před 1 dnem}few{Před # dny}many{Před # dne}other{Před # dny}}</translation> <translation id="1181037720776840403">Odebrat</translation> <translation id="1243314992276662751">Nahrát</translation> <translation id="1266864766717917324">Sdílení obsahu typu <ph name="CONTENT_TYPE" /> se nezdařilo</translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Zleva doprava</translation> <translation id="1383876407941801731">Vyhledávání</translation> <translation id="1398853756734560583">Maximalizovat</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{Před 1 minutou}few{Před # minutami}many{Před # minuty}other{Před # minutami}}</translation> <translation id="1450753235335490080">Sdílení obsahu typu <ph name="CONTENT_TYPE" /> se nezdařilo</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{Před měsícem}few{Před # měsíci}many{Před # měsíce}other{Před # měsíci}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minuta a }few{# minuty a }many{# minuty a }other{# minut a }}</translation> <translation id="1643823602425662293">Oznámení</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Obrázek</translation> <translation id="4565377596337484307">Skrýt heslo</translation> <translation id="4588090240171750605">Posuv doprava</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{Před rokem}few{Před # lety}many{Před # roku}other{Před # lety}}</translation> <translation id="4724120544754982507">Centrum oznámení – nepřečtená oznámení: <ph name="UNREAD_NOTIFICATION_COUNT" /></translation> <translation id="4729257764711776855">číslo</translation> <translation id="4746179598275229723">Rozšíření bylo uvolněno</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Odesílání...</translation> <translation id="8876215549894133151">Formát:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{Před hodinou}few{Před # hodinami}many{Před # hodiny}other{Před # hodinami}}</translation> <translation id="8996630695507351249">Zkontrolujte, zda je zařízení <ph name="TARGET_DEVICE_NAME" /> připojené k internetu.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 s}few{# s}many{# s}other{# s}}</translation> <translation id="9059834730836941392">Sbalit oznámení</translation> <translation id="9170848237812810038">Z&pět</translation> <translation id="932327136139879170">Domovská stránka</translation> <translation id="944069440740578670">Nepřečtená oznámení</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{Před 1 sekundou}few{Před # sekundami}many{Před # sekundy}other{Před # sekundami}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_da.xtb b/ui/strings/translations/ui_strings_da.xtb index 574c0108..1d93bb5 100644 --- a/ui/strings/translations/ui_strings_da.xtb +++ b/ui/strings/translations/ui_strings_da.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{for 1 dag siden}one{for # dag siden}other{for # dage siden}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{For 1 minut siden}one{For # minut siden}other{For # minutter siden}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 min.}one{# min.}other{# min.}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{for 1 dag siden}one{for # dag siden}other{for # dage siden}}</translation> <translation id="1181037720776840403">Fjern</translation> <translation id="1243314992276662751">Upload</translation> <translation id="1266864766717917324">Det var ikke muligt at dele <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Venstre til højre</translation> <translation id="1383876407941801731">Søg</translation> <translation id="1398853756734560583">Maksimér</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{for 1 minut siden}one{for # minut siden}other{for # minutter siden}}</translation> <translation id="1450753235335490080">Delingen af <ph name="CONTENT_TYPE" /> mislykkedes</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{for 1 måned siden}one{for # måned siden}other{for # måneder siden}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minut og }one{# minutter og }other{# minutter og }}</translation> <translation id="1643823602425662293">Notifikation</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Billede</translation> <translation id="4565377596337484307">Skjul adgangskode</translation> <translation id="4588090240171750605">Scroll til højre</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{for 1 år siden}one{for # år siden}other{for # år siden}}</translation> <translation id="4724120544754982507">Notifikationscenter, <ph name="UNREAD_NOTIFICATION_COUNT" /> ulæste notifikationer</translation> <translation id="4729257764711776855">nummer</translation> <translation id="4746179598275229723">Udvidelsen er frigjort</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Sender...</translation> <translation id="8876215549894133151">Format:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{for 1 time siden}one{for # time siden}other{for # timer siden}}</translation> <translation id="8996630695507351249">Sørg for, at <ph name="TARGET_DEVICE_NAME" /> har internetforbindelse.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 sek.}one{# sek.}other{# sek.}}</translation> <translation id="9059834730836941392">Skjul notifikation</translation> <translation id="9170848237812810038">&Fortryd</translation> <translation id="932327136139879170">Start</translation> <translation id="944069440740578670">Ulæste notifikationer</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{for 1 sekund siden}one{for # sekund siden}other{for # sekunder siden}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_es-419.xtb b/ui/strings/translations/ui_strings_es-419.xtb index d359259..54a60508 100644 --- a/ui/strings/translations/ui_strings_es-419.xtb +++ b/ui/strings/translations/ui_strings_es-419.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Hace 1 día.}other{Hace # días.}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Hace 1 minuto}other{Hace # minutos}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 min}other{# min}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{hace 1 día}other{hace # días}}</translation> <translation id="1181037720776840403">Quitar</translation> <translation id="1243314992276662751">Cargar</translation> <translation id="1266864766717917324">No se pudo compartir <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">De izquierda a derecha</translation> <translation id="1383876407941801731">Buscar</translation> <translation id="1398853756734560583">Maximizar</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{hace 1 minuto}other{hace # minutos}}</translation> <translation id="1450753235335490080">No se puede compartir <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{hace 1 mes}other{hace # meses}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minuto y }other{# minutos y }}</translation> <translation id="1643823602425662293">Notificación</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Imagen</translation> <translation id="4565377596337484307">Ocultar contraseña</translation> <translation id="4588090240171750605">Desplazar a la derecha</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{hace 1 año}other{hace # años}}</translation> <translation id="4724120544754982507">Centro de notificaciones, notificaciones sin leer: <ph name="UNREAD_NOTIFICATION_COUNT" /></translation> <translation id="4729257764711776855">número</translation> <translation id="4746179598275229723">Se dejó de fijar la extensión</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Enviando...</translation> <translation id="8876215549894133151">Formato:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{hace 1 hora}other{hace # horas}}</translation> <translation id="8996630695507351249">Comprueba que <ph name="TARGET_DEVICE_NAME" /> tenga conexión a Internet.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 s}other{# s}}</translation> <translation id="9059834730836941392">Contraer notificación</translation> <translation id="9170848237812810038">&Deshacer</translation> <translation id="932327136139879170">Página principal</translation> <translation id="944069440740578670">Notificaciones sin leer</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{hace 1 segundo}other{hace # segundos}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_eu.xtb b/ui/strings/translations/ui_strings_eu.xtb index 2c552b4..5a39497 100644 --- a/ui/strings/translations/ui_strings_eu.xtb +++ b/ui/strings/translations/ui_strings_eu.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Duela 1 egun}other{Duela # egun}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Duela 1 minutu}other{Duela # minutu}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 min}other{# min}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{Duela egun bat}other{Duela # egun}}</translation> <translation id="1181037720776840403">Kendu</translation> <translation id="1243314992276662751">Kargatu</translation> <translation id="1266864766717917324">Ezin izan da partekatu <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Ezkerretik eskuinera</translation> <translation id="1383876407941801731">Bilaketa</translation> <translation id="1398853756734560583">Maximizatu</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{Duela minutu bat}other{Duela # minutu}}</translation> <translation id="1450753235335490080">Ezin da partekatu <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{Duela hilabete}other{Duela # hilabete}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minutu eta }other{# minutu eta }}</translation> <translation id="1643823602425662293">Jakinarazpena</translation> <translation id="169515659049020177">Maius</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Irudia</translation> <translation id="4565377596337484307">Ezkutatu pasahitza</translation> <translation id="4588090240171750605">Joan eskuinera</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{Duela urtebete}other{Duela # urte}}</translation> <translation id="4724120544754982507">Jakinarazpen-zentroa: irakurri gabeko <ph name="UNREAD_NOTIFICATION_COUNT" /> jakinarazpen dituzu</translation> <translation id="4729257764711776855">zenbakia</translation> <translation id="4746179598275229723">Kendu da luzapenaren aingura</translation> @@ -211,10 +215,12 @@ <translation id="8867568208303837180">Bidaltzen…</translation> <translation id="8876215549894133151">Formatua:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{Duela ordubete}other{Duela # ordu}}</translation> <translation id="8996630695507351249">Ziurtatu <ph name="TARGET_DEVICE_NAME" /> gailua Internetera konektatuta dagoela.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 s}other{# s}}</translation> <translation id="9059834730836941392">Tolestu jakinarazpena</translation> <translation id="9170848237812810038">&Desegin</translation> <translation id="932327136139879170">Hasiera</translation> <translation id="944069440740578670">Irakurri gabeko jakinarazpenak</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{Duela segundo bat}other{Duela # segundo}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_fr-CA.xtb b/ui/strings/translations/ui_strings_fr-CA.xtb index 08009c6e..47bedd7 100644 --- a/ui/strings/translations/ui_strings_fr-CA.xtb +++ b/ui/strings/translations/ui_strings_fr-CA.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Il y a 1 jour}one{Il y a # jour}other{Il y a # jours}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Il y a 1 minute}one{Il y a # minute}other{Il y a # minutes}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 min}one{# min}other{# min}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{Il y a 1 jour}one{Il y a # jour}other{Il y a # jours}}</translation> <translation id="1181037720776840403">Supprimer</translation> <translation id="1243314992276662751">Téléverser</translation> <translation id="1266864766717917324">Partage impossible du contenu suivant : <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">De gauche à droite</translation> <translation id="1383876407941801731">Rechercher</translation> <translation id="1398853756734560583">Agrandir</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{Il y a 1 minute}one{Il y a # minute}other{Il y a # minutes}}</translation> <translation id="1450753235335490080">Impossible de partager l'élément suivant : <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{Il y a 1 mois}one{Il y a # mois}other{Il y a # mois}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minute et }one{# minute et }other{# minutes et }}</translation> <translation id="1643823602425662293">Notification</translation> <translation id="169515659049020177">Maj</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Image</translation> <translation id="4565377596337484307">Masquer le mot de passe</translation> <translation id="4588090240171750605">Défilement vers la droite</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{Il y a 1 an}one{Il y a # an}other{Il y a # ans}}</translation> <translation id="4724120544754982507">Centre de notification, <ph name="UNREAD_NOTIFICATION_COUNT" /> notifications non lues</translation> <translation id="4729257764711776855">numéro</translation> <translation id="4746179598275229723">Épinglage de l'extension annulée</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Envoi en cours…</translation> <translation id="8876215549894133151">Format :</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> ko</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{Il y a 1 heure}one{Il y a # heure}other{Il y a # heures}}</translation> <translation id="8996630695507351249">Assurez-vous que <ph name="TARGET_DEVICE_NAME" /> est connecté à Internet.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 s}one{# s}other{# s}}</translation> <translation id="9059834730836941392">Réduire la notification</translation> <translation id="9170848237812810038">Ann&uler</translation> <translation id="932327136139879170">Accueil</translation> <translation id="944069440740578670">Notifications non lues</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{Il y a 1 seconde}one{Il y a # seconde}other{Il y a # secondes}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_fr.xtb b/ui/strings/translations/ui_strings_fr.xtb index 7bc1e46..4463fc4a 100644 --- a/ui/strings/translations/ui_strings_fr.xtb +++ b/ui/strings/translations/ui_strings_fr.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Il y a 1 jour}one{Il y a # jour}other{Il y a # jours}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Il y a une minute}one{Il y a # minute}other{Il y a # minutes}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 m}one{# m}other{# m}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{il y a 1 jour}one{il y a # jour}other{il y a # jours}}</translation> <translation id="1181037720776840403">Supprimer</translation> <translation id="1243314992276662751">Importer</translation> <translation id="1266864766717917324">Impossible de partager le contenu suivant : <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">De gauche à droite</translation> <translation id="1383876407941801731">Rechercher</translation> <translation id="1398853756734560583">Agrandir</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{Il y a une minute}one{il y a # minute}other{il y a # minutes}}</translation> <translation id="1450753235335490080">Impossible de partager le contenu suivant : <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{il y a un mois}one{il y a # mois}other{il y a # mois}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minute et }one{# minute et }other{# minutes et }}</translation> <translation id="1643823602425662293">Notification</translation> <translation id="169515659049020177">Maj</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Image</translation> <translation id="4565377596337484307">Masquer le mot de passe</translation> <translation id="4588090240171750605">Défilement vers la droite</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{il y a 1 an}one{il y a # an}other{il y a # ans}}</translation> <translation id="4724120544754982507">Centre de notification, <ph name="UNREAD_NOTIFICATION_COUNT" /> notifications non lues</translation> <translation id="4729257764711776855">numéro</translation> <translation id="4746179598275229723">Extension retirée</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Envoi en cours…</translation> <translation id="8876215549894133151">Format :</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> Ko</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{il y a une heure}one{il y a # heure}other{il y a # heures}}</translation> <translation id="8996630695507351249">Assurez-vous que votre <ph name="TARGET_DEVICE_NAME" /> dispose d'une connexion Internet.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 s}one{# s}other{# s}}</translation> <translation id="9059834730836941392">Réduire la notification</translation> <translation id="9170848237812810038">Ann&uler</translation> <translation id="932327136139879170">Accueil</translation> <translation id="944069440740578670">Notifications non lues</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{il y a une seconde}one{il y a # seconde}other{il y a # secondes}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_gl.xtb b/ui/strings/translations/ui_strings_gl.xtb index dd48662..0c6bd63 100644 --- a/ui/strings/translations/ui_strings_gl.xtb +++ b/ui/strings/translations/ui_strings_gl.xtb
@@ -6,7 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Hai un día}other{Hai # días}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Hai un minuto}other{Hai # minutos}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 m}other{# m}}</translation> -<translation id="1178017578188974117">{DAYS,plural, =1{Hai 1 día}other{Hai # días}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{Hai 1 día}other{Hai # días}}</translation> <translation id="1181037720776840403">Eliminar</translation> <translation id="1243314992276662751">Cargar</translation> <translation id="1266864766717917324">Non se puido compartir este contido: <ph name="CONTENT_TYPE" /></translation> @@ -16,7 +16,7 @@ <translation id="1368832886055348810">De esquerda a dereita</translation> <translation id="1383876407941801731">Buscar</translation> <translation id="1398853756734560583">Maximizar</translation> -<translation id="1432724887402139994">{SECONDS,plural, =1{Hai 1 minuto}other{Hai # minutos}}</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{Hai 1 minuto}other{Hai # minutos}}</translation> <translation id="1450753235335490080">Non se puido compartir este contido: <ph name="CONTENT_TYPE" /></translation> <translation id="1523230076022876491">{MONTHS,plural, =1{Hai 1 mes}other{Hai # meses}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{Un minuto e }other{# minutos e }}</translation> @@ -109,7 +109,7 @@ <translation id="4491109536499578614">Imaxe</translation> <translation id="4565377596337484307">Ocultar contrasinal</translation> <translation id="4588090240171750605">Desprazar cara á dereita</translation> -<translation id="4689010477870442157">{YEARS,plural, =1{Hai 1 ano}other{Hai # anos}}</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{Hai 1 ano}other{Hai # anos}}</translation> <translation id="4724120544754982507">Centro de notificacións: <ph name="UNREAD_NOTIFICATION_COUNT" /> notificacións sen ler</translation> <translation id="4729257764711776855">número</translation> <translation id="4746179598275229723">Deixouse de fixar a extensión</translation> @@ -223,5 +223,5 @@ <translation id="9170848237812810038">&Desfacer</translation> <translation id="932327136139879170">Inicio</translation> <translation id="944069440740578670">Notificacións sen ler</translation> -<translation id="966963601246348639">{SECONDS,plural, =1{Hai 1 segundo}other{Hai # segundos}}</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{Hai 1 segundo}other{Hai # segundos}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_gu.xtb b/ui/strings/translations/ui_strings_gu.xtb index ef5aaa9d..6771f65 100644 --- a/ui/strings/translations/ui_strings_gu.xtb +++ b/ui/strings/translations/ui_strings_gu.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 દિવસ પહેલા}one{# દિવસ પહેલાં}other{# દિવસ પહેલાં}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 મિનિટ પહેલાં}one{# મિનિટ પહેલાં}other{# મિનિટ પહેલાં}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 મિ}one{# મિ}other{# મિ}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{1 દિવસ પહેલાં}one{# દિવસ પહેલાં}other{# દિવસ પહેલાં}}</translation> <translation id="1181037720776840403">કાઢી નાખો</translation> <translation id="1243314992276662751">અપલોડ કરો</translation> <translation id="1266864766717917324"><ph name="CONTENT_TYPE" /> શેર કરી શકાયો નથી</translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">ડાબેથી જમણે</translation> <translation id="1383876407941801731">શોધો</translation> <translation id="1398853756734560583">મોટું કરો</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{1 મિનિટ પહેલાં}one{# મિનિટ પહેલાં}other{# મિનિટ પહેલાં}}</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> શેર કરી શકતાં નથી</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{1 મહિના પહેલાં}one{# મહિના પહેલાં}other{# મહિના પહેલાં}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 મિનિટ અને }one{# મિનિટ અને }other{# મિનિટ અને }}</translation> <translation id="1643823602425662293">સૂચના</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">છબી</translation> <translation id="4565377596337484307">પાસવર્ડ છુપાવો</translation> <translation id="4588090240171750605">જમણે સ્ક્રોલ કરો</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{1 વર્ષ પહેલાં}one{# વર્ષ પહેલાં}other{# વર્ષ પહેલાં}}</translation> <translation id="4724120544754982507">સૂચના કેન્દ્ર, વાંચ્યા વગરની <ph name="UNREAD_NOTIFICATION_COUNT" /> સૂચનાઓ</translation> <translation id="4729257764711776855">નંબર</translation> <translation id="4746179598275229723">એક્સ્ટેન્શન અનપિન કર્યું</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">મોકલી રહ્યું છે...</translation> <translation id="8876215549894133151">ફોર્મેટ:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{1 કલાક પહેલાં}one{# કલાક પહેલાં}other{# કલાક પહેલાં}}</translation> <translation id="8996630695507351249"><ph name="TARGET_DEVICE_NAME" /> ઇન્ટરનેટ સાથે કનેક્ટ થયેલું હોવાની ખાતરી કરો.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 સે}one{# સે}other{# સે}}</translation> <translation id="9059834730836941392">નોટિફિકેશન સંકુચિત કરો</translation> <translation id="9170848237812810038">&પૂર્વવત્ કરો</translation> <translation id="932327136139879170">હોમ</translation> <translation id="944069440740578670">વાંચ્યા વગરનાં નોટિફિકેશન</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{1 સેકન્ડ પહેલાં}one{# સેકન્ડ પહેલાં}other{# સેકન્ડ પહેલાં}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_is.xtb b/ui/strings/translations/ui_strings_is.xtb index 3d6d9390..a016039 100644 --- a/ui/strings/translations/ui_strings_is.xtb +++ b/ui/strings/translations/ui_strings_is.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Fyrir 1 degi}one{Fyrir # degi}other{Fyrir # dögum}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Fyrir einni mínútu}one{Fyrir # mínútu}other{Fyrir # mínútum}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1m}one{#m}other{#m}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{Fyrir 1 degi}one{Fyrir # degi}other{Fyrir # dögum}}</translation> <translation id="1181037720776840403">Fjarlægja</translation> <translation id="1243314992276662751">Hlaða inn</translation> <translation id="1266864766717917324">Ekki tókst að deila <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Frá vinstri til hægri</translation> <translation id="1383876407941801731">Leita</translation> <translation id="1398853756734560583">Stækka</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{Fyrir 1 mínútu}one{Fyrir # mínútu}other{Fyrir # mínútum}}</translation> <translation id="1450753235335490080">Ekki er hægt að deila <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{Fyrir 1 mánuði}one{Fyrir # mánuði}other{Fyrir # mánuðum}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 mínúta og }one{# mínúta og }other{# mínútur og }}</translation> <translation id="1643823602425662293">Tilkynning</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Mynd</translation> <translation id="4565377596337484307">Fela aðgangsorð</translation> <translation id="4588090240171750605">Fletta til hægri</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{Fyrir 1 ári}one{Fyrir # ári}other{Fyrir # árum}}</translation> <translation id="4724120544754982507">Tilkynningamiðstöð, <ph name="UNREAD_NOTIFICATION_COUNT" /> ólesnar tilkynningar</translation> <translation id="4729257764711776855">númeri</translation> <translation id="4746179598275229723">Viðbót losuð</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Sendir...</translation> <translation id="8876215549894133151">Snið:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{Fyrir 1 klukkustund}one{Fyrir # klukkustund}other{Fyrir # klukkustundum}}</translation> <translation id="8996630695507351249">Gakktu úr skugga um að <ph name="TARGET_DEVICE_NAME" /> sé tengt við internetið.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 sek.}one{# sek.}other{# sek.}}</translation> <translation id="9059834730836941392">Draga tilkynningu saman</translation> <translation id="9170848237812810038">Aft&urkalla</translation> <translation id="932327136139879170">Heim</translation> <translation id="944069440740578670">Ólesnar tilkynningar</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{Fyrir 1 sekúndu}one{Fyrir # sekúndu}other{Fyrir # sekúndum}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_lv.xtb b/ui/strings/translations/ui_strings_lv.xtb index bee84383..32be970 100644 --- a/ui/strings/translations/ui_strings_lv.xtb +++ b/ui/strings/translations/ui_strings_lv.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Pirms 1 dienas}zero{Pirms # dienām}one{Pirms # dienas}other{Pirms # dienām}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Pirms 1 minūtes}zero{Pirms # minūtēm}one{Pirms # minūtes}other{Pirms # minūtēm}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 min}zero{# min}one{# min}other{# min}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{pirms 1 dienas}zero{pirms # dienām}one{pirms # dienas}other{pirms # dienām}}</translation> <translation id="1181037720776840403">Noņemt</translation> <translation id="1243314992276662751">Augšupielādēt</translation> <translation id="1266864766717917324">Nevarēja kopīgot: <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">No kreisās uz labo pusi</translation> <translation id="1383876407941801731">Meklēt</translation> <translation id="1398853756734560583">Maksimizēt</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{pirms 1 minūtes}zero{pirms # minūtēm}one{pirms # minūtes}other{pirms # minūtēm}}</translation> <translation id="1450753235335490080">Nevar kopīgot: <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{pirms 1 mēneša}zero{pirms # mēnešiem}one{pirms # mēneša}other{pirms # mēnešiem}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minūte un }zero{# minūtes un }one{# minūte un }other{# minūtes un }}</translation> <translation id="1643823602425662293">Paziņojums</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Attēls</translation> <translation id="4565377596337484307">Slēpt paroli</translation> <translation id="4588090240171750605">Ritināt pa labi</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{pirms 1 gada}zero{pirms # gadiem}one{pirms # gada}other{pirms # gadiem}}</translation> <translation id="4724120544754982507">Paziņojumu centrs, <ph name="UNREAD_NOTIFICATION_COUNT" /> nelasīts(-i) paziņojums(-i)</translation> <translation id="4729257764711776855">numuru</translation> <translation id="4746179598275229723">Paplašinājums ir atsprausts</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Notiek sūtīšana...</translation> <translation id="8876215549894133151">Formāts:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{pirms 1 stundas}zero{pirms # stundām}one{pirms # stundas}other{pirms # stundām}}</translation> <translation id="8996630695507351249">Ierīcei <ph name="TARGET_DEVICE_NAME" /> ir jābūt izveidotam savienojumam ar internetu.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 s}zero{# s}one{# s}other{# s}}</translation> <translation id="9059834730836941392">Sakļaut paziņojumu</translation> <translation id="9170848237812810038">&Atsaukt</translation> <translation id="932327136139879170">Sākums</translation> <translation id="944069440740578670">Nelasītie paziņojumi</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{pirms 1 sekundes}zero{pirms # sekundēm}one{pirms # sekundes}other{pirms # sekundēm}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_mk.xtb b/ui/strings/translations/ui_strings_mk.xtb index 198809fb..cc309743 100644 --- a/ui/strings/translations/ui_strings_mk.xtb +++ b/ui/strings/translations/ui_strings_mk.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Пред 1 ден}one{Пред # ден}other{Пред # дена}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Пред 1 минута}one{Пред # минута}other{Пред # минути}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 м.}one{# м.}other{# м.}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{Пред 1 ден}one{Пред # ден}other{Пред # дена}}</translation> <translation id="1181037720776840403">Отстрани</translation> <translation id="1243314992276662751">Постави</translation> <translation id="1266864766717917324">Не може да се сподели <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Лево кон десно</translation> <translation id="1383876407941801731">Барај</translation> <translation id="1398853756734560583">Максимизирај</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{Пред 1 минута}one{Пред # минута}other{Пред # минути}}</translation> <translation id="1450753235335490080">Не може да се сподели <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{Пред 1 месец}one{Пред # месец}other{Пред # месеци}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 минута и }one{# минута и }other{# минути и }}</translation> <translation id="1643823602425662293">Известување</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Слика</translation> <translation id="4565377596337484307">Сокриј ја лозинката</translation> <translation id="4588090240171750605">Лизгај надесно</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{Пред 1 година}one{Пред # година}other{Пред # години}}</translation> <translation id="4724120544754982507">Центар за известувања, <ph name="UNREAD_NOTIFICATION_COUNT" /> непрочитани известувања</translation> <translation id="4729257764711776855">број</translation> <translation id="4746179598275229723">Екстензијата е откачена</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Се испраќа…</translation> <translation id="8876215549894133151">Формат:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{Пред 1 час}one{Пред # час}other{Пред # часа}}</translation> <translation id="8996630695507351249">Проверете дали <ph name="TARGET_DEVICE_NAME" /> е поврзан на интернет.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 сек.}one{# сек.}other{# сек.}}</translation> <translation id="9059834730836941392">Собери го известувањето</translation> <translation id="9170848237812810038">&Врати</translation> <translation id="932327136139879170">Дома</translation> <translation id="944069440740578670">Непрочитани известувања</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{Пред 1 секунда}one{Пред # секунда}other{Пред # секунди}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_mn.xtb b/ui/strings/translations/ui_strings_mn.xtb index fca1bb2..ba42819 100644 --- a/ui/strings/translations/ui_strings_mn.xtb +++ b/ui/strings/translations/ui_strings_mn.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 өдрийн өмнө}other{# өдрийн өмнө}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 минутын өмнө}other{# минутын өмнө}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1мин}other{#мин}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{1 хоногийн өмнө}other{# хоногийн өмнө}}</translation> <translation id="1181037720776840403">Хасах</translation> <translation id="1243314992276662751">Байршуул</translation> <translation id="1266864766717917324"><ph name="CONTENT_TYPE" />-г хуваалцаж чадсангүй</translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Зүүнээс баруун тийш</translation> <translation id="1383876407941801731">Хайлт</translation> <translation id="1398853756734560583">Хэмжээг ихэсгэх</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{1 минутын өмнө}other{# минутын өмнө}}</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" />-г хуваалцах боломжгүй байна</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{1 сарын өмнө}other{# сарын өмнө}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 минут }other{# минут }}</translation> <translation id="1643823602425662293">Мэдэгдэл</translation> <translation id="169515659049020177">Солих</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Зураг</translation> <translation id="4565377596337484307">Нууц үгийг нуух</translation> <translation id="4588090240171750605">Баруун тийш гүйлгэх</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{1 жилийн өмнө}other{# жилийн өмнө}}</translation> <translation id="4724120544754982507">Мэдэгдлийн төв, <ph name="UNREAD_NOTIFICATION_COUNT" /> уншаагүй мэдэгдэл</translation> <translation id="4729257764711776855">дугаар</translation> <translation id="4746179598275229723">Өргөтгөлийг бэхэлснийг болиулсан</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Илгээж байна...</translation> <translation id="8876215549894133151">Формат:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> килобайт</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{1 цагийн өмнө}other{# цагийн өмнө}}</translation> <translation id="8996630695507351249"><ph name="TARGET_DEVICE_NAME" /> интернэтэд холбогдсон эсэхийг шалгана уу.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 сек}other{# сек}}</translation> <translation id="9059834730836941392">Мэдэгдлийг буулгах</translation> <translation id="9170848237812810038">& Буцаах</translation> <translation id="932327136139879170">Нүүр хуудас</translation> <translation id="944069440740578670">Уншаагүй мэдэгдэл</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{1 секундийн өмнө}other{# секундийн өмнө}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_ne.xtb b/ui/strings/translations/ui_strings_ne.xtb index b5994175..3680986 100644 --- a/ui/strings/translations/ui_strings_ne.xtb +++ b/ui/strings/translations/ui_strings_ne.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{ १ दिनअघि}other{ # दिनअघि}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{१ मिनट अगाडि}other{# मिनट अगाडि}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{१ मिनेट}other{# मिनेट}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{१ दिनअघि}other{# दिनअघि}}</translation> <translation id="1181037720776840403">हटाउनुहोस्</translation> <translation id="1243314992276662751">अपलोड गर्नुहोस्</translation> <translation id="1266864766717917324"><ph name="CONTENT_TYPE" /> आदान प्रदान गर्न सकिएन</translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">बायाँ देखि दायाँ सम्म</translation> <translation id="1383876407941801731">खोज्नुहोस्</translation> <translation id="1398853756734560583">अधिकतम बनाउनुहोस्</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{१ मिनेटअघि}other{# मिनेटअघि}}</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> आदान प्रदान गर्न सकिएन</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{१ महिनाअघि}other{# महिनाअघि}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{ १ मिनेट र }other{ # मिनेट र }}</translation> <translation id="1643823602425662293">सूचना</translation> <translation id="169515659049020177">सिफ्ट</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">छवि</translation> <translation id="4565377596337484307">पासवर्ड लुकाउनुहोस्</translation> <translation id="4588090240171750605">दायाँ तिर स्क्रोल गर्नुहोस्</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{१ वर्षअघि}other{# वर्षअघि}}</translation> <translation id="4724120544754982507">सूचनासम्बन्धी केन्द्र, <ph name="UNREAD_NOTIFICATION_COUNT" /> नपढिएका सूचनाहरू</translation> <translation id="4729257764711776855">फोन नम्बर</translation> <translation id="4746179598275229723">एक्स्टेन्सन अनपिन गरियो</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">पठाउँदै...</translation> <translation id="8876215549894133151">स्वरूप:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> केबी</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{१ घण्टाअघि}other{# घण्टाअघि}}</translation> <translation id="8996630695507351249"><ph name="TARGET_DEVICE_NAME" /> इन्टरनेटमा जोडिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्।</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{ १ सेकेन्ड}other{ # सेकेन्ड}}</translation> <translation id="9059834730836941392">सूचना संक्षिप्त गर्नुहोस्</translation> <translation id="9170848237812810038">&पूर्वस्थितिमा फर्काउनुहोस्</translation> <translation id="932327136139879170">गृहपृष्ठ</translation> <translation id="944069440740578670">नपढिएका सूचनाहरू</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{१ सेकेन्डअघि}other{# सेकेन्डअघि}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_or.xtb b/ui/strings/translations/ui_strings_or.xtb index 40f2738..5fd87e6 100644 --- a/ui/strings/translations/ui_strings_or.xtb +++ b/ui/strings/translations/ui_strings_or.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 ଦିନ ପୂର୍ବେ}other{# ଦିନ ପୂର୍ବେ}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 ମିନିଟ୍ ପୂର୍ବେ}other{# ମିନିଟ୍ ପୂର୍ବେ}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 ମିନିଟ୍}other{# ମିନିଟ୍}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{1 ଦିନ ପୂର୍ବେ}other{# ଦିନ ପୂର୍ବେ}}</translation> <translation id="1181037720776840403">କାଢ଼ି ଦିଅନ୍ତୁ</translation> <translation id="1243314992276662751">ଅପ୍ଲୋଡ୍ କରନ୍ତୁ</translation> <translation id="1266864766717917324"><ph name="CONTENT_TYPE" />ସେୟାର୍ କରିହେଲା ନାହିଁ</translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">ବାମରୁ ଡାହାଣ</translation> <translation id="1383876407941801731">Search</translation> <translation id="1398853756734560583">ସର୍ବାଧିକ କରନ୍ତୁ</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{1 ମିନିଟ ପୂର୍ବେ}other{# ମିନିଟ ପୂର୍ବେ}}</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> ସେୟାର୍ କରାଯାଇ ପାରିବ ନାହିଁ</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{1 ମାସ ପୂର୍ବେ}other{# ମାସ ପୂର୍ବେ}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 ମିନିଟ୍ ଏବଂ }other{# ମିନିଟ୍ ଏବଂ }}</translation> <translation id="1643823602425662293">ବିଜ୍ଞପ୍ତି</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">ଛବି</translation> <translation id="4565377596337484307">ପାସୱାର୍ଡ୍ ଲୁଚାନ୍ତୁ</translation> <translation id="4588090240171750605">ଦକ୍ଷିଣକୁ ସ୍କ୍ରୋଲ୍ କରନ୍ତୁ</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{1 ବର୍ଷ ପୂର୍ବେ}other{# ବର୍ଷ ପୂର୍ବେ}}</translation> <translation id="4724120544754982507">ବିଜ୍ଞପ୍ତି କେନ୍ଦ୍ର, <ph name="UNREAD_NOTIFICATION_COUNT" /> ପଢ଼ାଯାଇନଥିବା ବିଜ୍ଞପ୍ତି</translation> <translation id="4729257764711776855">ନମ୍ବର</translation> <translation id="4746179598275229723">ଏକ୍ସଟେନସନକୁ ଅନପିନ କରାଯାଇଛି</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">ପଠାଉଛି...</translation> <translation id="8876215549894133151">ଫର୍ମାଟ୍:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{1 ଘଣ୍ଟା ପୂର୍ବେ}other{# ଘଣ୍ଟା ପୂର୍ବେ}}</translation> <translation id="8996630695507351249"><ph name="TARGET_DEVICE_NAME" /> ଇଣ୍ଟର୍ନେଟ୍ ସହିତ ସଂଯୁକ୍ତ ଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ।</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 ସେକେଣ୍ଡ}other{# ସେକେଣ୍ଡ}}</translation> <translation id="9059834730836941392">ବିଜ୍ଞପ୍ତି ସଙ୍କୁଚିତ କରନ୍ତୁ</translation> <translation id="9170848237812810038">&ପୂର୍ବବତ୍</translation> <translation id="932327136139879170">Home</translation> <translation id="944069440740578670">ପଢ଼ାଯାଇନଥିବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{1 ସେକେଣ୍ଡ ପୂର୍ବେ}other{# ସେକେଣ୍ଡ ପୂର୍ବେ}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_pt-PT.xtb b/ui/strings/translations/ui_strings_pt-PT.xtb index b776998..0b7c10c3 100644 --- a/ui/strings/translations/ui_strings_pt-PT.xtb +++ b/ui/strings/translations/ui_strings_pt-PT.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Há 1 dia}other{Há # dias}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Há 1 minuto}other{Há # minutos}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 min}other{# min}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{há 1 dia}other{há # dias}}</translation> <translation id="1181037720776840403">Remover</translation> <translation id="1243314992276662751">Carregar</translation> <translation id="1266864766717917324">Não foi possível partilhar <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Da esquerda para a direita</translation> <translation id="1383876407941801731">Pesquisar</translation> <translation id="1398853756734560583">Maximizar</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{há 1 minuto}other{há # minutos}}</translation> <translation id="1450753235335490080">Não é possível partilhar <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{há 1 mês}other{há # meses}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minuto e }other{# minutos e }}</translation> <translation id="1643823602425662293">Notificação</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Imagem</translation> <translation id="4565377596337484307">Ocultar palavra-passe</translation> <translation id="4588090240171750605">Deslocar-se para a direita</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{há 1 ano}other{há # anos}}</translation> <translation id="4724120544754982507">Centro de notificações, <ph name="UNREAD_NOTIFICATION_COUNT" /> notificações não lidas</translation> <translation id="4729257764711776855">número</translation> <translation id="4746179598275229723">Extensão desafixada</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">A enviar...</translation> <translation id="8876215549894133151">Formato:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{há 1 hora}other{há # horas}}</translation> <translation id="8996630695507351249">Certifique-se de que o <ph name="TARGET_DEVICE_NAME" /> está ligado à Internet.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 seg}other{# seg}}</translation> <translation id="9059834730836941392">Reduzir notificação</translation> <translation id="9170848237812810038">An&ular</translation> <translation id="932327136139879170">Página inicial</translation> <translation id="944069440740578670">Notificações não lidas</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{há 1 segundo}other{há # segundos}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_si.xtb b/ui/strings/translations/ui_strings_si.xtb index e0c823d..dfba1510 100644 --- a/ui/strings/translations/ui_strings_si.xtb +++ b/ui/strings/translations/ui_strings_si.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{දින 1 කට පෙර}one{දින # කට පෙර}other{දින # කට පෙර}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{මිනිත්තු 1කට පෙර}one{මිනිත්තු #කට පෙර}other{මිනිත්තු #කට පෙර}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1m}one{#m}other{#m}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{දින 1කට පෙර}one{දින #කට පෙර}other{දින #කට පෙර}}</translation> <translation id="1181037720776840403">ඉවත් කරන්න</translation> <translation id="1243314992276662751">උඩුගත</translation> <translation id="1266864766717917324"><ph name="CONTENT_TYPE" /> බෙදා ගත නොහැකි විය</translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">වමේ සිට දකුණට</translation> <translation id="1383876407941801731">සොයන්න</translation> <translation id="1398853756734560583">විශාල කරන්න</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{මිනිත්තු 1කට පෙර}one{මිනිත්තු #කට පෙර}other{මිනිත්තු #කට පෙර}}</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> බෙදා ගත නොහැක</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{මාස 1කට පෙර}one{මාස #කට පෙර}other{මාස #කට පෙර}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{මිනිත්තු 1 ක් සහ }one{මිනිත්තු # ක් සහ }other{මිනිත්තු # ක් සහ }}</translation> <translation id="1643823602425662293">දැනුම්දීම</translation> <translation id="169515659049020177">SHIFT</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">රූපය</translation> <translation id="4565377596337484307">මුරපදය සඟවන්න</translation> <translation id="4588090240171750605">දකුණට අනුචලනය කරන්න</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{වසර 1කට පෙර}one{වසර #කට පෙර}other{වසර #කට පෙර}}</translation> <translation id="4724120544754982507">දැනුම්දීම් මධ්යස්ථානය, නොකියවූ දැනුම්දීම් <ph name="UNREAD_NOTIFICATION_COUNT" />ක්</translation> <translation id="4729257764711776855">අංකය</translation> <translation id="4746179598275229723">දිගුව ඇමිණීම ඉවත් කරන ලදි</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">යැවේ...</translation> <translation id="8876215549894133151">ආකෘතිය</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{පැය 1කට පෙර}one{පැය #කට පෙර}other{පැය #කට පෙර}}</translation> <translation id="8996630695507351249"><ph name="TARGET_DEVICE_NAME" /> අන්තර්ජාලයට සම්බන්ධ කර තිබීම තහවුරු කර ගන්න.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{තත් 1}one{තත් #}other{තත් #}}</translation> <translation id="9059834730836941392">දැනුම්දීම හකුළන්න</translation> <translation id="9170848237812810038">&පසුගමනය</translation> <translation id="932327136139879170">මුල් පිටුව</translation> <translation id="944069440740578670">නොකියවූ දැනුම්දීම්</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{තත්පර 1කට පෙර}one{තත්පර #කට පෙර}other{තත්පර #කට පෙර}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_sl.xtb b/ui/strings/translations/ui_strings_sl.xtb index 75e1adb..7b918636 100644 --- a/ui/strings/translations/ui_strings_sl.xtb +++ b/ui/strings/translations/ui_strings_sl.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Pred 1 dnevom}one{Pred # dnevom}two{Pred # dnevoma}few{Pred # dnevi}other{Pred # dnevi}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Pred 1 minuto}one{Pred # minuto}two{Pred # minutama}few{Pred # minutami}other{Pred # minutami}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 m}one{# m}two{# m}few{# m}other{# m}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{pred 1 dnevom}one{pred # dnevom}two{pred # dnevoma}few{pred # dnevi}other{pred # dnevi}}</translation> <translation id="1181037720776840403">Odstrani</translation> <translation id="1243314992276662751">Prenesi</translation> <translation id="1266864766717917324">Ni bilo mogoče deliti tega: <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Od leve proti desni</translation> <translation id="1383876407941801731">Išči</translation> <translation id="1398853756734560583">Povečaj</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{pred 1 minuto}one{pred # minuto}two{pred # minutama}few{pred # minutami}other{pred # minutami}}</translation> <translation id="1450753235335490080">Ni mogoče deliti tega: <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{pred 1 mesecem}one{pred # mesecem}two{pred # mesecema}few{pred # meseci}other{pred # meseci}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 min in }one{# min in }two{# min in }few{# min in }other{# min in }}</translation> <translation id="1643823602425662293">Obvestilo</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Slika</translation> <translation id="4565377596337484307">Skrij geslo</translation> <translation id="4588090240171750605">Pomik desno</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{pred 1 letom}one{pred # letom}two{pred # letoma}few{pred # leti}other{pred # leti}}</translation> <translation id="4724120544754982507">Središče za obvestila, št. neprebranih sporočil: <ph name="UNREAD_NOTIFICATION_COUNT" /></translation> <translation id="4729257764711776855">številke</translation> <translation id="4746179598275229723">Razširitev je odpeta</translation> @@ -211,10 +215,12 @@ <translation id="8867568208303837180">Pošiljanje ...</translation> <translation id="8876215549894133151">Oblika:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{pred 1 uro}one{pred # uro}two{pred # urama}few{pred # urami}other{pred # urami}}</translation> <translation id="8996630695507351249">Naprava <ph name="TARGET_DEVICE_NAME" /> mora biti povezana v internet.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 s}one{# s}two{# s}few{# s}other{# s}}</translation> <translation id="9059834730836941392">Strni obvestilo</translation> <translation id="9170848237812810038">&Razveljavi</translation> <translation id="932327136139879170">Domov</translation> <translation id="944069440740578670">Neprebrana obvestila</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{pred 1 sekundo}one{pred # sekundo}two{pred # sekundama}few{pred # sekundami}other{pred # sekundami}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_sq.xtb b/ui/strings/translations/ui_strings_sq.xtb index 7280702a..5415e131 100644 --- a/ui/strings/translations/ui_strings_sq.xtb +++ b/ui/strings/translations/ui_strings_sq.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 ditë më parë}other{# ditë më parë}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 minutë më parë}other{# minuta më parë}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 m}other{# m}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{1 ditë më parë}other{# ditë më parë}}</translation> <translation id="1181037720776840403">Hiq</translation> <translation id="1243314992276662751">Ngarko</translation> <translation id="1266864766717917324">Nuk mund të ndahet <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Nga e majta në të djathtë</translation> <translation id="1383876407941801731">Kërko</translation> <translation id="1398853756734560583">Zmadho</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{1 minutë më parë}other{# minuta më parë}}</translation> <translation id="1450753235335490080">Nuk mund të ndahet <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{1 muaj më parë}other{# muaj më parë}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 minutë dhe }other{# minuta dhe }}</translation> <translation id="1643823602425662293">Njoftimi</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Imazh</translation> <translation id="4565377596337484307">Fshih fjalëkalimin</translation> <translation id="4588090240171750605">Lëvize djathtas</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{1 vit më parë}other{# vite më parë}}</translation> <translation id="4724120544754982507">Qendra e njoftimeve, <ph name="UNREAD_NOTIFICATION_COUNT" /> njoftime të palexuara</translation> <translation id="4729257764711776855">numri</translation> <translation id="4746179598275229723">Shtesa u zhgozhdua</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Po dërgohet...</translation> <translation id="8876215549894133151">Formati:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{1 orë më parë}other{# orë më parë}}</translation> <translation id="8996630695507351249">Sigurohu që <ph name="TARGET_DEVICE_NAME" /> të jetë lidhur me internetin.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 sek.}other{# sek.}}</translation> <translation id="9059834730836941392">Palos njoftimin</translation> <translation id="9170848237812810038">&Zhbëj</translation> <translation id="932327136139879170">Faqja kryesore</translation> <translation id="944069440740578670">Njoftime të palexuara</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{1 sekondë më parë}other{# sekonda më parë}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_sw.xtb b/ui/strings/translations/ui_strings_sw.xtb index ab9b5ecc..527e8fe 100644 --- a/ui/strings/translations/ui_strings_sw.xtb +++ b/ui/strings/translations/ui_strings_sw.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Siku 1 iliyopita}other{Siku # zilizopita}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Dakika 1 iliyopita}other{Dakika # zilizopita}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{Dak 1}other{Dak #}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{Siku 1 Iliyopita}other{Siku # Zilizopita}}</translation> <translation id="1181037720776840403">Ondoa</translation> <translation id="1243314992276662751">Pakia</translation> <translation id="1266864766717917324">Imeshindwa kushiriki <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Kushoto hadi Kulia</translation> <translation id="1383876407941801731">Tafuta</translation> <translation id="1398853756734560583">Tanua</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{Dakika 1 Iliyopita}other{Dakika # Zilizopita}}</translation> <translation id="1450753235335490080">Imeshindwa kushiriki <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{Mwezi 1 Uliopita}other{Miezi # Iliyopita}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{Dakika 1 na }other{Dakika # na }}</translation> <translation id="1643823602425662293">Arifa</translation> <translation id="169515659049020177">Hama</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Picha</translation> <translation id="4565377596337484307">Ficha nenosiri</translation> <translation id="4588090240171750605">Sogeza Kulia</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{Mwaka 1 Uliopita}other{Miaka # Iliyopita}}</translation> <translation id="4724120544754982507">Kituo cha Arifa, arifa <ph name="UNREAD_NOTIFICATION_COUNT" /> ambazo hujasoma</translation> <translation id="4729257764711776855">nambari</translation> <translation id="4746179598275229723">Kiendelezi kimebanduliwa</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Inatuma…</translation> <translation id="8876215549894133151">Fomati:</translation> <translation id="8901569739625249689">KB <ph name="QUANTITY" /></translation> +<translation id="8927924178504495502">{HOURS,plural, =1{Saa 1 Iliyopita}other{Saa # Zilizopita}}</translation> <translation id="8996630695507351249">Hakikisha kwamba <ph name="TARGET_DEVICE_NAME" /> imeunganishwa kwenye intaneti.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{Sekunde 1}other{Sekunde #}}</translation> <translation id="9059834730836941392">Kunja arifa</translation> <translation id="9170848237812810038">&Tendua</translation> <translation id="932327136139879170">Mwanzo</translation> <translation id="944069440740578670">Arifa ambazo Hazijasomwa</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{Sekunde 1 Iliyopita}other{Sekunde # Zilizopita}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_uz.xtb b/ui/strings/translations/ui_strings_uz.xtb index 869d649..34b83b7 100644 --- a/ui/strings/translations/ui_strings_uz.xtb +++ b/ui/strings/translations/ui_strings_uz.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 kun oldin}other{# kun oldin}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 daqiqa oldin}other{# daqiqa oldin}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 daqiqa}other{# daqiqa}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{1 kun oldin}other{# kun oldin}}</translation> <translation id="1181037720776840403">Olib tashlash</translation> <translation id="1243314992276662751">Yuklash</translation> <translation id="1266864766717917324"><ph name="CONTENT_TYPE" /> yuborilmadi</translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Chapdan o‘ngga</translation> <translation id="1383876407941801731">Qidiruv</translation> <translation id="1398853756734560583">Yoyish</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{1 daqiqa oldin}other{# daqiqa oldin}}</translation> <translation id="1450753235335490080"><ph name="CONTENT_TYPE" /> yuborilmadi</translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{1 oy oldin}other{# oy oldin}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 daqiqa va }other{# daqiqa va }}</translation> <translation id="1643823602425662293">Bildirishnoma</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Tasvir</translation> <translation id="4565377596337484307">Parolni berkitish</translation> <translation id="4588090240171750605">O‘ngga aylantirish</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{1 yil oldin}other{# yil oldin}}</translation> <translation id="4724120544754982507">Bildirishnomalar markazi, <ph name="UNREAD_NOTIFICATION_COUNT" /> ta o‘qilmagan bildirishnoma</translation> <translation id="4729257764711776855">raqam</translation> <translation id="4746179598275229723">Kengaytma olib tashlandi</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Yuborilmoqda...</translation> <translation id="8876215549894133151">Format:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{1 soat oldin}other{# soat oldin}}</translation> <translation id="8996630695507351249"><ph name="TARGET_DEVICE_NAME" /> internetga ulanganini tekshiring.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 soniya}other{# soniya}}</translation> <translation id="9059834730836941392">Bildirishnomani yig‘ish</translation> <translation id="9170848237812810038">&Bekor qilish</translation> <translation id="932327136139879170">Bosh sahifa</translation> <translation id="944069440740578670">Yangi bildirishnomalar</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{1 soniya oldin}other{# soniya oldin:}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_vi.xtb b/ui/strings/translations/ui_strings_vi.xtb index 6100c7d..410949d0 100644 --- a/ui/strings/translations/ui_strings_vi.xtb +++ b/ui/strings/translations/ui_strings_vi.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 ngày trước}other{# ngày trước}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 phút trước}other{# phút trước}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 phút}other{# phút}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{1 ngày trước}other{# ngày trước}}</translation> <translation id="1181037720776840403">Xóa</translation> <translation id="1243314992276662751">Tải lên</translation> <translation id="1266864766717917324">Không thể chia sẻ <ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">Trái sang Phải</translation> <translation id="1383876407941801731">Tìm kiếm</translation> <translation id="1398853756734560583">Phóng to</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{1 phút trước}other{# phút trước}}</translation> <translation id="1450753235335490080">Không thể chia sẻ <ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{1 tháng trước}other{# tháng trước}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 phút và }other{# phút và }}</translation> <translation id="1643823602425662293">Thông báo</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">Hình ảnh</translation> <translation id="4565377596337484307">Ẩn mật khẩu</translation> <translation id="4588090240171750605">Cuộn qua Phải</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{1 năm trước}other{# năm trước}}</translation> <translation id="4724120544754982507">Trung tâm thông báo, <ph name="UNREAD_NOTIFICATION_COUNT" /> thông báo chưa đọc</translation> <translation id="4729257764711776855">số</translation> <translation id="4746179598275229723">Đã bỏ ghim tiện ích</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">Đang gửi...</translation> <translation id="8876215549894133151">Định dạng:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{1 giờ trước}other{# giờ trước}}</translation> <translation id="8996630695507351249">Hãy đảm bảo <ph name="TARGET_DEVICE_NAME" /> có kết nối Internet.</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 giây}other{# giây}}</translation> <translation id="9059834730836941392">Thu gọn thông báo</translation> <translation id="9170848237812810038">H&oàn tác</translation> <translation id="932327136139879170">Trang chủ</translation> <translation id="944069440740578670">Các thông báo chưa đọc</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{1 giây trước}other{# giây trước}}</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/strings/translations/ui_strings_zh-CN.xtb b/ui/strings/translations/ui_strings_zh-CN.xtb index 9747f970..6b4d9de23 100644 --- a/ui/strings/translations/ui_strings_zh-CN.xtb +++ b/ui/strings/translations/ui_strings_zh-CN.xtb
@@ -6,6 +6,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 天前}other{# 天前}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 分钟前}other{# 分钟前}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 分钟}other{# 分钟}}</translation> +<translation id="1178017578188974117">{DAYS,plural, =1{1 天前}other{# 天前}}</translation> <translation id="1181037720776840403">移除</translation> <translation id="1243314992276662751">上传</translation> <translation id="1266864766717917324">无法分享<ph name="CONTENT_TYPE" /></translation> @@ -15,7 +16,9 @@ <translation id="1368832886055348810">从左向右</translation> <translation id="1383876407941801731">搜索</translation> <translation id="1398853756734560583">最大化</translation> +<translation id="1432724887402139994">{SECONDS,plural, =1{1 分钟前}other{# 分钟前}}</translation> <translation id="1450753235335490080">无法分享<ph name="CONTENT_TYPE" /></translation> +<translation id="1523230076022876491">{MONTHS,plural, =1{1 个月前}other{# 个月前}}</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 分钟 }other{# 分钟 }}</translation> <translation id="1643823602425662293">通知</translation> <translation id="169515659049020177">Shift</translation> @@ -106,6 +109,7 @@ <translation id="4491109536499578614">图片</translation> <translation id="4565377596337484307">隐藏密码</translation> <translation id="4588090240171750605">向右滚动</translation> +<translation id="4689010477870442157">{YEARS,plural, =1{1 年前}other{# 年前}}</translation> <translation id="4724120544754982507">通知中心,<ph name="UNREAD_NOTIFICATION_COUNT" /> 条未读通知</translation> <translation id="4729257764711776855">电话号码</translation> <translation id="4746179598275229723">已取消固定该扩展程序</translation> @@ -212,10 +216,12 @@ <translation id="8867568208303837180">正在发送...</translation> <translation id="8876215549894133151">格式:</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation> +<translation id="8927924178504495502">{HOURS,plural, =1{1 小时前}other{# 小时前}}</translation> <translation id="8996630695507351249">请确保 <ph name="TARGET_DEVICE_NAME" /> 已连接到互联网。</translation> <translation id="9044832324875206639">{SECONDS,plural, =1{1 秒}other{# 秒}}</translation> <translation id="9059834730836941392">收起通知</translation> <translation id="9170848237812810038">撤消(&U)</translation> <translation id="932327136139879170">首页</translation> <translation id="944069440740578670">未读通知</translation> +<translation id="966963601246348639">{SECONDS,plural, =1{1 秒前}other{# 秒前}}</translation> </translationbundle> \ No newline at end of file